From 8434ac47ea86ee39102ab7bd7e4483134fb7831e Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Sat, 7 Dec 2024 19:00:26 +0100 Subject: [PATCH 01/12] WIP --- .docs/index.md | 2 +- .docs/kubernetes.md | 2 +- .gitlab-ci.yml | 4 +- Makefile | 4 +- dbrepo-analyse-service/Pipfile | 2 +- dbrepo-analyse-service/Pipfile.lock | 518 +++++++++--------- .../lib/dbrepo-1.6.0.tar.gz | Bin 0 -> 39597 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 +- .../java/at/tuwien/mapper/DataMapper.java | 3 +- .../impl/DatabaseServiceMariaDbImpl.java | 8 +- .../impl/SchemaServiceMariaDbImpl.java | 3 - dbrepo-metadata-db/1_setup-schema.sql | 103 ++-- dbrepo-metadata-service/api/pom.xml | 6 +- .../tuwien/api/database/DatabaseBriefDto.java | 11 +- .../api/database/DatabaseCreateDto.java | 5 + .../at/tuwien/api/database/DatabaseDto.java | 29 +- .../database/DatabaseModifyVisibilityDto.java | 5 + .../at/tuwien/api/database/ViewBriefDto.java | 25 +- .../java/at/tuwien/api/database/ViewDto.java | 18 +- .../at/tuwien/api/database/ViewUpdateDto.java | 23 + .../internal/PrivilegedDatabaseDto.java | 34 +- .../database/internal/PrivilegedViewDto.java | 20 +- .../api/database/query/QueryBriefDto.java | 23 +- .../tuwien/api/database/query/QueryDto.java | 24 +- .../api/database/table/TableBriefDto.java | 9 +- .../tuwien/api/database/table/TableDto.java | 19 +- .../table/internal/PrivilegedTableDto.java | 21 +- .../api/identifier/IdentifierBriefDto.java | 32 ++ .../tuwien/api/identifier/IdentifierDto.java | 2 - dbrepo-metadata-service/entities/pom.xml | 4 +- .../at/tuwien/entities/database/Database.java | 5 +- .../at/tuwien/entities/database/View.java | 5 +- .../tuwien/entities/database/table/Table.java | 5 +- 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 +- .../java/at/tuwien/mapper/MetadataMapper.java | 138 ++--- dbrepo-metadata-service/rest-service/pom.xml | 4 +- .../tuwien/endpoints/ContainerEndpoint.java | 2 +- .../at/tuwien/endpoints/TableEndpoint.java | 22 +- .../at/tuwien/endpoints/ViewEndpoint.java | 62 ++- .../tuwien/mapper/MetadataMapperUnitTest.java | 227 +------- ...aCiteIdentifierServicePersistenceTest.java | 2 +- .../IdentifierServicePersistenceTest.java | 2 +- dbrepo-metadata-service/services/pom.xml | 4 +- .../java/at/tuwien/service/ViewService.java | 26 +- .../service/impl/AccessServiceImpl.java | 1 + .../service/impl/DatabaseServiceImpl.java | 5 + .../tuwien/service/impl/TableServiceImpl.java | 1 + .../tuwien/service/impl/ViewServiceImpl.java | 27 +- dbrepo-metadata-service/test/pom.xml | 4 +- .../java/at/tuwien/test/AbstractUnitTest.java | 12 +- .../main/java/at/tuwien/test/BaseTest.java | 366 ++++++++----- dbrepo-search-service/Pipfile | 2 +- dbrepo-search-service/Pipfile.lock | 500 ++++++++--------- dbrepo-search-service/init/Pipfile.lock | 286 +++++----- dbrepo-search-service/init/database.json | 9 + .../init/lib/dbrepo-1.6.0.tar.gz | Bin 0 -> 39597 bytes dbrepo-search-service/lib/dbrepo-1.6.0.tar.gz | Bin 0 -> 39597 bytes dbrepo-ui/components/TimeDrift.vue | 1 - .../components/database/DatabaseCreate.vue | 63 ++- dbrepo-ui/composables/view-service.ts | 18 +- dbrepo-ui/dto/index.ts | 5 + dbrepo-ui/locales/en-US.json | 33 +- .../pages/database/[database_id]/info.vue | 16 +- .../pages/database/[database_id]/settings.vue | 52 +- .../[database_id]/table/[table_id]/info.vue | 23 +- .../[database_id]/table/create/schema.vue | 5 +- helm/dbrepo/Chart.yaml | 4 +- helm/dbrepo/README.md | 4 +- helm/dbrepo/values.yaml | 14 +- install.sh | 2 +- lib/python/dbrepo/RestClient.py | 73 ++- lib/python/dbrepo/api/dto.py | 14 +- lib/python/pyproject.toml | 2 +- lib/python/setup.py | 2 +- sonar-project.properties | 2 +- 82 files changed, 1648 insertions(+), 1397 deletions(-) create mode 100644 dbrepo-analyse-service/lib/dbrepo-1.6.0.tar.gz create mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewUpdateDto.java create mode 100644 dbrepo-search-service/init/lib/dbrepo-1.6.0.tar.gz create mode 100644 dbrepo-search-service/lib/dbrepo-1.6.0.tar.gz diff --git a/.docs/index.md b/.docs/index.md index 8265da0102..e3307bd493 100644 --- a/.docs/index.md +++ b/.docs/index.md @@ -14,7 +14,7 @@ author: Martin Weise   -Documentation for version: [v1.5.2](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/releases). +Documentation for version: [v1.6.0](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/releases). DBRepo is a repository for data in databases that are used from the beginning until the end of a research project supporting data evolution, -citation and -versioning. It implements the query store of the diff --git a/.docs/kubernetes.md b/.docs/kubernetes.md index fa40580f45..b6fd193fdf 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.5.2" \ + --version "1.6.0" \ --create-namespace \ --cleanup-on-fail ``` diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ac86d24826..9880536a74 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,8 +4,8 @@ variables: TESTCONTAINERS_RYUK_DISABLED: "false" PYTHON_VERSION: "3.11" DOC_VERSION: "1.5" - APP_VERSION: "1.5.2" - CHART_VERSION: "1.5.2" + APP_VERSION: "1.6.0" + CHART_VERSION: "1.6.0" CACHE_FALLBACK_KEY: ${CI_DEFAULT_BRANCH} # This will supress any download for dependencies and plugins or upload messages which would clutter the console log. # `showDateTime` will show the passed time in milliseconds. You need to specify `--batch-mode` to make this work. diff --git a/Makefile b/Makefile index 91994bda3b..11befeed00 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ .PHONY: all -APP_VERSION ?= 1.5.2 -CHART_VERSION ?= 1.5.2 +APP_VERSION ?= 1.6.0 +CHART_VERSION ?= 1.6.0 REPOSITORY_URL ?= registry.datalab.tuwien.ac.at/dbrepo .PHONY: all diff --git a/dbrepo-analyse-service/Pipfile b/dbrepo-analyse-service/Pipfile index 150d5811a6..69b9ee8409 100644 --- a/dbrepo-analyse-service/Pipfile +++ b/dbrepo-analyse-service/Pipfile @@ -21,7 +21,7 @@ numpy = "*" pandas = "*" minio = "*" pydantic = "*" -dbrepo = {path = "./lib/dbrepo-1.5.2.tar.gz"} +dbrepo = {path = "./lib/dbrepo-1.6.0.tar.gz"} opensearch-py = "*" [dev-packages] diff --git a/dbrepo-analyse-service/Pipfile.lock b/dbrepo-analyse-service/Pipfile.lock index 8e7bafd426..e9c218d9ab 100644 --- a/dbrepo-analyse-service/Pipfile.lock +++ b/dbrepo-analyse-service/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "3df8e885e462132896bafc8d6c82c70226fc2352f2088eac67186d3e171b8308" + "sha256": "e3a8db6afce757927a19df8fe01aea426b0f15868df14c8f98a83f2c19a688da" }, "pipfile-spec": 6, "requires": { @@ -26,85 +26,85 @@ }, "aiohttp": { "hashes": [ - "sha256:0411777249f25d11bd2964a230b3ffafcbed6cd65d0f2b132bc2b8f5b8c347c7", - "sha256:0a97d657f6cf8782a830bb476c13f7d777cfcab8428ac49dde15c22babceb361", - "sha256:0b5a5009b0159a8f707879dc102b139466d8ec6db05103ec1520394fdd8ea02c", - "sha256:0bcb7f6976dc0b6b56efde13294862adf68dd48854111b422a336fa729a82ea6", - "sha256:14624d96f0d69cf451deed3173079a68c322279be6030208b045ab77e1e8d550", - "sha256:15c4e489942d987d5dac0ba39e5772dcbed4cc9ae3710d1025d5ba95e4a5349c", - "sha256:176f8bb8931da0613bb0ed16326d01330066bb1e172dd97e1e02b1c27383277b", - "sha256:17af09d963fa1acd7e4c280e9354aeafd9e3d47eaa4a6bfbd2171ad7da49f0c5", - "sha256:1a8b13b9950d8b2f8f58b6e5842c4b842b5887e2c32e3f4644d6642f1659a530", - "sha256:202f40fb686e5f93908eee0c75d1e6fbe50a43e9bd4909bf3bf4a56b560ca180", - "sha256:21cbe97839b009826a61b143d3ca4964c8590d7aed33d6118125e5b71691ca46", - "sha256:27935716f8d62c1c73010428db310fd10136002cfc6d52b0ba7bdfa752d26066", - "sha256:282e0a7ddd36ebc411f156aeaa0491e8fe7f030e2a95da532cf0c84b0b70bc66", - "sha256:28f29bce89c3b401a53d6fd4bee401ee943083bf2bdc12ef297c1d63155070b0", - "sha256:2ac9fd83096df36728da8e2f4488ac3b5602238f602706606f3702f07a13a409", - "sha256:30f9f89ae625d412043f12ca3771b2ccec227cc93b93bb1f994db6e1af40a7d3", - "sha256:317251b9c9a2f1a9ff9cd093775b34c6861d1d7df9439ce3d32a88c275c995cd", - "sha256:31de2f10f63f96cc19e04bd2df9549559beadd0b2ee2da24a17e7ed877ca8c60", - "sha256:36df00e0541f264ce42d62280281541a47474dfda500bc5b7f24f70a7f87be7a", - "sha256:39625703540feb50b6b7f938b3856d1f4886d2e585d88274e62b1bd273fae09b", - "sha256:3f5461c77649358610fb9694e790956b4238ac5d9e697a17f63619c096469afe", - "sha256:4313f3bc901255b22f01663eeeae167468264fdae0d32c25fc631d5d6e15b502", - "sha256:442356e8924fe1a121f8c87866b0ecdc785757fd28924b17c20493961b3d6697", - "sha256:44cb1a1326a0264480a789e6100dc3e07122eb8cd1ad6b784a3d47d13ed1d89c", - "sha256:44d323aa80a867cb6db6bebb4bbec677c6478e38128847f2c6b0f70eae984d72", - "sha256:499368eb904566fbdf1a3836a1532000ef1308f34a1bcbf36e6351904cced771", - "sha256:4b01d9cfcb616eeb6d40f02e66bebfe7b06d9f2ef81641fdd50b8dd981166e0b", - "sha256:5720ebbc7a1b46c33a42d489d25d36c64c419f52159485e55589fbec648ea49a", - "sha256:5cc5e0d069c56645446c45a4b5010d4b33ac6c5ebfd369a791b5f097e46a3c08", - "sha256:618b18c3a2360ac940a5503da14fa4f880c5b9bc315ec20a830357bcc62e6bae", - "sha256:6435a66957cdba1a0b16f368bde03ce9c79c57306b39510da6ae5312a1a5b2c1", - "sha256:647ec5bee7e4ec9f1034ab48173b5fa970d9a991e565549b965e93331f1328fe", - "sha256:6e1e9e447856e9b7b3d38e1316ae9a8c92e7536ef48373de758ea055edfd5db5", - "sha256:6ef1550bb5f55f71b97a6a395286db07f7f2c01c8890e613556df9a51da91e8d", - "sha256:6ffa45cc55b18d4ac1396d1ddb029f139b1d3480f1594130e62bceadf2e1a838", - "sha256:77f31cebd8c27a36af6c7346055ac564946e562080ee1a838da724585c67474f", - "sha256:7a3b5b2c012d70c63d9d13c57ed1603709a4d9d7d473e4a9dfece0e4ea3d5f51", - "sha256:7a7ddf981a0b953ade1c2379052d47ccda2f58ab678fca0671c7c7ca2f67aac2", - "sha256:84de955314aa5e8d469b00b14d6d714b008087a0222b0f743e7ffac34ef56aff", - "sha256:8dcfd14c712aa9dd18049280bfb2f95700ff6a8bde645e09f17c3ed3f05a0130", - "sha256:928f92f80e2e8d6567b87d3316c1fd9860ccfe36e87a9a7f5237d4cda8baa1ba", - "sha256:9384b07cfd3045b37b05ed002d1c255db02fb96506ad65f0f9b776b762a7572e", - "sha256:96726839a42429318017e67a42cca75d4f0d5248a809b3cc2e125445edd7d50d", - "sha256:96bbec47beb131bbf4bae05d8ef99ad9e5738f12717cfbbf16648b78b0232e87", - "sha256:9bcf97b971289be69638d8b1b616f7e557e1342debc7fc86cf89d3f08960e411", - "sha256:a0cf4d814689e58f57ecd5d8c523e6538417ca2e72ff52c007c64065cef50fb2", - "sha256:a7c6147c6306f537cff59409609508a1d2eff81199f0302dd456bb9e7ea50c39", - "sha256:a9266644064779840feec0e34f10a89b3ff1d2d6b751fe90017abcad1864fa7c", - "sha256:afbe85b50ade42ddff5669947afde9e8a610e64d2c80be046d67ec4368e555fa", - "sha256:afcda759a69c6a8be3aae764ec6733155aa4a5ad9aad4f398b52ba4037942fe3", - "sha256:b2fab23003c4bb2249729a7290a76c1dda38c438300fdf97d4e42bf78b19c810", - "sha256:bd3f711f4c99da0091ced41dccdc1bcf8be0281dc314d6d9c6b6cf5df66f37a9", - "sha256:be0c7c98e38a1e3ad7a6ff64af8b6d6db34bf5a41b1478e24c3c74d9e7f8ed42", - "sha256:c1f2d7fd583fc79c240094b3e7237d88493814d4b300d013a42726c35a734bc9", - "sha256:c5bba6b83fde4ca233cfda04cbd4685ab88696b0c8eaf76f7148969eab5e248a", - "sha256:c6beeac698671baa558e82fa160be9761cf0eb25861943f4689ecf9000f8ebd0", - "sha256:c7333e7239415076d1418dbfb7fa4df48f3a5b00f8fdf854fca549080455bc14", - "sha256:c8a02f74ae419e3955af60f570d83187423e42e672a6433c5e292f1d23619269", - "sha256:c9c23e62f3545c2216100603614f9e019e41b9403c47dd85b8e7e5015bf1bde0", - "sha256:cca505829cdab58c2495ff418c96092d225a1bbd486f79017f6de915580d3c44", - "sha256:d3108f0ad5c6b6d78eec5273219a5bbd884b4aacec17883ceefaac988850ce6e", - "sha256:d4b8a1b6c7a68c73191f2ebd3bf66f7ce02f9c374e309bdb68ba886bbbf1b938", - "sha256:d6e274661c74195708fc4380a4ef64298926c5a50bb10fbae3d01627d7a075b7", - "sha256:db2914de2559809fdbcf3e48f41b17a493b58cb7988d3e211f6b63126c55fe82", - "sha256:e738aabff3586091221044b7a584865ddc4d6120346d12e28e788307cd731043", - "sha256:e7f6173302f8a329ca5d1ee592af9e628d3ade87816e9958dcf7cdae2841def7", - "sha256:e9d036a9a41fc78e8a3f10a86c2fc1098fca8fab8715ba9eb999ce4788d35df0", - "sha256:ea142255d4901b03f89cb6a94411ecec117786a76fc9ab043af8f51dd50b5313", - "sha256:ebd3e6b0c7d4954cca59d241970011f8d3327633d555051c430bd09ff49dc494", - "sha256:ec656680fc53a13f849c71afd0c84a55c536206d524cbc831cde80abbe80489e", - "sha256:ec8df0ff5a911c6d21957a9182402aad7bf060eaeffd77c9ea1c16aecab5adbf", - "sha256:ed95d66745f53e129e935ad726167d3a6cb18c5d33df3165974d54742c373868", - "sha256:ef2c9499b7bd1e24e473dc1a85de55d72fd084eea3d8bdeec7ee0720decb54fa", - "sha256:f5252ba8b43906f206048fa569debf2cd0da0316e8d5b4d25abe53307f573941", - "sha256:f737fef6e117856400afee4f17774cdea392b28ecf058833f5eca368a18cf1bf", - "sha256:fc726c3fa8f606d07bd2b500e5dc4c0fd664c59be7788a16b9e34352c50b6b6b" + "sha256:012f176945af138abc10c4a48743327a92b4ca9adc7a0e078077cdb5dbab7be0", + "sha256:02c13415b5732fb6ee7ff64583a5e6ed1c57aa68f17d2bda79c04888dfdc2769", + "sha256:03b6002e20938fc6ee0918c81d9e776bebccc84690e2b03ed132331cca065ee5", + "sha256:04814571cb72d65a6899db6099e377ed00710bf2e3eafd2985166f2918beaf59", + "sha256:0580f2e12de2138f34debcd5d88894786453a76e98febaf3e8fe5db62d01c9bf", + "sha256:06a8e2ee1cbac16fe61e51e0b0c269400e781b13bcfc33f5425912391a542985", + "sha256:076bc454a7e6fd646bc82ea7f98296be0b1219b5e3ef8a488afbdd8e81fbac50", + "sha256:0c9527819b29cd2b9f52033e7fb9ff08073df49b4799c89cb5754624ecd98299", + "sha256:0dc49f42422163efb7e6f1df2636fe3db72713f6cd94688e339dbe33fe06d61d", + "sha256:14cdb5a9570be5a04eec2ace174a48ae85833c2aadc86de68f55541f66ce42ab", + "sha256:15fccaf62a4889527539ecb86834084ecf6e9ea70588efde86e8bc775e0e7542", + "sha256:24213ba85a419103e641e55c27dc7ff03536c4873470c2478cce3311ba1eee7b", + "sha256:31d5093d3acd02b31c649d3a69bb072d539d4c7659b87caa4f6d2bcf57c2fa2b", + "sha256:3691ed7726fef54e928fe26344d930c0c8575bc968c3e239c2e1a04bd8cf7838", + "sha256:386fbe79863eb564e9f3615b959e28b222259da0c48fd1be5929ac838bc65683", + "sha256:3bbbfff4c679c64e6e23cb213f57cc2c9165c9a65d63717108a644eb5a7398df", + "sha256:3de34936eb1a647aa919655ff8d38b618e9f6b7f250cc19a57a4bf7fd2062b6d", + "sha256:40d1c7a7f750b5648642586ba7206999650208dbe5afbcc5284bcec6579c9b91", + "sha256:44224d815853962f48fe124748227773acd9686eba6dc102578defd6fc99e8d9", + "sha256:47ad15a65fb41c570cd0ad9a9ff8012489e68176e7207ec7b82a0940dddfd8be", + "sha256:482cafb7dc886bebeb6c9ba7925e03591a62ab34298ee70d3dd47ba966370d2c", + "sha256:49c7dbbc1a559ae14fc48387a115b7d4bbc84b4a2c3b9299c31696953c2a5219", + "sha256:4b2c7ac59c5698a7a8207ba72d9e9c15b0fc484a560be0788b31312c2c5504e4", + "sha256:4cca22a61b7fe45da8fc73c3443150c3608750bbe27641fc7558ec5117b27fdf", + "sha256:4cfce37f31f20800a6a6620ce2cdd6737b82e42e06e6e9bd1b36f546feb3c44f", + "sha256:502a1464ccbc800b4b1995b302efaf426e8763fadf185e933c2931df7db9a199", + "sha256:53bf2097e05c2accc166c142a2090e4c6fd86581bde3fd9b2d3f9e93dda66ac1", + "sha256:593c114a2221444f30749cc5e5f4012488f56bd14de2af44fe23e1e9894a9c60", + "sha256:5d6958671b296febe7f5f859bea581a21c1d05430d1bbdcf2b393599b1cdce77", + "sha256:5ef359ebc6949e3a34c65ce20230fae70920714367c63afd80ea0c2702902ccf", + "sha256:613e5169f8ae77b1933e42e418a95931fb4867b2991fc311430b15901ed67079", + "sha256:61b9bae80ed1f338c42f57c16918853dc51775fb5cb61da70d590de14d8b5fb4", + "sha256:6362cc6c23c08d18ddbf0e8c4d5159b5df74fea1a5278ff4f2c79aed3f4e9f46", + "sha256:65a96e3e03300b41f261bbfd40dfdbf1c301e87eab7cd61c054b1f2e7c89b9e8", + "sha256:65e55ca7debae8faaffee0ebb4b47a51b4075f01e9b641c31e554fd376595c6c", + "sha256:68386d78743e6570f054fe7949d6cb37ef2b672b4d3405ce91fafa996f7d9b4d", + "sha256:68ff6f48b51bd78ea92b31079817aff539f6c8fc80b6b8d6ca347d7c02384e33", + "sha256:6ab29b8a0beb6f8eaf1e5049252cfe74adbaafd39ba91e10f18caeb0e99ffb34", + "sha256:77ae58586930ee6b2b6f696c82cf8e78c8016ec4795c53e36718365f6959dc82", + "sha256:77c4aa15a89847b9891abf97f3d4048f3c2d667e00f8a623c89ad2dccee6771b", + "sha256:78153314f26d5abef3239b4a9af20c229c6f3ecb97d4c1c01b22c4f87669820c", + "sha256:7852bbcb4d0d2f0c4d583f40c3bc750ee033265d80598d0f9cb6f372baa6b836", + "sha256:7e97d622cb083e86f18317282084bc9fbf261801b0192c34fe4b1febd9f7ae69", + "sha256:7f3dc0e330575f5b134918976a645e79adf333c0a1439dcf6899a80776c9ab39", + "sha256:80886dac673ceaef499de2f393fc80bb4481a129e6cb29e624a12e3296cc088f", + "sha256:811f23b3351ca532af598405db1093f018edf81368e689d1b508c57dcc6b6a32", + "sha256:86a5dfcc39309470bd7b68c591d84056d195428d5d2e0b5ccadfbaf25b026ebc", + "sha256:8b3cf2dc0f0690a33f2d2b2cb15db87a65f1c609f53c37e226f84edb08d10f52", + "sha256:8cc5203b817b748adccb07f36390feb730b1bc5f56683445bfe924fc270b8816", + "sha256:909af95a72cedbefe5596f0bdf3055740f96c1a4baa0dd11fd74ca4de0b4e3f1", + "sha256:974d3a2cce5fcfa32f06b13ccc8f20c6ad9c51802bb7f829eae8a1845c4019ec", + "sha256:98283b94cc0e11c73acaf1c9698dea80c830ca476492c0fe2622bd931f34b487", + "sha256:98f5635f7b74bcd4f6f72fcd85bea2154b323a9f05226a80bc7398d0c90763b0", + "sha256:99b7920e7165be5a9e9a3a7f1b680f06f68ff0d0328ff4079e5163990d046767", + "sha256:9bca390cb247dbfaec3c664326e034ef23882c3f3bfa5fbf0b56cad0320aaca5", + "sha256:9e2e576caec5c6a6b93f41626c9c02fc87cd91538b81a3670b2e04452a63def6", + "sha256:9ef405356ba989fb57f84cac66f7b0260772836191ccefbb987f414bcd2979d9", + "sha256:a55d2ad345684e7c3dd2c20d2f9572e9e1d5446d57200ff630e6ede7612e307f", + "sha256:ab7485222db0959a87fbe8125e233b5a6f01f4400785b36e8a7878170d8c3138", + "sha256:b1fc6b45010a8d0ff9e88f9f2418c6fd408c99c211257334aff41597ebece42e", + "sha256:b78f053a7ecfc35f0451d961dacdc671f4bcbc2f58241a7c820e9d82559844cf", + "sha256:b99acd4730ad1b196bfb03ee0803e4adac371ae8efa7e1cbc820200fc5ded109", + "sha256:be2b516f56ea883a3e14dda17059716593526e10fb6303189aaf5503937db408", + "sha256:beb39a6d60a709ae3fb3516a1581777e7e8b76933bb88c8f4420d875bb0267c6", + "sha256:bf3d1a519a324af764a46da4115bdbd566b3c73fb793ffb97f9111dbc684fc4d", + "sha256:c49a76c1038c2dd116fa443eba26bbb8e6c37e924e2513574856de3b6516be99", + "sha256:c5532f0441fc09c119e1dca18fbc0687e64fbeb45aa4d6a87211ceaee50a74c4", + "sha256:c6b9e6d7e41656d78e37ce754813fa44b455c3d0d0dced2a047def7dc5570b74", + "sha256:c87bf31b7fdab94ae3adbe4a48e711bfc5f89d21cf4c197e75561def39e223bc", + "sha256:cbad88a61fa743c5d283ad501b01c153820734118b65aee2bd7dbb735475ce0d", + "sha256:cf14627232dfa8730453752e9cdc210966490992234d77ff90bc8dc0dce361d5", + "sha256:db1d0b28fcb7f1d35600150c3e4b490775251dea70f894bf15c678fdd84eda6a", + "sha256:ddf5f7d877615f6a1e75971bfa5ac88609af3b74796ff3e06879e8422729fd01", + "sha256:e44a9a3c053b90c6f09b1bb4edd880959f5328cf63052503f892c41ea786d99f", + "sha256:efb15a17a12497685304b2d976cb4939e55137df7b09fa53f1b6a023f01fcb4e", + "sha256:fbbaea811a2bba171197b08eea288b9402faa2bab2ba0858eecdd0a4105753a3" ], "markers": "python_version >= '3.9'", - "version": "==3.11.9" + "version": "==3.11.10" }, "aiosignal": { "hashes": [ @@ -175,20 +175,20 @@ }, "boto3": { "hashes": [ - "sha256:88370c6845ba71a4dae7f6b357099df29b3965da584be040c8e72c9902bc9492", - "sha256:dab5bddbbe57dc707b6f6a1f25dc2823b8e234b6fe99fafef7fc406ab73031b9" + "sha256:31ddcdb6f15dace2b68f6a0f11bdb58dd3ae79b8a3ccb174ff811ef0bbf938e0", + "sha256:69458399f41f57a50770c8974796d96978bcca44915c260319696bb43e47dffd" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.35.74" + "version": "==1.35.76" }, "botocore": { "hashes": [ - "sha256:9ac9d33d84dd9f05b35085de081552342a2c9ae22e3c4ee105723c9e92c07bd9", - "sha256:de5c4fa9a24cef3a758974857b5c5820a12fad345ebf33c052a5988e88f33634" + "sha256:a75a42ae53395796b8300c5fefb2d65a8696dc40dc85e49cf3a769e0c0202b13", + "sha256:b4729d12d00267b3185628f83543917b6caae292385230ab464067621aa086af" ], "markers": "python_version >= '3.8'", - "version": "==1.35.74" + "version": "==1.35.76" }, "certifi": { "hashes": [ @@ -427,9 +427,9 @@ }, "dbrepo": { "hashes": [ - "sha256:292c2631816ca3dbdbd243e4c006c4bd39d512f5ae7e4b10070102c85ec58a10" + "sha256:2fca7fb5037f3497cb4154f770ebe4690e5ff93aef4c4d4ef39288b34806f077" ], - "path": "./lib/dbrepo-1.5.2.tar.gz" + "path": "./lib/dbrepo-1.6.0.tar.gz" }, "events": { "hashes": [ @@ -1459,112 +1459,112 @@ }, "rpds-py": { "hashes": [ - "sha256:0545928bdf53dfdfcab284468212efefb8a6608ca3b6910c7fb2e5ed8bdc2dc0", - "sha256:05fdeae9010533e47715c37df83264df0122584e40d691d50cf3607c060952a3", - "sha256:09a1f000c5f6e08b298275bae00921e9fbbf2a35dae0a86db2821c058c2201a9", - "sha256:0a53592cdf98cec3dfcdb24ffec8a4797e7656b65700099af43ec7df023b6de4", - "sha256:0f057a0c546c42964836b209d8de9ea1a4f4b0432006c6343cbe633d8ca14571", - "sha256:0f9eb37d3a60b262a98ab51ee899cac039de9ca0ce68dcf1a6518a09719020b0", - "sha256:102be79c4cc47a4aeb5912401185c404cd2601c15a7163bbecff7f1bfe20b669", - "sha256:128cbaed7ba26116820bcb992405d6a13ea18c8fca1b8c4f59906d858e91e979", - "sha256:149b4d875ef9b12a8f5e303e86a32a58f8ef627e57ec97a7d0e4be819069d141", - "sha256:153248f48d6f90a295a502f53ec544a3ffbd21b0bb32f5dca39c4b93a764d6a2", - "sha256:157a023bded0618a1eea54979fe2e0f9309e9ddc818ef4b8fc3b884ff38fedd5", - "sha256:15fa4ca658f8ad22645d3531682b17e5580832efbfa87304c3e62214c79c1e8a", - "sha256:198067aa6f3d942ff5d0d655bb1e91b59ae85279d47590682cba2834ac1b97d2", - "sha256:1c40e02cc4f3e18fd39344edb10eebe04bd11cfd13119606b5771e5ea51630d3", - "sha256:1ded65691a1d3fd7d2aa89d2c91aa51f941601bb2ce099739909034d957fef4b", - "sha256:201650b309c419143775c15209c620627de3c09a27c7fb58375325aec5cce260", - "sha256:2143c3aed85992604d758bbe67da839fb4aab3dd2e1c6dddab5b3ca7162b34a2", - "sha256:2177e59c033bf0d1bf7de1ced561205963583caf3242c6c700a723034bfb5f8e", - "sha256:2ea23f1525d4f64286dbe0947c929d45c3ffe963b2dbed1d3844a2e4938bda42", - "sha256:31264187fc934ff1024a4f56775f33c9252d3f4f3e27ec07d1995a26b52702c3", - "sha256:36ce951800ed2acc6772fd9f42150f29d567f0423989748052fdb39d9e2b5795", - "sha256:3aaa22487477de9618ce3b37f99fbe81219ba96f3c2ca84f576f0ab451b83aba", - "sha256:3e7e99e2af59c56c59b6c964d612511b8203480d39d1ef83edc56f2cb42a3f5d", - "sha256:413a30a99d8683dace3765885920ed27ab662efbb6c98d81db76c397ad1ffd71", - "sha256:447ae1104fb32197b9262f772d565d38e834cc2e9edd89350b37b88fed636e70", - "sha256:4659b2e4a5008715099e216050f5c6976e5a4329482664411789968b82e3f17d", - "sha256:48ee97c7c6027fd423058675b5a39d0b5f7a1648250b671563d5c9f74ff13ff0", - "sha256:4ba6c66fbc6015b2f99e7176fec41793cecb00c4cc357cad038dff85e6ac42ab", - "sha256:4c8dc7331e8cbb1c0ea2bcb550adb1777365944ffd125c69aa1117fdef4887f5", - "sha256:50e4b5d291105f7063259fe0125b1af902fb34499444d7c5c521dd8328b00939", - "sha256:542eb246d5be31b5e0a9c8ddb9539416f9b31f58f75bd4ee328bff2b5c58d6fd", - "sha256:55d371b9d8b0c2a68a50413a8cb01c3c3ce1ea4f768bf77b66669a9a486e101e", - "sha256:580ccbf11f02f948add4cb641843030a89f1463d7c0740cbfc9aca91e9dc34b3", - "sha256:5dbff9402c2bdf00bf0df9905694b3c292a3847c725651938a72f554351a5fcb", - "sha256:5f941fb86195f97be7f6efe04a21b223f05dfe4d1dfb159999e2f8d101e44cc4", - "sha256:608c84699b2db09c6a8743845b1a3dad36fae53eaaecb241d45b13dff74405fb", - "sha256:626b9feb01bff049a5aec4804f0c58db12585778b4902e5376a95b01f80a7a16", - "sha256:66f4f48a89cdd30ab3a47335df81c76e9a63799d0d84b29c0618371c66fa37b0", - "sha256:6c8e97e19aa7b0b0d801a159f932ce4435f1049c8c38e2bb372bb5bee559ce50", - "sha256:72407065ad459db9f3d052ea8c51e02534f02533fc61e51cbab3bd94166f086c", - "sha256:734783dd7da58f76222f458346ddebdb3621686a1a2a667db5049caf0c9956b9", - "sha256:76eaa4c087a061a2c8a0a92536405069878a8f530c00e84a9eaf332e70f5561f", - "sha256:776a06cb5720556a549829896a49acebb5bdd96c7bba100191a994053546975a", - "sha256:7839b7528faa4d134c183b1f2dd1ee4dc2ca2f899f4f0cfdf00fc04c255262a7", - "sha256:8080467df22feca0fc9c46567001777c6fbc2b4a2683a7137420896051874ca1", - "sha256:85060e96953647871957d41707adb8d7bff4e977042fd0deb4fc1881b98dd2fe", - "sha256:8954b9ffe60f479a0c0ba40987db2546c735ab02a725ea7fd89342152d4d821d", - "sha256:8a603155db408f773637f9e3a712c6e3cbc521aaa8fa2b99f9ba6106c59a2496", - "sha256:8bd9ec1db79a664f4cbb12878693b73416f4d2cb425d3e27eccc1bdfbdc826ef", - "sha256:8c0c324879d483504b07f7b18eb1b50567c434263bbe4866ecce33056162668a", - "sha256:8ce729f1dc8a4a190c34b69f75377bddc004079b2963ab722ab91fafe040be6d", - "sha256:8ec41049c90d204a6561238a9ad6c7263ebb7009d9759c98b58078d9d2fec9ba", - "sha256:959ae04ed30cde606f3a0320f0a1f4167a107e685ef5209cce28c5080590bd31", - "sha256:96559e05bdf938b2048353e10a7920b98f853cefe4482c2064a718d7d0a50bd7", - "sha256:96b3759d8ab2323324e0a92b2f44834f9d88089b8d1ab6f533b61f4be3411cef", - "sha256:97c5ffe47ccf92d8b17e10f8a5ce28d015aa1196edc3359684cf31504eae6a14", - "sha256:9d5b925156a746dc1f5f52376fdd1fbdd3f6ffe1fcd6f5e06f77ca79abb940a3", - "sha256:9dae4eb9b5534e09ba6c6ab496a757e5e394b7e7b08767d25ca37e8d36491114", - "sha256:a083221b6a4ecdef38a60c95d8d3223d99449cb4da2544e9644958dc16664eb9", - "sha256:a0ed14a4162c2c2b21a162c9fcf90057e3e7da18cd171ab344c1e1664f75090e", - "sha256:a18aedc032d6468b73ebbe4437129cb30d54fe543cde2f23671ecad76c3aea24", - "sha256:a451dba533be77454ebcffc85189108fc05f279100835ac76e7989edacb89156", - "sha256:aa2ba0176037c915d8660a4e46581d645e2c22b5373e466bc8640a794d45861a", - "sha256:ab27dd4edd84b13309f268ffcdfc07aef8339135ffab7b6d43f16884307a2a48", - "sha256:ab784621d3e2a41916e21f13a483602cc989fd45fff637634b9231ba43d4383b", - "sha256:b07fa9e634234e84096adfa4be3828c8f26e238679c122824b2b3d7131bec578", - "sha256:b09209cdfcacf5eba9cf80367130532e6c02e695252e1f64d3cfcc2356e6e19f", - "sha256:babec324e8654a59122aaa66936a9a483faa03276db9792f51332475c2dddc4a", - "sha256:bca4428c4a957b78ded3e6e62884ab03f029dce8fa8d34818da0f80f61332b49", - "sha256:c0467838c90435b80793cde486a318fc916ee57f2af54e4b10c72b20cbdcbaa9", - "sha256:c2a214bf5b79bd39a9de1c991353aaaacafda83ba1374178309e92be8e67d411", - "sha256:c3029f481b31f329b1fdb4ec4b56935d82210ddd9c6f86ea5a87c06f1e97b161", - "sha256:c6f3fd617db422c9d4e12cb8d84c984fe07d6d9cb0950cbf117f3bccc6268d05", - "sha256:c783e4ed68200f4e03c125690d23158b1c49c4b186d458a18debc109bbdc3c2e", - "sha256:c8502a02ae3ae67084f5a0bf5a8253b19fa7a887f824e41e016cdb0ac532a06f", - "sha256:c88535f83f7391cf3a45af990237e3939a6fdfbedaed2571633bfdd0bceb36b0", - "sha256:c9ce6b83597d45bec44a2690857ede62fc98223772135f8a7fa90884eb726501", - "sha256:ca4657e9fd0b1b5376942d403d634ce188f79064f0873aa853ab05b10185ceec", - "sha256:d0ff8d5b13ce2357fa8b33a0a2e3775aa71df5bf7c8ba060634c9d15ab12f357", - "sha256:d280b4bf09f719b89fd9aab3b71067acc0d0449b7d1eba99a2ade4939cef8296", - "sha256:d3777c446bb1c5fcd82dc3f8776e1a146cd91e80cc1892f8634575ace438d22f", - "sha256:d7833ef6f5d6cb634f296abfd93452fb3eb44c4e9a6ae95c1021eab704c1cee2", - "sha256:d8306f27418361b788e3fca9f47dec125457f80122e7e31ba7ff5cdba98343f8", - "sha256:d962e2e89b3a95e3597a34b8c93ced1e98958502c5b8096c9fd69deff279f561", - "sha256:dbe428d0ac6eacaf05402adbaf137f59ad6063848182d1ff294f95ce0f24005b", - "sha256:e4f91d702b9ce1388660b3d4a28aa552614a1399e93f718ed0dacd68f23b3d32", - "sha256:e69acdbc132c9592c8dc393af85e38e206ca847c7019a953ff625191c3a12312", - "sha256:e8056adcefa2dcb67e8bc91ea5eee26df66e8b297a8cd6ff0903f85c70908fa0", - "sha256:e9ac7280bd045f472b50306d7efeee051b69e3a2dd1b90f46bd7e86e63b1efa2", - "sha256:eb013aa01b404219f28dc973d9e6310fd4db216d7299253dd355629952e0564e", - "sha256:ec1ccc2a9f764cd632fb8ab28fdde166250df54fc8d97315a4a6948dc5367639", - "sha256:ef7282d8a14b60dd515e47060638687710b1d518f4b5e961caad43fb3a3606f9", - "sha256:ef92b1fbe6aa2e7885eb90853cc016b1fc95439a8cc8da6d526880e9e2148695", - "sha256:efb2ad60ca8637d5f9f653f9a9a8d73964059972b6b95036be77e028bffc68a3", - "sha256:effcae2152afe7937a28376dbabb25c770ef99ed4e16a4ffeb8e6a4f7c4f06aa", - "sha256:f2d1b58a0c3a73f0361759642e80260a6d28eee6501b40fe25b82af33ef83f21", - "sha256:f57e2d0f8022783426121b586d7c842ea40ea832a29e28ca36c881b54c74fb28", - "sha256:f5cae9b415ea8a6a563566dbf46650222eccc5971c7daa16fbee63aef92ae543", - "sha256:f76c6f319e57007ad52e671ec741d801324760a377e3d4992c9bb8200333ebac", - "sha256:f91bfc39f7a64168e08ab831fa497ec5438c1d6c6e2f9e12848d95ad11ac8523", - "sha256:fdaee3947eaaa52dae3ceb9d9f66329e13d8bae35682b1e5dd54612938693934", - "sha256:fe3f245c2f39a5692d9123c174bc48f6f9fe3e96407e67c6d04541a767d99e72", - "sha256:ffae97d28ea4f2c613a751d087b75a97fb78311b38cc2e9a2f4587e473ace167" + "sha256:009de23c9c9ee54bf11303a966edf4d9087cd43a6003672e6aa7def643d06518", + "sha256:02fbb9c288ae08bcb34fb41d516d5eeb0455ac35b5512d03181d755d80810059", + "sha256:0a0461200769ab3b9ab7e513f6013b7a97fdeee41c29b9db343f3c5a8e2b9e61", + "sha256:0b09865a9abc0ddff4e50b5ef65467cd94176bf1e0004184eb915cbc10fc05c5", + "sha256:0b8db6b5b2d4491ad5b6bdc2bc7c017eec108acbf4e6785f42a9eb0ba234f4c9", + "sha256:0c150c7a61ed4a4f4955a96626574e9baf1adf772c2fb61ef6a5027e52803543", + "sha256:0f3cec041684de9a4684b1572fe28c7267410e02450f4561700ca5a3bc6695a2", + "sha256:1352ae4f7c717ae8cba93421a63373e582d19d55d2ee2cbb184344c82d2ae55a", + "sha256:177c7c0fce2855833819c98e43c262007f42ce86651ffbb84f37883308cb0e7d", + "sha256:1978d0021e943aae58b9b0b196fb4895a25cc53d3956b8e35e0b7682eefb6d56", + "sha256:1a60bce91f81ddaac922a40bbb571a12c1070cb20ebd6d49c48e0b101d87300d", + "sha256:1aef18820ef3e4587ebe8b3bc9ba6e55892a6d7b93bac6d29d9f631a3b4befbd", + "sha256:1e9663daaf7a63ceccbbb8e3808fe90415b0757e2abddbfc2e06c857bf8c5e2b", + "sha256:20070c65396f7373f5df4005862fa162db5d25d56150bddd0b3e8214e8ef45b4", + "sha256:214b7a953d73b5e87f0ebece4a32a5bd83c60a3ecc9d4ec8f1dca968a2d91e99", + "sha256:22bebe05a9ffc70ebfa127efbc429bc26ec9e9b4ee4d15a740033efda515cf3d", + "sha256:24e8abb5878e250f2eb0d7859a8e561846f98910326d06c0d51381fed59357bd", + "sha256:26fd7cac7dd51011a245f29a2cc6489c4608b5a8ce8d75661bb4a1066c52dfbe", + "sha256:27b1d3b3915a99208fee9ab092b8184c420f2905b7d7feb4aeb5e4a9c509b8a1", + "sha256:27e98004595899949bd7a7b34e91fa7c44d7a97c40fcaf1d874168bb652ec67e", + "sha256:2b8f60e1b739a74bab7e01fcbe3dddd4657ec685caa04681df9d562ef15b625f", + "sha256:2de29005e11637e7a2361fa151f780ff8eb2543a0da1413bb951e9f14b699ef3", + "sha256:2e8b55d8517a2fda8d95cb45d62a5a8bbf9dd0ad39c5b25c8833efea07b880ca", + "sha256:2fa4331c200c2521512595253f5bb70858b90f750d39b8cbfd67465f8d1b596d", + "sha256:3445e07bf2e8ecfeef6ef67ac83de670358abf2996916039b16a218e3d95e97e", + "sha256:3453e8d41fe5f17d1f8e9c383a7473cd46a63661628ec58e07777c2fff7196dc", + "sha256:378753b4a4de2a7b34063d6f95ae81bfa7b15f2c1a04a9518e8644e81807ebea", + "sha256:3af6e48651c4e0d2d166dc1b033b7042ea3f871504b6805ba5f4fe31581d8d38", + "sha256:3dfcbc95bd7992b16f3f7ba05af8a64ca694331bd24f9157b49dadeeb287493b", + "sha256:3f21f0495edea7fdbaaa87e633a8689cd285f8f4af5c869f27bc8074638ad69c", + "sha256:4041711832360a9b75cfb11b25a6a97c8fb49c07b8bd43d0d02b45d0b499a4ff", + "sha256:44d61b4b7d0c2c9ac019c314e52d7cbda0ae31078aabd0f22e583af3e0d79723", + "sha256:4617e1915a539a0d9a9567795023de41a87106522ff83fbfaf1f6baf8e85437e", + "sha256:4b232061ca880db21fa14defe219840ad9b74b6158adb52ddf0e87bead9e8493", + "sha256:5246b14ca64a8675e0a7161f7af68fe3e910e6b90542b4bfb5439ba752191df6", + "sha256:5725dd9cc02068996d4438d397e255dcb1df776b7ceea3b9cb972bdb11260a83", + "sha256:583f6a1993ca3369e0f80ba99d796d8e6b1a3a2a442dd4e1a79e652116413091", + "sha256:59259dc58e57b10e7e18ce02c311804c10c5a793e6568f8af4dead03264584d1", + "sha256:593eba61ba0c3baae5bc9be2f5232430453fb4432048de28399ca7376de9c627", + "sha256:59f4a79c19232a5774aee369a0c296712ad0e77f24e62cad53160312b1c1eaa1", + "sha256:5f0e260eaf54380380ac3808aa4ebe2d8ca28b9087cf411649f96bad6900c728", + "sha256:62d9cfcf4948683a18a9aff0ab7e1474d407b7bab2ca03116109f8464698ab16", + "sha256:64607d4cbf1b7e3c3c8a14948b99345eda0e161b852e122c6bb71aab6d1d798c", + "sha256:655ca44a831ecb238d124e0402d98f6212ac527a0ba6c55ca26f616604e60a45", + "sha256:666ecce376999bf619756a24ce15bb14c5bfaf04bf00abc7e663ce17c3f34fe7", + "sha256:68049202f67380ff9aa52f12e92b1c30115f32e6895cd7198fa2a7961621fc5a", + "sha256:69803198097467ee7282750acb507fba35ca22cc3b85f16cf45fb01cb9097730", + "sha256:6c7b99ca52c2c1752b544e310101b98a659b720b21db00e65edca34483259967", + "sha256:6dd9412824c4ce1aca56c47b0991e65bebb7ac3f4edccfd3f156150c96a7bf25", + "sha256:70eb60b3ae9245ddea20f8a4190bd79c705a22f8028aaf8bbdebe4716c3fab24", + "sha256:70fb28128acbfd264eda9bf47015537ba3fe86e40d046eb2963d75024be4d055", + "sha256:7b2513ba235829860b13faa931f3b6846548021846ac808455301c23a101689d", + "sha256:7ef9d9da710be50ff6809fed8f1963fecdfecc8b86656cadfca3bc24289414b0", + "sha256:81e69b0a0e2537f26d73b4e43ad7bc8c8efb39621639b4434b76a3de50c6966e", + "sha256:8633e471c6207a039eff6aa116e35f69f3156b3989ea3e2d755f7bc41754a4a7", + "sha256:8bd7c8cfc0b8247c8799080fbff54e0b9619e17cdfeb0478ba7295d43f635d7c", + "sha256:9253fc214112405f0afa7db88739294295f0e08466987f1d70e29930262b4c8f", + "sha256:99b37292234e61325e7a5bb9689e55e48c3f5f603af88b1642666277a81f1fbd", + "sha256:9bd7228827ec7bb817089e2eb301d907c0d9827a9e558f22f762bb690b131652", + "sha256:9beeb01d8c190d7581a4d59522cd3d4b6887040dcfc744af99aa59fef3e041a8", + "sha256:a63cbdd98acef6570c62b92a1e43266f9e8b21e699c363c0fef13bd530799c11", + "sha256:a76e42402542b1fae59798fab64432b2d015ab9d0c8c47ba7addddbaf7952333", + "sha256:ac0a03221cdb5058ce0167ecc92a8c89e8d0decdc9e99a2ec23380793c4dcb96", + "sha256:b0b4136a252cadfa1adb705bb81524eee47d9f6aab4f2ee4fa1e9d3cd4581f64", + "sha256:b25bc607423935079e05619d7de556c91fb6adeae9d5f80868dde3468657994b", + "sha256:b3d504047aba448d70cf6fa22e06cb09f7cbd761939fdd47604f5e007675c24e", + "sha256:bb47271f60660803ad11f4c61b42242b8c1312a31c98c578f79ef9387bbde21c", + "sha256:bbb232860e3d03d544bc03ac57855cd82ddf19c7a07651a7c0fdb95e9efea8b9", + "sha256:bc27863442d388870c1809a87507727b799c8460573cfbb6dc0eeaef5a11b5ec", + "sha256:bc51abd01f08117283c5ebf64844a35144a0843ff7b2983e0648e4d3d9f10dbb", + "sha256:be2eb3f2495ba669d2a985f9b426c1797b7d48d6963899276d22f23e33d47e37", + "sha256:bf9db5488121b596dbfc6718c76092fda77b703c1f7533a226a5a9f65248f8ad", + "sha256:c58e2339def52ef6b71b8f36d13c3688ea23fa093353f3a4fee2556e62086ec9", + "sha256:cfbc454a2880389dbb9b5b398e50d439e2e58669160f27b60e5eca11f68ae17c", + "sha256:cff63a0272fcd259dcc3be1657b07c929c466b067ceb1c20060e8d10af56f5bf", + "sha256:d115bffdd417c6d806ea9069237a4ae02f513b778e3789a359bc5856e0404cc4", + "sha256:d20cfb4e099748ea39e6f7b16c91ab057989712d31761d3300d43134e26e165f", + "sha256:d48424e39c2611ee1b84ad0f44fb3b2b53d473e65de061e3f460fc0be5f1939d", + "sha256:e0fa2d4ec53dc51cf7d3bb22e0aa0143966119f42a0c3e4998293a3dd2856b09", + "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d", + "sha256:e35ba67d65d49080e8e5a1dd40101fccdd9798adb9b050ff670b7d74fa41c566", + "sha256:e3fb866d9932a3d7d0c82da76d816996d1667c44891bd861a0f97ba27e84fc74", + "sha256:e61b02c3f7a1e0b75e20c3978f7135fd13cb6cf551bf4a6d29b999a88830a338", + "sha256:e67ba3c290821343c192f7eae1d8fd5999ca2dc99994114643e2f2d3e6138b15", + "sha256:e79dd39f1e8c3504be0607e5fc6e86bb60fe3584bec8b782578c3b0fde8d932c", + "sha256:e89391e6d60251560f0a8f4bd32137b077a80d9b7dbe6d5cab1cd80d2746f648", + "sha256:ea7433ce7e4bfc3a85654aeb6747babe3f66eaf9a1d0c1e7a4435bbdf27fea84", + "sha256:eaf16ae9ae519a0e237a0f528fd9f0197b9bb70f40263ee57ae53c2b8d48aeb3", + "sha256:eb0c341fa71df5a4595f9501df4ac5abfb5a09580081dffbd1ddd4654e6e9123", + "sha256:f276b245347e6e36526cbd4a266a417796fc531ddf391e43574cf6466c492520", + "sha256:f47ad3d5f3258bd7058d2d506852217865afefe6153a36eb4b6928758041d831", + "sha256:f56a6b404f74ab372da986d240e2e002769a7d7102cc73eb238a4f72eec5284e", + "sha256:f5cf2a0c2bdadf3791b5c205d55a37a54025c6e18a71c71f82bb536cf9a454bf", + "sha256:f5d36399a1b96e1a5fdc91e0522544580dbebeb1f77f27b2b0ab25559e103b8b", + "sha256:f60bd8423be1d9d833f230fdbccf8f57af322d96bcad6599e5a771b151398eb2", + "sha256:f612463ac081803f243ff13cccc648578e2279295048f2a8d5eb430af2bae6e3", + "sha256:f73d3fef726b3243a811121de45193c0ca75f6407fe66f3f4e183c983573e130", + "sha256:f82a116a1d03628a8ace4859556fb39fd1424c933341a08ea3ed6de1edb0283b", + "sha256:fb0ba113b4983beac1a2eb16faffd76cb41e176bf58c4afe3e14b9c681f702de", + "sha256:fb4f868f712b2dd4bcc538b0a0c1f63a2b1d584c925e69a224d759e7070a12d5", + "sha256:fb6116dfb8d1925cbdb52595560584db42a7f664617a1f7d7f6e32f138cdf37d", + "sha256:fda7cb070f442bf80b642cd56483b5548e43d366fe3f39b98e67cce780cded00", + "sha256:feea821ee2a9273771bae61194004ee2fc33f8ec7db08117ef9147d4bbcbca8e" ], "markers": "python_version >= '3.9'", - "version": "==0.22.1" + "version": "==0.22.3" }, "s3transfer": { "hashes": [ @@ -1584,11 +1584,11 @@ }, "six": { "hashes": [ - "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", - "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", + "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", - "version": "==1.16.0" + "version": "==1.17.0" }, "tinydb": { "hashes": [ @@ -2008,72 +2008,72 @@ }, "coverage": { "hashes": [ - "sha256:093896e530c38c8e9c996901858ac63f3d4171268db2c9c8b373a228f459bbc5", - "sha256:09b9f848b28081e7b975a3626e9081574a7b9196cde26604540582da60235fdf", - "sha256:0b0c69f4f724c64dfbfe79f5dfb503b42fe6127b8d479b2677f2b227478db2eb", - "sha256:13618bed0c38acc418896005732e565b317aa9e98d855a0e9f211a7ffc2d6638", - "sha256:13690e923a3932e4fad4c0ebfb9cb5988e03d9dcb4c5150b5fcbf58fd8bddfc4", - "sha256:177f01eeaa3aee4a5ffb0d1439c5952b53d5010f86e9d2667963e632e30082cc", - "sha256:193e3bffca48ad74b8c764fb4492dd875038a2f9925530cb094db92bb5e47bed", - "sha256:1defe91d41ce1bd44b40fabf071e6a01a5aa14de4a31b986aa9dfd1b3e3e414a", - "sha256:1f188a2402f8359cf0c4b1fe89eea40dc13b52e7b4fd4812450da9fcd210181d", - "sha256:202a2d645c5a46b84992f55b0a3affe4f0ba6b4c611abec32ee88358db4bb649", - "sha256:24eda3a24a38157eee639ca9afe45eefa8d2420d49468819ac5f88b10de84f4c", - "sha256:2e4e0f60cb4bd7396108823548e82fdab72d4d8a65e58e2c19bbbc2f1e2bfa4b", - "sha256:379c111d3558272a2cae3d8e57e6b6e6f4fe652905692d54bad5ea0ca37c5ad4", - "sha256:37cda8712145917105e07aab96388ae76e787270ec04bcb9d5cc786d7cbb8443", - "sha256:38c51297b35b3ed91670e1e4efb702b790002e3245a28c76e627478aa3c10d83", - "sha256:3985b9be361d8fb6b2d1adc9924d01dec575a1d7453a14cccd73225cb79243ee", - "sha256:3988665ee376abce49613701336544041f2117de7b7fbfe91b93d8ff8b151c8e", - "sha256:3ac47fa29d8d41059ea3df65bd3ade92f97ee4910ed638e87075b8e8ce69599e", - "sha256:3b4b4299dd0d2c67caaaf286d58aef5e75b125b95615dda4542561a5a566a1e3", - "sha256:3ea8bb1ab9558374c0ab591783808511d135a833c3ca64a18ec927f20c4030f0", - "sha256:3fe47da3e4fda5f1abb5709c156eca207eacf8007304ce3019eb001e7a7204cb", - "sha256:428ac484592f780e8cd7b6b14eb568f7c85460c92e2a37cb0c0e5186e1a0d076", - "sha256:44e6c85bbdc809383b509d732b06419fb4544dca29ebe18480379633623baafb", - "sha256:4674f0daa1823c295845b6a740d98a840d7a1c11df00d1fd62614545c1583787", - "sha256:4be32da0c3827ac9132bb488d331cb32e8d9638dd41a0557c5569d57cf22c9c1", - "sha256:4db3ed6a907b555e57cc2e6f14dc3a4c2458cdad8919e40b5357ab9b6db6c43e", - "sha256:5c52a036535d12590c32c49209e79cabaad9f9ad8aa4cbd875b68c4d67a9cbce", - "sha256:629a1ba2115dce8bf75a5cce9f2486ae483cb89c0145795603d6554bdc83e801", - "sha256:62a66ff235e4c2e37ed3b6104d8b478d767ff73838d1222132a7a026aa548764", - "sha256:63068a11171e4276f6ece913bde059e77c713b48c3a848814a6537f35afb8365", - "sha256:63c19702db10ad79151a059d2d6336fe0c470f2e18d0d4d1a57f7f9713875dcf", - "sha256:644ec81edec0f4ad17d51c838a7d01e42811054543b76d4ba2c5d6af741ce2a6", - "sha256:6535d996f6537ecb298b4e287a855f37deaf64ff007162ec0afb9ab8ba3b8b71", - "sha256:6f4548c5ead23ad13fb7a2c8ea541357474ec13c2b736feb02e19a3085fac002", - "sha256:716a78a342679cd1177bc8c2fe957e0ab91405bd43a17094324845200b2fddf4", - "sha256:74610105ebd6f33d7c10f8907afed696e79c59e3043c5f20eaa3a46fddf33b4c", - "sha256:768939f7c4353c0fac2f7c37897e10b1414b571fd85dd9fc49e6a87e37a2e0d8", - "sha256:86cffe9c6dfcfe22e28027069725c7f57f4b868a3f86e81d1c62462764dc46d4", - "sha256:8aae5aea53cbfe024919715eca696b1a3201886ce83790537d1c3668459c7146", - "sha256:8b2b8503edb06822c86d82fa64a4a5cb0760bb8f31f26e138ec743f422f37cfc", - "sha256:912e95017ff51dc3d7b6e2be158dedc889d9a5cc3382445589ce554f1a34c0ea", - "sha256:9a7b8ac36fd688c8361cbc7bf1cb5866977ece6e0b17c34aa0df58bda4fa18a4", - "sha256:9e89d5c8509fbd6c03d0dd1972925b22f50db0792ce06324ba069f10787429ad", - "sha256:ae270e79f7e169ccfe23284ff5ea2d52a6f401dc01b337efb54b3783e2ce3f28", - "sha256:b07c25d52b1c16ce5de088046cd2432b30f9ad5e224ff17c8f496d9cb7d1d451", - "sha256:b39e6011cd06822eb964d038d5dff5da5d98652b81f5ecd439277b32361a3a50", - "sha256:bd55f8fc8fa494958772a2a7302b0354ab16e0b9272b3c3d83cdb5bec5bd1779", - "sha256:c15b32a7aca8038ed7644f854bf17b663bc38e1671b5d6f43f9a2b2bd0c46f63", - "sha256:c1b4474beee02ede1eef86c25ad4600a424fe36cff01a6103cb4533c6bf0169e", - "sha256:c79c0685f142ca53256722a384540832420dff4ab15fec1863d7e5bc8691bdcc", - "sha256:c9ebfb2507751f7196995142f057d1324afdab56db1d9743aab7f50289abd022", - "sha256:d7ad66e8e50225ebf4236368cc43c37f59d5e6728f15f6e258c8639fa0dd8e6d", - "sha256:d82ab6816c3277dc962cfcdc85b1efa0e5f50fb2c449432deaf2398a2928ab94", - "sha256:d9fd2547e6decdbf985d579cf3fc78e4c1d662b9b0ff7cc7862baaab71c9cc5b", - "sha256:de38add67a0af869b0d79c525d3e4588ac1ffa92f39116dbe0ed9753f26eba7d", - "sha256:e19122296822deafce89a0c5e8685704c067ae65d45e79718c92df7b3ec3d331", - "sha256:e44961e36cb13c495806d4cac67640ac2866cb99044e210895b506c26ee63d3a", - "sha256:e4c81ed2820b9023a9a90717020315e63b17b18c274a332e3b6437d7ff70abe0", - "sha256:e683e6ecc587643f8cde8f5da6768e9d165cd31edf39ee90ed7034f9ca0eefee", - "sha256:f39e2f3530ed1626c66e7493be7a8423b023ca852aacdc91fb30162c350d2a92", - "sha256:f56f49b2553d7dd85fd86e029515a221e5c1f8cb3d9c38b470bc38bde7b8445a", - "sha256:fb9fc32399dca861584d96eccd6c980b69bbcd7c228d06fb74fe53e007aa8ef9" + "sha256:0824a28ec542a0be22f60c6ac36d679e0e262e5353203bea81d44ee81fe9c6d4", + "sha256:085161be5f3b30fd9b3e7b9a8c301f935c8313dcf928a07b116324abea2c1c2c", + "sha256:0ae1387db4aecb1f485fb70a6c0148c6cdaebb6038f1d40089b1fc84a5db556f", + "sha256:0d59fd927b1f04de57a2ba0137166d31c1a6dd9e764ad4af552912d70428c92b", + "sha256:0f957943bc718b87144ecaee70762bc2bc3f1a7a53c7b861103546d3a403f0a6", + "sha256:13a9e2d3ee855db3dd6ea1ba5203316a1b1fd8eaeffc37c5b54987e61e4194ae", + "sha256:1a330812d9cc7ac2182586f6d41b4d0fadf9be9049f350e0efb275c8ee8eb692", + "sha256:22be16571504c9ccea919fcedb459d5ab20d41172056206eb2994e2ff06118a4", + "sha256:2d10e07aa2b91835d6abec555ec8b2733347956991901eea6ffac295f83a30e4", + "sha256:35371f8438028fdccfaf3570b31d98e8d9eda8bb1d6ab9473f5a390969e98717", + "sha256:3c026eb44f744acaa2bda7493dad903aa5bf5fc4f2554293a798d5606710055d", + "sha256:41ff7b0da5af71a51b53f501a3bac65fb0ec311ebed1632e58fc6107f03b9198", + "sha256:4401ae5fc52ad8d26d2a5d8a7428b0f0c72431683f8e63e42e70606374c311a1", + "sha256:44349150f6811b44b25574839b39ae35291f6496eb795b7366fef3bd3cf112d3", + "sha256:447af20e25fdbe16f26e84eb714ba21d98868705cb138252d28bc400381f6ffb", + "sha256:4a8d8977b0c6ef5aeadcb644da9e69ae0dcfe66ec7f368c89c72e058bd71164d", + "sha256:4e12ae8cc979cf83d258acb5e1f1cf2f3f83524d1564a49d20b8bec14b637f08", + "sha256:592ac539812e9b46046620341498caf09ca21023c41c893e1eb9dbda00a70cbf", + "sha256:5e6b86b5847a016d0fbd31ffe1001b63355ed309651851295315031ea7eb5a9b", + "sha256:608a7fd78c67bee8936378299a6cb9f5149bb80238c7a566fc3e6717a4e68710", + "sha256:61f70dc68bd36810972e55bbbe83674ea073dd1dcc121040a08cdf3416c5349c", + "sha256:65dad5a248823a4996724a88eb51d4b31587aa7aa428562dbe459c684e5787ae", + "sha256:777abfab476cf83b5177b84d7486497e034eb9eaea0d746ce0c1268c71652077", + "sha256:7e216d8044a356fc0337c7a2a0536d6de07888d7bcda76febcb8adc50bdbbd00", + "sha256:85d9636f72e8991a1706b2b55b06c27545448baf9f6dbf51c4004609aacd7dcb", + "sha256:899b8cd4781c400454f2f64f7776a5d87bbd7b3e7f7bda0cb18f857bb1334664", + "sha256:8a289d23d4c46f1a82d5db4abeb40b9b5be91731ee19a379d15790e53031c014", + "sha256:8d2dfa71665a29b153a9681edb1c8d9c1ea50dfc2375fb4dac99ea7e21a0bcd9", + "sha256:8e3c3e38930cfb729cb8137d7f055e5a473ddaf1217966aa6238c88bd9fd50e6", + "sha256:8f8770dfc6e2c6a2d4569f411015c8d751c980d17a14b0530da2d7f27ffdd88e", + "sha256:932fc826442132dde42ee52cf66d941f581c685a6313feebed358411238f60f9", + "sha256:96d636c77af18b5cb664ddf12dab9b15a0cfe9c0bde715da38698c8cea748bfa", + "sha256:97ddc94d46088304772d21b060041c97fc16bdda13c6c7f9d8fcd8d5ae0d8611", + "sha256:98caba4476a6c8d59ec1eb00c7dd862ba9beca34085642d46ed503cc2d440d4b", + "sha256:9901d36492009a0a9b94b20e52ebfc8453bf49bb2b27bca2c9706f8b4f5a554a", + "sha256:99e266ae0b5d15f1ca8d278a668df6f51cc4b854513daab5cae695ed7b721cf8", + "sha256:9c38bf15a40ccf5619fa2fe8f26106c7e8e080d7760aeccb3722664c8656b030", + "sha256:a27801adef24cc30871da98a105f77995e13a25a505a0161911f6aafbd66e678", + "sha256:abd3e72dd5b97e3af4246cdada7738ef0e608168de952b837b8dd7e90341f015", + "sha256:adb697c0bd35100dc690de83154627fbab1f4f3c0386df266dded865fc50a902", + "sha256:b12c6b18269ca471eedd41c1b6a1065b2f7827508edb9a7ed5555e9a56dcfc97", + "sha256:b9389a429e0e5142e69d5bf4a435dd688c14478a19bb901735cdf75e57b13845", + "sha256:ba9e7484d286cd5a43744e5f47b0b3fb457865baf07bafc6bee91896364e1419", + "sha256:bb5555cff66c4d3d6213a296b360f9e1a8e323e74e0426b6c10ed7f4d021e464", + "sha256:be57b6d56e49c2739cdf776839a92330e933dd5e5d929966fbbd380c77f060be", + "sha256:c69e42c892c018cd3c8d90da61d845f50a8243062b19d228189b0224150018a9", + "sha256:ccc660a77e1c2bf24ddbce969af9447a9474790160cfb23de6be4fa88e3951c7", + "sha256:d5275455b3e4627c8e7154feaf7ee0743c2e7af82f6e3b561967b1cca755a0be", + "sha256:d75cded8a3cff93da9edc31446872d2997e327921d8eed86641efafd350e1df1", + "sha256:d872ec5aeb086cbea771c573600d47944eea2dcba8be5f3ee649bfe3cb8dc9ba", + "sha256:d891c136b5b310d0e702e186d70cd16d1119ea8927347045124cb286b29297e5", + "sha256:db1dab894cc139f67822a92910466531de5ea6034ddfd2b11c0d4c6257168073", + "sha256:e28bf44afa2b187cc9f41749138a64435bf340adfcacb5b2290c070ce99839d4", + "sha256:e5ea1cf0872ee455c03e5674b5bca5e3e68e159379c1af0903e89f5eba9ccc3a", + "sha256:e77363e8425325384f9d49272c54045bbed2f478e9dd698dbc65dbc37860eb0a", + "sha256:ee5defd1733fd6ec08b168bd4f5387d5b322f45ca9e0e6c817ea6c4cd36313e3", + "sha256:f1592791f8204ae9166de22ba7e6705fa4ebd02936c09436a1bb85aabca3e599", + "sha256:f2d1ec60d6d256bdf298cb86b78dd715980828f50c46701abc3b0a2b3f8a0dc0", + "sha256:f3ca78518bc6bc92828cd11867b121891d75cae4ea9e908d72030609b996db1b", + "sha256:f7b15f589593110ae767ce997775d645b47e5cbbf54fd322f8ebea6277466cec", + "sha256:fd1213c86e48dfdc5a0cc676551db467495a95a662d2396ecd58e719191446e1", + "sha256:ff74026a461eb0660366fb01c650c1d00f833a086b336bdad7ab00cc952072b3" ], "index": "pypi", "markers": "python_version >= '3.9'", - "version": "==7.6.8" + "version": "==7.6.9" }, "docker": { "hashes": [ @@ -2222,11 +2222,11 @@ }, "six": { "hashes": [ - "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", - "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", + "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", - "version": "==1.16.0" + "version": "==1.17.0" }, "testcontainers-core": { "hashes": [ diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.0.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.6.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..4d97fc82b85e61e053b9a4f209e316730331a85a GIT binary patch literal 39597 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 C@q1<f literal 0 HcmV?d00001 diff --git a/dbrepo-data-service/pom.xml b/dbrepo-data-service/pom.xml index 5f813b94c7..87bdec0b48 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.5.2</version> + <version>1.6.0</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 a508c88343..3917fc4976 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.5.2</version> + <version>1.6.0</version> </parent> <artifactId>dbrepo-data-service-querystore</artifactId> <name>dbrepo-data-service-querystore</name> - <version>1.5.2</version> + <version>1.6.0</version> <dependencies/> diff --git a/dbrepo-data-service/report/pom.xml b/dbrepo-data-service/report/pom.xml index da3d605405..99c9261cea 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.5.2</version> + <version>1.6.0</version> </parent> <artifactId>report</artifactId> <name>dbrepo-data-service-report</name> - <version>1.5.2</version> + <version>1.6.0</version> <description> This module is only intended for the pipeline coverage report. See the detailed report in the respective modules diff --git a/dbrepo-data-service/rest-service/pom.xml b/dbrepo-data-service/rest-service/pom.xml index 0859d43724..9eb0cddee6 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.5.2</version> + <version>1.6.0</version> </parent> <artifactId>rest-service</artifactId> <name>dbrepo-data-service-rest-service</name> - <version>1.5.2</version> + <version>1.6.0</version> <dependencies> <dependency> <groupId>at.tuwien</groupId> <artifactId>services</artifactId> - <version>1.5.2</version> + <version>1.6.0</version> </dependency> </dependencies> diff --git a/dbrepo-data-service/services/pom.xml b/dbrepo-data-service/services/pom.xml index ee3c9b2b6c..180987ded0 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.5.2</version> + <version>1.6.0</version> </parent> <artifactId>services</artifactId> <name>dbrepo-data-service-services</name> - <version>1.5.2</version> + <version>1.6.0</version> <dependencies> <dependency> <groupId>at.tuwien</groupId> <artifactId>dbrepo-data-service-querystore</artifactId> - <version>1.5.2</version> + <version>1.6.0</version> </dependency> </dependencies> 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 7a268f5248..53f98d342c 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 @@ -116,7 +116,6 @@ public interface DataMapper { .columns(new LinkedList<>()) .identifiers(new LinkedList<>()) .creator(database.getOwner()) - .createdBy(database.getOwner().getId()) .build(); } @@ -219,7 +218,7 @@ public interface DataMapper { * @return The list of columns. * @throws JSQLParserException The table/view or column was not found in the database. */ - default List<ColumnDto> parseColumns(Long databaseId, List<TableDto> tables, String query) throws JSQLParserException { + default List<ColumnDto> parseColumns(Long databaseId, List<TableBriefDto> tables, String query) throws JSQLParserException { final List<ColumnDto> columns = new ArrayList<>(); final CCJSqlParserManager parserRealSql = new CCJSqlParserManager(); final net.sf.jsqlparser.statement.Statement statement = parserRealSql.parse(new StringReader(query)); 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 b2a9b0c840..0b86a4014b 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 @@ -3,7 +3,7 @@ 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.UserDto; +import at.tuwien.api.user.UserBriefDto; import at.tuwien.api.user.internal.UpdateUserPasswordDto; import at.tuwien.config.RabbitConfig; import at.tuwien.exception.DatabaseMalformedException; @@ -53,13 +53,13 @@ public class DatabaseServiceMariaDbImpl extends HibernateConnector implements Da return PrivilegedDatabaseDto.builder() .internalName(data.getInternalName()) .exchangeName(rabbitConfig.getExchangeName()) - .creator(UserDto.builder() + .creator(UserBriefDto.builder() .id(data.getUserId()) .build()) - .owner(UserDto.builder() + .owner(UserBriefDto.builder() .id(data.getUserId()) .build()) - .contact(UserDto.builder() + .contact(UserBriefDto.builder() .id(data.getUserId()) .build()) .container(container) 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 index 1aba3c6b99..7bbb9d6025 100644 --- 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 @@ -105,9 +105,7 @@ public class SchemaServiceMariaDbImpl extends HibernateConnector implements Sche } } table.setTdbid(database.getId()); - database.getCreator().getAttributes().setMariadbPassword(null); table.setCreator(database.getCreator()); - table.setCreatedBy(database.getCreator().getId()); final TableDto tmpTable = table; tmpTable.getColumns() .forEach(column -> { @@ -144,7 +142,6 @@ public class SchemaServiceMariaDbImpl extends HibernateConnector implements Sche view.setDatabase(database); view.setVdbid(database.getId()); view.setCreator(database.getOwner()); - view.setCreatedBy(privilegedDatabase.getOwner().getId()); /* obtain view columns */ start = System.currentTimeMillis(); final PreparedStatement statement2 = connection.prepareStatement(mariaDbMapper.databaseTableColumnsSelectRawQuery()); diff --git a/dbrepo-metadata-db/1_setup-schema.sql b/dbrepo-metadata-db/1_setup-schema.sql index 29a0e85656..b74e346783 100644 --- a/dbrepo-metadata-db/1_setup-schema.sql +++ b/dbrepo-metadata-db/1_setup-schema.sql @@ -78,20 +78,21 @@ CREATE TABLE IF NOT EXISTS `mdb_licenses` CREATE TABLE IF NOT EXISTS `mdb_databases` ( - id SERIAL, - cid BIGINT UNSIGNED NOT NULL, - name character varying(255) NOT NULL, - internal_name character varying(255) NOT NULL, - exchange_name character varying(255) NOT NULL, - description text, - engine character varying(20), - is_public boolean NOT NULL DEFAULT TRUE, - image longblob, - created_by character varying(36), - owned_by character varying(36), - contact_person character varying(36), - created timestamp NOT NULL DEFAULT NOW(), - last_modified timestamp, + id SERIAL, + cid BIGINT UNSIGNED NOT NULL, + name character varying(255) NOT NULL, + internal_name character varying(255) NOT NULL, + exchange_name character varying(255) NOT NULL, + description text, + engine character varying(20), + is_public boolean NOT NULL DEFAULT TRUE, + is_schema_public boolean NOT NULL DEFAULT TRUE, + image longblob, + created_by character varying(36), + owned_by character varying(36), + contact_person character varying(36), + created timestamp NOT NULL DEFAULT NOW(), + last_modified timestamp, PRIMARY KEY (id), FOREIGN KEY (cid) REFERENCES mdb_containers (id), FOREIGN KEY (created_by) REFERENCES mdb_users (id), @@ -108,29 +109,30 @@ CREATE TABLE IF NOT EXISTS `mdb_databases_subjects` CREATE TABLE IF NOT EXISTS `mdb_tables` ( - ID SERIAL, - tDBID BIGINT UNSIGNED NOT NULL, - tName VARCHAR(64) NOT NULL, - internal_name VARCHAR(64) NOT NULL, - queue_name VARCHAR(255) NOT NULL, - routing_key VARCHAR(255), - tDescription VARCHAR(2048), - num_rows BIGINT, - data_length BIGINT, - max_data_length BIGINT, - avg_row_length BIGINT, - `separator` CHAR(1), - quote CHAR(1), - element_null VARCHAR(50), - skip_lines BIGINT, - element_true VARCHAR(50), - element_false VARCHAR(50), - Version TEXT, - created timestamp NOT NULL DEFAULT NOW(), - versioned boolean not null default true, - created_by character varying(36) NOT NULL, - owned_by character varying(36) NOT NULL, - last_modified timestamp, + ID SERIAL, + tDBID BIGINT UNSIGNED NOT NULL, + tName VARCHAR(64) NOT NULL, + internal_name VARCHAR(64) NOT NULL, + queue_name VARCHAR(255) NOT NULL, + routing_key VARCHAR(255), + tDescription VARCHAR(2048), + num_rows BIGINT, + data_length BIGINT, + max_data_length BIGINT, + avg_row_length BIGINT, + `separator` CHAR(1), + quote CHAR(1), + element_null VARCHAR(50), + skip_lines BIGINT, + element_true VARCHAR(50), + element_false VARCHAR(50), + Version TEXT, + created timestamp NOT NULL DEFAULT NOW(), + versioned boolean not null default true, + is_schema_public boolean not null default true, + created_by character varying(36) NOT NULL, + owned_by character varying(36) NOT NULL, + last_modified timestamp, PRIMARY KEY (ID), UNIQUE (tDBID, internal_name), FOREIGN KEY (tDBID) REFERENCES mdb_databases (id), @@ -314,17 +316,18 @@ CREATE TABLE IF NOT EXISTS `mdb_columns_units` CREATE TABLE IF NOT EXISTS `mdb_view` ( - id SERIAL, - vdbid BIGINT UNSIGNED NOT NULL, - vName VARCHAR(64) NOT NULL, - internal_name VARCHAR(64) NOT NULL, - Query TEXT NOT NULL, - query_hash VARCHAR(255) NOT NULL, - Public BOOLEAN NOT NULL, - InitialView BOOLEAN NOT NULL, - created timestamp NOT NULL DEFAULT NOW(), - last_modified timestamp, - created_by character varying(36) NOT NULL, + id SERIAL, + vdbid BIGINT UNSIGNED NOT NULL, + vName VARCHAR(64) NOT NULL, + internal_name VARCHAR(64) NOT NULL, + Query TEXT NOT NULL, + query_hash VARCHAR(255) NOT NULL, + Public BOOLEAN NOT NULL DEFAULT TRUE, + is_schema_public boolean NOT NULL DEFAULT TRUE, + InitialView BOOLEAN NOT NULL, + created timestamp NOT NULL DEFAULT NOW(), + last_modified timestamp, + created_by character varying(36) NOT NULL, PRIMARY KEY (id), FOREIGN KEY (vdbid) REFERENCES mdb_databases (id), FOREIGN KEY (created_by) REFERENCES mdb_users (id) @@ -451,8 +454,8 @@ CREATE TABLE IF NOT EXISTS `mdb_identifier_descriptions` CREATE TABLE IF NOT EXISTS `mdb_related_identifiers` ( id SERIAL, - pid BIGINT UNSIGNED NOT NULL, - value varchar(255) NOT NULL, + pid BIGINT UNSIGNED NOT NULL, + value varchar(255) NOT NULL, type ENUM ('DOI','URL','URN','ARK','ARXIV','BIBCODE','EAN13','EISSN','HANDLE','IGSN','ISBN','ISTC','LISSN','LSID','PMID','PURL','UPC','W3ID') NOT NULL, relation ENUM ('IS_CITED_BY','CITES','IS_SUPPLEMENT_TO','IS_SUPPLEMENTED_BY','IS_CONTINUED_BY','CONTINUES','IS_DESCRIBED_BY','DESCRIBES','HAS_METADATA','IS_METADATA_FOR','HAS_VERSION','IS_VERSION_OF','IS_NEW_VERSION_OF','IS_PREVIOUS_VERSION_OF','IS_PART_OF','HAS_PART','IS_PUBLISHED_IN','IS_REFERENCED_BY','REFERENCES','IS_DOCUMENTED_BY','DOCUMENTS','IS_COMPILED_BY','COMPILES','IS_VARIANT_FORM_OF','IS_ORIGINAL_FORM_OF','IS_IDENTICAL_TO','IS_REVIEWED_BY','REVIEWS','IS_DERIVED_FROM','IS_SOURCE_OF','IS_REQUIRED_BY','REQUIRES','IS_OBSOLETED_BY','OBSOLETES') NOT NULL, PRIMARY KEY (id), /* must be a single id from persistent identifier concept */ diff --git a/dbrepo-metadata-service/api/pom.xml b/dbrepo-metadata-service/api/pom.xml index 9196e2d228..8e77c818a4 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.5.2</version> + <version>1.6.0</version> </parent> <artifactId>dbrepo-metadata-service-api</artifactId> <name>dbrepo-metadata-service-api</name> - <version>1.5.2</version> + <version>1.6.0</version> <dependencies> <dependency> <groupId>at.tuwien</groupId> <artifactId>dbrepo-metadata-service-entities</artifactId> - <version>1.5.2</version> + <version>1.6.0</version> <scope>compile</scope> </dependency> </dependencies> 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 49c7c58e8a..e8456c42ef 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 @@ -1,5 +1,6 @@ package at.tuwien.api.database; +import at.tuwien.api.identifier.IdentifierBriefDto; import at.tuwien.api.identifier.IdentifierDto; import at.tuwien.api.user.UserBriefDto; import com.fasterxml.jackson.annotation.JsonFormat; @@ -42,18 +43,14 @@ public class DatabaseBriefDto { @Schema(example = "true") private Boolean isPublic; - private List<IdentifierDto> identifiers; + private List<IdentifierBriefDto> identifiers; @ToString.Exclude @NotNull private UserBriefDto contact; @NotNull - private UserBriefDto owner; - - @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant created; + @JsonProperty("owner_id") + private UserBriefDto ownerId; } 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/DatabaseCreateDto.java index 264919dfaa..a20d9456bb 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/DatabaseCreateDto.java @@ -30,4 +30,9 @@ public class DatabaseCreateDto { @Schema(example = "true") private Boolean isPublic; + @NotNull + @JsonProperty("is_schema_public") + @Schema(example = "true") + private Boolean isSchemaPublic; + } 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 d68e6802da..2e98eabe38 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,9 @@ package at.tuwien.api.database; -import at.tuwien.api.container.ContainerDto; -import at.tuwien.api.database.table.TableDto; -import at.tuwien.api.identifier.IdentifierDto; -import at.tuwien.api.user.UserDto; +import at.tuwien.api.container.ContainerBriefDto; +import at.tuwien.api.database.table.TableBriefDto; +import at.tuwien.api.identifier.IdentifierBriefDto; +import at.tuwien.api.user.UserBriefDto; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; @@ -48,35 +48,40 @@ public class DatabaseDto { @Schema(example = "Air Quality") private String description; - private List<TableDto> tables; + private List<TableBriefDto> tables; - private List<ViewDto> views; + private List<ViewBriefDto> views; @NotNull @JsonProperty("is_public") @Schema(example = "true") private Boolean isPublic; + @NotNull + @JsonProperty("is_schema_public") + @Schema(example = "true") + private Boolean isSchemaPublic; + @ToString.Exclude @NotNull - private ContainerDto container; + private ContainerBriefDto container; private List<DatabaseAccessDto> accesses; - private List<IdentifierDto> identifiers; + private List<IdentifierBriefDto> identifiers; - private List<IdentifierDto> subsets; + private List<IdentifierBriefDto> subsets; @ToString.Exclude @NotNull - private UserDto creator; + private UserBriefDto creator; @ToString.Exclude @NotNull - private UserDto contact; + private UserBriefDto contact; @NotNull - private UserDto owner; + private UserBriefDto owner; @JsonProperty("preview_image") private String previewImage; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseModifyVisibilityDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseModifyVisibilityDto.java index 9fb05f6d09..f5a9aa0961 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseModifyVisibilityDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/DatabaseModifyVisibilityDto.java @@ -21,4 +21,9 @@ public class DatabaseModifyVisibilityDto { @Schema(example = "true") private Boolean isPublic; + @NotNull + @JsonProperty("is_schema_public") + @Schema(example = "true") + private Boolean isSchemaPublic; + } 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 ffb4ccb3de..ab1f0a4156 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 @@ -1,15 +1,12 @@ package at.tuwien.api.database; -import at.tuwien.api.identifier.IdentifierDto; -import at.tuwien.api.user.UserDto; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.*; import lombok.extern.jackson.Jacksonized; import java.time.Instant; @@ -40,12 +37,14 @@ public class ViewBriefDto { @Schema(example = "air_quality") private String internalName; - private IdentifierDto identifier; - @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; @@ -59,20 +58,8 @@ public class ViewBriefDto { @Schema(example = "7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916") private String queryHash; - @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant created; - @JsonIgnore + @JsonProperty("created_by") private UUID createdBy; - @NotNull - private UserDto creator; - - @JsonProperty("last_modified") - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant lastModified; - } 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 30f16448d3..fa90bcded4 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,20 +1,17 @@ package at.tuwien.api.database; import at.tuwien.api.identifier.IdentifierDto; -import at.tuwien.api.user.UserDto; +import at.tuwien.api.user.UserBriefDto; import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import lombok.extern.jackson.Jacksonized; - import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.*; +import lombok.extern.jackson.Jacksonized; import java.time.Instant; import java.util.List; -import java.util.UUID; @Getter @Setter @@ -51,6 +48,10 @@ public class ViewDto { @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; @@ -69,11 +70,8 @@ public class ViewDto { @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") private Instant created; - @JsonIgnore - private UUID createdBy; - @NotNull - private UserDto creator; + private UserBriefDto creator; @NotNull private List<ViewColumnDto> columns; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewUpdateDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewUpdateDto.java new file mode 100644 index 0000000000..01fae15d08 --- /dev/null +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewUpdateDto.java @@ -0,0 +1,23 @@ +package at.tuwien.api.database; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.*; +import lombok.extern.jackson.Jacksonized; + +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString +public class ViewUpdateDto { + + @NotNull + @JsonProperty("is_public") + @Schema(example = "true") + private Boolean isPublic; + +} 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 index 2ad2c1a968..68382fdb62 100644 --- 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 @@ -1,11 +1,12 @@ package at.tuwien.api.database.internal; +import at.tuwien.api.container.ContainerBriefDto; 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.UserDto; +import at.tuwien.api.database.ViewBriefDto; +import at.tuwien.api.database.table.TableBriefDto; +import at.tuwien.api.identifier.IdentifierBriefDto; +import at.tuwien.api.user.UserBriefDto; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; @@ -50,30 +51,43 @@ public class PrivilegedDatabaseDto { @Schema(example = "Air Quality") private String description; - private List<TableDto> tables; + private List<TableBriefDto> tables; - private List<ViewDto> views; + private List<ViewBriefDto> views; @NotNull @JsonProperty("is_public") @Schema(example = "true") private Boolean isPublic; + @NotNull + @JsonProperty("is_schema_public") + @Schema(example = "true") + private Boolean isSchemaPublic; + + @ToString.Exclude @NotNull private PrivilegedContainerDto container; private List<DatabaseAccessDto> accesses; - private List<IdentifierDto> identifiers; + private List<IdentifierBriefDto> identifiers; + private List<IdentifierBriefDto> subsets; + + @ToString.Exclude @NotNull - private UserDto creator; + private UserBriefDto creator; + @ToString.Exclude @NotNull - private UserDto contact; + private UserBriefDto contact; @NotNull - private UserDto owner; + private UserBriefDto owner; + + @JsonProperty("preview_image") + private String previewImage; @NotNull @Schema(example = "2021-03-12T15:26:21Z") 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 index 5053f8c5d6..1951609115 100644 --- 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 @@ -1,23 +1,18 @@ package at.tuwien.api.database.internal; -import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.ViewColumnDto; -import at.tuwien.api.database.table.columns.ColumnDto; import at.tuwien.api.identifier.IdentifierDto; -import at.tuwien.api.user.UserDto; +import at.tuwien.api.user.UserBriefDto; import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; -import org.springframework.data.annotation.Id; import java.time.Instant; import java.util.List; -import java.util.UUID; @Getter @Setter @@ -28,7 +23,6 @@ import java.util.UUID; @ToString public class PrivilegedViewDto { - @Id @NotNull private Long id; @@ -37,6 +31,7 @@ public class PrivilegedViewDto { private Long vdbid; @NotNull + @ToString.Exclude private PrivilegedDatabaseDto database; @NotBlank @@ -54,6 +49,10 @@ public class PrivilegedViewDto { @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; @@ -72,13 +71,10 @@ public class PrivilegedViewDto { @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") private Instant created; - @JsonIgnore - private UUID createdBy; - @NotNull - private UserDto creator; + private UserBriefDto creator; - @NotNull(message = "columns are required") + @NotNull private List<ViewColumnDto> columns; @JsonProperty("last_modified") diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java index 64a54bcb1a..b27222e596 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java @@ -1,20 +1,17 @@ package at.tuwien.api.database.query; -import at.tuwien.api.identifier.IdentifierDto; -import at.tuwien.api.user.UserDto; +import at.tuwien.api.identifier.IdentifierBriefDto; +import at.tuwien.api.user.UserBriefDto; import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.*; import lombok.extern.jackson.Jacksonized; import java.time.Instant; import java.util.List; -import java.util.UUID; @Getter @@ -33,12 +30,8 @@ public class QueryBriefDto { @JsonProperty("database_id") private Long databaseId; - @JsonIgnore - @NotNull(message = "created by is required") - private UUID createdBy; - @NotNull(message = "creator is required") - private UserDto creator; + private UserBriefDto creator; @NotNull @Schema(example = "2022-01-01 08:00:00.000") @@ -74,17 +67,11 @@ public class QueryBriefDto { @Schema(example = "query") private QueryTypeDto type; - private List<IdentifierDto> identifiers; + private List<IdentifierBriefDto> identifiers; @NotNull @Schema(example = "2021-03-12T15:26:21Z") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") private Instant created; - @NotNull - @JsonProperty("last_modified") - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant lastModified; - } 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 8ba3822061..01215a20e3 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 @@ -1,20 +1,17 @@ package at.tuwien.api.database.query; -import at.tuwien.api.identifier.IdentifierDto; -import at.tuwien.api.user.UserDto; +import at.tuwien.api.identifier.IdentifierBriefDto; +import at.tuwien.api.user.UserBriefDto; import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +import lombok.*; import lombok.extern.jackson.Jacksonized; import java.time.Instant; import java.util.List; -import java.util.UUID; @Getter @Setter @@ -32,13 +29,8 @@ public class QueryDto { @JsonProperty("database_id") private Long databaseId; - @JsonIgnore - @EqualsAndHashCode.Exclude - @NotNull(message = "created by is required") - private UUID createdBy; - @NotNull(message = "creator is required") - private UserDto creator; + private UserBriefDto creator; @NotNull @Schema(example = "2021-03-12T15:26:21Z") @@ -58,7 +50,7 @@ public class QueryDto { private QueryTypeDto type; @NotNull - private List<IdentifierDto> identifiers; + private List<IdentifierBriefDto> identifiers; @NotBlank(message = "query hash is required") @JsonProperty("query_hash") @@ -83,10 +75,4 @@ public class QueryDto { @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") private Instant created; - @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonProperty("last_modified") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant lastModified; - } 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 11f99f48eb..5a2cff9b75 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 @@ -12,6 +12,7 @@ import jakarta.validation.constraints.NotNull; import lombok.extern.jackson.Jacksonized; import java.util.List; +import java.util.UUID; @Getter @Setter @@ -47,5 +48,11 @@ public class TableBriefDto { private Boolean isVersioned; @NotNull - private UserBriefDto owner; + @JsonProperty("is_schema_public") + @Schema(example = "true") + private Boolean isSchemaPublic; + + @NotNull + @JsonProperty("owner_by") + 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 a512cf8010..a9f57d4ff7 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 @@ -3,20 +3,18 @@ package at.tuwien.api.database.table; 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.UserDto; +import at.tuwien.api.user.UserBriefDto; 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 jakarta.validation.constraints.Size; import lombok.*; import lombok.extern.jackson.Jacksonized; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; - import java.time.Instant; import java.util.List; -import java.util.UUID; @Getter @Setter @@ -57,14 +55,15 @@ public class TableDto { private Boolean isVersioned; @NotNull - @JsonProperty("created_by") - private UUID createdBy; + @JsonProperty("is_schema_public") + @Schema(example = "true") + private Boolean isSchemaPublic; @NotNull - private UserDto creator; + private UserBriefDto creator; @NotNull - private UserDto owner; + private UserBriefDto owner; @NotBlank @JsonProperty("queue_name") @@ -84,7 +83,7 @@ public class TableDto { @Schema(example = "Air Quality in Austria") private String description; - @NotNull(message = "isPublic is required") + @NotNull @JsonProperty("is_public") @Schema(example = "true") private Boolean isPublic; 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 index e166e4e0b2..a71a64b63b 100644 --- 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 @@ -4,18 +4,18 @@ 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.UserDto; +import at.tuwien.api.user.UserBriefDto; 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 jakarta.validation.constraints.Size; import lombok.*; import lombok.extern.jackson.Jacksonized; import java.time.Instant; import java.util.List; -import java.util.UUID; @Getter @Setter @@ -24,6 +24,7 @@ import java.util.UUID; @AllArgsConstructor @Jacksonized @ToString +@EqualsAndHashCode(onlyExplicitlyIncluded = true) public class PrivilegedTableDto { @NotNull @@ -31,6 +32,7 @@ public class PrivilegedTableDto { @NotNull @JsonProperty("database_id") + @EqualsAndHashCode.Include private Long tdbid; @NotBlank @@ -40,6 +42,7 @@ public class PrivilegedTableDto { @NotBlank @JsonProperty("internal_name") @Schema(example = "air_quality") + @EqualsAndHashCode.Include private String internalName; @Schema @@ -53,14 +56,15 @@ public class PrivilegedTableDto { private Boolean isVersioned; @NotNull - @JsonProperty("created_by") - private UUID createdBy; + @JsonProperty("is_schema_public") + @Schema(example = "true") + private Boolean isSchemaPublic; @NotNull - private UserDto creator; + private UserBriefDto creator; @NotNull - private UserDto owner; + private UserBriefDto owner; @NotBlank @JsonProperty("queue_name") @@ -73,13 +77,14 @@ public class PrivilegedTableDto { @NotBlank @JsonProperty("routing_key") - @Schema(example = "dbrepo.database.air_quality") + @Schema(example = "dbrepo.1.2") private String routingKey; + @Size(max = 2048) @Schema(example = "Air Quality in Austria") private String description; - @NotNull(message = "isPublic is required") + @NotNull @JsonProperty("is_public") @Schema(example = "true") private Boolean isPublic; 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 686c86e5c6..ac2fe81f7a 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 @@ -3,11 +3,13 @@ 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; import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; import java.time.Instant; +import java.util.List; import java.util.UUID; @Getter @@ -27,6 +29,36 @@ public class IdentifierBriefDto { @Schema(example = "1") private Long databaseId; + @JsonProperty("query_id") + @Schema(example = "1") + private Long queryId; + + @JsonProperty("table_id") + @Schema(example = "1") + private Long tableId; + + @JsonProperty("view_id") + @Schema(example = "1") + private Long viewId; + + @NotNull + private IdentifierTypeDto type; + + @NotNull + private List<IdentifierTitleDto> titles; + + @Schema(example = "10.1038/nphys1170") + private String doi; + + @NotBlank + @Schema(example = "TU Wien") + private String publisher; + + @NotNull + @JsonProperty("publication_year") + @Schema(example = "2022") + private Integer publicationYear; + private IdentifierStatusTypeDto status; @NotNull 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 1561117716..8a76ca7e14 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 @@ -4,14 +4,12 @@ import at.tuwien.api.database.LanguageTypeDto; import at.tuwien.api.database.LicenseDto; import at.tuwien.api.user.UserDto; 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; import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; -import org.springframework.data.annotation.Id; import java.time.Instant; import java.util.List; diff --git a/dbrepo-metadata-service/entities/pom.xml b/dbrepo-metadata-service/entities/pom.xml index c308f0163b..6a8f527f18 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.5.2</version> + <version>1.6.0</version> </parent> <artifactId>dbrepo-metadata-service-entities</artifactId> <name>dbrepo-metadata-service-entity</name> - <version>1.5.2</version> + <version>1.6.0</version> <dependencies/> diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java index 17b8308bba..8dc4864265 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java @@ -130,9 +130,12 @@ public class Database implements Serializable { @OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.ALL, CascadeType.PERSIST}, mappedBy = "database", orphanRemoval = true) private List<DatabaseAccess> accesses; - @Column(nullable = false) + @Column(nullable = false, columnDefinition = "boolean default true") private Boolean isPublic; + @Column(nullable = false, columnDefinition = "boolean default true") + private Boolean isSchemaPublic; + @Lob @Basic(fetch = FetchType.LAZY) @Column(columnDefinition = "LONGBLOB") diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java index 28f2ec69c2..e10d7f2518 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java @@ -63,9 +63,12 @@ public class View { @Column(nullable = false, columnDefinition = "VARCHAR(64)") private String internalName; - @Column(name = "public", nullable = false) + @Column(name = "public", nullable = false, columnDefinition = "boolean default true") private Boolean isPublic; + @Column(name = "is_schema_public", nullable = false, columnDefinition = "boolean default true") + private Boolean isSchemaPublic; + @Column(name = "initialview", nullable = false) private Boolean isInitialView; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java index 08f6bd9426..55e1af1b9a 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java @@ -103,9 +103,12 @@ public class Table { @Embedded private Constraints constraints; - @Column(name = "versioned", columnDefinition = "boolean default true") + @Column(name = "versioned", nullable = false, columnDefinition = "boolean default true") private Boolean isVersioned; + @Column(name = "is_schema_public", nullable = false, columnDefinition = "boolean default true") + private Boolean isSchemaPublic; + @Column(name = "num_rows") private Long numRows; diff --git a/dbrepo-metadata-service/oai/pom.xml b/dbrepo-metadata-service/oai/pom.xml index fddf87ecb4..32925ee9ff 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.5.2</version> + <version>1.6.0</version> </parent> <artifactId>dbrepo-metadata-service-oai</artifactId> <name>dbrepo-metadata-service-oai</name> - <version>1.5.2</version> + <version>1.6.0</version> <dependencies/> diff --git a/dbrepo-metadata-service/pom.xml b/dbrepo-metadata-service/pom.xml index 56ab43349a..138d346aee 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.5.2</version> + <version>1.6.0</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 95ea8b8b97..f71cbfeb96 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.5.2</version> + <version>1.6.0</version> </parent> <artifactId>dbrepo-metadata-service-report</artifactId> <name>dbrepo-metadata-service-report</name> - <version>1.5.2</version> + <version>1.6.0</version> <dependencies> <dependency> diff --git a/dbrepo-metadata-service/repositories/pom.xml b/dbrepo-metadata-service/repositories/pom.xml index 816f71a1cb..480ba479be 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.5.2</version> + <version>1.6.0</version> </parent> <artifactId>dbrepo-metadata-service-repositories</artifactId> <name>dbrepo-metadata-service-repositories</name> - <version>1.5.2</version> + <version>1.6.0</version> <dependencies> <dependency> diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/MetadataMapper.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/MetadataMapper.java index 82e09d1c0f..55f0a31c86 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 @@ -117,7 +117,7 @@ public interface MetadataMapper { @Mapping(target = "id", source = "id"), @Mapping(target = "count", expression = "java(data.getDatabases().size())"), }) - ContainerBriefDto containerToDatabaseContainerBriefDto(Container data); + ContainerBriefDto containerToContainerBriefDto(Container data); @Mappings({ @Mapping(target = "titles", source = "."), @@ -481,8 +481,6 @@ public interface MetadataMapper { TableBriefDto tableToTableBriefDto(Table data); default UniqueDto uniqueToUniqueDto(Unique data) { -// data.getTable().setOwner(null); /* loop */ -// data.getTable().setCreator(null); /* loop */ return UniqueDto.builder() .id(data.getId()) .name(data.getName()) @@ -494,10 +492,6 @@ public interface MetadataMapper { .build(); } - @Mappings({ - @Mapping(target = "table.owner", ignore = true), - @Mapping(target = "referencedTable.owner", ignore = true), - }) ForeignKeyDto foreignKeyToForeignKeyDto(ForeignKey data); ForeignKeyBriefDto foreignKeyDtoToForeignKeyBriefDto(ForeignKeyDto data); @@ -524,73 +518,84 @@ public interface MetadataMapper { } default TableDto customTableToTableDto(Table data) { + return customTableToTableDto(data, true, true, true); + } + + default TableDto customTableToTableDto(Table data, Boolean broker, Boolean statistic, Boolean schema) { final TableDto table = TableDto.builder() .id(data.getId()) .name(data.getName()) .internalName(data.getInternalName()) - .owner(userToUserDto(data.getOwner())) - .createdBy(data.getCreatedBy()) - .creator(userToUserDto(data.getCreator())) + .owner(userToUserBriefDto(data.getOwner())) + .creator(userToUserBriefDto(data.getCreator())) .tdbid(data.getTdbid()) - .routingKey("dbrepo." + data.getTdbid() + "." + data.getId()) - .queueName(data.getQueueName()) .isPublic(data.getDatabase().getIsPublic()) + .isSchemaPublic(data.getIsSchemaPublic()) .isVersioned(true) - .avgRowLength(data.getAvgRowLength()) - .maxDataLength(data.getMaxDataLength()) - .dataLength(data.getDataLength()) - .numRows(data.getNumRows()) .description(data.getDescription()) .identifiers(new LinkedList<>()) .columns(new LinkedList<>()) .created(data.getCreated()) .constraints(constraintsToConstraintsDto(data.getConstraints())) .build(); - table.getConstraints() - .getPrimaryKey() - .forEach(pk -> { - pk.getTable().setDatabaseId(data.getDatabase().getId()); - pk.getColumn().setTableId(data.getId()); - pk.getColumn().setDatabaseId(data.getDatabase().getId()); - }); - table.getConstraints() - .getForeignKeys() - .forEach(fk -> { - fk.getTable().setDatabaseId(table.getTdbid()); - fk.getReferencedTable().setDatabaseId(table.getTdbid()); - fk.getReferences() - .forEach(ref -> { - ref.setForeignKey(foreignKeyDtoToForeignKeyBriefDto(fk)); - ref.getColumn().setTableId(table.getId()); - ref.getColumn().setDatabaseId(table.getTdbid()); - ref.getReferencedColumn().setTableId(fk.getReferencedTable().getId()); - ref.getReferencedColumn().setDatabaseId(table.getTdbid()); - }); - }); - table.getConstraints() - .getUniques() - .forEach(uk -> { - uk.getTable().setDatabaseId(data.getDatabase().getId()); - uk.getColumns() - .forEach(column -> { - column.setTableId(data.getId()); - column.setDatabaseId(data.getDatabase().getId()); - }); - }); - if (data.getConstraints().getChecks() == null || data.getConstraints().getChecks().isEmpty()) { - table.getConstraints().setChecks(new LinkedHashSet<>()); - } if (data.getIdentifiers() != null) { table.setIdentifiers(new LinkedList<>(data.getIdentifiers() .stream() .map(this::identifierToIdentifierDto) .toList())); } - if (data.getColumns() != null) { - table.setColumns(new LinkedList<>(data.getColumns() - .stream() - .map(this::tableColumnToColumnDto) - .toList())); + if (broker) { + table.setQueueName(data.getQueueName()); + table.setQueueType("quorum"); + table.setRoutingKey("dbrepo." + data.getTdbid() + "." + data.getId()); + } + if (statistic) { + table.setAvgRowLength(data.getAvgRowLength()); + table.setMaxDataLength(data.getMaxDataLength()); + table.setDataLength(data.getDataLength()); + table.setNumRows(data.getNumRows()); + } + if (schema) { + table.getConstraints() + .getPrimaryKey() + .forEach(pk -> { + pk.getTable().setDatabaseId(data.getDatabase().getId()); + pk.getColumn().setTableId(data.getId()); + pk.getColumn().setDatabaseId(data.getDatabase().getId()); + }); + table.getConstraints() + .getForeignKeys() + .forEach(fk -> { + fk.getTable().setDatabaseId(table.getTdbid()); + fk.getReferencedTable().setDatabaseId(table.getTdbid()); + fk.getReferences() + .forEach(ref -> { + ref.setForeignKey(foreignKeyDtoToForeignKeyBriefDto(fk)); + ref.getColumn().setTableId(table.getId()); + ref.getColumn().setDatabaseId(table.getTdbid()); + ref.getReferencedColumn().setTableId(fk.getReferencedTable().getId()); + ref.getReferencedColumn().setDatabaseId(table.getTdbid()); + }); + }); + table.getConstraints() + .getUniques() + .forEach(uk -> { + uk.getTable().setDatabaseId(data.getDatabase().getId()); + uk.getColumns() + .forEach(column -> { + column.setTableId(data.getId()); + column.setDatabaseId(data.getDatabase().getId()); + }); + }); + if (data.getConstraints().getChecks() == null || data.getConstraints().getChecks().isEmpty()) { + table.getConstraints().setChecks(new LinkedHashSet<>()); + } + if (data.getColumns() != null) { + table.setColumns(new LinkedList<>(data.getColumns() + .stream() + .map(this::tableColumnToColumnDto) + .toList())); + } } return table; } @@ -615,9 +620,6 @@ public interface MetadataMapper { }) Table tableDtoToTable(TableDto data); - @Mappings({ - @Mapping(target = "table.owner", ignore = true) - }) PrimaryKeyDto primaryKeyToPrimaryKeyDto(PrimaryKey data); ReferenceType referenceTypeDtoToReferenceType(ReferenceTypeDto data); @@ -867,11 +869,12 @@ public interface MetadataMapper { .exchangeName(data.getExchangeName()) .previewImage(data.getImage() != null ? "/api/database/" + data.getId() + "/image" : null) .isPublic(data.getIsPublic()) - .container(containerToContainerDto(data.getContainer())) - .creator(userToUserDto(data.getCreator())) - .owner(userToUserDto(data.getOwner())) + .isSchemaPublic(data.getIsSchemaPublic()) + .container(containerToContainerBriefDto(data.getContainer())) + .creator(userToUserBriefDto(data.getCreator())) + .owner(userToUserBriefDto(data.getOwner())) .created(data.getCreated()) - .contact(userToUserDto(data.getContact())) + .contact(userToUserBriefDto(data.getContact())) .subsets(new LinkedList<>()) .accesses(new LinkedList<>()) .tables(new LinkedList<>()) @@ -880,19 +883,19 @@ public interface MetadataMapper { if (data.getSubsets() != null) { database.setSubsets(new LinkedList<>(data.getSubsets() .stream() - .map(this::identifierToIdentifierDto) + .map(this::identifierToIdentifierBriefDto) .toList())); } if (data.getTables() != null) { database.setTables(new LinkedList<>(data.getTables() .stream() - .map(this::customTableToTableDto) + .map(this::tableToTableBriefDto) .toList())); } if (data.getViews() != null) { database.setViews(new LinkedList<>(data.getViews() .stream() - .map(this::viewToViewDto) + .map(this::viewToViewBriefDto) .toList())); } if (data.getAccesses() != null) { @@ -904,15 +907,12 @@ public interface MetadataMapper { if (data.getIdentifiers() != null) { database.setIdentifiers(new LinkedList<>(data.getIdentifiers() .stream() - .map(this::identifierToIdentifierDto) + .map(this::identifierToIdentifierBriefDto) .toList())); } return database; } - @Mappings({ - @Mapping(target = "created", source = "created", dateFormat = "dd-MM-yyyy HH:mm"), - }) DatabaseBriefDto databaseToDatabaseBriefDto(Database data); AccessType accessTypeDtoToAccessType(AccessTypeDto data); diff --git a/dbrepo-metadata-service/rest-service/pom.xml b/dbrepo-metadata-service/rest-service/pom.xml index 613d4c4d4a..67b149976c 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.5.2</version> + <version>1.6.0</version> </parent> <artifactId>dbrepo-metadata-service-rest-service</artifactId> <name>dbrepo-metadata-service-rest</name> - <version>1.5.2</version> + <version>1.6.0</version> <dependencies> <dependency> 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 62319662e2..7995b79bf6 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 @@ -67,7 +67,7 @@ public class ContainerEndpoint { log.debug("endpoint find all containers, limit={}", limit); final List<ContainerBriefDto> dtos = containerService.getAll(limit) .stream() - .map(metadataMapper::containerToDatabaseContainerBriefDto) + .map(metadataMapper::containerToContainerBriefDto) .collect(Collectors.toList()); log.debug("find all containers resulted in {} container(s)", dtos.size()); return ResponseEntity.ok() 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 ef897d06ee..407ae812b4 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 @@ -14,10 +14,8 @@ import at.tuwien.entities.database.table.columns.TableColumn; import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.mapper.MetadataMapper; -import at.tuwien.service.DatabaseService; -import at.tuwien.service.EntityService; -import at.tuwien.service.TableService; -import at.tuwien.service.UserService; +import at.tuwien.service.*; +import at.tuwien.service.impl.AccessServiceImpl; import at.tuwien.utils.UserUtil; import at.tuwien.validation.EndpointValidator; import io.micrometer.observation.annotation.Observed; @@ -53,17 +51,19 @@ public class TableEndpoint { private final UserService userService; private final TableService tableService; private final EntityService entityService; + private final AccessService accessService; private final MetadataMapper metadataMapper; private final DatabaseService databaseService; private final EndpointValidator endpointValidator; @Autowired public TableEndpoint(UserService userService, TableService tableService, EntityService entityService, - MetadataMapper metadataMapper, DatabaseService databaseService, + AccessService accessService, MetadataMapper metadataMapper, DatabaseService databaseService, EndpointValidator endpointValidator) { this.userService = userService; this.tableService = tableService; this.entityService = entityService; + this.accessService = accessService; this.metadataMapper = metadataMapper; this.databaseService = databaseService; this.endpointValidator = endpointValidator; @@ -405,7 +405,17 @@ public class TableEndpoint { DataServiceConnectionException, TableNotFoundException, DatabaseNotFoundException, QueueNotFoundException { log.debug("endpoint find table, databaseId={}, tableId={}", databaseId, tableId); final Table table = tableService.findById(databaseId, tableId); - final TableDto dto = metadataMapper.customTableToTableDto(table); + boolean hasAccess = UserUtil.isSystem(principal); + try { + final User user = userService.findByUsername(principal.getName()); + accessService.find(table.getDatabase(), user); + hasAccess = true; + } catch (UserNotFoundException | AccessNotFoundException e) { + /* ignore */ + } + final boolean includeSchema = UserUtil.isSystem(principal) || table.getIsSchemaPublic(); + final TableDto dto = metadataMapper.customTableToTableDto(table, hasAccess, table.getDatabase().getIsPublic(), + includeSchema); final HttpHeaders headers = new HttpHeaders(); if (UserUtil.isSystem(principal)) { headers.set("X-Username", table.getDatabase().getContainer().getPrivilegedUsername()); 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 cfcc554885..05edffa711 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 @@ -3,6 +3,7 @@ package at.tuwien.endpoints; import at.tuwien.api.database.ViewBriefDto; import at.tuwien.api.database.ViewCreateDto; import at.tuwien.api.database.ViewDto; +import at.tuwien.api.database.ViewUpdateDto; import at.tuwien.api.error.ApiErrorDto; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.View; @@ -94,7 +95,7 @@ public class ViewEndpoint { @PreAuthorize("hasAuthority('create-database-view')") @Observed(name = "dbrepo_view_create") @Operation(summary = "Create view", - description = "Creates a view. Requires role `create-database-view`.", + description = "Creates a view. This can only be performed by the database owner. Requires role `create-database-view`.", security = {@SecurityRequirement(name = "bearerAuth"), @SecurityRequirement(name = "basicAuth")}) @ApiResponses(value = { @ApiResponse(responseCode = "201", @@ -248,9 +249,9 @@ public class ViewEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), }) - public ResponseEntity<View> delete(@NotNull @PathVariable("databaseId") Long databaseId, - @NotNull @PathVariable("viewId") Long viewId, - @NotNull Principal principal) throws NotAllowedException, DataServiceException, + public ResponseEntity<?> delete(@NotNull @PathVariable("databaseId") Long databaseId, + @NotNull @PathVariable("viewId") Long viewId, + @NotNull Principal principal) throws NotAllowedException, DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, ViewNotFoundException, SearchServiceException, SearchServiceConnectionException { log.debug("endpoint delete view, databaseId={}, viewId={}", databaseId, viewId); @@ -265,4 +266,57 @@ public class ViewEndpoint { .build(); } + @PutMapping("/{viewId}") + @Transactional + @PreAuthorize("hasAuthority('create-database-view')") + @Observed(name = "dbrepo_view_update") + @Operation(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`.", + security = {@SecurityRequirement(name = "bearerAuth"), @SecurityRequirement(name = "basicAuth")}) + @ApiResponses(value = { + @ApiResponse(responseCode = "202", + description = "Update view successfully"), + @ApiResponse(responseCode = "400", + description = "Update view query is malformed", + content = {@Content( + mediaType = "application/json", + schema = @Schema(implementation = ApiErrorDto.class))}), + @ApiResponse(responseCode = "403", + description = "Update not allowed", + content = {@Content( + mediaType = "application/json", + schema = @Schema(implementation = ApiErrorDto.class))}), + @ApiResponse(responseCode = "404", + description = "Database or View could not be found", + content = {@Content( + mediaType = "application/json", + schema = @Schema(implementation = ApiErrorDto.class))}), + @ApiResponse(responseCode = "502", + description = "Connection to search service failed", + content = {@Content( + mediaType = "application/json", + schema = @Schema(implementation = ApiErrorDto.class))}), + @ApiResponse(responseCode = "503", + description = "Failed to save in search service", + content = {@Content( + 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, + DataServiceConnectionException, DatabaseNotFoundException, ViewNotFoundException, SearchServiceException, + SearchServiceConnectionException { + log.debug("endpoint update view, databaseId={}, viewId={}", databaseId, viewId); + final Database database = databaseService.findById(databaseId); + final View view = viewService.findById(database, viewId); + if (!database.getOwner().equals(principal) && !view.getCreator().equals(principal)) { + log.error("Failed to update view: not the database- or view owner"); + throw new NotAllowedException("Failed to update view: not the database- or view owner"); + } + return ResponseEntity.accepted() + .body(metadataMapper.viewToViewDto(viewService.update(database, view, data))); + } + } 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 c849900985..be037472dd 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 @@ -2,6 +2,7 @@ package at.tuwien.mapper; import at.tuwien.api.database.DatabaseDto; 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.ColumnTypeDto; import at.tuwien.api.database.table.constraints.foreign.ForeignKeyDto; @@ -9,6 +10,7 @@ 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.IdentifierBriefDto; import at.tuwien.api.identifier.IdentifierDto; import at.tuwien.api.identifier.IdentifierTypeDto; import at.tuwien.api.user.UserBriefDto; @@ -149,7 +151,7 @@ public class MetadataMapperUnitTest extends AbstractUnitTest { assertNull(response.getViewId()); assertNull(response.getQueryId()); assertNull(response.getTableId()); - assertEquals(IDENTIFIER_1_DOI_NOT_NULL, response.getDoi()); + assertEquals(IDENTIFIER_1_DOI, response.getDoi()); assertEquals(IDENTIFIER_1_TYPE, response.getType()); } @@ -187,245 +189,58 @@ public class MetadataMapperUnitTest extends AbstractUnitTest { assertEquals(DATABASE_1_ID, response.getId()); assertNotNull(response.getContact()); assertEquals(USER_1_ID, response.getContact().getId()); + assertEquals(DATABASE_1_PUBLIC, response.getIsPublic()); + assertEquals(DATABASE_1_SCHEMA_PUBLIC, response.getIsSchemaPublic()); /* identifiers formatted */ assertEquals(4, response.getIdentifiers().size()); - final IdentifierDto identifier1 = response.getIdentifiers().get(0); + final IdentifierBriefDto identifier1 = response.getIdentifiers().get(0); assertEquals(DATABASE_1_ID, identifier1.getDatabaseId()); - assertNotNull(identifier1.getCreator()); - assertEquals(IDENTIFIER_1_CREATED_BY, identifier1.getCreator().getId()); assertNotNull(identifier1.getCreated()); assertNotNull(identifier1.getLastModified()); - final IdentifierDto identifier2 = response.getIdentifiers().get(1); + final IdentifierBriefDto identifier2 = response.getIdentifiers().get(1); assertEquals(DATABASE_1_ID, identifier2.getDatabaseId()); - assertNotNull(identifier2.getCreator()); - assertEquals(IDENTIFIER_2_CREATED_BY, identifier2.getCreator().getId()); assertNotNull(identifier2.getCreated()); assertNotNull(identifier2.getLastModified()); - final IdentifierDto identifier3 = response.getIdentifiers().get(2); + final IdentifierBriefDto identifier3 = response.getIdentifiers().get(2); assertEquals(DATABASE_1_ID, identifier3.getDatabaseId()); - assertNotNull(identifier3.getCreator()); - assertEquals(IDENTIFIER_3_CREATED_BY, identifier3.getCreator().getId()); assertNotNull(identifier3.getCreated()); assertNotNull(identifier3.getLastModified()); - final IdentifierDto identifier4 = response.getIdentifiers().get(3); + final IdentifierBriefDto identifier4 = response.getIdentifiers().get(3); assertEquals(DATABASE_1_ID, identifier4.getDatabaseId()); - assertNotNull(identifier4.getCreator()); - assertEquals(IDENTIFIER_4_CREATED_BY, identifier4.getCreator().getId()); assertNotNull(identifier4.getCreated()); assertNotNull(identifier4.getLastModified()); /* Table 1 formatted */ - final TableDto table0 = response.getTables().get(0); + final TableBriefDto table0 = response.getTables().get(0); assertEquals(TABLE_1_ID, table0.getId()); assertEquals(TABLE_1_NAME, table0.getName()); assertEquals(TABLE_1_INTERNALNAME, table0.getInternalName()); assertEquals(TABLE_1_DESCRIPTION, table0.getDescription()); - assertEquals(DATABASE_1_ID, table0.getTdbid()); - assertEquals(USER_1_ID, table0.getCreatedBy()); - assertNotNull(table0.getOwner()); - assertEquals(USER_1_ID, table0.getOwner().getId()); - assertNotNull(table0.getCreator()); - assertEquals(USER_1_ID, table0.getCreator().getId()); - assertEquals(TABLE_1_AVG_ROW_LENGTH, table0.getAvgRowLength()); - assertEquals(TABLE_1_NUM_ROWS, table0.getNumRows()); - assertEquals(TABLE_1_DATA_LENGTH, table0.getDataLength()); - assertEquals(TABLE_1_MAX_DATA_LENGTH, table0.getMaxDataLength()); - assertNotNull(table0.getCreated()); - /* columns formatted */ - assertEquals(TABLE_1_COLUMNS.size(), table0.getColumns().size()); - for (int i = 0; i < TABLE_1_COLUMNS.size(); i++) { - assertEquals(TABLE_1_COLUMNS.get(i).getId(), table0.getColumns().get(i).getId()); - assertEquals(TABLE_1_COLUMNS.get(i).getOrdinalPosition(), table0.getColumns().get(i).getOrdinalPosition()); - assertNotNull(table0.getColumns().get(i).getOrdinalPosition()); - assertEquals(TABLE_1_COLUMNS.get(i).getTable().getId(), table0.getColumns().get(i).getTableId()); - assertEquals(TABLE_1_COLUMNS.get(i).getName(), table0.getColumns().get(i).getName()); - assertEquals(TABLE_1_COLUMNS.get(i).getInternalName(), table0.getColumns().get(i).getInternalName()); - assertEquals(List.of(ColumnTypeDto.SERIAL, ColumnTypeDto.DATE, ColumnTypeDto.VARCHAR, ColumnTypeDto.DECIMAL, ColumnTypeDto.DECIMAL).get(i), table0.getColumns().get(i).getColumnType()); - assertEquals(TABLE_1_COLUMNS.get(i).getSize(), table0.getColumns().get(i).getSize()); - assertEquals(TABLE_1_COLUMNS.get(i).getD(), table0.getColumns().get(i).getD()); - assertEquals(TABLE_1_COLUMNS.get(i).getIsNullAllowed(), table0.getColumns().get(i).getIsNullAllowed()); - assertEquals(TABLE_1_COLUMNS.get(i).getEnums(), table0.getColumns().get(i).getEnums()); - assertEquals(TABLE_1_COLUMNS.get(i).getSets(), table0.getColumns().get(i).getSets()); - } - /* constraints formatted */ - assertNotNull(table0.getConstraints()); - assertEquals(0, table0.getConstraints().getUniques().size()); - assertEquals(0, table0.getConstraints().getChecks().size()); - assertEquals(0, table0.getConstraints().getForeignKeys().size()); - assertEquals(1, table0.getConstraints().getPrimaryKey().size()); - final PrimaryKeyDto table0pk = new ArrayList<>(table0.getConstraints().getPrimaryKey()).get(0); - assertEquals(1L, table0pk.getId()); - assertEquals(TABLE_1_COLUMNS_BRIEF_0_DTO.getId(), table0pk.getColumn().getId()); - assertEquals(TABLE_1_COLUMNS_BRIEF_0_DTO.getName(), table0pk.getColumn().getName()); - assertEquals(TABLE_1_COLUMNS_BRIEF_0_DTO.getId(), table0pk.getColumn().getId()); - assertEquals(TABLE_1_COLUMNS_BRIEF_0_DTO.getName(), table0pk.getColumn().getName()); - assertEquals(TABLE_1_COLUMNS_BRIEF_0_DTO.getInternalName(), table0pk.getColumn().getInternalName()); - assertEquals(TABLE_1_ID, table0pk.getTable().getId()); - assertEquals(DATABASE_1_ID, table0pk.getTable().getDatabaseId()); - assertEquals(ColumnTypeDto.SERIAL, table0pk.getColumn().getColumnType()); - assertNull(table0pk.getColumn().getAlias()); - assertEquals(TABLE_1_ID, table0pk.getColumn().getTableId()); - assertEquals(DATABASE_1_ID, table0pk.getColumn().getDatabaseId()); + assertEquals(DATABASE_1_ID, table0.getDatabaseId()); + assertEquals(TABLE_1_SCHEMA_PUBLIC, table0.getIsSchemaPublic()); /* Table 2 formatted */ - final TableDto table1 = response.getTables().get(1); + final TableBriefDto table1 = response.getTables().get(1); assertEquals(TABLE_2_ID, table1.getId()); assertEquals(TABLE_2_NAME, table1.getName()); assertEquals(TABLE_2_INTERNALNAME, table1.getInternalName()); assertEquals(TABLE_2_DESCRIPTION, table1.getDescription()); - assertEquals(DATABASE_1_ID, table1.getTdbid()); - assertEquals(USER_2_ID, table1.getCreatedBy()); - assertNotNull(table1.getOwner()); - assertEquals(USER_2_ID, table1.getOwner().getId()); - assertNotNull(table1.getCreator()); - assertEquals(USER_2_ID, table1.getCreator().getId()); - assertEquals(TABLE_2_AVG_ROW_LENGTH, table1.getAvgRowLength()); - assertEquals(TABLE_2_NUM_ROWS, table1.getNumRows()); - assertEquals(TABLE_2_DATA_LENGTH, table1.getDataLength()); - assertEquals(TABLE_2_MAX_DATA_LENGTH, table1.getMaxDataLength()); - assertNotNull(table1.getCreated()); - /* columns formatted */ - assertEquals(TABLE_2_COLUMNS.size(), table1.getColumns().size()); - for (int i = 0; i < TABLE_2_COLUMNS.size(); i++) { - assertEquals(TABLE_2_COLUMNS.get(i).getId(), table1.getColumns().get(i).getId()); - assertEquals(TABLE_2_COLUMNS.get(i).getOrdinalPosition(), table1.getColumns().get(i).getOrdinalPosition()); - assertNotNull(table1.getColumns().get(i).getOrdinalPosition()); - assertEquals(TABLE_2_COLUMNS.get(i).getTable().getId(), table1.getColumns().get(i).getTableId()); - assertEquals(TABLE_2_COLUMNS.get(i).getName(), table1.getColumns().get(i).getName()); - assertEquals(TABLE_2_COLUMNS.get(i).getInternalName(), table1.getColumns().get(i).getInternalName()); - assertEquals(List.of(ColumnTypeDto.VARCHAR, ColumnTypeDto.DECIMAL, ColumnTypeDto.DECIMAL).get(i), table1.getColumns().get(i).getColumnType()); - assertEquals(TABLE_2_COLUMNS.get(i).getSize(), table1.getColumns().get(i).getSize()); - assertEquals(TABLE_2_COLUMNS.get(i).getD(), table1.getColumns().get(i).getD()); - assertEquals(TABLE_2_COLUMNS.get(i).getIsNullAllowed(), table1.getColumns().get(i).getIsNullAllowed()); - assertEquals(TABLE_2_COLUMNS.get(i).getEnums(), table1.getColumns().get(i).getEnums()); - assertEquals(TABLE_2_COLUMNS.get(i).getSets(), table1.getColumns().get(i).getSets()); - } - /* constraints formatted */ - assertNotNull(table1.getConstraints()); - assertEquals(1, table1.getConstraints().getUniques().size()); - final UniqueDto table1uk = table1.getConstraints().getUniques().get(0); - assertEquals(1L, table1uk.getId()); - assertEquals(TABLE_2_ID, table1uk.getTable().getId()); - assertEquals(DATABASE_1_ID, table1uk.getTable().getDatabaseId()); - assertEquals("uk_1", table1uk.getName()); - assertEquals(TABLE_2_COLUMNS_DTO.get(1).getId(), table1uk.getColumns().get(0).getId()); - assertEquals(1, table1.getConstraints().getChecks().size()); - assertEquals("`mintemp` > 0", new ArrayList<>(table1.getConstraints().getChecks()).get(0)); - assertEquals(1, table1.getConstraints().getForeignKeys().size()); - final ForeignKeyDto table1fk = new ArrayList<>(table1.getConstraints().getForeignKeys()).get(0); - assertEquals("fk_location", table1fk.getName()); - assertEquals(ReferenceTypeDto.NO_ACTION, table1fk.getOnDelete()); - assertEquals(ReferenceTypeDto.NO_ACTION, table1fk.getOnUpdate()); - assertEquals(TABLE_2_ID, table1fk.getTable().getId()); - assertEquals(DATABASE_1_ID, table1fk.getTable().getDatabaseId()); - assertEquals(TABLE_1_ID, table1fk.getReferencedTable().getId()); - assertEquals(DATABASE_1_ID, table1fk.getReferencedTable().getDatabaseId()); - final ForeignKeyReferenceDto table1fkr = table1fk.getReferences().get(0); - assertEquals(1L, table1fkr.getId()); - assertEquals(TABLE_2_COLUMNS_DTO.get(2).getId(), table1fkr.getColumn().getId()); - assertEquals(TABLE_2_COLUMNS_DTO.get(2).getTableId(), table1fkr.getColumn().getTableId()); - assertEquals(TABLE_2_COLUMNS_DTO.get(2).getDatabaseId(), table1fkr.getColumn().getDatabaseId()); - assertEquals(TABLE_1_COLUMNS_DTO.get(0).getId(), table1fkr.getReferencedColumn().getId()); - assertEquals(TABLE_1_COLUMNS_DTO.get(0).getTableId(), table1fkr.getReferencedColumn().getTableId()); - assertEquals(TABLE_1_COLUMNS_DTO.get(0).getDatabaseId(), table1fkr.getReferencedColumn().getDatabaseId()); - assertEquals(1, table1.getConstraints().getPrimaryKey().size()); - final PrimaryKeyDto table1pk = new ArrayList<>(table1.getConstraints().getPrimaryKey()).get(0); - assertEquals(2L, table1pk.getId()); - assertEquals(TABLE_2_COLUMNS_BRIEF_0_DTO.getId(), table1pk.getColumn().getId()); - assertEquals(TABLE_2_COLUMNS_BRIEF_0_DTO.getName(), table1pk.getColumn().getName()); - assertEquals(TABLE_2_COLUMNS_BRIEF_0_DTO.getId(), table1pk.getColumn().getId()); - assertEquals(TABLE_2_COLUMNS_BRIEF_0_DTO.getName(), table1pk.getColumn().getName()); - assertEquals(TABLE_2_COLUMNS_BRIEF_0_DTO.getInternalName(), table1pk.getColumn().getInternalName()); - assertEquals(ColumnTypeDto.VARCHAR, table1pk.getColumn().getColumnType()); - assertNull(table1pk.getColumn().getAlias()); - assertEquals(TABLE_2_ID, table1pk.getColumn().getTableId()); - assertEquals(DATABASE_1_ID, table1pk.getColumn().getDatabaseId()); + assertEquals(DATABASE_1_ID, table1.getDatabaseId()); + assertEquals(TABLE_2_SCHEMA_PUBLIC, table1.getIsSchemaPublic()); /* Table 3 formatted */ - final TableDto table2 = response.getTables().get(2); + final TableBriefDto table2 = response.getTables().get(2); assertEquals(TABLE_3_ID, table2.getId()); assertEquals(TABLE_3_NAME, table2.getName()); assertEquals(TABLE_3_INTERNALNAME, table2.getInternalName()); assertEquals(TABLE_3_DESCRIPTION, table2.getDescription()); - assertEquals(DATABASE_1_ID, table2.getTdbid()); - assertEquals(USER_3_ID, table2.getCreatedBy()); - assertNotNull(table2.getOwner()); - assertEquals(USER_3_ID, table2.getOwner().getId()); - assertNotNull(table2.getCreator()); - assertEquals(USER_3_ID, table2.getCreator().getId()); - assertEquals(TABLE_3_AVG_ROW_LENGTH, table2.getAvgRowLength()); - assertEquals(TABLE_3_NUM_ROWS, table2.getNumRows()); - assertEquals(TABLE_3_DATA_LENGTH, table2.getDataLength()); - assertEquals(TABLE_3_MAX_DATA_LENGTH, table2.getMaxDataLength()); - assertNotNull(table2.getCreated()); - /* columns formatted */ - assertEquals(TABLE_3_COLUMNS.size(), table2.getColumns().size()); - for (int i = 0; i < TABLE_3_COLUMNS.size(); i++) { - assertEquals(TABLE_3_COLUMNS.get(i).getId(), table2.getColumns().get(i).getId()); - assertEquals(TABLE_3_COLUMNS.get(i).getOrdinalPosition(), table2.getColumns().get(i).getOrdinalPosition()); - assertNotNull(table2.getColumns().get(i).getOrdinalPosition()); - assertEquals(TABLE_3_COLUMNS.get(i).getTable().getId(), table2.getColumns().get(i).getTableId()); - assertEquals(TABLE_3_COLUMNS.get(i).getName(), table2.getColumns().get(i).getName()); - assertEquals(TABLE_3_COLUMNS.get(i).getInternalName(), table2.getColumns().get(i).getInternalName()); - assertEquals(List.of(ColumnTypeDto.BIGINT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.DATE, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.DATE, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.DATE, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT, ColumnTypeDto.INT).get(i), table2.getColumns().get(i).getColumnType()); - assertEquals(TABLE_3_COLUMNS.get(i).getSize(), table2.getColumns().get(i).getSize()); - assertEquals(TABLE_3_COLUMNS.get(i).getD(), table2.getColumns().get(i).getD()); - assertEquals(TABLE_3_COLUMNS.get(i).getIsNullAllowed(), table2.getColumns().get(i).getIsNullAllowed()); - assertEquals(TABLE_3_COLUMNS.get(i).getEnums(), table2.getColumns().get(i).getEnums()); - assertEquals(TABLE_3_COLUMNS.get(i).getSets(), table2.getColumns().get(i).getSets()); - } - /* constraints formatted */ - final PrimaryKeyDto table2pk = new ArrayList<>(table2.getConstraints().getPrimaryKey()).get(0); - assertEquals(TABLE_3_COLUMNS_BRIEF_0_DTO.getId(), table2pk.getColumn().getId()); - assertEquals(TABLE_3_COLUMNS_BRIEF_0_DTO.getName(), table2pk.getColumn().getName()); - assertEquals(TABLE_3_COLUMNS_BRIEF_0_DTO.getId(), table2pk.getColumn().getId()); - assertEquals(TABLE_3_COLUMNS_BRIEF_0_DTO.getName(), table2pk.getColumn().getName()); - assertEquals(TABLE_3_COLUMNS_BRIEF_0_DTO.getInternalName(), table2pk.getColumn().getInternalName()); - assertEquals(ColumnTypeDto.BIGINT, table2pk.getColumn().getColumnType()); - assertNull(table2pk.getColumn().getAlias()); - assertEquals(TABLE_3_ID, table2pk.getColumn().getTableId()); - assertEquals(DATABASE_1_ID, table2pk.getColumn().getDatabaseId()); + assertEquals(DATABASE_1_ID, table2.getDatabaseId()); + assertEquals(TABLE_3_SCHEMA_PUBLIC, table2.getIsSchemaPublic()); /* Table 4 formatted */ - final TableDto table3 = response.getTables().get(3); + final TableBriefDto table3 = response.getTables().get(3); assertEquals(TABLE_4_ID, table3.getId()); assertEquals(TABLE_4_NAME, table3.getName()); assertEquals(TABLE_4_INTERNALNAME, table3.getInternalName()); assertEquals(TABLE_4_DESCRIPTION, table3.getDescription()); - assertEquals(DATABASE_1_ID, table3.getTdbid()); - assertEquals(USER_1_ID, table3.getCreatedBy()); - assertNotNull(table3.getOwner()); - assertEquals(USER_1_ID, table3.getOwner().getId()); - assertNotNull(table3.getCreator()); - assertEquals(USER_1_ID, table3.getCreator().getId()); - assertEquals(TABLE_4_AVG_ROW_LENGTH, table3.getAvgRowLength()); - assertEquals(TABLE_4_NUM_ROWS, table3.getNumRows()); - assertEquals(TABLE_4_DATA_LENGTH, table3.getDataLength()); - assertEquals(TABLE_4_MAX_DATA_LENGTH, table3.getMaxDataLength()); - assertNotNull(table3.getCreated()); - /* columns formatted */ - assertEquals(TABLE_4_COLUMNS.size(), table3.getColumns().size()); - for (int i = 0; i < TABLE_4_COLUMNS.size(); i++) { - assertEquals(TABLE_4_COLUMNS.get(i).getId(), table3.getColumns().get(i).getId()); - assertEquals(TABLE_4_COLUMNS.get(i).getOrdinalPosition(), table3.getColumns().get(i).getOrdinalPosition()); - assertNotNull(table3.getColumns().get(i).getOrdinalPosition()); - assertEquals(TABLE_4_COLUMNS.get(i).getTable().getId(), table3.getColumns().get(i).getTableId()); - assertEquals(TABLE_4_COLUMNS.get(i).getName(), table3.getColumns().get(i).getName()); - assertEquals(TABLE_4_COLUMNS.get(i).getInternalName(), table3.getColumns().get(i).getInternalName()); - assertEquals(List.of(ColumnTypeDto.TIMESTAMP, ColumnTypeDto.DECIMAL).get(i), table3.getColumns().get(i).getColumnType()); - assertEquals(TABLE_4_COLUMNS.get(i).getSize(), table3.getColumns().get(i).getSize()); - assertEquals(TABLE_4_COLUMNS.get(i).getD(), table3.getColumns().get(i).getD()); - assertEquals(TABLE_4_COLUMNS.get(i).getIsNullAllowed(), table3.getColumns().get(i).getIsNullAllowed()); - assertEquals(TABLE_4_COLUMNS.get(i).getEnums(), table3.getColumns().get(i).getEnums()); - assertEquals(TABLE_4_COLUMNS.get(i).getSets(), table3.getColumns().get(i).getSets()); - } - /* constraints formatted */ - final PrimaryKeyDto table3pk = new ArrayList<>(table3.getConstraints().getPrimaryKey()).get(0); - assertEquals(TABLE_4_COLUMNS_BRIEF_0_DTO.getId(), table3pk.getColumn().getId()); - assertEquals(TABLE_4_COLUMNS_BRIEF_0_DTO.getName(), table3pk.getColumn().getName()); - assertEquals(TABLE_4_COLUMNS_BRIEF_0_DTO.getId(), table3pk.getColumn().getId()); - assertEquals(TABLE_4_COLUMNS_BRIEF_0_DTO.getName(), table3pk.getColumn().getName()); - assertEquals(TABLE_4_COLUMNS_BRIEF_0_DTO.getInternalName(), table3pk.getColumn().getInternalName()); - assertEquals(ColumnTypeDto.TIMESTAMP, table3pk.getColumn().getColumnType()); - assertNull(table3pk.getColumn().getAlias()); - assertEquals(TABLE_4_ID, table3pk.getColumn().getTableId()); - assertEquals(DATABASE_1_ID, table3pk.getColumn().getDatabaseId()); + assertEquals(DATABASE_1_ID, table3.getDatabaseId()); + assertEquals(TABLE_4_SCHEMA_PUBLIC, table3.getIsSchemaPublic()); } public static Stream<Arguments> nameToInternalName_parameters() { 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 648bb6ab29..a319044d39 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 @@ -210,7 +210,7 @@ public class DataCiteIdentifierServicePersistenceTest extends AbstractUnitTest { /* test */ final Identifier response = dataCiteIdentifierService.create(DATABASE_1, USER_1, IDENTIFIER_1_CREATE_WITH_DOI_DTO); - assertEquals(IDENTIFIER_1_DOI_NOT_NULL, response.getDoi()); + assertEquals(IDENTIFIER_1_DOI, response.getDoi()); } @Test 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 246ae7de1a..48da5206bb 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 @@ -487,7 +487,7 @@ public class IdentifierServicePersistenceTest extends AbstractUnitTest { /* test */ final Identifier response = identifierService.create(DATABASE_1, USER_1, IDENTIFIER_1_CREATE_WITH_DOI_DTO); assertEquals(8L, response.getId()); - assertEquals(IDENTIFIER_1_DOI_NOT_NULL, response.getDoi()); + assertEquals(IDENTIFIER_1_DOI, response.getDoi()); } @Test diff --git a/dbrepo-metadata-service/services/pom.xml b/dbrepo-metadata-service/services/pom.xml index d98e575eb9..bb101e9af6 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.5.2</version> + <version>1.6.0</version> </parent> <artifactId>dbrepo-metadata-service-services</artifactId> <name>dbrepo-metadata-service-services</name> - <version>1.5.2</version> + <version>1.6.0</version> <dependencies> <dependency> 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 a090ece3cb..9ec30b74f2 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,10 +1,12 @@ package at.tuwien.service; import at.tuwien.api.database.ViewCreateDto; +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; @@ -43,7 +45,29 @@ public interface ViewService { * @param user The user. * @param data The given query. * @return The view that was created. + * @throws MalformedException + * @throws DataServiceException + * @throws DataServiceConnectionException + * @throws DatabaseNotFoundException + * @throws SearchServiceException + * @throws SearchServiceConnectionException + * @throws ViewNotFoundException */ View create(Database database, User user, ViewCreateDto data) throws MalformedException, DataServiceException, - DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException; + DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, + SearchServiceConnectionException; + + /** + * @param database + * @param view + * @param data + * @return + * @throws DataServiceConnectionException + * @throws DatabaseNotFoundException + * @throws SearchServiceException + * @throws SearchServiceConnectionException + * @throws ViewNotFoundException + */ + View update(Database database, View view, ViewUpdateDto data) throws DataServiceConnectionException, + DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException, ViewNotFoundException; } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java index b6af901811..b3f98b01bb 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AccessServiceImpl.java @@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.security.Principal; import java.util.List; import java.util.Optional; 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 330d4518de..346190a50c 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 @@ -88,6 +88,7 @@ public class DatabaseServiceImpl implements DatabaseService { SearchServiceException, SearchServiceConnectionException { Database database = Database.builder() .isPublic(data.getIsPublic()) + .isSchemaPublic(data.getIsSchemaPublic()) .name(data.getName()) .internalName(metadataMapper.nameToInternalName(data.getName()) + "_" + RandomStringUtils.randomAlphabetic(4).toLowerCase()) .cid(data.getCid()) @@ -155,6 +156,10 @@ public class DatabaseServiceImpl implements DatabaseService { throws DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException { /* update in metadata database */ database.setIsPublic(data.getIsPublic()); + database.setIsSchemaPublic(data.getIsSchemaPublic()); + log.debug("visibility change affects {} table(s)", database.getTables().stream().filter(t -> !t.getIsSchemaPublic().equals(data.getIsSchemaPublic())).count()); + database.getTables() + .forEach(table -> table.setIsSchemaPublic(data.getIsSchemaPublic())); database = databaseRepository.save(database); /* update in open search service */ searchServiceGateway.update(database); 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 4866fea2c1..7b9d593723 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 @@ -115,6 +115,7 @@ public class TableServiceImpl implements TableService { .owner(owner) .numRows(0L) .dataLength(0L) + .isSchemaPublic(database.getIsSchemaPublic()) .identifiers(new LinkedList<>()) .columns(new LinkedList<>()) .build(); 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 17a2c26d89..7bb12bb5fc 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 @@ -2,6 +2,7 @@ package at.tuwien.service.impl; import at.tuwien.api.database.ViewCreateDto; import at.tuwien.api.database.ViewDto; +import at.tuwien.api.database.ViewUpdateDto; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.View; import at.tuwien.entities.user.User; @@ -86,8 +87,9 @@ public class ViewServiceImpl implements ViewService { @Override @Transactional - public View create(Database database, User creator, ViewCreateDto data) throws MalformedException, DataServiceException, - DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException { + public View create(Database database, User creator, ViewCreateDto data) throws MalformedException, + DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, + SearchServiceConnectionException { /* create in metadata database */ final View view = View.builder() .vdbid(database.getId()) @@ -131,4 +133,25 @@ public class ViewServiceImpl implements ViewService { return optional.get(); } + @Override + @Transactional + public View update(Database database, View view, ViewUpdateDto data) throws DataServiceConnectionException, + DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException, ViewNotFoundException { + database = databaseRepository.save(database); + final Optional<View> optional = database.getViews() + .stream() + .filter(v -> v.getInternalName().equals(view.getInternalName())) + .findFirst(); + if (optional.isEmpty()) { + log.error("Failed to find view"); + throw new ViewNotFoundException("Failed to find view"); + } + optional.get() + .setIsPublic(data.getIsPublic()); + /* update in search service */ + searchServiceGateway.update(database); + log.info("Updated view with id {}", optional.get().getId()); + return optional.get(); + } + } diff --git a/dbrepo-metadata-service/test/pom.xml b/dbrepo-metadata-service/test/pom.xml index dcccbef8f8..cdb1783c84 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.5.2</version> + <version>1.6.0</version> </parent> <artifactId>dbrepo-metadata-service-test</artifactId> <name>dbrepo-metadata-service-test</name> - <version>1.5.2</version> + <version>1.6.0</version> <dependencies> <dependency> 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 8e613cfa7c..7da2ede960 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 @@ -36,9 +36,9 @@ public abstract class AbstractUnitTest extends BaseTest { DATABASE_1.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_1, IDENTIFIER_2, IDENTIFIER_3, IDENTIFIER_4))); 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.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_PRIVILEGED_DTO.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_1_BRIEF_DTO, IDENTIFIER_2_BRIEF_DTO, IDENTIFIER_3_BRIEF_DTO, IDENTIFIER_4_BRIEF_DTO))); + DATABASE_1_PRIVILEGED_DTO.setTables(new LinkedList<>(List.of(TABLE_1_BRIEF_DTO, TABLE_2_BRIEF_DTO, TABLE_3_BRIEF_DTO, TABLE_4_BRIEF_DTO))); + DATABASE_1_PRIVILEGED_DTO.setViews(new LinkedList<>(List.of(VIEW_1_BRIEF_DTO, VIEW_2_BRIEF_DTO, VIEW_3_BRIEF_DTO))); TABLE_1_DTO.setColumns(new LinkedList<>(TABLE_1_COLUMNS_DTO)); TABLE_1_DTO.setConstraints(TABLE_1_CONSTRAINTS_DTO); TABLE_2.setDatabase(DATABASE_1); @@ -81,9 +81,9 @@ public abstract class AbstractUnitTest extends BaseTest { 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_PRIVILEGED_DTO.setTables(new LinkedList<>(List.of(TABLE_5_BRIEF_DTO, TABLE_6_BRIEF_DTO, TABLE_7_BRIEF_DTO))); + DATABASE_2_PRIVILEGED_DTO.setViews(new LinkedList<>(List.of(VIEW_4_BRIEF_DTO))); + DATABASE_2_PRIVILEGED_DTO.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_5_BRIEF_DTO))); TABLE_5.setDatabase(DATABASE_2); TABLE_5.setColumns(new LinkedList<>(TABLE_5_COLUMNS)); TABLE_5.setConstraints(TABLE_5_CONSTRAINTS); 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 4586f68d4f..e577839b3a 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 @@ -107,7 +107,7 @@ import static java.time.temporal.ChronoUnit.HOURS; import static java.time.temporal.ChronoUnit.MINUTES; /** - * Database 1 (Private, User 1) -> Container 1 + * Database 1 (Private Data, Private Schema, User 1) -> Container 1 * <ul> * <li>Table 1</li> * <li>Table 2</li> @@ -123,7 +123,7 @@ import static java.time.temporal.ChronoUnit.MINUTES; * <li>Identifier 4 (Title=en, Description=en, type=table, tableId=1)</li> * </ul> * <p> - * Database 2 (Private, User 2) -> Container 1 + * Database 2 (Private Data, Public Schema, User 2) -> Container 1 * <ul> * <li>Table 5</li> * <li>Table 6</li> @@ -134,7 +134,7 @@ import static java.time.temporal.ChronoUnit.MINUTES; * <li>Identifier 5 (Title=de, Description=de)</li> * </ul> * <p> - * Database 3 (Public, User 3) -> Container 1 + * Database 3 (Public Data, Private Schema, User 3) -> Container 1 * <ul> * <li>Table 8</li> * <li>Query 3</li> @@ -144,7 +144,7 @@ import static java.time.temporal.ChronoUnit.MINUTES; * <li>Identifier 6 (Title=en, Description=en, Query=3)</li> * </ul> * <p> - * Database 4 (Public, User 4) -> Container 4 + * Database 4 (Public Data, Public Schema, User 4) -> Container 4 * <li>Identifier 7 (Database=4)</li> * <ul> * </ul> @@ -839,6 +839,13 @@ public abstract class BaseTest { .lastname(USER_5_LASTNAME) .build(); + public final static UserBriefDto USER_5_BRIEF_DTO = UserBriefDto.builder() + .id(USER_5_ID) + .username(USER_5_USERNAME) + .firstname(USER_5_FIRSTNAME) + .lastname(USER_5_LASTNAME) + .build(); + public final static UserDetails USER_5_DETAILS = UserDetailsDto.builder() .id(USER_5_ID.toString()) .username(USER_5_USERNAME) @@ -1006,7 +1013,7 @@ public abstract class BaseTest { .port(CONTAINER_1_PORT) .build(); - public final static ContainerBriefDto CONTAINER_1_DTO_BRIEF = ContainerBriefDto.builder() + public final static ContainerBriefDto CONTAINER_1_BRIEF_DTO = ContainerBriefDto.builder() .id(CONTAINER_1_ID) .name(CONTAINER_1_NAME) .internalName(CONTAINER_1_INTERNALNAME) @@ -1145,6 +1152,7 @@ public abstract class BaseTest { public final static String DATABASE_1_DESCRIPTION = "Weather in Australia"; public final static String DATABASE_1_INTERNALNAME = "weather"; public final static Boolean DATABASE_1_PUBLIC = false; + public final static Boolean DATABASE_1_SCHEMA_PUBLIC = false; 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) */; @@ -1174,6 +1182,7 @@ public abstract class BaseTest { public final static String DATABASE_2_DESCRIPTION = "Zoo data"; public final static String DATABASE_2_INTERNALNAME = "zoo"; public final static Boolean DATABASE_2_PUBLIC = false; + public final static Boolean DATABASE_2_SCHEMA_PUBLIC = true; public final static String DATABASE_2_EXCHANGE = "dbrepo"; public final static Instant DATABASE_2_CREATED = Instant.ofEpochSecond(1677399772L) /* 2023-02-26 08:22:52 (UTC) */; public final static Instant DATABASE_2_LAST_MODIFIED = Instant.ofEpochSecond(1677399772L) /* 2023-02-26 08:22:52 (UTC) */; @@ -1191,6 +1200,7 @@ public abstract class BaseTest { public final static String DATABASE_3_DESCRIPTION = "Musicology data"; public final static String DATABASE_3_INTERNALNAME = "musicology"; public final static Boolean DATABASE_3_PUBLIC = true; + public final static Boolean DATABASE_3_SCHEMA_PUBLIC = false; public final static String DATABASE_3_EXCHANGE = "dbrepo"; public final static Instant DATABASE_3_CREATED = Instant.ofEpochSecond(1677399792L) /* 2023-02-26 08:23:12 (UTC) */; public final static Instant DATABASE_3_LAST_MODIFIED = Instant.ofEpochSecond(1677399792L) /* 2023-02-26 08:23:12 (UTC) */; @@ -1205,7 +1215,7 @@ public abstract class BaseTest { .created(DATABASE_3_CREATED) .isPublic(DATABASE_3_PUBLIC) .name(DATABASE_3_NAME) - .container(CONTAINER_1_DTO) + .container(CONTAINER_1_BRIEF_DTO) .internalName(DATABASE_3_INTERNALNAME) .exchangeName(DATABASE_3_EXCHANGE) .tables(new LinkedList<>()) /* TABLE_3, TABLE_3, TABLE_3 */ @@ -1223,6 +1233,7 @@ public abstract class BaseTest { public final static String DATABASE_4_NAME = "Weather AT"; public final static String DATABASE_4_DESCRIPTION = "Weather data"; public final static Boolean DATABASE_4_PUBLIC = true; + public final static Boolean DATABASE_4_SCHEMA_PUBLIC = true; public final static String DATABASE_4_INTERNALNAME = "weather_at"; public final static String DATABASE_4_EXCHANGE = "dbrepo"; public final static Instant DATABASE_4_CREATED = Instant.ofEpochSecond(1677399813L) /* 2023-02-26 08:23:33 (UTC) */; @@ -1234,13 +1245,14 @@ public abstract class BaseTest { .id(DATABASE_4_ID) .created(Instant.now().minus(4, HOURS)) .isPublic(DATABASE_4_PUBLIC) + .isSchemaPublic(DATABASE_4_SCHEMA_PUBLIC) .name(DATABASE_4_NAME) .description(DATABASE_4_DESCRIPTION) .internalName(DATABASE_4_INTERNALNAME) .exchangeName(DATABASE_4_EXCHANGE) .created(DATABASE_4_CREATED) - .creator(USER_4_DTO) - .owner(USER_4_DTO) + .creator(USER_4_BRIEF_DTO) + .owner(USER_4_BRIEF_DTO) .tables(new LinkedList<>()) .views(new LinkedList<>()) .identifiers(new LinkedList<>()) @@ -1419,6 +1431,7 @@ public abstract class BaseTest { public final static String TABLE_1_NAME = "Weather AUS"; public final static String TABLE_1_INTERNALNAME = "weather_aus"; public final static Boolean TABLE_1_VERSIONED = true; + public final static Boolean TABLE_1_SCHEMA_PUBLIC = false; public final static Boolean TABLE_1_PROCESSED_CONSTRAINTS = true; public final static String TABLE_1_DESCRIPTION = "Weather in Australia"; public final static String TABLE_1_QUEUE_NAME = TABLE_1_INTERNALNAME; @@ -1438,6 +1451,7 @@ public abstract class BaseTest { .created(TABLE_1_CREATED) .internalName(TABLE_1_INTERNALNAME) .isVersioned(TABLE_1_VERSIONED) + .isPublic(TABLE_1_SCHEMA_PUBLIC) .description(TABLE_1_DESCRIPTION) .name(TABLE_1_NAME) .queueName(TABLE_1_QUEUE_NAME) @@ -1445,8 +1459,8 @@ public abstract class BaseTest { .identifiers(new LinkedList<>()) .columns(new LinkedList<>() /* TABLE_1_COLUMNS_DTO */) .constraints(null) /* TABLE_1_CONSTRAINTS_DTO */ - .createdBy(USER_1_ID) - .owner(USER_1_DTO) + .owner(USER_1_BRIEF_DTO) + .creator(USER_1_BRIEF_DTO) .isPublic(DATABASE_1_PUBLIC) .avgRowLength(TABLE_1_AVG_ROW_LENGTH) .numRows(TABLE_1_NUM_ROWS) @@ -1484,6 +1498,7 @@ public abstract class BaseTest { .created(TABLE_1_CREATED) .internalName(TABLE_1_INTERNALNAME) .isVersioned(TABLE_1_VERSIONED) + .isSchemaPublic(TABLE_1_SCHEMA_PUBLIC) .description(TABLE_1_DESCRIPTION) .name(TABLE_1_NAME) .queueName(TABLE_1_QUEUE_NAME) @@ -1491,8 +1506,8 @@ public abstract class BaseTest { .identifiers(new LinkedList<>()) .columns(new LinkedList<>() /* TABLE_1_COLUMNS_DTO */) .constraints(null) /* TABLE_1_CONSTRAINT_DTO */ - .createdBy(USER_1_ID) - .owner(USER_1_DTO) + .owner(USER_1_BRIEF_DTO) + .creator(USER_1_BRIEF_DTO) .avgRowLength(TABLE_1_AVG_ROW_LENGTH) .numRows(TABLE_1_NUM_ROWS) .dataLength(TABLE_1_DATA_LENGTH) @@ -1576,9 +1591,10 @@ public abstract class BaseTest { .id(TABLE_1_ID) .internalName(TABLE_1_INTERNALNAME) .isVersioned(TABLE_1_VERSIONED) + .isSchemaPublic(TABLE_1_SCHEMA_PUBLIC) .description(TABLE_1_DESCRIPTION) .name(TABLE_1_NAME) - .owner(USER_1_BRIEF_DTO) + .ownedBy(USER_1_ID) .build(); public final static Long TABLE_1_DATA_COUNT = 3L; @@ -1619,6 +1635,7 @@ public abstract class BaseTest { public final static String TABLE_2_NAME = "Weather Location"; public final static String TABLE_2_INTERNALNAME = "weather_location"; public final static Boolean TABLE_2_VERSIONED = true; + public final static Boolean TABLE_2_SCHEMA_PUBLIC = false; public final static Boolean TABLE_2_PROCESSED_CONSTRAINTS = true; public final static String TABLE_2_DESCRIPTION = "Weather location"; public final static String TABLE_2_QUEUE_NAME = TABLE_2_INTERNALNAME; @@ -1637,6 +1654,7 @@ public abstract class BaseTest { .created(TABLE_2_CREATED) .internalName(TABLE_2_INTERNALNAME) .isVersioned(TABLE_2_VERSIONED) + .isSchemaPublic(TABLE_2_SCHEMA_PUBLIC) .description(TABLE_2_DESCRIPTION) .name(TABLE_2_NAME) .lastModified(TABLE_2_LAST_MODIFIED) @@ -1667,9 +1685,8 @@ public abstract class BaseTest { .identifiers(new LinkedList<>()) .columns(new LinkedList<>() /* TABLE_2_COLUMNS_DTO */) .constraints(null) /* TABLE_2_CONSTRAINTS_DTO */ - .creator(USER_2_DTO) - .createdBy(USER_2_ID) - .owner(USER_2_DTO) + .creator(USER_2_BRIEF_DTO) + .owner(USER_2_BRIEF_DTO) .avgRowLength(TABLE_2_AVG_ROW_LENGTH) .numRows(TABLE_2_NUM_ROWS) .dataLength(TABLE_2_DATA_LENGTH) @@ -1682,15 +1699,15 @@ public abstract class BaseTest { .created(TABLE_2_CREATED) .internalName(TABLE_2_INTERNALNAME) .isVersioned(TABLE_2_VERSIONED) + .isSchemaPublic(TABLE_2_SCHEMA_PUBLIC) .description(TABLE_2_DESCRIPTION) .name(TABLE_2_NAME) .queueName(TABLE_2_QUEUE_NAME) .routingKey(TABLE_2_ROUTING_KEY) .columns(new LinkedList<>() /* TABLE_2_COLUMNS_DTO */) .constraints(null) /* TABLE_2_CONSTRAINTS_DTO */ - .creator(USER_2_DTO) - .createdBy(USER_2_ID) - .owner(USER_2_DTO) + .creator(USER_2_BRIEF_DTO) + .owner(USER_2_BRIEF_DTO) .avgRowLength(TABLE_2_AVG_ROW_LENGTH) .numRows(TABLE_2_NUM_ROWS) .dataLength(TABLE_2_DATA_LENGTH) @@ -1701,15 +1718,17 @@ public abstract class BaseTest { .id(TABLE_2_ID) .internalName(TABLE_2_INTERNALNAME) .isVersioned(TABLE_2_VERSIONED) + .isSchemaPublic(TABLE_2_SCHEMA_PUBLIC) .description(TABLE_2_DESCRIPTION) .name(TABLE_2_NAME) - .owner(USER_2_BRIEF_DTO) + .ownedBy(USER_2_ID) .build(); public final static Long TABLE_3_ID = 3L; public final static String TABLE_3_NAME = "Sensor"; public final static String TABLE_3_INTERNALNAME = "sensor"; public final static Boolean TABLE_3_VERSIONED = true; + public final static Boolean TABLE_3_SCHEMA_PUBLIC = false; public final static Boolean TABLE_3_PROCESSED_CONSTRAINTS = true; public final static String TABLE_3_DESCRIPTION = "Some sensor data"; public final static String TABLE_3_QUEUE_NAME = TABLE_3_INTERNALNAME; @@ -1728,6 +1747,7 @@ public abstract class BaseTest { .created(TABLE_3_CREATED) .internalName(TABLE_3_INTERNALNAME) .isVersioned(TABLE_3_VERSIONED) + .isSchemaPublic(TABLE_3_SCHEMA_PUBLIC) .description(TABLE_3_DESCRIPTION) .name(TABLE_3_NAME) .lastModified(TABLE_3_LAST_MODIFIED) @@ -1756,9 +1776,8 @@ public abstract class BaseTest { .routingKey(TABLE_3_ROUTING_KEY) .columns(new LinkedList<>() /* TABLE_3_COLUMNS_DTO */) .constraints(null) /* TABLE_3_CONSTRAINTS_DTO */ - .creator(USER_3_DTO) - .createdBy(USER_3_ID) - .owner(USER_3_DTO) + .creator(USER_3_BRIEF_DTO) + .owner(USER_3_BRIEF_DTO) .avgRowLength(TABLE_3_AVG_ROW_LENGTH) .numRows(TABLE_3_NUM_ROWS) .dataLength(TABLE_3_DATA_LENGTH) @@ -1771,7 +1790,7 @@ public abstract class BaseTest { .isVersioned(TABLE_3_VERSIONED) .description(TABLE_3_DESCRIPTION) .name(TABLE_3_NAME) - .owner(USER_3_BRIEF_DTO) + .ownedBy(USER_3_ID) .build(); public final static ConstraintsCreateDto TABLE_3_CONSTRAINTS_CREATE_DTO = ConstraintsCreateDto.builder() @@ -1809,6 +1828,7 @@ public abstract class BaseTest { public final static String TABLE_5_NAME = "zoo"; public final static String TABLE_5_INTERNALNAME = "zoo"; public final static Boolean TABLE_5_VERSIONED = true; + public final static Boolean TABLE_5_SCHEMA_PUBLIC = true; public final static Boolean TABLE_5_PROCESSED_CONSTRAINTS = true; public final static String TABLE_5_DESCRIPTION = "Some Kaggle dataset"; public final static String TABLE_5_QUEUE_NAME = TABLE_5_INTERNALNAME; @@ -1826,6 +1846,7 @@ public abstract class BaseTest { .created(Instant.now()) .internalName(TABLE_5_INTERNALNAME) .isVersioned(TABLE_5_VERSIONED) + .isSchemaPublic(TABLE_5_SCHEMA_PUBLIC) .description(TABLE_5_DESCRIPTION) .name(TABLE_5_NAME) .lastModified(TABLE_5_LAST_MODIFIED) @@ -1843,14 +1864,14 @@ public abstract class BaseTest { .created(Instant.now()) .internalName(TABLE_5_INTERNALNAME) .isVersioned(TABLE_5_VERSIONED) + .isSchemaPublic(TABLE_5_SCHEMA_PUBLIC) .description(TABLE_5_DESCRIPTION) .name(TABLE_5_NAME) .queueName(TABLE_5_QUEUE_NAME) .routingKey(TABLE_5_ROUTING_KEY) .columns(new LinkedList<>()) /* TABLE_5_COLUMNS_DTO */ .constraints(null) /* TABLE_5_CONSTRAINTS_DTO */ - .createdBy(USER_1_ID) - .owner(USER_1_DTO) + .owner(USER_1_BRIEF_DTO) .build(); public final static PrivilegedTableDto TABLE_5_PRIVILEGED_DTO = PrivilegedTableDto.builder() @@ -1860,6 +1881,7 @@ public abstract class BaseTest { .created(TABLE_5_CREATED) .internalName(TABLE_5_INTERNALNAME) .isVersioned(TABLE_5_VERSIONED) + .isSchemaPublic(TABLE_5_SCHEMA_PUBLIC) .description(TABLE_5_DESCRIPTION) .name(TABLE_5_NAME) .queueName(TABLE_5_QUEUE_NAME) @@ -1867,8 +1889,8 @@ public abstract class BaseTest { .identifiers(new LinkedList<>()) .columns(new LinkedList<>() /* TABLE_5_COLUMNS_DTO */) .constraints(null) /* TABLE_5_CONSTRAINTS_DTO */ - .createdBy(USER_5_ID) - .owner(USER_5_DTO) + .creator(USER_5_BRIEF_DTO) + .owner(USER_5_BRIEF_DTO) .isPublic(DATABASE_2_PUBLIC) .avgRowLength(TABLE_5_AVG_ROW_LENGTH) .numRows(TABLE_5_NUM_ROWS) @@ -1880,15 +1902,17 @@ public abstract class BaseTest { .id(TABLE_5_ID) .internalName(TABLE_5_INTERNALNAME) .isVersioned(TABLE_5_VERSIONED) + .isSchemaPublic(TABLE_5_SCHEMA_PUBLIC) .description(TABLE_5_DESCRIPTION) .name(TABLE_5_NAME) - .owner(USER_1_BRIEF_DTO) + .ownedBy(USER_1_ID) .build(); public final static Long TABLE_6_ID = 6L; public final static String TABLE_6_NAME = "names"; public final static String TABLE_6_INTERNALNAME = "names"; public final static Boolean TABLE_6_VERSIONED = true; + public final static Boolean TABLE_6_SCHEMA_PUBLIC = true; 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; @@ -1902,6 +1926,7 @@ public abstract class BaseTest { .created(TABLE_6_CREATED) .internalName(TABLE_6_INTERNALNAME) .isVersioned(TABLE_6_VERSIONED) + .isSchemaPublic(TABLE_6_SCHEMA_PUBLIC) .description(TABLE_6_DESCRIPTION) .name(TABLE_6_NAME) .lastModified(TABLE_6_LAST_MODIFIED) @@ -1920,14 +1945,14 @@ public abstract class BaseTest { .created(TABLE_6_CREATED) .internalName(TABLE_6_INTERNALNAME) .isVersioned(TABLE_6_VERSIONED) + .isSchemaPublic(TABLE_6_SCHEMA_PUBLIC) .description(TABLE_6_DESCRIPTION) .name(TABLE_6_NAME) .queueName(TABLE_6_QUEUE_NAME) .routingKey(TABLE_6_ROUTING_KEY) .columns(new LinkedList<>()) /* TABLE_6_COLUMNS_DTO */ .constraints(null) /* TABLE_6_CONSTRAINTS_DTO */ - .createdBy(USER_1_ID) - .owner(USER_1_DTO) + .owner(USER_1_BRIEF_DTO) .created(TABLE_6_CREATED) .build(); @@ -1935,15 +1960,17 @@ public abstract class BaseTest { .id(TABLE_6_ID) .internalName(TABLE_6_INTERNALNAME) .isVersioned(TABLE_6_VERSIONED) + .isSchemaPublic(TABLE_6_SCHEMA_PUBLIC) .description(TABLE_6_DESCRIPTION) .name(TABLE_6_NAME) - .owner(USER_1_BRIEF_DTO) + .ownedBy(USER_1_ID) .build(); public final static Long TABLE_7_ID = 7L; public final static String TABLE_7_NAME = "likes"; public final static String TABLE_7_INTERNAL_NAME = "likes"; public final static Boolean TABLE_7_VERSIONED = true; + public final static Boolean TABLE_7_SCHEMA_PUBLIC = true; public final static Boolean TABLE_7_PROCESSED_CONSTRAINTS = true; public final static String TABLE_7_DESCRIPTION = "Some likes dataset"; public final static String TABLE_7_QUEUE_NAME = TABLE_7_INTERNAL_NAME; @@ -1957,6 +1984,7 @@ public abstract class BaseTest { .created(TABLE_7_CREATED) .internalName(TABLE_7_INTERNAL_NAME) .isVersioned(TABLE_7_VERSIONED) + .isSchemaPublic(TABLE_7_SCHEMA_PUBLIC) .description(TABLE_7_DESCRIPTION) .name(TABLE_7_NAME) .lastModified(TABLE_7_LAST_MODIFIED) @@ -1975,14 +2003,14 @@ public abstract class BaseTest { .created(TABLE_7_CREATED) .internalName(TABLE_7_INTERNAL_NAME) .isVersioned(TABLE_7_VERSIONED) + .isSchemaPublic(TABLE_7_SCHEMA_PUBLIC) .description(TABLE_7_DESCRIPTION) .name(TABLE_7_NAME) .queueName(TABLE_7_QUEUE_NAME) .routingKey(TABLE_7_ROUTING_KEY) .columns(new LinkedList<>()) /* TABLE_7_COLUMNS_DTO */ .constraints(null) /* TABLE_7_CONSTRAINTS_DTO */ - .createdBy(USER_1_ID) - .owner(USER_1_DTO) + .owner(USER_1_BRIEF_DTO) .created(TABLE_7_CREATED) .build(); @@ -1990,15 +2018,17 @@ public abstract class BaseTest { .id(TABLE_7_ID) .internalName(TABLE_7_INTERNAL_NAME) .isVersioned(TABLE_7_VERSIONED) + .isSchemaPublic(TABLE_7_SCHEMA_PUBLIC) .description(TABLE_7_DESCRIPTION) .name(TABLE_7_NAME) - .owner(USER_1_BRIEF_DTO) + .ownedBy(USER_1_ID) .build(); public final static Long TABLE_4_ID = 4L; 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_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; @@ -2021,6 +2051,7 @@ public abstract class BaseTest { .columns(new LinkedList<>()) /* TABLE_4_COLUMNS */ .constraints(null) /* TABLE_4_CONSTRAINTS */ .isVersioned(TABLE_4_VERSIONED) + .isSchemaPublic(TABLE_4_SCHEMA_PUBLIC) .creator(USER_1) .createdBy(USER_1_ID) .owner(USER_1) @@ -2044,9 +2075,9 @@ public abstract class BaseTest { .columns(new LinkedList<>()) /* TABLE_4_COLUMNS_DTO */ .constraints(null) /* TABLE_4_CONSTRAINTS_DTO */ .isVersioned(TABLE_4_VERSIONED) - .creator(USER_1_DTO) - .createdBy(USER_1_ID) - .owner(USER_1_DTO) + .isSchemaPublic(TABLE_4_SCHEMA_PUBLIC) + .creator(USER_1_BRIEF_DTO) + .owner(USER_1_BRIEF_DTO) .created(TABLE_4_CREATED) .avgRowLength(TABLE_4_AVG_ROW_LENGTH) .numRows(TABLE_4_NUM_ROWS) @@ -2060,7 +2091,8 @@ public abstract class BaseTest { .description(TABLE_4_DESCRIPTION) .name(TABLE_4_NAME) .isVersioned(TABLE_4_VERSIONED) - .owner(USER_1_BRIEF_DTO) + .isSchemaPublic(TABLE_4_SCHEMA_PUBLIC) + .ownedBy(USER_1_ID) .build(); public final static ColumnBriefDto TABLE_4_COLUMNS_BRIEF_0_DTO = ColumnBriefDto.builder() @@ -2151,6 +2183,7 @@ public abstract class BaseTest { public final static String TABLE_8_NAME = "mfcc"; public final static String TABLE_8_INTERNAL_NAME = "mfcc"; public final static Boolean TABLE_8_VERSIONED = true; + 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; @@ -2164,6 +2197,7 @@ public abstract class BaseTest { .internalName(TABLE_8_INTERNAL_NAME) .description(TABLE_8_DESCRIPTION) .isVersioned(TABLE_8_VERSIONED) + .isSchemaPublic(TABLE_8_SCHEMA_PUBLIC) .database(null /* DATABASE_1 */) .name(TABLE_8_NAME) .queueName(TABLE_8_QUEUE_NAME) @@ -2182,13 +2216,13 @@ public abstract class BaseTest { .internalName(TABLE_8_INTERNAL_NAME) .description(TABLE_8_DESCRIPTION) .isVersioned(TABLE_8_VERSIONED) + .isSchemaPublic(TABLE_8_SCHEMA_PUBLIC) .name(TABLE_8_NAME) .queueName(TABLE_8_QUEUE_NAME) .columns(new LinkedList<>()) /* TABLE_8_COLUMNS_DTO */ .constraints(null) /* TABLE_8_CONSTRAINTS_DTO */ - .createdBy(USER_1_ID) - .creator(USER_1_DTO) - .owner(USER_1_DTO) + .creator(USER_1_BRIEF_DTO) + .owner(USER_1_BRIEF_DTO) .created(TABLE_8_CREATED) .build(); @@ -2197,8 +2231,9 @@ public abstract class BaseTest { .internalName(TABLE_8_INTERNAL_NAME) .description(TABLE_8_DESCRIPTION) .isVersioned(TABLE_8_VERSIONED) + .isSchemaPublic(TABLE_8_SCHEMA_PUBLIC) .name(TABLE_8_NAME) - .owner(USER_1_BRIEF_DTO) + .ownedBy(USER_1_ID) .build(); public final static PrivilegedTableDto TABLE_8_PRIVILEGED_DTO = PrivilegedTableDto.builder() @@ -2207,12 +2242,12 @@ public abstract class BaseTest { .internalName(TABLE_8_INTERNAL_NAME) .description(TABLE_8_DESCRIPTION) .isVersioned(TABLE_8_VERSIONED) + .isSchemaPublic(TABLE_8_SCHEMA_PUBLIC) .name(TABLE_8_NAME) .queueName(TABLE_8_QUEUE_NAME) .columns(new LinkedList<>()) /* TABLE_8_COLUMNS_DTO */ - .createdBy(USER_1_ID) - .creator(USER_1_DTO) - .owner(USER_1_DTO) + .creator(USER_1_BRIEF_DTO) + .owner(USER_1_BRIEF_DTO) .created(TABLE_8_CREATED) .isPublic(DATABASE_3_PUBLIC) .build(); @@ -2494,8 +2529,6 @@ public abstract class BaseTest { public final static Instant QUERY_1_CREATED = Instant.ofEpochSecond(1677648377L); public final static Instant QUERY_1_EXECUTION = Instant.now(); public final static Boolean QUERY_1_PERSISTED = true; - public final static UserDto QUERY_1_CREATOR = USER_1_DTO; - public final static UUID QUERY_1_CREATED_BY = USER_1_ID; public final static QueryDto QUERY_1_DTO = QueryDto.builder() .id(QUERY_1_ID) @@ -2505,8 +2538,7 @@ public abstract class BaseTest { .resultHash(QUERY_1_RESULT_HASH) .created(QUERY_1_CREATED) .execution(QUERY_1_EXECUTION) - .creator(QUERY_1_CREATOR) - .createdBy(QUERY_1_CREATED_BY) + .creator(USER_1_BRIEF_DTO) .isPersisted(QUERY_1_PERSISTED) .resultNumber(3L) .build(); @@ -2519,8 +2551,7 @@ public abstract class BaseTest { .resultHash(QUERY_1_RESULT_HASH) .created(QUERY_1_CREATED) .execution(QUERY_1_EXECUTION) - .createdBy(USER_1_ID) - .creator(USER_1_DTO) + .creator(USER_1_BRIEF_DTO) .isPersisted(QUERY_1_PERSISTED) .resultNumber(3L) .build(); @@ -2534,8 +2565,6 @@ public abstract class BaseTest { public final static Instant QUERY_2_EXECUTION = Instant.now().minus(1, MINUTES); public final static Instant QUERY_2_LAST_MODIFIED = Instant.ofEpochSecond(1541588352L); public final static Boolean QUERY_2_PERSISTED = false; - public final static UserDto QUERY_2_CREATOR = USER_1_DTO; - public final static UUID QUERY_2_CREATED_BY = USER_1_ID; public final static QueryDto QUERY_2_DTO = QueryDto.builder() .id(QUERY_2_ID) @@ -2544,10 +2573,8 @@ public abstract class BaseTest { .queryNormalized(QUERY_2_STATEMENT) .resultNumber(QUERY_2_RESULT_NUMBER) .resultHash(QUERY_2_RESULT_HASH) - .lastModified(QUERY_2_LAST_MODIFIED) .created(QUERY_2_CREATED) - .creator(QUERY_2_CREATOR) - .createdBy(QUERY_2_CREATED_BY) + .creator(USER_1_BRIEF_DTO) .queryHash(QUERY_2_QUERY_HASH) .execution(QUERY_2_EXECUTION) .isPersisted(QUERY_2_PERSISTED) @@ -2565,8 +2592,6 @@ public abstract class BaseTest { public final static Instant QUERY_3_LAST_MODIFIED = Instant.ofEpochSecond(1541588353L); public final static Long QUERY_3_RESULT_NUMBER = 2L; public final static Boolean QUERY_3_PERSISTED = true; - public final static UserDto QUERY_3_CREATOR = USER_1_DTO; - public final static UUID QUERY_3_CREATED_BY = USER_1_ID; public final static QueryDto QUERY_3_DTO = QueryDto.builder() .id(QUERY_3_ID) @@ -2575,10 +2600,8 @@ public abstract class BaseTest { .queryNormalized(QUERY_3_STATEMENT) .resultNumber(QUERY_3_RESULT_NUMBER) .resultHash(QUERY_3_RESULT_HASH) - .lastModified(QUERY_3_LAST_MODIFIED) .created(QUERY_3_CREATED) - .creator(QUERY_3_CREATOR) - .createdBy(QUERY_3_CREATED_BY) + .creator(USER_1_BRIEF_DTO) .queryHash(QUERY_3_QUERY_HASH) .execution(QUERY_3_EXECUTION) .isPersisted(QUERY_3_PERSISTED) @@ -2599,8 +2622,6 @@ public abstract class BaseTest { public final static Long QUERY_4_RESULT_NUMBER = 6L; public final static Long QUERY_4_RESULT_ID = 4L; public final static Boolean QUERY_4_PERSISTED = false; - public final static UserDto QUERY_4_CREATOR = USER_1_DTO; - public final static UUID QUERY_4_CREATED_BY = USER_1_ID; public final static QueryDto QUERY_4 = QueryDto.builder() .id(QUERY_4_ID) @@ -2611,8 +2632,7 @@ public abstract class BaseTest { .execution(QUERY_4_EXECUTION) .isPersisted(QUERY_4_PERSISTED) .resultNumber(QUERY_4_RESULT_NUMBER) - .creator(QUERY_4_CREATOR) - .createdBy(QUERY_4_CREATED_BY) + .creator(USER_1_BRIEF_DTO) .isPersisted(QUERY_4_PERSISTED) .build(); @@ -2649,9 +2669,7 @@ public abstract class BaseTest { .queryNormalized(QUERY_4_STATEMENT) .resultNumber(QUERY_4_RESULT_NUMBER) .resultHash(QUERY_4_RESULT_HASH) - .lastModified(QUERY_4_LAST_MODIFIED) .created(QUERY_4_CREATED) - .createdBy(USER_1_ID) .queryHash(QUERY_4_QUERY_HASH) .execution(QUERY_4_EXECUTION) .isPersisted(QUERY_4_PERSISTED) @@ -2668,8 +2686,6 @@ public abstract class BaseTest { public final static Instant QUERY_5_LAST_MODIFIED = Instant.ofEpochSecond(1551588555L); public final static Long QUERY_5_RESULT_NUMBER = 6L; public final static Boolean QUERY_5_PERSISTED = true; - public final static UserDto QUERY_5_CREATOR = USER_1_DTO; - public final static UUID QUERY_5_CREATED_BY = USER_1_ID; public final static QueryDto QUERY_5_DTO = QueryDto.builder() .id(QUERY_5_ID) @@ -2678,13 +2694,11 @@ public abstract class BaseTest { .queryNormalized(QUERY_5_STATEMENT) .resultNumber(QUERY_5_RESULT_NUMBER) .resultHash(QUERY_5_RESULT_HASH) - .lastModified(QUERY_5_LAST_MODIFIED) .created(QUERY_5_CREATED) .queryHash(QUERY_5_QUERY_HASH) .execution(QUERY_5_EXECUTION) .isPersisted(QUERY_5_PERSISTED) - .creator(QUERY_5_CREATOR) - .createdBy(QUERY_5_CREATED_BY) + .creator(USER_1_BRIEF_DTO) .build(); public final static QueryResultDto QUERY_5_RESULT_DTO = QueryResultDto.builder() @@ -2711,8 +2725,6 @@ public abstract class BaseTest { public final static Instant QUERY_6_LAST_MODIFIED = Instant.ofEpochSecond(1551588555L); public final static Long QUERY_6_RESULT_NUMBER = 1L; public final static Boolean QUERY_6_PERSISTED = true; - public final static UserDto QUERY_6_CREATOR = USER_1_DTO; - public final static UUID QUERY_6_CREATED_BY = USER_1_ID; public final static QueryDto QUERY_6_DTO = QueryDto.builder() .id(QUERY_6_ID) @@ -2721,10 +2733,8 @@ public abstract class BaseTest { .queryNormalized(QUERY_6_STATEMENT) .resultNumber(QUERY_6_RESULT_NUMBER) .resultHash(QUERY_6_RESULT_HASH) - .lastModified(QUERY_6_LAST_MODIFIED) .created(QUERY_6_CREATED) - .creator(QUERY_6_CREATOR) - .createdBy(QUERY_6_CREATED_BY) + .creator(USER_1_BRIEF_DTO) .queryHash(QUERY_6_QUERY_HASH) .execution(QUERY_6_EXECUTION) .isPersisted(QUERY_6_PERSISTED) @@ -4791,7 +4801,7 @@ public abstract class BaseTest { .internalName(VIEW_1_INTERNAL_NAME) .vdbid(VIEW_1_DATABASE_ID) .isPublic(VIEW_1_PUBLIC) - .createdBy(USER_1_ID) + .creator(USER_1_BRIEF_DTO) .query(VIEW_1_QUERY) .queryHash(VIEW_1_QUERY_HASH) .columns(VIEW_1_COLUMNS_DTO) @@ -4806,7 +4816,7 @@ public abstract class BaseTest { .internalName(VIEW_1_INTERNAL_NAME) .vdbid(VIEW_1_DATABASE_ID) .isPublic(VIEW_1_PUBLIC) - .createdBy(USER_1_ID) + .creator(USER_1_BRIEF_DTO) .query(VIEW_1_QUERY) .queryHash(VIEW_1_QUERY_HASH) .columns(VIEW_1_COLUMNS_DTO) @@ -4947,7 +4957,7 @@ public abstract class BaseTest { .columns(VIEW_2_COLUMNS_DTO) .query(VIEW_2_QUERY) .queryHash(VIEW_2_QUERY_HASH) - .createdBy(USER_1_ID) + .creator(USER_1_BRIEF_DTO) .build(); public final static PrivilegedViewDto VIEW_2_PRIVILEGED_DTO = PrivilegedViewDto.builder() @@ -4958,7 +4968,7 @@ public abstract class BaseTest { .internalName(VIEW_2_INTERNAL_NAME) .vdbid(VIEW_2_DATABASE_ID) .isPublic(VIEW_2_PUBLIC) - .createdBy(USER_2_ID) + .creator(USER_2_BRIEF_DTO) .query(VIEW_2_QUERY) .queryHash(VIEW_2_QUERY_HASH) .columns(VIEW_2_COLUMNS_DTO) @@ -5051,7 +5061,7 @@ public abstract class BaseTest { .internalName(VIEW_3_INTERNAL_NAME) .vdbid(VIEW_3_DATABASE_ID) .isPublic(VIEW_3_PUBLIC) - .createdBy(USER_1_ID) + .creator(USER_1_BRIEF_DTO) .query(VIEW_3_QUERY) .queryHash(VIEW_3_QUERY_HASH) .columns(VIEW_3_COLUMNS_DTO) @@ -5111,7 +5121,7 @@ public abstract class BaseTest { .columns(VIEW_3_COLUMNS_DTO) .query(VIEW_3_QUERY) .queryHash(VIEW_3_QUERY_HASH) - .createdBy(USER_1_ID) + .creator(USER_1_BRIEF_DTO) .build(); public final static ViewBriefDto VIEW_3_BRIEF_DTO = ViewBriefDto.builder() @@ -5298,10 +5308,22 @@ public abstract class BaseTest { .isPublic(VIEW_4_PUBLIC) .query(VIEW_4_QUERY) .queryHash(VIEW_4_QUERY_HASH) - .createdBy(USER_1_ID) + .creator(USER_1_BRIEF_DTO) .columns(VIEW_4_COLUMNS_DTO) .build(); + public final static ViewBriefDto VIEW_4_BRIEF_DTO = ViewBriefDto.builder() + .id(VIEW_4_ID) + .isInitialView(VIEW_4_INITIAL_VIEW) + .name(VIEW_4_NAME) + .internalName(VIEW_4_INTERNAL_NAME) + .vdbid(VIEW_4_DATABASE_ID) + .isPublic(VIEW_4_PUBLIC) + .query(VIEW_4_QUERY) + .queryHash(VIEW_4_QUERY_HASH) + .createdBy(USER_1_ID) + .build(); + public final static List<ViewColumn> VIEW_4_COLUMNS = List.of( ViewColumn.builder() .id(12L) @@ -5489,10 +5511,21 @@ public abstract class BaseTest { .isPublic(VIEW_5_PUBLIC) .query(VIEW_5_QUERY) .queryHash(VIEW_5_QUERY_HASH) - .createdBy(USER_1_ID) + .creator(USER_1_BRIEF_DTO) .columns(null) .build(); + public final static ViewBriefDto VIEW_5_BRIEF_DTO = ViewBriefDto.builder() + .id(VIEW_5_ID) + .isInitialView(VIEW_5_INITIAL_VIEW) + .name(VIEW_5_NAME) + .internalName(VIEW_5_INTERNAL_NAME) + .vdbid(VIEW_5_DATABASE_ID) + .isPublic(VIEW_5_PUBLIC) + .query(VIEW_5_QUERY) + .queryHash(VIEW_5_QUERY_HASH) + .build(); + public final static List<ViewColumn> VIEW_5_COLUMNS = List.of( ViewColumn.builder() .id(29L) @@ -5644,8 +5677,7 @@ public abstract class BaseTest { public final static Long IDENTIFIER_1_QUERY_ID = null; public final static Long IDENTIFIER_1_CONTAINER_ID = CONTAINER_1_ID; public final static Long IDENTIFIER_1_DATABASE_ID = DATABASE_1_ID; - public final static String IDENTIFIER_1_DOI = null; - public final static String IDENTIFIER_1_DOI_NOT_NULL = "10.12345/183"; + public final static String IDENTIFIER_1_DOI = "10.12345/183"; public final static Instant IDENTIFIER_1_CREATED = Instant.ofEpochSecond(1641588352L) /* 2022-01-07 20:45:52 */; public final static Instant IDENTIFIER_1_MODIFIED = Instant.ofEpochSecond(1541588352L) /* 2022-01-07 20:45:52 */; public final static Instant IDENTIFIER_1_EXECUTION = Instant.ofEpochSecond(1541588352L) /* 2022-01-07 20:45:52 */; @@ -5871,7 +5903,7 @@ public abstract class BaseTest { .data(DataCiteData.<DataCiteDoi>builder() .type("dois") .attributes(DataCiteDoi.builder() - .doi(IDENTIFIER_1_DOI_NOT_NULL) + .doi(IDENTIFIER_1_DOI) .build()) .build()) .build(); @@ -5908,7 +5940,7 @@ public abstract class BaseTest { .queryId(IDENTIFIER_1_QUERY_ID) .descriptions(List.of(IDENTIFIER_1_DESCRIPTION_1)) .titles(List.of(IDENTIFIER_1_TITLE_1, IDENTIFIER_1_TITLE_2)) - .doi(IDENTIFIER_1_DOI_NOT_NULL) + .doi(IDENTIFIER_1_DOI) .database(null /* for jpa */) .created(IDENTIFIER_1_CREATED) .lastModified(IDENTIFIER_1_MODIFIED) @@ -5955,46 +5987,17 @@ public abstract class BaseTest { .status(IDENTIFIER_1_STATUS_TYPE_DTO) .build(); - public final static IdentifierDto IDENTIFIER_1_WITH_DOI_DTO = IdentifierDto.builder() + public final static IdentifierBriefDto IDENTIFIER_1_BRIEF_DTO = IdentifierBriefDto.builder() .id(IDENTIFIER_1_ID) .databaseId(DATABASE_1_ID) .queryId(IDENTIFIER_1_QUERY_ID) - .descriptions(List.of(IDENTIFIER_1_DESCRIPTION_1_DTO)) .titles(List.of(IDENTIFIER_1_TITLE_1_DTO, IDENTIFIER_1_TITLE_2_DTO)) - .doi(IDENTIFIER_1_DOI_NOT_NULL) + .doi(IDENTIFIER_1_DOI) .created(IDENTIFIER_1_CREATED) .lastModified(IDENTIFIER_1_MODIFIED) - .execution(IDENTIFIER_1_EXECUTION) .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR) - .publicationMonth(IDENTIFIER_1_PUBLICATION_MONTH) - .queryHash(IDENTIFIER_1_QUERY_HASH) - .resultHash(IDENTIFIER_1_RESULT_HASH) - .query(IDENTIFIER_1_QUERY) - .queryNormalized(IDENTIFIER_1_NORMALIZED) - .resultNumber(IDENTIFIER_1_RESULT_NUMBER) .publisher(IDENTIFIER_1_PUBLISHER) .type(IDENTIFIER_1_TYPE_DTO) - .creator(USER_1_DTO) - .licenses(List.of(LICENSE_1_DTO)) - .creators(List.of(IDENTIFIER_1_CREATOR_1_DTO)) - .funders(List.of(IDENTIFIER_1_FUNDER_1_DTO)) - .status(IDENTIFIER_1_STATUS_TYPE_DTO) - .build(); - - public final static IdentifierDto IDENTIFIER_1_MODIFY_DTO = IdentifierDto.builder() - .id(IDENTIFIER_1_ID) - .databaseId(DATABASE_2_ID) - .descriptions(List.of(IDENTIFIER_1_DESCRIPTION_1_DTO_MODIFY)) - .titles(List.of(IDENTIFIER_1_TITLE_1_DTO_MODIFY, IDENTIFIER_1_TITLE_2_DTO)) - .doi(IDENTIFIER_1_DOI) - .publisher(IDENTIFIER_1_PUBLISHER) - .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR) - .publicationMonth(IDENTIFIER_1_PUBLICATION_MONTH) - .type(IDENTIFIER_1_TYPE_DTO) - .created(IDENTIFIER_1_CREATED) - .lastModified(IDENTIFIER_1_MODIFIED) - .licenses(List.of(LICENSE_1_DTO)) - .creators(List.of(IDENTIFIER_1_CREATOR_1_DTO)) .status(IDENTIFIER_1_STATUS_TYPE_DTO) .build(); @@ -6018,7 +6021,7 @@ public abstract class BaseTest { public final static IdentifierCreateDto IDENTIFIER_1_CREATE_WITH_DOI_DTO = IdentifierCreateDto.builder() .databaseId(IDENTIFIER_1_DATABASE_ID) .type(IDENTIFIER_1_TYPE_DTO) - .doi(IDENTIFIER_1_DOI_NOT_NULL) + .doi(IDENTIFIER_1_DOI) .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR) .publisher(IDENTIFIER_1_PUBLISHER) .descriptions(List.of(IDENTIFIER_1_DESCRIPTION_1_CREATE_DTO)) @@ -6274,6 +6277,19 @@ public abstract class BaseTest { .creators(List.of(IDENTIFIER_5_CREATOR_1_DTO, IDENTIFIER_5_CREATOR_2_DTO)) .build(); + public final static IdentifierBriefDto IDENTIFIER_5_BRIEF_DTO = IdentifierBriefDto.builder() + .id(IDENTIFIER_5_ID) + .databaseId(DATABASE_2_ID) + .queryId(IDENTIFIER_5_QUERY_ID) + .titles(List.of(IDENTIFIER_5_TITLE_1_DTO)) + .doi(IDENTIFIER_5_DOI) + .created(IDENTIFIER_5_CREATED) + .lastModified(IDENTIFIER_5_MODIFIED) + .publicationYear(IDENTIFIER_5_PUBLICATION_YEAR) + .publisher(IDENTIFIER_5_PUBLISHER) + .type(IDENTIFIER_5_TYPE_DTO) + .build(); + public final static Long RELATED_IDENTIFIER_5_ID = 1L; public final static Long RELATED_IDENTIFIER_5_IDENTIFIER_ID = 2L; public final static String RELATED_IDENTIFIER_5_VALUE = "10.5281/zenodo.6637333"; @@ -6547,6 +6563,21 @@ public abstract class BaseTest { .status(IDENTIFIER_6_STATUS_TYPE_DTO) .build(); + + public final static IdentifierBriefDto IDENTIFIER_6_BRIEF_DTO = IdentifierBriefDto.builder() + .id(IDENTIFIER_6_ID) + .databaseId(DATABASE_3_ID) + .queryId(IDENTIFIER_6_QUERY_ID) + .titles(List.of(IDENTIFIER_6_TITLE_1_DTO)) + .doi(IDENTIFIER_6_DOI) + .created(IDENTIFIER_6_CREATED) + .lastModified(IDENTIFIER_6_MODIFIED) + .publicationYear(IDENTIFIER_6_PUBLICATION_YEAR) + .publisher(IDENTIFIER_6_PUBLISHER) + .type(IDENTIFIER_6_TYPE_DTO) + .status(IDENTIFIER_6_STATUS_TYPE_DTO) + .build(); + public final static IdentifierCreateDto IDENTIFIER_6_CREATE_DTO = IdentifierCreateDto.builder() .databaseId(IDENTIFIER_6_DATABASE_ID) .publicationYear(IDENTIFIER_6_PUBLICATION_YEAR) @@ -6757,6 +6788,20 @@ public abstract class BaseTest { .status(IDENTIFIER_2_STATUS_TYPE_DTO) .build(); + public final static IdentifierBriefDto IDENTIFIER_2_BRIEF_DTO = IdentifierBriefDto.builder() + .id(IDENTIFIER_2_ID) + .queryId(IDENTIFIER_2_QUERY_ID) + .databaseId(IDENTIFIER_2_DATABASE_ID) + .titles(new LinkedList<>()) + .doi(IDENTIFIER_2_DOI) + .created(IDENTIFIER_2_CREATED) + .lastModified(IDENTIFIER_2_MODIFIED) + .publicationYear(IDENTIFIER_2_PUBLICATION_YEAR) + .publisher(IDENTIFIER_2_PUBLISHER) + .type(IDENTIFIER_2_TYPE_DTO) + .status(IDENTIFIER_2_STATUS_TYPE_DTO) + .build(); + public final static IdentifierSaveDto IDENTIFIER_2_SAVE_DTO = IdentifierSaveDto.builder() .id(IDENTIFIER_2_ID) .databaseId(IDENTIFIER_2_DATABASE_ID) @@ -6848,6 +6893,20 @@ public abstract class BaseTest { .status(IDENTIFIER_3_STATUS_TYPE_DTO) .build(); + public final static IdentifierBriefDto IDENTIFIER_3_BRIEF_DTO = IdentifierBriefDto.builder() + .id(IDENTIFIER_3_ID) + .databaseId(IDENTIFIER_3_DATABASE_ID) + .viewId(IDENTIFIER_3_VIEW_ID) + .titles(new LinkedList<>()) + .doi(IDENTIFIER_3_DOI) + .created(IDENTIFIER_3_CREATED) + .lastModified(IDENTIFIER_3_MODIFIED) + .publicationYear(IDENTIFIER_3_PUBLICATION_YEAR) + .publisher(IDENTIFIER_3_PUBLISHER) + .type(IDENTIFIER_3_TYPE_DTO) + .status(IDENTIFIER_3_STATUS_TYPE_DTO) + .build(); + public final static IdentifierCreateDto IDENTIFIER_3_CREATE_DTO = IdentifierCreateDto.builder() .databaseId(IDENTIFIER_3_DATABASE_ID) .viewId(IDENTIFIER_3_VIEW_ID) @@ -6937,6 +6996,20 @@ public abstract class BaseTest { .status(IDENTIFIER_4_STATUS_TYPE_DTO) .build(); + public final static IdentifierBriefDto IDENTIFIER_4_BRIEF_DTO = IdentifierBriefDto.builder() + .id(IDENTIFIER_4_ID) + .databaseId(IDENTIFIER_4_DATABASE_ID) + .tableId(IDENTIFIER_4_TABLE_ID) + .titles(new LinkedList<>()) + .doi(IDENTIFIER_4_DOI) + .created(IDENTIFIER_4_CREATED) + .lastModified(IDENTIFIER_4_MODIFIED) + .publicationYear(IDENTIFIER_4_PUBLICATION_YEAR) + .publisher(IDENTIFIER_4_PUBLISHER) + .type(IDENTIFIER_4_TYPE_DTO) + .status(IDENTIFIER_4_STATUS_TYPE_DTO) + .build(); + public final static IdentifierCreateDto IDENTIFIER_4_CREATE_DTO = IdentifierCreateDto.builder() .databaseId(IDENTIFIER_4_DATABASE_ID) .publicationYear(IDENTIFIER_4_PUBLICATION_YEAR) @@ -7036,6 +7109,7 @@ public abstract class BaseTest { .created(Instant.now().minus(1, HOURS)) .lastModified(Instant.now()) .isPublic(DATABASE_1_PUBLIC) + .isSchemaPublic(DATABASE_1_SCHEMA_PUBLIC) .name(DATABASE_1_NAME) .description(DATABASE_1_DESCRIPTION) .identifiers(List.of(IDENTIFIER_1, IDENTIFIER_2, IDENTIFIER_3, IDENTIFIER_4)) @@ -7064,12 +7138,12 @@ public abstract class BaseTest { .created(Instant.now().minus(1, HOURS)) .isPublic(DATABASE_1_PUBLIC) .name(DATABASE_1_NAME) - .container(CONTAINER_1_DTO) + .container(CONTAINER_1_BRIEF_DTO) .internalName(DATABASE_1_INTERNALNAME) .exchangeName(DATABASE_1_EXCHANGE) - .identifiers(List.of(IDENTIFIER_1_DTO, IDENTIFIER_2_DTO, IDENTIFIER_3_DTO, IDENTIFIER_4_DTO)) - .tables(List.of(TABLE_1_DTO, TABLE_2_DTO, TABLE_3_DTO, TABLE_4_DTO)) - .views(List.of(VIEW_1_DTO, VIEW_2_DTO, VIEW_3_DTO)) + .identifiers(List.of(IDENTIFIER_1_BRIEF_DTO, IDENTIFIER_2_BRIEF_DTO, IDENTIFIER_3_BRIEF_DTO, IDENTIFIER_4_BRIEF_DTO)) + .tables(List.of(TABLE_1_BRIEF_DTO, TABLE_2_BRIEF_DTO, TABLE_3_BRIEF_DTO, TABLE_4_BRIEF_DTO)) + .views(List.of(VIEW_1_BRIEF_DTO, VIEW_2_BRIEF_DTO, VIEW_3_BRIEF_DTO)) .build(); public final static PrivilegedDatabaseDto DATABASE_1_PRIVILEGED_DTO = PrivilegedDatabaseDto.builder() @@ -7080,12 +7154,12 @@ public abstract class BaseTest { .container(CONTAINER_1_PRIVILEGED_DTO) .internalName(DATABASE_1_INTERNALNAME) .exchangeName(DATABASE_1_EXCHANGE) - .identifiers(List.of(IDENTIFIER_1_DTO, IDENTIFIER_2_DTO, IDENTIFIER_3_DTO, IDENTIFIER_4_DTO)) - .tables(List.of(TABLE_1_DTO, TABLE_2_DTO, TABLE_3_DTO, TABLE_4_DTO)) - .views(List.of(VIEW_1_DTO, VIEW_2_DTO, VIEW_3_DTO)) + .identifiers(List.of(IDENTIFIER_1_BRIEF_DTO, IDENTIFIER_2_BRIEF_DTO, IDENTIFIER_3_BRIEF_DTO, IDENTIFIER_4_BRIEF_DTO)) + .tables(List.of(TABLE_1_BRIEF_DTO, TABLE_2_BRIEF_DTO, TABLE_3_BRIEF_DTO, TABLE_4_BRIEF_DTO)) + .views(List.of(VIEW_1_BRIEF_DTO, VIEW_2_BRIEF_DTO, VIEW_3_BRIEF_DTO)) .created(DATABASE_1_CREATED) - .creator(DATABASE_1_CREATOR_DTO) - .owner(DATABASE_1_OWNER_DTO) + .creator(USER_1_BRIEF_DTO) + .owner(USER_1_BRIEF_DTO) .build(); public final static DatabaseAccess DATABASE_1_USER_1_READ_ACCESS = DatabaseAccess.builder() @@ -7200,6 +7274,7 @@ public abstract class BaseTest { .created(DATABASE_2_CREATED) .lastModified(Instant.now()) .isPublic(DATABASE_2_PUBLIC) + .isSchemaPublic(DATABASE_2_SCHEMA_PUBLIC) .name(DATABASE_2_NAME) .description(DATABASE_2_DESCRIPTION) .cid(CONTAINER_1_ID) @@ -7228,12 +7303,12 @@ public abstract class BaseTest { .container(CONTAINER_1_PRIVILEGED_DTO) .internalName(DATABASE_2_INTERNALNAME) .exchangeName(DATABASE_2_EXCHANGE) - .identifiers(List.of(IDENTIFIER_5_DTO)) - .tables(List.of(TABLE_5_DTO, TABLE_6_DTO, TABLE_7_DTO)) - .views(List.of(VIEW_4_DTO)) + .identifiers(List.of(IDENTIFIER_5_BRIEF_DTO)) + .tables(List.of(TABLE_5_BRIEF_DTO, TABLE_6_BRIEF_DTO, TABLE_7_BRIEF_DTO)) + .views(List.of(VIEW_4_BRIEF_DTO)) .created(DATABASE_2_CREATED) - .creator(USER_2_DTO) - .owner(USER_2_DTO) + .creator(USER_2_BRIEF_DTO) + .owner(USER_2_BRIEF_DTO) .build(); public final static DatabaseDto DATABASE_2_DTO = DatabaseDto.builder() @@ -7241,12 +7316,12 @@ public abstract class BaseTest { .created(DATABASE_2_CREATED) .isPublic(DATABASE_2_PUBLIC) .name(DATABASE_2_NAME) - .container(CONTAINER_1_DTO) + .container(CONTAINER_1_BRIEF_DTO) .internalName(DATABASE_2_INTERNALNAME) .exchangeName(DATABASE_2_EXCHANGE) - .identifiers(List.of(IDENTIFIER_5_DTO)) - .tables(List.of(TABLE_5_DTO, TABLE_6_DTO, TABLE_7_DTO)) - .views(List.of(VIEW_4_DTO)) + .identifiers(List.of(IDENTIFIER_5_BRIEF_DTO)) + .tables(List.of(TABLE_5_BRIEF_DTO, TABLE_6_BRIEF_DTO, TABLE_7_BRIEF_DTO)) + .views(List.of(VIEW_4_BRIEF_DTO)) .identifiers(new LinkedList<>()) .build(); @@ -7341,6 +7416,7 @@ public abstract class BaseTest { .created(Instant.now().minus(1, HOURS)) .lastModified(Instant.now()) .isPublic(DATABASE_3_PUBLIC) + .isSchemaPublic(DATABASE_3_SCHEMA_PUBLIC) .name(DATABASE_3_NAME) .description(DATABASE_3_DESCRIPTION) .cid(CONTAINER_1_ID) @@ -7476,12 +7552,12 @@ public abstract class BaseTest { .container(CONTAINER_1_PRIVILEGED_DTO) .internalName(DATABASE_3_INTERNALNAME) .exchangeName(DATABASE_3_EXCHANGE) - .identifiers(List.of(IDENTIFIER_6_DTO)) - .tables(List.of(TABLE_8_DTO)) - .views(List.of(VIEW_5_DTO)) + .identifiers(List.of(IDENTIFIER_6_BRIEF_DTO)) + .tables(List.of(TABLE_8_BRIEF_DTO)) + .views(List.of(VIEW_5_BRIEF_DTO)) .created(DATABASE_3_CREATED) - .creator(DATABASE_3_CREATOR_DTO) - .owner(DATABASE_3_OWNER_DTO) + .creator(USER_3_BRIEF_DTO) + .owner(USER_3_BRIEF_DTO) .build(); public final static Identifier IDENTIFIER_7 = Identifier.builder() diff --git a/dbrepo-search-service/Pipfile b/dbrepo-search-service/Pipfile index e081ac7bb3..287670f8dd 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.5.2.tar.gz"} +dbrepo = {path = "./lib/dbrepo-1.6.0.tar.gz"} gunicorn = "*" [dev-packages] diff --git a/dbrepo-search-service/Pipfile.lock b/dbrepo-search-service/Pipfile.lock index 9ccdcd7ec5..60f55e7c72 100644 --- a/dbrepo-search-service/Pipfile.lock +++ b/dbrepo-search-service/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "5f8f989adc3210e3d07474d3a6c1d5a8bc7352195b75ef07feaf135d9388c60c" + "sha256": "ed3c0ae802499c4020eea0c4d2e62f57a0a642cc0ebe9698f228cd8fd8f42ccb" }, "pipfile-spec": 6, "requires": { @@ -26,85 +26,85 @@ }, "aiohttp": { "hashes": [ - "sha256:0411777249f25d11bd2964a230b3ffafcbed6cd65d0f2b132bc2b8f5b8c347c7", - "sha256:0a97d657f6cf8782a830bb476c13f7d777cfcab8428ac49dde15c22babceb361", - "sha256:0b5a5009b0159a8f707879dc102b139466d8ec6db05103ec1520394fdd8ea02c", - "sha256:0bcb7f6976dc0b6b56efde13294862adf68dd48854111b422a336fa729a82ea6", - "sha256:14624d96f0d69cf451deed3173079a68c322279be6030208b045ab77e1e8d550", - "sha256:15c4e489942d987d5dac0ba39e5772dcbed4cc9ae3710d1025d5ba95e4a5349c", - "sha256:176f8bb8931da0613bb0ed16326d01330066bb1e172dd97e1e02b1c27383277b", - "sha256:17af09d963fa1acd7e4c280e9354aeafd9e3d47eaa4a6bfbd2171ad7da49f0c5", - "sha256:1a8b13b9950d8b2f8f58b6e5842c4b842b5887e2c32e3f4644d6642f1659a530", - "sha256:202f40fb686e5f93908eee0c75d1e6fbe50a43e9bd4909bf3bf4a56b560ca180", - "sha256:21cbe97839b009826a61b143d3ca4964c8590d7aed33d6118125e5b71691ca46", - "sha256:27935716f8d62c1c73010428db310fd10136002cfc6d52b0ba7bdfa752d26066", - "sha256:282e0a7ddd36ebc411f156aeaa0491e8fe7f030e2a95da532cf0c84b0b70bc66", - "sha256:28f29bce89c3b401a53d6fd4bee401ee943083bf2bdc12ef297c1d63155070b0", - "sha256:2ac9fd83096df36728da8e2f4488ac3b5602238f602706606f3702f07a13a409", - "sha256:30f9f89ae625d412043f12ca3771b2ccec227cc93b93bb1f994db6e1af40a7d3", - "sha256:317251b9c9a2f1a9ff9cd093775b34c6861d1d7df9439ce3d32a88c275c995cd", - "sha256:31de2f10f63f96cc19e04bd2df9549559beadd0b2ee2da24a17e7ed877ca8c60", - "sha256:36df00e0541f264ce42d62280281541a47474dfda500bc5b7f24f70a7f87be7a", - "sha256:39625703540feb50b6b7f938b3856d1f4886d2e585d88274e62b1bd273fae09b", - "sha256:3f5461c77649358610fb9694e790956b4238ac5d9e697a17f63619c096469afe", - "sha256:4313f3bc901255b22f01663eeeae167468264fdae0d32c25fc631d5d6e15b502", - "sha256:442356e8924fe1a121f8c87866b0ecdc785757fd28924b17c20493961b3d6697", - "sha256:44cb1a1326a0264480a789e6100dc3e07122eb8cd1ad6b784a3d47d13ed1d89c", - "sha256:44d323aa80a867cb6db6bebb4bbec677c6478e38128847f2c6b0f70eae984d72", - "sha256:499368eb904566fbdf1a3836a1532000ef1308f34a1bcbf36e6351904cced771", - "sha256:4b01d9cfcb616eeb6d40f02e66bebfe7b06d9f2ef81641fdd50b8dd981166e0b", - "sha256:5720ebbc7a1b46c33a42d489d25d36c64c419f52159485e55589fbec648ea49a", - "sha256:5cc5e0d069c56645446c45a4b5010d4b33ac6c5ebfd369a791b5f097e46a3c08", - "sha256:618b18c3a2360ac940a5503da14fa4f880c5b9bc315ec20a830357bcc62e6bae", - "sha256:6435a66957cdba1a0b16f368bde03ce9c79c57306b39510da6ae5312a1a5b2c1", - "sha256:647ec5bee7e4ec9f1034ab48173b5fa970d9a991e565549b965e93331f1328fe", - "sha256:6e1e9e447856e9b7b3d38e1316ae9a8c92e7536ef48373de758ea055edfd5db5", - "sha256:6ef1550bb5f55f71b97a6a395286db07f7f2c01c8890e613556df9a51da91e8d", - "sha256:6ffa45cc55b18d4ac1396d1ddb029f139b1d3480f1594130e62bceadf2e1a838", - "sha256:77f31cebd8c27a36af6c7346055ac564946e562080ee1a838da724585c67474f", - "sha256:7a3b5b2c012d70c63d9d13c57ed1603709a4d9d7d473e4a9dfece0e4ea3d5f51", - "sha256:7a7ddf981a0b953ade1c2379052d47ccda2f58ab678fca0671c7c7ca2f67aac2", - "sha256:84de955314aa5e8d469b00b14d6d714b008087a0222b0f743e7ffac34ef56aff", - "sha256:8dcfd14c712aa9dd18049280bfb2f95700ff6a8bde645e09f17c3ed3f05a0130", - "sha256:928f92f80e2e8d6567b87d3316c1fd9860ccfe36e87a9a7f5237d4cda8baa1ba", - "sha256:9384b07cfd3045b37b05ed002d1c255db02fb96506ad65f0f9b776b762a7572e", - "sha256:96726839a42429318017e67a42cca75d4f0d5248a809b3cc2e125445edd7d50d", - "sha256:96bbec47beb131bbf4bae05d8ef99ad9e5738f12717cfbbf16648b78b0232e87", - "sha256:9bcf97b971289be69638d8b1b616f7e557e1342debc7fc86cf89d3f08960e411", - "sha256:a0cf4d814689e58f57ecd5d8c523e6538417ca2e72ff52c007c64065cef50fb2", - "sha256:a7c6147c6306f537cff59409609508a1d2eff81199f0302dd456bb9e7ea50c39", - "sha256:a9266644064779840feec0e34f10a89b3ff1d2d6b751fe90017abcad1864fa7c", - "sha256:afbe85b50ade42ddff5669947afde9e8a610e64d2c80be046d67ec4368e555fa", - "sha256:afcda759a69c6a8be3aae764ec6733155aa4a5ad9aad4f398b52ba4037942fe3", - "sha256:b2fab23003c4bb2249729a7290a76c1dda38c438300fdf97d4e42bf78b19c810", - "sha256:bd3f711f4c99da0091ced41dccdc1bcf8be0281dc314d6d9c6b6cf5df66f37a9", - "sha256:be0c7c98e38a1e3ad7a6ff64af8b6d6db34bf5a41b1478e24c3c74d9e7f8ed42", - "sha256:c1f2d7fd583fc79c240094b3e7237d88493814d4b300d013a42726c35a734bc9", - "sha256:c5bba6b83fde4ca233cfda04cbd4685ab88696b0c8eaf76f7148969eab5e248a", - "sha256:c6beeac698671baa558e82fa160be9761cf0eb25861943f4689ecf9000f8ebd0", - "sha256:c7333e7239415076d1418dbfb7fa4df48f3a5b00f8fdf854fca549080455bc14", - "sha256:c8a02f74ae419e3955af60f570d83187423e42e672a6433c5e292f1d23619269", - "sha256:c9c23e62f3545c2216100603614f9e019e41b9403c47dd85b8e7e5015bf1bde0", - "sha256:cca505829cdab58c2495ff418c96092d225a1bbd486f79017f6de915580d3c44", - "sha256:d3108f0ad5c6b6d78eec5273219a5bbd884b4aacec17883ceefaac988850ce6e", - "sha256:d4b8a1b6c7a68c73191f2ebd3bf66f7ce02f9c374e309bdb68ba886bbbf1b938", - "sha256:d6e274661c74195708fc4380a4ef64298926c5a50bb10fbae3d01627d7a075b7", - "sha256:db2914de2559809fdbcf3e48f41b17a493b58cb7988d3e211f6b63126c55fe82", - "sha256:e738aabff3586091221044b7a584865ddc4d6120346d12e28e788307cd731043", - "sha256:e7f6173302f8a329ca5d1ee592af9e628d3ade87816e9958dcf7cdae2841def7", - "sha256:e9d036a9a41fc78e8a3f10a86c2fc1098fca8fab8715ba9eb999ce4788d35df0", - "sha256:ea142255d4901b03f89cb6a94411ecec117786a76fc9ab043af8f51dd50b5313", - "sha256:ebd3e6b0c7d4954cca59d241970011f8d3327633d555051c430bd09ff49dc494", - "sha256:ec656680fc53a13f849c71afd0c84a55c536206d524cbc831cde80abbe80489e", - "sha256:ec8df0ff5a911c6d21957a9182402aad7bf060eaeffd77c9ea1c16aecab5adbf", - "sha256:ed95d66745f53e129e935ad726167d3a6cb18c5d33df3165974d54742c373868", - "sha256:ef2c9499b7bd1e24e473dc1a85de55d72fd084eea3d8bdeec7ee0720decb54fa", - "sha256:f5252ba8b43906f206048fa569debf2cd0da0316e8d5b4d25abe53307f573941", - "sha256:f737fef6e117856400afee4f17774cdea392b28ecf058833f5eca368a18cf1bf", - "sha256:fc726c3fa8f606d07bd2b500e5dc4c0fd664c59be7788a16b9e34352c50b6b6b" + "sha256:012f176945af138abc10c4a48743327a92b4ca9adc7a0e078077cdb5dbab7be0", + "sha256:02c13415b5732fb6ee7ff64583a5e6ed1c57aa68f17d2bda79c04888dfdc2769", + "sha256:03b6002e20938fc6ee0918c81d9e776bebccc84690e2b03ed132331cca065ee5", + "sha256:04814571cb72d65a6899db6099e377ed00710bf2e3eafd2985166f2918beaf59", + "sha256:0580f2e12de2138f34debcd5d88894786453a76e98febaf3e8fe5db62d01c9bf", + "sha256:06a8e2ee1cbac16fe61e51e0b0c269400e781b13bcfc33f5425912391a542985", + "sha256:076bc454a7e6fd646bc82ea7f98296be0b1219b5e3ef8a488afbdd8e81fbac50", + "sha256:0c9527819b29cd2b9f52033e7fb9ff08073df49b4799c89cb5754624ecd98299", + "sha256:0dc49f42422163efb7e6f1df2636fe3db72713f6cd94688e339dbe33fe06d61d", + "sha256:14cdb5a9570be5a04eec2ace174a48ae85833c2aadc86de68f55541f66ce42ab", + "sha256:15fccaf62a4889527539ecb86834084ecf6e9ea70588efde86e8bc775e0e7542", + "sha256:24213ba85a419103e641e55c27dc7ff03536c4873470c2478cce3311ba1eee7b", + "sha256:31d5093d3acd02b31c649d3a69bb072d539d4c7659b87caa4f6d2bcf57c2fa2b", + "sha256:3691ed7726fef54e928fe26344d930c0c8575bc968c3e239c2e1a04bd8cf7838", + "sha256:386fbe79863eb564e9f3615b959e28b222259da0c48fd1be5929ac838bc65683", + "sha256:3bbbfff4c679c64e6e23cb213f57cc2c9165c9a65d63717108a644eb5a7398df", + "sha256:3de34936eb1a647aa919655ff8d38b618e9f6b7f250cc19a57a4bf7fd2062b6d", + "sha256:40d1c7a7f750b5648642586ba7206999650208dbe5afbcc5284bcec6579c9b91", + "sha256:44224d815853962f48fe124748227773acd9686eba6dc102578defd6fc99e8d9", + "sha256:47ad15a65fb41c570cd0ad9a9ff8012489e68176e7207ec7b82a0940dddfd8be", + "sha256:482cafb7dc886bebeb6c9ba7925e03591a62ab34298ee70d3dd47ba966370d2c", + "sha256:49c7dbbc1a559ae14fc48387a115b7d4bbc84b4a2c3b9299c31696953c2a5219", + "sha256:4b2c7ac59c5698a7a8207ba72d9e9c15b0fc484a560be0788b31312c2c5504e4", + "sha256:4cca22a61b7fe45da8fc73c3443150c3608750bbe27641fc7558ec5117b27fdf", + "sha256:4cfce37f31f20800a6a6620ce2cdd6737b82e42e06e6e9bd1b36f546feb3c44f", + "sha256:502a1464ccbc800b4b1995b302efaf426e8763fadf185e933c2931df7db9a199", + "sha256:53bf2097e05c2accc166c142a2090e4c6fd86581bde3fd9b2d3f9e93dda66ac1", + "sha256:593c114a2221444f30749cc5e5f4012488f56bd14de2af44fe23e1e9894a9c60", + "sha256:5d6958671b296febe7f5f859bea581a21c1d05430d1bbdcf2b393599b1cdce77", + "sha256:5ef359ebc6949e3a34c65ce20230fae70920714367c63afd80ea0c2702902ccf", + "sha256:613e5169f8ae77b1933e42e418a95931fb4867b2991fc311430b15901ed67079", + "sha256:61b9bae80ed1f338c42f57c16918853dc51775fb5cb61da70d590de14d8b5fb4", + "sha256:6362cc6c23c08d18ddbf0e8c4d5159b5df74fea1a5278ff4f2c79aed3f4e9f46", + "sha256:65a96e3e03300b41f261bbfd40dfdbf1c301e87eab7cd61c054b1f2e7c89b9e8", + "sha256:65e55ca7debae8faaffee0ebb4b47a51b4075f01e9b641c31e554fd376595c6c", + "sha256:68386d78743e6570f054fe7949d6cb37ef2b672b4d3405ce91fafa996f7d9b4d", + "sha256:68ff6f48b51bd78ea92b31079817aff539f6c8fc80b6b8d6ca347d7c02384e33", + "sha256:6ab29b8a0beb6f8eaf1e5049252cfe74adbaafd39ba91e10f18caeb0e99ffb34", + "sha256:77ae58586930ee6b2b6f696c82cf8e78c8016ec4795c53e36718365f6959dc82", + "sha256:77c4aa15a89847b9891abf97f3d4048f3c2d667e00f8a623c89ad2dccee6771b", + "sha256:78153314f26d5abef3239b4a9af20c229c6f3ecb97d4c1c01b22c4f87669820c", + "sha256:7852bbcb4d0d2f0c4d583f40c3bc750ee033265d80598d0f9cb6f372baa6b836", + "sha256:7e97d622cb083e86f18317282084bc9fbf261801b0192c34fe4b1febd9f7ae69", + "sha256:7f3dc0e330575f5b134918976a645e79adf333c0a1439dcf6899a80776c9ab39", + "sha256:80886dac673ceaef499de2f393fc80bb4481a129e6cb29e624a12e3296cc088f", + "sha256:811f23b3351ca532af598405db1093f018edf81368e689d1b508c57dcc6b6a32", + "sha256:86a5dfcc39309470bd7b68c591d84056d195428d5d2e0b5ccadfbaf25b026ebc", + "sha256:8b3cf2dc0f0690a33f2d2b2cb15db87a65f1c609f53c37e226f84edb08d10f52", + "sha256:8cc5203b817b748adccb07f36390feb730b1bc5f56683445bfe924fc270b8816", + "sha256:909af95a72cedbefe5596f0bdf3055740f96c1a4baa0dd11fd74ca4de0b4e3f1", + "sha256:974d3a2cce5fcfa32f06b13ccc8f20c6ad9c51802bb7f829eae8a1845c4019ec", + "sha256:98283b94cc0e11c73acaf1c9698dea80c830ca476492c0fe2622bd931f34b487", + "sha256:98f5635f7b74bcd4f6f72fcd85bea2154b323a9f05226a80bc7398d0c90763b0", + "sha256:99b7920e7165be5a9e9a3a7f1b680f06f68ff0d0328ff4079e5163990d046767", + "sha256:9bca390cb247dbfaec3c664326e034ef23882c3f3bfa5fbf0b56cad0320aaca5", + "sha256:9e2e576caec5c6a6b93f41626c9c02fc87cd91538b81a3670b2e04452a63def6", + "sha256:9ef405356ba989fb57f84cac66f7b0260772836191ccefbb987f414bcd2979d9", + "sha256:a55d2ad345684e7c3dd2c20d2f9572e9e1d5446d57200ff630e6ede7612e307f", + "sha256:ab7485222db0959a87fbe8125e233b5a6f01f4400785b36e8a7878170d8c3138", + "sha256:b1fc6b45010a8d0ff9e88f9f2418c6fd408c99c211257334aff41597ebece42e", + "sha256:b78f053a7ecfc35f0451d961dacdc671f4bcbc2f58241a7c820e9d82559844cf", + "sha256:b99acd4730ad1b196bfb03ee0803e4adac371ae8efa7e1cbc820200fc5ded109", + "sha256:be2b516f56ea883a3e14dda17059716593526e10fb6303189aaf5503937db408", + "sha256:beb39a6d60a709ae3fb3516a1581777e7e8b76933bb88c8f4420d875bb0267c6", + "sha256:bf3d1a519a324af764a46da4115bdbd566b3c73fb793ffb97f9111dbc684fc4d", + "sha256:c49a76c1038c2dd116fa443eba26bbb8e6c37e924e2513574856de3b6516be99", + "sha256:c5532f0441fc09c119e1dca18fbc0687e64fbeb45aa4d6a87211ceaee50a74c4", + "sha256:c6b9e6d7e41656d78e37ce754813fa44b455c3d0d0dced2a047def7dc5570b74", + "sha256:c87bf31b7fdab94ae3adbe4a48e711bfc5f89d21cf4c197e75561def39e223bc", + "sha256:cbad88a61fa743c5d283ad501b01c153820734118b65aee2bd7dbb735475ce0d", + "sha256:cf14627232dfa8730453752e9cdc210966490992234d77ff90bc8dc0dce361d5", + "sha256:db1d0b28fcb7f1d35600150c3e4b490775251dea70f894bf15c678fdd84eda6a", + "sha256:ddf5f7d877615f6a1e75971bfa5ac88609af3b74796ff3e06879e8422729fd01", + "sha256:e44a9a3c053b90c6f09b1bb4edd880959f5328cf63052503f892c41ea786d99f", + "sha256:efb15a17a12497685304b2d976cb4939e55137df7b09fa53f1b6a023f01fcb4e", + "sha256:fbbaea811a2bba171197b08eea288b9402faa2bab2ba0858eecdd0a4105753a3" ], "markers": "python_version >= '3.9'", - "version": "==3.11.9" + "version": "==3.11.10" }, "aiosignal": { "hashes": [ @@ -375,9 +375,9 @@ }, "dbrepo": { "hashes": [ - "sha256:292c2631816ca3dbdbd243e4c006c4bd39d512f5ae7e4b10070102c85ec58a10" + "sha256:2fca7fb5037f3497cb4154f770ebe4690e5ff93aef4c4d4ef39288b34806f077" ], - "path": "./lib/dbrepo-1.5.2.tar.gz" + "path": "./lib/dbrepo-1.6.0.tar.gz" }, "docker": { "hashes": [ @@ -1361,120 +1361,120 @@ }, "rpds-py": { "hashes": [ - "sha256:0545928bdf53dfdfcab284468212efefb8a6608ca3b6910c7fb2e5ed8bdc2dc0", - "sha256:05fdeae9010533e47715c37df83264df0122584e40d691d50cf3607c060952a3", - "sha256:09a1f000c5f6e08b298275bae00921e9fbbf2a35dae0a86db2821c058c2201a9", - "sha256:0a53592cdf98cec3dfcdb24ffec8a4797e7656b65700099af43ec7df023b6de4", - "sha256:0f057a0c546c42964836b209d8de9ea1a4f4b0432006c6343cbe633d8ca14571", - "sha256:0f9eb37d3a60b262a98ab51ee899cac039de9ca0ce68dcf1a6518a09719020b0", - "sha256:102be79c4cc47a4aeb5912401185c404cd2601c15a7163bbecff7f1bfe20b669", - "sha256:128cbaed7ba26116820bcb992405d6a13ea18c8fca1b8c4f59906d858e91e979", - "sha256:149b4d875ef9b12a8f5e303e86a32a58f8ef627e57ec97a7d0e4be819069d141", - "sha256:153248f48d6f90a295a502f53ec544a3ffbd21b0bb32f5dca39c4b93a764d6a2", - "sha256:157a023bded0618a1eea54979fe2e0f9309e9ddc818ef4b8fc3b884ff38fedd5", - "sha256:15fa4ca658f8ad22645d3531682b17e5580832efbfa87304c3e62214c79c1e8a", - "sha256:198067aa6f3d942ff5d0d655bb1e91b59ae85279d47590682cba2834ac1b97d2", - "sha256:1c40e02cc4f3e18fd39344edb10eebe04bd11cfd13119606b5771e5ea51630d3", - "sha256:1ded65691a1d3fd7d2aa89d2c91aa51f941601bb2ce099739909034d957fef4b", - "sha256:201650b309c419143775c15209c620627de3c09a27c7fb58375325aec5cce260", - "sha256:2143c3aed85992604d758bbe67da839fb4aab3dd2e1c6dddab5b3ca7162b34a2", - "sha256:2177e59c033bf0d1bf7de1ced561205963583caf3242c6c700a723034bfb5f8e", - "sha256:2ea23f1525d4f64286dbe0947c929d45c3ffe963b2dbed1d3844a2e4938bda42", - "sha256:31264187fc934ff1024a4f56775f33c9252d3f4f3e27ec07d1995a26b52702c3", - "sha256:36ce951800ed2acc6772fd9f42150f29d567f0423989748052fdb39d9e2b5795", - "sha256:3aaa22487477de9618ce3b37f99fbe81219ba96f3c2ca84f576f0ab451b83aba", - "sha256:3e7e99e2af59c56c59b6c964d612511b8203480d39d1ef83edc56f2cb42a3f5d", - "sha256:413a30a99d8683dace3765885920ed27ab662efbb6c98d81db76c397ad1ffd71", - "sha256:447ae1104fb32197b9262f772d565d38e834cc2e9edd89350b37b88fed636e70", - "sha256:4659b2e4a5008715099e216050f5c6976e5a4329482664411789968b82e3f17d", - "sha256:48ee97c7c6027fd423058675b5a39d0b5f7a1648250b671563d5c9f74ff13ff0", - "sha256:4ba6c66fbc6015b2f99e7176fec41793cecb00c4cc357cad038dff85e6ac42ab", - "sha256:4c8dc7331e8cbb1c0ea2bcb550adb1777365944ffd125c69aa1117fdef4887f5", - "sha256:50e4b5d291105f7063259fe0125b1af902fb34499444d7c5c521dd8328b00939", - "sha256:542eb246d5be31b5e0a9c8ddb9539416f9b31f58f75bd4ee328bff2b5c58d6fd", - "sha256:55d371b9d8b0c2a68a50413a8cb01c3c3ce1ea4f768bf77b66669a9a486e101e", - "sha256:580ccbf11f02f948add4cb641843030a89f1463d7c0740cbfc9aca91e9dc34b3", - "sha256:5dbff9402c2bdf00bf0df9905694b3c292a3847c725651938a72f554351a5fcb", - "sha256:5f941fb86195f97be7f6efe04a21b223f05dfe4d1dfb159999e2f8d101e44cc4", - "sha256:608c84699b2db09c6a8743845b1a3dad36fae53eaaecb241d45b13dff74405fb", - "sha256:626b9feb01bff049a5aec4804f0c58db12585778b4902e5376a95b01f80a7a16", - "sha256:66f4f48a89cdd30ab3a47335df81c76e9a63799d0d84b29c0618371c66fa37b0", - "sha256:6c8e97e19aa7b0b0d801a159f932ce4435f1049c8c38e2bb372bb5bee559ce50", - "sha256:72407065ad459db9f3d052ea8c51e02534f02533fc61e51cbab3bd94166f086c", - "sha256:734783dd7da58f76222f458346ddebdb3621686a1a2a667db5049caf0c9956b9", - "sha256:76eaa4c087a061a2c8a0a92536405069878a8f530c00e84a9eaf332e70f5561f", - "sha256:776a06cb5720556a549829896a49acebb5bdd96c7bba100191a994053546975a", - "sha256:7839b7528faa4d134c183b1f2dd1ee4dc2ca2f899f4f0cfdf00fc04c255262a7", - "sha256:8080467df22feca0fc9c46567001777c6fbc2b4a2683a7137420896051874ca1", - "sha256:85060e96953647871957d41707adb8d7bff4e977042fd0deb4fc1881b98dd2fe", - "sha256:8954b9ffe60f479a0c0ba40987db2546c735ab02a725ea7fd89342152d4d821d", - "sha256:8a603155db408f773637f9e3a712c6e3cbc521aaa8fa2b99f9ba6106c59a2496", - "sha256:8bd9ec1db79a664f4cbb12878693b73416f4d2cb425d3e27eccc1bdfbdc826ef", - "sha256:8c0c324879d483504b07f7b18eb1b50567c434263bbe4866ecce33056162668a", - "sha256:8ce729f1dc8a4a190c34b69f75377bddc004079b2963ab722ab91fafe040be6d", - "sha256:8ec41049c90d204a6561238a9ad6c7263ebb7009d9759c98b58078d9d2fec9ba", - "sha256:959ae04ed30cde606f3a0320f0a1f4167a107e685ef5209cce28c5080590bd31", - "sha256:96559e05bdf938b2048353e10a7920b98f853cefe4482c2064a718d7d0a50bd7", - "sha256:96b3759d8ab2323324e0a92b2f44834f9d88089b8d1ab6f533b61f4be3411cef", - "sha256:97c5ffe47ccf92d8b17e10f8a5ce28d015aa1196edc3359684cf31504eae6a14", - "sha256:9d5b925156a746dc1f5f52376fdd1fbdd3f6ffe1fcd6f5e06f77ca79abb940a3", - "sha256:9dae4eb9b5534e09ba6c6ab496a757e5e394b7e7b08767d25ca37e8d36491114", - "sha256:a083221b6a4ecdef38a60c95d8d3223d99449cb4da2544e9644958dc16664eb9", - "sha256:a0ed14a4162c2c2b21a162c9fcf90057e3e7da18cd171ab344c1e1664f75090e", - "sha256:a18aedc032d6468b73ebbe4437129cb30d54fe543cde2f23671ecad76c3aea24", - "sha256:a451dba533be77454ebcffc85189108fc05f279100835ac76e7989edacb89156", - "sha256:aa2ba0176037c915d8660a4e46581d645e2c22b5373e466bc8640a794d45861a", - "sha256:ab27dd4edd84b13309f268ffcdfc07aef8339135ffab7b6d43f16884307a2a48", - "sha256:ab784621d3e2a41916e21f13a483602cc989fd45fff637634b9231ba43d4383b", - "sha256:b07fa9e634234e84096adfa4be3828c8f26e238679c122824b2b3d7131bec578", - "sha256:b09209cdfcacf5eba9cf80367130532e6c02e695252e1f64d3cfcc2356e6e19f", - "sha256:babec324e8654a59122aaa66936a9a483faa03276db9792f51332475c2dddc4a", - "sha256:bca4428c4a957b78ded3e6e62884ab03f029dce8fa8d34818da0f80f61332b49", - "sha256:c0467838c90435b80793cde486a318fc916ee57f2af54e4b10c72b20cbdcbaa9", - "sha256:c2a214bf5b79bd39a9de1c991353aaaacafda83ba1374178309e92be8e67d411", - "sha256:c3029f481b31f329b1fdb4ec4b56935d82210ddd9c6f86ea5a87c06f1e97b161", - "sha256:c6f3fd617db422c9d4e12cb8d84c984fe07d6d9cb0950cbf117f3bccc6268d05", - "sha256:c783e4ed68200f4e03c125690d23158b1c49c4b186d458a18debc109bbdc3c2e", - "sha256:c8502a02ae3ae67084f5a0bf5a8253b19fa7a887f824e41e016cdb0ac532a06f", - "sha256:c88535f83f7391cf3a45af990237e3939a6fdfbedaed2571633bfdd0bceb36b0", - "sha256:c9ce6b83597d45bec44a2690857ede62fc98223772135f8a7fa90884eb726501", - "sha256:ca4657e9fd0b1b5376942d403d634ce188f79064f0873aa853ab05b10185ceec", - "sha256:d0ff8d5b13ce2357fa8b33a0a2e3775aa71df5bf7c8ba060634c9d15ab12f357", - "sha256:d280b4bf09f719b89fd9aab3b71067acc0d0449b7d1eba99a2ade4939cef8296", - "sha256:d3777c446bb1c5fcd82dc3f8776e1a146cd91e80cc1892f8634575ace438d22f", - "sha256:d7833ef6f5d6cb634f296abfd93452fb3eb44c4e9a6ae95c1021eab704c1cee2", - "sha256:d8306f27418361b788e3fca9f47dec125457f80122e7e31ba7ff5cdba98343f8", - "sha256:d962e2e89b3a95e3597a34b8c93ced1e98958502c5b8096c9fd69deff279f561", - "sha256:dbe428d0ac6eacaf05402adbaf137f59ad6063848182d1ff294f95ce0f24005b", - "sha256:e4f91d702b9ce1388660b3d4a28aa552614a1399e93f718ed0dacd68f23b3d32", - "sha256:e69acdbc132c9592c8dc393af85e38e206ca847c7019a953ff625191c3a12312", - "sha256:e8056adcefa2dcb67e8bc91ea5eee26df66e8b297a8cd6ff0903f85c70908fa0", - "sha256:e9ac7280bd045f472b50306d7efeee051b69e3a2dd1b90f46bd7e86e63b1efa2", - "sha256:eb013aa01b404219f28dc973d9e6310fd4db216d7299253dd355629952e0564e", - "sha256:ec1ccc2a9f764cd632fb8ab28fdde166250df54fc8d97315a4a6948dc5367639", - "sha256:ef7282d8a14b60dd515e47060638687710b1d518f4b5e961caad43fb3a3606f9", - "sha256:ef92b1fbe6aa2e7885eb90853cc016b1fc95439a8cc8da6d526880e9e2148695", - "sha256:efb2ad60ca8637d5f9f653f9a9a8d73964059972b6b95036be77e028bffc68a3", - "sha256:effcae2152afe7937a28376dbabb25c770ef99ed4e16a4ffeb8e6a4f7c4f06aa", - "sha256:f2d1b58a0c3a73f0361759642e80260a6d28eee6501b40fe25b82af33ef83f21", - "sha256:f57e2d0f8022783426121b586d7c842ea40ea832a29e28ca36c881b54c74fb28", - "sha256:f5cae9b415ea8a6a563566dbf46650222eccc5971c7daa16fbee63aef92ae543", - "sha256:f76c6f319e57007ad52e671ec741d801324760a377e3d4992c9bb8200333ebac", - "sha256:f91bfc39f7a64168e08ab831fa497ec5438c1d6c6e2f9e12848d95ad11ac8523", - "sha256:fdaee3947eaaa52dae3ceb9d9f66329e13d8bae35682b1e5dd54612938693934", - "sha256:fe3f245c2f39a5692d9123c174bc48f6f9fe3e96407e67c6d04541a767d99e72", - "sha256:ffae97d28ea4f2c613a751d087b75a97fb78311b38cc2e9a2f4587e473ace167" + "sha256:009de23c9c9ee54bf11303a966edf4d9087cd43a6003672e6aa7def643d06518", + "sha256:02fbb9c288ae08bcb34fb41d516d5eeb0455ac35b5512d03181d755d80810059", + "sha256:0a0461200769ab3b9ab7e513f6013b7a97fdeee41c29b9db343f3c5a8e2b9e61", + "sha256:0b09865a9abc0ddff4e50b5ef65467cd94176bf1e0004184eb915cbc10fc05c5", + "sha256:0b8db6b5b2d4491ad5b6bdc2bc7c017eec108acbf4e6785f42a9eb0ba234f4c9", + "sha256:0c150c7a61ed4a4f4955a96626574e9baf1adf772c2fb61ef6a5027e52803543", + "sha256:0f3cec041684de9a4684b1572fe28c7267410e02450f4561700ca5a3bc6695a2", + "sha256:1352ae4f7c717ae8cba93421a63373e582d19d55d2ee2cbb184344c82d2ae55a", + "sha256:177c7c0fce2855833819c98e43c262007f42ce86651ffbb84f37883308cb0e7d", + "sha256:1978d0021e943aae58b9b0b196fb4895a25cc53d3956b8e35e0b7682eefb6d56", + "sha256:1a60bce91f81ddaac922a40bbb571a12c1070cb20ebd6d49c48e0b101d87300d", + "sha256:1aef18820ef3e4587ebe8b3bc9ba6e55892a6d7b93bac6d29d9f631a3b4befbd", + "sha256:1e9663daaf7a63ceccbbb8e3808fe90415b0757e2abddbfc2e06c857bf8c5e2b", + "sha256:20070c65396f7373f5df4005862fa162db5d25d56150bddd0b3e8214e8ef45b4", + "sha256:214b7a953d73b5e87f0ebece4a32a5bd83c60a3ecc9d4ec8f1dca968a2d91e99", + "sha256:22bebe05a9ffc70ebfa127efbc429bc26ec9e9b4ee4d15a740033efda515cf3d", + "sha256:24e8abb5878e250f2eb0d7859a8e561846f98910326d06c0d51381fed59357bd", + "sha256:26fd7cac7dd51011a245f29a2cc6489c4608b5a8ce8d75661bb4a1066c52dfbe", + "sha256:27b1d3b3915a99208fee9ab092b8184c420f2905b7d7feb4aeb5e4a9c509b8a1", + "sha256:27e98004595899949bd7a7b34e91fa7c44d7a97c40fcaf1d874168bb652ec67e", + "sha256:2b8f60e1b739a74bab7e01fcbe3dddd4657ec685caa04681df9d562ef15b625f", + "sha256:2de29005e11637e7a2361fa151f780ff8eb2543a0da1413bb951e9f14b699ef3", + "sha256:2e8b55d8517a2fda8d95cb45d62a5a8bbf9dd0ad39c5b25c8833efea07b880ca", + "sha256:2fa4331c200c2521512595253f5bb70858b90f750d39b8cbfd67465f8d1b596d", + "sha256:3445e07bf2e8ecfeef6ef67ac83de670358abf2996916039b16a218e3d95e97e", + "sha256:3453e8d41fe5f17d1f8e9c383a7473cd46a63661628ec58e07777c2fff7196dc", + "sha256:378753b4a4de2a7b34063d6f95ae81bfa7b15f2c1a04a9518e8644e81807ebea", + "sha256:3af6e48651c4e0d2d166dc1b033b7042ea3f871504b6805ba5f4fe31581d8d38", + "sha256:3dfcbc95bd7992b16f3f7ba05af8a64ca694331bd24f9157b49dadeeb287493b", + "sha256:3f21f0495edea7fdbaaa87e633a8689cd285f8f4af5c869f27bc8074638ad69c", + "sha256:4041711832360a9b75cfb11b25a6a97c8fb49c07b8bd43d0d02b45d0b499a4ff", + "sha256:44d61b4b7d0c2c9ac019c314e52d7cbda0ae31078aabd0f22e583af3e0d79723", + "sha256:4617e1915a539a0d9a9567795023de41a87106522ff83fbfaf1f6baf8e85437e", + "sha256:4b232061ca880db21fa14defe219840ad9b74b6158adb52ddf0e87bead9e8493", + "sha256:5246b14ca64a8675e0a7161f7af68fe3e910e6b90542b4bfb5439ba752191df6", + "sha256:5725dd9cc02068996d4438d397e255dcb1df776b7ceea3b9cb972bdb11260a83", + "sha256:583f6a1993ca3369e0f80ba99d796d8e6b1a3a2a442dd4e1a79e652116413091", + "sha256:59259dc58e57b10e7e18ce02c311804c10c5a793e6568f8af4dead03264584d1", + "sha256:593eba61ba0c3baae5bc9be2f5232430453fb4432048de28399ca7376de9c627", + "sha256:59f4a79c19232a5774aee369a0c296712ad0e77f24e62cad53160312b1c1eaa1", + "sha256:5f0e260eaf54380380ac3808aa4ebe2d8ca28b9087cf411649f96bad6900c728", + "sha256:62d9cfcf4948683a18a9aff0ab7e1474d407b7bab2ca03116109f8464698ab16", + "sha256:64607d4cbf1b7e3c3c8a14948b99345eda0e161b852e122c6bb71aab6d1d798c", + "sha256:655ca44a831ecb238d124e0402d98f6212ac527a0ba6c55ca26f616604e60a45", + "sha256:666ecce376999bf619756a24ce15bb14c5bfaf04bf00abc7e663ce17c3f34fe7", + "sha256:68049202f67380ff9aa52f12e92b1c30115f32e6895cd7198fa2a7961621fc5a", + "sha256:69803198097467ee7282750acb507fba35ca22cc3b85f16cf45fb01cb9097730", + "sha256:6c7b99ca52c2c1752b544e310101b98a659b720b21db00e65edca34483259967", + "sha256:6dd9412824c4ce1aca56c47b0991e65bebb7ac3f4edccfd3f156150c96a7bf25", + "sha256:70eb60b3ae9245ddea20f8a4190bd79c705a22f8028aaf8bbdebe4716c3fab24", + "sha256:70fb28128acbfd264eda9bf47015537ba3fe86e40d046eb2963d75024be4d055", + "sha256:7b2513ba235829860b13faa931f3b6846548021846ac808455301c23a101689d", + "sha256:7ef9d9da710be50ff6809fed8f1963fecdfecc8b86656cadfca3bc24289414b0", + "sha256:81e69b0a0e2537f26d73b4e43ad7bc8c8efb39621639b4434b76a3de50c6966e", + "sha256:8633e471c6207a039eff6aa116e35f69f3156b3989ea3e2d755f7bc41754a4a7", + "sha256:8bd7c8cfc0b8247c8799080fbff54e0b9619e17cdfeb0478ba7295d43f635d7c", + "sha256:9253fc214112405f0afa7db88739294295f0e08466987f1d70e29930262b4c8f", + "sha256:99b37292234e61325e7a5bb9689e55e48c3f5f603af88b1642666277a81f1fbd", + "sha256:9bd7228827ec7bb817089e2eb301d907c0d9827a9e558f22f762bb690b131652", + "sha256:9beeb01d8c190d7581a4d59522cd3d4b6887040dcfc744af99aa59fef3e041a8", + "sha256:a63cbdd98acef6570c62b92a1e43266f9e8b21e699c363c0fef13bd530799c11", + "sha256:a76e42402542b1fae59798fab64432b2d015ab9d0c8c47ba7addddbaf7952333", + "sha256:ac0a03221cdb5058ce0167ecc92a8c89e8d0decdc9e99a2ec23380793c4dcb96", + "sha256:b0b4136a252cadfa1adb705bb81524eee47d9f6aab4f2ee4fa1e9d3cd4581f64", + "sha256:b25bc607423935079e05619d7de556c91fb6adeae9d5f80868dde3468657994b", + "sha256:b3d504047aba448d70cf6fa22e06cb09f7cbd761939fdd47604f5e007675c24e", + "sha256:bb47271f60660803ad11f4c61b42242b8c1312a31c98c578f79ef9387bbde21c", + "sha256:bbb232860e3d03d544bc03ac57855cd82ddf19c7a07651a7c0fdb95e9efea8b9", + "sha256:bc27863442d388870c1809a87507727b799c8460573cfbb6dc0eeaef5a11b5ec", + "sha256:bc51abd01f08117283c5ebf64844a35144a0843ff7b2983e0648e4d3d9f10dbb", + "sha256:be2eb3f2495ba669d2a985f9b426c1797b7d48d6963899276d22f23e33d47e37", + "sha256:bf9db5488121b596dbfc6718c76092fda77b703c1f7533a226a5a9f65248f8ad", + "sha256:c58e2339def52ef6b71b8f36d13c3688ea23fa093353f3a4fee2556e62086ec9", + "sha256:cfbc454a2880389dbb9b5b398e50d439e2e58669160f27b60e5eca11f68ae17c", + "sha256:cff63a0272fcd259dcc3be1657b07c929c466b067ceb1c20060e8d10af56f5bf", + "sha256:d115bffdd417c6d806ea9069237a4ae02f513b778e3789a359bc5856e0404cc4", + "sha256:d20cfb4e099748ea39e6f7b16c91ab057989712d31761d3300d43134e26e165f", + "sha256:d48424e39c2611ee1b84ad0f44fb3b2b53d473e65de061e3f460fc0be5f1939d", + "sha256:e0fa2d4ec53dc51cf7d3bb22e0aa0143966119f42a0c3e4998293a3dd2856b09", + "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d", + "sha256:e35ba67d65d49080e8e5a1dd40101fccdd9798adb9b050ff670b7d74fa41c566", + "sha256:e3fb866d9932a3d7d0c82da76d816996d1667c44891bd861a0f97ba27e84fc74", + "sha256:e61b02c3f7a1e0b75e20c3978f7135fd13cb6cf551bf4a6d29b999a88830a338", + "sha256:e67ba3c290821343c192f7eae1d8fd5999ca2dc99994114643e2f2d3e6138b15", + "sha256:e79dd39f1e8c3504be0607e5fc6e86bb60fe3584bec8b782578c3b0fde8d932c", + "sha256:e89391e6d60251560f0a8f4bd32137b077a80d9b7dbe6d5cab1cd80d2746f648", + "sha256:ea7433ce7e4bfc3a85654aeb6747babe3f66eaf9a1d0c1e7a4435bbdf27fea84", + "sha256:eaf16ae9ae519a0e237a0f528fd9f0197b9bb70f40263ee57ae53c2b8d48aeb3", + "sha256:eb0c341fa71df5a4595f9501df4ac5abfb5a09580081dffbd1ddd4654e6e9123", + "sha256:f276b245347e6e36526cbd4a266a417796fc531ddf391e43574cf6466c492520", + "sha256:f47ad3d5f3258bd7058d2d506852217865afefe6153a36eb4b6928758041d831", + "sha256:f56a6b404f74ab372da986d240e2e002769a7d7102cc73eb238a4f72eec5284e", + "sha256:f5cf2a0c2bdadf3791b5c205d55a37a54025c6e18a71c71f82bb536cf9a454bf", + "sha256:f5d36399a1b96e1a5fdc91e0522544580dbebeb1f77f27b2b0ab25559e103b8b", + "sha256:f60bd8423be1d9d833f230fdbccf8f57af322d96bcad6599e5a771b151398eb2", + "sha256:f612463ac081803f243ff13cccc648578e2279295048f2a8d5eb430af2bae6e3", + "sha256:f73d3fef726b3243a811121de45193c0ca75f6407fe66f3f4e183c983573e130", + "sha256:f82a116a1d03628a8ace4859556fb39fd1424c933341a08ea3ed6de1edb0283b", + "sha256:fb0ba113b4983beac1a2eb16faffd76cb41e176bf58c4afe3e14b9c681f702de", + "sha256:fb4f868f712b2dd4bcc538b0a0c1f63a2b1d584c925e69a224d759e7070a12d5", + "sha256:fb6116dfb8d1925cbdb52595560584db42a7f664617a1f7d7f6e32f138cdf37d", + "sha256:fda7cb070f442bf80b642cd56483b5548e43d366fe3f39b98e67cce780cded00", + "sha256:feea821ee2a9273771bae61194004ee2fc33f8ec7db08117ef9147d4bbcbca8e" ], "markers": "python_version >= '3.9'", - "version": "==0.22.1" + "version": "==0.22.3" }, "six": { "hashes": [ - "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", - "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", + "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", - "version": "==1.16.0" + "version": "==1.17.0" }, "sqlalchemy": { "hashes": [ @@ -1893,72 +1893,72 @@ }, "coverage": { "hashes": [ - "sha256:093896e530c38c8e9c996901858ac63f3d4171268db2c9c8b373a228f459bbc5", - "sha256:09b9f848b28081e7b975a3626e9081574a7b9196cde26604540582da60235fdf", - "sha256:0b0c69f4f724c64dfbfe79f5dfb503b42fe6127b8d479b2677f2b227478db2eb", - "sha256:13618bed0c38acc418896005732e565b317aa9e98d855a0e9f211a7ffc2d6638", - "sha256:13690e923a3932e4fad4c0ebfb9cb5988e03d9dcb4c5150b5fcbf58fd8bddfc4", - "sha256:177f01eeaa3aee4a5ffb0d1439c5952b53d5010f86e9d2667963e632e30082cc", - "sha256:193e3bffca48ad74b8c764fb4492dd875038a2f9925530cb094db92bb5e47bed", - "sha256:1defe91d41ce1bd44b40fabf071e6a01a5aa14de4a31b986aa9dfd1b3e3e414a", - "sha256:1f188a2402f8359cf0c4b1fe89eea40dc13b52e7b4fd4812450da9fcd210181d", - "sha256:202a2d645c5a46b84992f55b0a3affe4f0ba6b4c611abec32ee88358db4bb649", - "sha256:24eda3a24a38157eee639ca9afe45eefa8d2420d49468819ac5f88b10de84f4c", - "sha256:2e4e0f60cb4bd7396108823548e82fdab72d4d8a65e58e2c19bbbc2f1e2bfa4b", - "sha256:379c111d3558272a2cae3d8e57e6b6e6f4fe652905692d54bad5ea0ca37c5ad4", - "sha256:37cda8712145917105e07aab96388ae76e787270ec04bcb9d5cc786d7cbb8443", - "sha256:38c51297b35b3ed91670e1e4efb702b790002e3245a28c76e627478aa3c10d83", - "sha256:3985b9be361d8fb6b2d1adc9924d01dec575a1d7453a14cccd73225cb79243ee", - "sha256:3988665ee376abce49613701336544041f2117de7b7fbfe91b93d8ff8b151c8e", - "sha256:3ac47fa29d8d41059ea3df65bd3ade92f97ee4910ed638e87075b8e8ce69599e", - "sha256:3b4b4299dd0d2c67caaaf286d58aef5e75b125b95615dda4542561a5a566a1e3", - "sha256:3ea8bb1ab9558374c0ab591783808511d135a833c3ca64a18ec927f20c4030f0", - "sha256:3fe47da3e4fda5f1abb5709c156eca207eacf8007304ce3019eb001e7a7204cb", - "sha256:428ac484592f780e8cd7b6b14eb568f7c85460c92e2a37cb0c0e5186e1a0d076", - "sha256:44e6c85bbdc809383b509d732b06419fb4544dca29ebe18480379633623baafb", - "sha256:4674f0daa1823c295845b6a740d98a840d7a1c11df00d1fd62614545c1583787", - "sha256:4be32da0c3827ac9132bb488d331cb32e8d9638dd41a0557c5569d57cf22c9c1", - "sha256:4db3ed6a907b555e57cc2e6f14dc3a4c2458cdad8919e40b5357ab9b6db6c43e", - "sha256:5c52a036535d12590c32c49209e79cabaad9f9ad8aa4cbd875b68c4d67a9cbce", - "sha256:629a1ba2115dce8bf75a5cce9f2486ae483cb89c0145795603d6554bdc83e801", - "sha256:62a66ff235e4c2e37ed3b6104d8b478d767ff73838d1222132a7a026aa548764", - "sha256:63068a11171e4276f6ece913bde059e77c713b48c3a848814a6537f35afb8365", - "sha256:63c19702db10ad79151a059d2d6336fe0c470f2e18d0d4d1a57f7f9713875dcf", - "sha256:644ec81edec0f4ad17d51c838a7d01e42811054543b76d4ba2c5d6af741ce2a6", - "sha256:6535d996f6537ecb298b4e287a855f37deaf64ff007162ec0afb9ab8ba3b8b71", - "sha256:6f4548c5ead23ad13fb7a2c8ea541357474ec13c2b736feb02e19a3085fac002", - "sha256:716a78a342679cd1177bc8c2fe957e0ab91405bd43a17094324845200b2fddf4", - "sha256:74610105ebd6f33d7c10f8907afed696e79c59e3043c5f20eaa3a46fddf33b4c", - "sha256:768939f7c4353c0fac2f7c37897e10b1414b571fd85dd9fc49e6a87e37a2e0d8", - "sha256:86cffe9c6dfcfe22e28027069725c7f57f4b868a3f86e81d1c62462764dc46d4", - "sha256:8aae5aea53cbfe024919715eca696b1a3201886ce83790537d1c3668459c7146", - "sha256:8b2b8503edb06822c86d82fa64a4a5cb0760bb8f31f26e138ec743f422f37cfc", - "sha256:912e95017ff51dc3d7b6e2be158dedc889d9a5cc3382445589ce554f1a34c0ea", - "sha256:9a7b8ac36fd688c8361cbc7bf1cb5866977ece6e0b17c34aa0df58bda4fa18a4", - "sha256:9e89d5c8509fbd6c03d0dd1972925b22f50db0792ce06324ba069f10787429ad", - "sha256:ae270e79f7e169ccfe23284ff5ea2d52a6f401dc01b337efb54b3783e2ce3f28", - "sha256:b07c25d52b1c16ce5de088046cd2432b30f9ad5e224ff17c8f496d9cb7d1d451", - "sha256:b39e6011cd06822eb964d038d5dff5da5d98652b81f5ecd439277b32361a3a50", - "sha256:bd55f8fc8fa494958772a2a7302b0354ab16e0b9272b3c3d83cdb5bec5bd1779", - "sha256:c15b32a7aca8038ed7644f854bf17b663bc38e1671b5d6f43f9a2b2bd0c46f63", - "sha256:c1b4474beee02ede1eef86c25ad4600a424fe36cff01a6103cb4533c6bf0169e", - "sha256:c79c0685f142ca53256722a384540832420dff4ab15fec1863d7e5bc8691bdcc", - "sha256:c9ebfb2507751f7196995142f057d1324afdab56db1d9743aab7f50289abd022", - "sha256:d7ad66e8e50225ebf4236368cc43c37f59d5e6728f15f6e258c8639fa0dd8e6d", - "sha256:d82ab6816c3277dc962cfcdc85b1efa0e5f50fb2c449432deaf2398a2928ab94", - "sha256:d9fd2547e6decdbf985d579cf3fc78e4c1d662b9b0ff7cc7862baaab71c9cc5b", - "sha256:de38add67a0af869b0d79c525d3e4588ac1ffa92f39116dbe0ed9753f26eba7d", - "sha256:e19122296822deafce89a0c5e8685704c067ae65d45e79718c92df7b3ec3d331", - "sha256:e44961e36cb13c495806d4cac67640ac2866cb99044e210895b506c26ee63d3a", - "sha256:e4c81ed2820b9023a9a90717020315e63b17b18c274a332e3b6437d7ff70abe0", - "sha256:e683e6ecc587643f8cde8f5da6768e9d165cd31edf39ee90ed7034f9ca0eefee", - "sha256:f39e2f3530ed1626c66e7493be7a8423b023ca852aacdc91fb30162c350d2a92", - "sha256:f56f49b2553d7dd85fd86e029515a221e5c1f8cb3d9c38b470bc38bde7b8445a", - "sha256:fb9fc32399dca861584d96eccd6c980b69bbcd7c228d06fb74fe53e007aa8ef9" + "sha256:0824a28ec542a0be22f60c6ac36d679e0e262e5353203bea81d44ee81fe9c6d4", + "sha256:085161be5f3b30fd9b3e7b9a8c301f935c8313dcf928a07b116324abea2c1c2c", + "sha256:0ae1387db4aecb1f485fb70a6c0148c6cdaebb6038f1d40089b1fc84a5db556f", + "sha256:0d59fd927b1f04de57a2ba0137166d31c1a6dd9e764ad4af552912d70428c92b", + "sha256:0f957943bc718b87144ecaee70762bc2bc3f1a7a53c7b861103546d3a403f0a6", + "sha256:13a9e2d3ee855db3dd6ea1ba5203316a1b1fd8eaeffc37c5b54987e61e4194ae", + "sha256:1a330812d9cc7ac2182586f6d41b4d0fadf9be9049f350e0efb275c8ee8eb692", + "sha256:22be16571504c9ccea919fcedb459d5ab20d41172056206eb2994e2ff06118a4", + "sha256:2d10e07aa2b91835d6abec555ec8b2733347956991901eea6ffac295f83a30e4", + "sha256:35371f8438028fdccfaf3570b31d98e8d9eda8bb1d6ab9473f5a390969e98717", + "sha256:3c026eb44f744acaa2bda7493dad903aa5bf5fc4f2554293a798d5606710055d", + "sha256:41ff7b0da5af71a51b53f501a3bac65fb0ec311ebed1632e58fc6107f03b9198", + "sha256:4401ae5fc52ad8d26d2a5d8a7428b0f0c72431683f8e63e42e70606374c311a1", + "sha256:44349150f6811b44b25574839b39ae35291f6496eb795b7366fef3bd3cf112d3", + "sha256:447af20e25fdbe16f26e84eb714ba21d98868705cb138252d28bc400381f6ffb", + "sha256:4a8d8977b0c6ef5aeadcb644da9e69ae0dcfe66ec7f368c89c72e058bd71164d", + "sha256:4e12ae8cc979cf83d258acb5e1f1cf2f3f83524d1564a49d20b8bec14b637f08", + "sha256:592ac539812e9b46046620341498caf09ca21023c41c893e1eb9dbda00a70cbf", + "sha256:5e6b86b5847a016d0fbd31ffe1001b63355ed309651851295315031ea7eb5a9b", + "sha256:608a7fd78c67bee8936378299a6cb9f5149bb80238c7a566fc3e6717a4e68710", + "sha256:61f70dc68bd36810972e55bbbe83674ea073dd1dcc121040a08cdf3416c5349c", + "sha256:65dad5a248823a4996724a88eb51d4b31587aa7aa428562dbe459c684e5787ae", + "sha256:777abfab476cf83b5177b84d7486497e034eb9eaea0d746ce0c1268c71652077", + "sha256:7e216d8044a356fc0337c7a2a0536d6de07888d7bcda76febcb8adc50bdbbd00", + "sha256:85d9636f72e8991a1706b2b55b06c27545448baf9f6dbf51c4004609aacd7dcb", + "sha256:899b8cd4781c400454f2f64f7776a5d87bbd7b3e7f7bda0cb18f857bb1334664", + "sha256:8a289d23d4c46f1a82d5db4abeb40b9b5be91731ee19a379d15790e53031c014", + "sha256:8d2dfa71665a29b153a9681edb1c8d9c1ea50dfc2375fb4dac99ea7e21a0bcd9", + "sha256:8e3c3e38930cfb729cb8137d7f055e5a473ddaf1217966aa6238c88bd9fd50e6", + "sha256:8f8770dfc6e2c6a2d4569f411015c8d751c980d17a14b0530da2d7f27ffdd88e", + "sha256:932fc826442132dde42ee52cf66d941f581c685a6313feebed358411238f60f9", + "sha256:96d636c77af18b5cb664ddf12dab9b15a0cfe9c0bde715da38698c8cea748bfa", + "sha256:97ddc94d46088304772d21b060041c97fc16bdda13c6c7f9d8fcd8d5ae0d8611", + "sha256:98caba4476a6c8d59ec1eb00c7dd862ba9beca34085642d46ed503cc2d440d4b", + "sha256:9901d36492009a0a9b94b20e52ebfc8453bf49bb2b27bca2c9706f8b4f5a554a", + "sha256:99e266ae0b5d15f1ca8d278a668df6f51cc4b854513daab5cae695ed7b721cf8", + "sha256:9c38bf15a40ccf5619fa2fe8f26106c7e8e080d7760aeccb3722664c8656b030", + "sha256:a27801adef24cc30871da98a105f77995e13a25a505a0161911f6aafbd66e678", + "sha256:abd3e72dd5b97e3af4246cdada7738ef0e608168de952b837b8dd7e90341f015", + "sha256:adb697c0bd35100dc690de83154627fbab1f4f3c0386df266dded865fc50a902", + "sha256:b12c6b18269ca471eedd41c1b6a1065b2f7827508edb9a7ed5555e9a56dcfc97", + "sha256:b9389a429e0e5142e69d5bf4a435dd688c14478a19bb901735cdf75e57b13845", + "sha256:ba9e7484d286cd5a43744e5f47b0b3fb457865baf07bafc6bee91896364e1419", + "sha256:bb5555cff66c4d3d6213a296b360f9e1a8e323e74e0426b6c10ed7f4d021e464", + "sha256:be57b6d56e49c2739cdf776839a92330e933dd5e5d929966fbbd380c77f060be", + "sha256:c69e42c892c018cd3c8d90da61d845f50a8243062b19d228189b0224150018a9", + "sha256:ccc660a77e1c2bf24ddbce969af9447a9474790160cfb23de6be4fa88e3951c7", + "sha256:d5275455b3e4627c8e7154feaf7ee0743c2e7af82f6e3b561967b1cca755a0be", + "sha256:d75cded8a3cff93da9edc31446872d2997e327921d8eed86641efafd350e1df1", + "sha256:d872ec5aeb086cbea771c573600d47944eea2dcba8be5f3ee649bfe3cb8dc9ba", + "sha256:d891c136b5b310d0e702e186d70cd16d1119ea8927347045124cb286b29297e5", + "sha256:db1dab894cc139f67822a92910466531de5ea6034ddfd2b11c0d4c6257168073", + "sha256:e28bf44afa2b187cc9f41749138a64435bf340adfcacb5b2290c070ce99839d4", + "sha256:e5ea1cf0872ee455c03e5674b5bca5e3e68e159379c1af0903e89f5eba9ccc3a", + "sha256:e77363e8425325384f9d49272c54045bbed2f478e9dd698dbc65dbc37860eb0a", + "sha256:ee5defd1733fd6ec08b168bd4f5387d5b322f45ca9e0e6c817ea6c4cd36313e3", + "sha256:f1592791f8204ae9166de22ba7e6705fa4ebd02936c09436a1bb85aabca3e599", + "sha256:f2d1ec60d6d256bdf298cb86b78dd715980828f50c46701abc3b0a2b3f8a0dc0", + "sha256:f3ca78518bc6bc92828cd11867b121891d75cae4ea9e908d72030609b996db1b", + "sha256:f7b15f589593110ae767ce997775d645b47e5cbbf54fd322f8ebea6277466cec", + "sha256:fd1213c86e48dfdc5a0cc676551db467495a95a662d2396ecd58e719191446e1", + "sha256:ff74026a461eb0660366fb01c650c1d00f833a086b336bdad7ab00cc952072b3" ], "index": "pypi", "markers": "python_version >= '3.9'", - "version": "==7.6.8" + "version": "==7.6.9" }, "idna": { "hashes": [ diff --git a/dbrepo-search-service/init/Pipfile.lock b/dbrepo-search-service/init/Pipfile.lock index c08493b2f9..3138db0a9d 100644 --- a/dbrepo-search-service/init/Pipfile.lock +++ b/dbrepo-search-service/init/Pipfile.lock @@ -26,85 +26,85 @@ }, "aiohttp": { "hashes": [ - "sha256:0411777249f25d11bd2964a230b3ffafcbed6cd65d0f2b132bc2b8f5b8c347c7", - "sha256:0a97d657f6cf8782a830bb476c13f7d777cfcab8428ac49dde15c22babceb361", - "sha256:0b5a5009b0159a8f707879dc102b139466d8ec6db05103ec1520394fdd8ea02c", - "sha256:0bcb7f6976dc0b6b56efde13294862adf68dd48854111b422a336fa729a82ea6", - "sha256:14624d96f0d69cf451deed3173079a68c322279be6030208b045ab77e1e8d550", - "sha256:15c4e489942d987d5dac0ba39e5772dcbed4cc9ae3710d1025d5ba95e4a5349c", - "sha256:176f8bb8931da0613bb0ed16326d01330066bb1e172dd97e1e02b1c27383277b", - "sha256:17af09d963fa1acd7e4c280e9354aeafd9e3d47eaa4a6bfbd2171ad7da49f0c5", - "sha256:1a8b13b9950d8b2f8f58b6e5842c4b842b5887e2c32e3f4644d6642f1659a530", - "sha256:202f40fb686e5f93908eee0c75d1e6fbe50a43e9bd4909bf3bf4a56b560ca180", - "sha256:21cbe97839b009826a61b143d3ca4964c8590d7aed33d6118125e5b71691ca46", - "sha256:27935716f8d62c1c73010428db310fd10136002cfc6d52b0ba7bdfa752d26066", - "sha256:282e0a7ddd36ebc411f156aeaa0491e8fe7f030e2a95da532cf0c84b0b70bc66", - "sha256:28f29bce89c3b401a53d6fd4bee401ee943083bf2bdc12ef297c1d63155070b0", - "sha256:2ac9fd83096df36728da8e2f4488ac3b5602238f602706606f3702f07a13a409", - "sha256:30f9f89ae625d412043f12ca3771b2ccec227cc93b93bb1f994db6e1af40a7d3", - "sha256:317251b9c9a2f1a9ff9cd093775b34c6861d1d7df9439ce3d32a88c275c995cd", - "sha256:31de2f10f63f96cc19e04bd2df9549559beadd0b2ee2da24a17e7ed877ca8c60", - "sha256:36df00e0541f264ce42d62280281541a47474dfda500bc5b7f24f70a7f87be7a", - "sha256:39625703540feb50b6b7f938b3856d1f4886d2e585d88274e62b1bd273fae09b", - "sha256:3f5461c77649358610fb9694e790956b4238ac5d9e697a17f63619c096469afe", - "sha256:4313f3bc901255b22f01663eeeae167468264fdae0d32c25fc631d5d6e15b502", - "sha256:442356e8924fe1a121f8c87866b0ecdc785757fd28924b17c20493961b3d6697", - "sha256:44cb1a1326a0264480a789e6100dc3e07122eb8cd1ad6b784a3d47d13ed1d89c", - "sha256:44d323aa80a867cb6db6bebb4bbec677c6478e38128847f2c6b0f70eae984d72", - "sha256:499368eb904566fbdf1a3836a1532000ef1308f34a1bcbf36e6351904cced771", - "sha256:4b01d9cfcb616eeb6d40f02e66bebfe7b06d9f2ef81641fdd50b8dd981166e0b", - "sha256:5720ebbc7a1b46c33a42d489d25d36c64c419f52159485e55589fbec648ea49a", - "sha256:5cc5e0d069c56645446c45a4b5010d4b33ac6c5ebfd369a791b5f097e46a3c08", - "sha256:618b18c3a2360ac940a5503da14fa4f880c5b9bc315ec20a830357bcc62e6bae", - "sha256:6435a66957cdba1a0b16f368bde03ce9c79c57306b39510da6ae5312a1a5b2c1", - "sha256:647ec5bee7e4ec9f1034ab48173b5fa970d9a991e565549b965e93331f1328fe", - "sha256:6e1e9e447856e9b7b3d38e1316ae9a8c92e7536ef48373de758ea055edfd5db5", - "sha256:6ef1550bb5f55f71b97a6a395286db07f7f2c01c8890e613556df9a51da91e8d", - "sha256:6ffa45cc55b18d4ac1396d1ddb029f139b1d3480f1594130e62bceadf2e1a838", - "sha256:77f31cebd8c27a36af6c7346055ac564946e562080ee1a838da724585c67474f", - "sha256:7a3b5b2c012d70c63d9d13c57ed1603709a4d9d7d473e4a9dfece0e4ea3d5f51", - "sha256:7a7ddf981a0b953ade1c2379052d47ccda2f58ab678fca0671c7c7ca2f67aac2", - "sha256:84de955314aa5e8d469b00b14d6d714b008087a0222b0f743e7ffac34ef56aff", - "sha256:8dcfd14c712aa9dd18049280bfb2f95700ff6a8bde645e09f17c3ed3f05a0130", - "sha256:928f92f80e2e8d6567b87d3316c1fd9860ccfe36e87a9a7f5237d4cda8baa1ba", - "sha256:9384b07cfd3045b37b05ed002d1c255db02fb96506ad65f0f9b776b762a7572e", - "sha256:96726839a42429318017e67a42cca75d4f0d5248a809b3cc2e125445edd7d50d", - "sha256:96bbec47beb131bbf4bae05d8ef99ad9e5738f12717cfbbf16648b78b0232e87", - "sha256:9bcf97b971289be69638d8b1b616f7e557e1342debc7fc86cf89d3f08960e411", - "sha256:a0cf4d814689e58f57ecd5d8c523e6538417ca2e72ff52c007c64065cef50fb2", - "sha256:a7c6147c6306f537cff59409609508a1d2eff81199f0302dd456bb9e7ea50c39", - "sha256:a9266644064779840feec0e34f10a89b3ff1d2d6b751fe90017abcad1864fa7c", - "sha256:afbe85b50ade42ddff5669947afde9e8a610e64d2c80be046d67ec4368e555fa", - "sha256:afcda759a69c6a8be3aae764ec6733155aa4a5ad9aad4f398b52ba4037942fe3", - "sha256:b2fab23003c4bb2249729a7290a76c1dda38c438300fdf97d4e42bf78b19c810", - "sha256:bd3f711f4c99da0091ced41dccdc1bcf8be0281dc314d6d9c6b6cf5df66f37a9", - "sha256:be0c7c98e38a1e3ad7a6ff64af8b6d6db34bf5a41b1478e24c3c74d9e7f8ed42", - "sha256:c1f2d7fd583fc79c240094b3e7237d88493814d4b300d013a42726c35a734bc9", - "sha256:c5bba6b83fde4ca233cfda04cbd4685ab88696b0c8eaf76f7148969eab5e248a", - "sha256:c6beeac698671baa558e82fa160be9761cf0eb25861943f4689ecf9000f8ebd0", - "sha256:c7333e7239415076d1418dbfb7fa4df48f3a5b00f8fdf854fca549080455bc14", - "sha256:c8a02f74ae419e3955af60f570d83187423e42e672a6433c5e292f1d23619269", - "sha256:c9c23e62f3545c2216100603614f9e019e41b9403c47dd85b8e7e5015bf1bde0", - "sha256:cca505829cdab58c2495ff418c96092d225a1bbd486f79017f6de915580d3c44", - "sha256:d3108f0ad5c6b6d78eec5273219a5bbd884b4aacec17883ceefaac988850ce6e", - "sha256:d4b8a1b6c7a68c73191f2ebd3bf66f7ce02f9c374e309bdb68ba886bbbf1b938", - "sha256:d6e274661c74195708fc4380a4ef64298926c5a50bb10fbae3d01627d7a075b7", - "sha256:db2914de2559809fdbcf3e48f41b17a493b58cb7988d3e211f6b63126c55fe82", - "sha256:e738aabff3586091221044b7a584865ddc4d6120346d12e28e788307cd731043", - "sha256:e7f6173302f8a329ca5d1ee592af9e628d3ade87816e9958dcf7cdae2841def7", - "sha256:e9d036a9a41fc78e8a3f10a86c2fc1098fca8fab8715ba9eb999ce4788d35df0", - "sha256:ea142255d4901b03f89cb6a94411ecec117786a76fc9ab043af8f51dd50b5313", - "sha256:ebd3e6b0c7d4954cca59d241970011f8d3327633d555051c430bd09ff49dc494", - "sha256:ec656680fc53a13f849c71afd0c84a55c536206d524cbc831cde80abbe80489e", - "sha256:ec8df0ff5a911c6d21957a9182402aad7bf060eaeffd77c9ea1c16aecab5adbf", - "sha256:ed95d66745f53e129e935ad726167d3a6cb18c5d33df3165974d54742c373868", - "sha256:ef2c9499b7bd1e24e473dc1a85de55d72fd084eea3d8bdeec7ee0720decb54fa", - "sha256:f5252ba8b43906f206048fa569debf2cd0da0316e8d5b4d25abe53307f573941", - "sha256:f737fef6e117856400afee4f17774cdea392b28ecf058833f5eca368a18cf1bf", - "sha256:fc726c3fa8f606d07bd2b500e5dc4c0fd664c59be7788a16b9e34352c50b6b6b" + "sha256:012f176945af138abc10c4a48743327a92b4ca9adc7a0e078077cdb5dbab7be0", + "sha256:02c13415b5732fb6ee7ff64583a5e6ed1c57aa68f17d2bda79c04888dfdc2769", + "sha256:03b6002e20938fc6ee0918c81d9e776bebccc84690e2b03ed132331cca065ee5", + "sha256:04814571cb72d65a6899db6099e377ed00710bf2e3eafd2985166f2918beaf59", + "sha256:0580f2e12de2138f34debcd5d88894786453a76e98febaf3e8fe5db62d01c9bf", + "sha256:06a8e2ee1cbac16fe61e51e0b0c269400e781b13bcfc33f5425912391a542985", + "sha256:076bc454a7e6fd646bc82ea7f98296be0b1219b5e3ef8a488afbdd8e81fbac50", + "sha256:0c9527819b29cd2b9f52033e7fb9ff08073df49b4799c89cb5754624ecd98299", + "sha256:0dc49f42422163efb7e6f1df2636fe3db72713f6cd94688e339dbe33fe06d61d", + "sha256:14cdb5a9570be5a04eec2ace174a48ae85833c2aadc86de68f55541f66ce42ab", + "sha256:15fccaf62a4889527539ecb86834084ecf6e9ea70588efde86e8bc775e0e7542", + "sha256:24213ba85a419103e641e55c27dc7ff03536c4873470c2478cce3311ba1eee7b", + "sha256:31d5093d3acd02b31c649d3a69bb072d539d4c7659b87caa4f6d2bcf57c2fa2b", + "sha256:3691ed7726fef54e928fe26344d930c0c8575bc968c3e239c2e1a04bd8cf7838", + "sha256:386fbe79863eb564e9f3615b959e28b222259da0c48fd1be5929ac838bc65683", + "sha256:3bbbfff4c679c64e6e23cb213f57cc2c9165c9a65d63717108a644eb5a7398df", + "sha256:3de34936eb1a647aa919655ff8d38b618e9f6b7f250cc19a57a4bf7fd2062b6d", + "sha256:40d1c7a7f750b5648642586ba7206999650208dbe5afbcc5284bcec6579c9b91", + "sha256:44224d815853962f48fe124748227773acd9686eba6dc102578defd6fc99e8d9", + "sha256:47ad15a65fb41c570cd0ad9a9ff8012489e68176e7207ec7b82a0940dddfd8be", + "sha256:482cafb7dc886bebeb6c9ba7925e03591a62ab34298ee70d3dd47ba966370d2c", + "sha256:49c7dbbc1a559ae14fc48387a115b7d4bbc84b4a2c3b9299c31696953c2a5219", + "sha256:4b2c7ac59c5698a7a8207ba72d9e9c15b0fc484a560be0788b31312c2c5504e4", + "sha256:4cca22a61b7fe45da8fc73c3443150c3608750bbe27641fc7558ec5117b27fdf", + "sha256:4cfce37f31f20800a6a6620ce2cdd6737b82e42e06e6e9bd1b36f546feb3c44f", + "sha256:502a1464ccbc800b4b1995b302efaf426e8763fadf185e933c2931df7db9a199", + "sha256:53bf2097e05c2accc166c142a2090e4c6fd86581bde3fd9b2d3f9e93dda66ac1", + "sha256:593c114a2221444f30749cc5e5f4012488f56bd14de2af44fe23e1e9894a9c60", + "sha256:5d6958671b296febe7f5f859bea581a21c1d05430d1bbdcf2b393599b1cdce77", + "sha256:5ef359ebc6949e3a34c65ce20230fae70920714367c63afd80ea0c2702902ccf", + "sha256:613e5169f8ae77b1933e42e418a95931fb4867b2991fc311430b15901ed67079", + "sha256:61b9bae80ed1f338c42f57c16918853dc51775fb5cb61da70d590de14d8b5fb4", + "sha256:6362cc6c23c08d18ddbf0e8c4d5159b5df74fea1a5278ff4f2c79aed3f4e9f46", + "sha256:65a96e3e03300b41f261bbfd40dfdbf1c301e87eab7cd61c054b1f2e7c89b9e8", + "sha256:65e55ca7debae8faaffee0ebb4b47a51b4075f01e9b641c31e554fd376595c6c", + "sha256:68386d78743e6570f054fe7949d6cb37ef2b672b4d3405ce91fafa996f7d9b4d", + "sha256:68ff6f48b51bd78ea92b31079817aff539f6c8fc80b6b8d6ca347d7c02384e33", + "sha256:6ab29b8a0beb6f8eaf1e5049252cfe74adbaafd39ba91e10f18caeb0e99ffb34", + "sha256:77ae58586930ee6b2b6f696c82cf8e78c8016ec4795c53e36718365f6959dc82", + "sha256:77c4aa15a89847b9891abf97f3d4048f3c2d667e00f8a623c89ad2dccee6771b", + "sha256:78153314f26d5abef3239b4a9af20c229c6f3ecb97d4c1c01b22c4f87669820c", + "sha256:7852bbcb4d0d2f0c4d583f40c3bc750ee033265d80598d0f9cb6f372baa6b836", + "sha256:7e97d622cb083e86f18317282084bc9fbf261801b0192c34fe4b1febd9f7ae69", + "sha256:7f3dc0e330575f5b134918976a645e79adf333c0a1439dcf6899a80776c9ab39", + "sha256:80886dac673ceaef499de2f393fc80bb4481a129e6cb29e624a12e3296cc088f", + "sha256:811f23b3351ca532af598405db1093f018edf81368e689d1b508c57dcc6b6a32", + "sha256:86a5dfcc39309470bd7b68c591d84056d195428d5d2e0b5ccadfbaf25b026ebc", + "sha256:8b3cf2dc0f0690a33f2d2b2cb15db87a65f1c609f53c37e226f84edb08d10f52", + "sha256:8cc5203b817b748adccb07f36390feb730b1bc5f56683445bfe924fc270b8816", + "sha256:909af95a72cedbefe5596f0bdf3055740f96c1a4baa0dd11fd74ca4de0b4e3f1", + "sha256:974d3a2cce5fcfa32f06b13ccc8f20c6ad9c51802bb7f829eae8a1845c4019ec", + "sha256:98283b94cc0e11c73acaf1c9698dea80c830ca476492c0fe2622bd931f34b487", + "sha256:98f5635f7b74bcd4f6f72fcd85bea2154b323a9f05226a80bc7398d0c90763b0", + "sha256:99b7920e7165be5a9e9a3a7f1b680f06f68ff0d0328ff4079e5163990d046767", + "sha256:9bca390cb247dbfaec3c664326e034ef23882c3f3bfa5fbf0b56cad0320aaca5", + "sha256:9e2e576caec5c6a6b93f41626c9c02fc87cd91538b81a3670b2e04452a63def6", + "sha256:9ef405356ba989fb57f84cac66f7b0260772836191ccefbb987f414bcd2979d9", + "sha256:a55d2ad345684e7c3dd2c20d2f9572e9e1d5446d57200ff630e6ede7612e307f", + "sha256:ab7485222db0959a87fbe8125e233b5a6f01f4400785b36e8a7878170d8c3138", + "sha256:b1fc6b45010a8d0ff9e88f9f2418c6fd408c99c211257334aff41597ebece42e", + "sha256:b78f053a7ecfc35f0451d961dacdc671f4bcbc2f58241a7c820e9d82559844cf", + "sha256:b99acd4730ad1b196bfb03ee0803e4adac371ae8efa7e1cbc820200fc5ded109", + "sha256:be2b516f56ea883a3e14dda17059716593526e10fb6303189aaf5503937db408", + "sha256:beb39a6d60a709ae3fb3516a1581777e7e8b76933bb88c8f4420d875bb0267c6", + "sha256:bf3d1a519a324af764a46da4115bdbd566b3c73fb793ffb97f9111dbc684fc4d", + "sha256:c49a76c1038c2dd116fa443eba26bbb8e6c37e924e2513574856de3b6516be99", + "sha256:c5532f0441fc09c119e1dca18fbc0687e64fbeb45aa4d6a87211ceaee50a74c4", + "sha256:c6b9e6d7e41656d78e37ce754813fa44b455c3d0d0dced2a047def7dc5570b74", + "sha256:c87bf31b7fdab94ae3adbe4a48e711bfc5f89d21cf4c197e75561def39e223bc", + "sha256:cbad88a61fa743c5d283ad501b01c153820734118b65aee2bd7dbb735475ce0d", + "sha256:cf14627232dfa8730453752e9cdc210966490992234d77ff90bc8dc0dce361d5", + "sha256:db1d0b28fcb7f1d35600150c3e4b490775251dea70f894bf15c678fdd84eda6a", + "sha256:ddf5f7d877615f6a1e75971bfa5ac88609af3b74796ff3e06879e8422729fd01", + "sha256:e44a9a3c053b90c6f09b1bb4edd880959f5328cf63052503f892c41ea786d99f", + "sha256:efb15a17a12497685304b2d976cb4939e55137df7b09fa53f1b6a023f01fcb4e", + "sha256:fbbaea811a2bba171197b08eea288b9402faa2bab2ba0858eecdd0a4105753a3" ], "markers": "python_version >= '3.9'", - "version": "==3.11.9" + "version": "==3.11.10" }, "aiosignal": { "hashes": [ @@ -995,11 +995,11 @@ }, "six": { "hashes": [ - "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", - "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", + "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", - "version": "==1.16.0" + "version": "==1.17.0" }, "testcontainers-core": { "hashes": [ @@ -1227,72 +1227,72 @@ "develop": { "coverage": { "hashes": [ - "sha256:093896e530c38c8e9c996901858ac63f3d4171268db2c9c8b373a228f459bbc5", - "sha256:09b9f848b28081e7b975a3626e9081574a7b9196cde26604540582da60235fdf", - "sha256:0b0c69f4f724c64dfbfe79f5dfb503b42fe6127b8d479b2677f2b227478db2eb", - "sha256:13618bed0c38acc418896005732e565b317aa9e98d855a0e9f211a7ffc2d6638", - "sha256:13690e923a3932e4fad4c0ebfb9cb5988e03d9dcb4c5150b5fcbf58fd8bddfc4", - "sha256:177f01eeaa3aee4a5ffb0d1439c5952b53d5010f86e9d2667963e632e30082cc", - "sha256:193e3bffca48ad74b8c764fb4492dd875038a2f9925530cb094db92bb5e47bed", - "sha256:1defe91d41ce1bd44b40fabf071e6a01a5aa14de4a31b986aa9dfd1b3e3e414a", - "sha256:1f188a2402f8359cf0c4b1fe89eea40dc13b52e7b4fd4812450da9fcd210181d", - "sha256:202a2d645c5a46b84992f55b0a3affe4f0ba6b4c611abec32ee88358db4bb649", - "sha256:24eda3a24a38157eee639ca9afe45eefa8d2420d49468819ac5f88b10de84f4c", - "sha256:2e4e0f60cb4bd7396108823548e82fdab72d4d8a65e58e2c19bbbc2f1e2bfa4b", - "sha256:379c111d3558272a2cae3d8e57e6b6e6f4fe652905692d54bad5ea0ca37c5ad4", - "sha256:37cda8712145917105e07aab96388ae76e787270ec04bcb9d5cc786d7cbb8443", - "sha256:38c51297b35b3ed91670e1e4efb702b790002e3245a28c76e627478aa3c10d83", - "sha256:3985b9be361d8fb6b2d1adc9924d01dec575a1d7453a14cccd73225cb79243ee", - "sha256:3988665ee376abce49613701336544041f2117de7b7fbfe91b93d8ff8b151c8e", - "sha256:3ac47fa29d8d41059ea3df65bd3ade92f97ee4910ed638e87075b8e8ce69599e", - "sha256:3b4b4299dd0d2c67caaaf286d58aef5e75b125b95615dda4542561a5a566a1e3", - "sha256:3ea8bb1ab9558374c0ab591783808511d135a833c3ca64a18ec927f20c4030f0", - "sha256:3fe47da3e4fda5f1abb5709c156eca207eacf8007304ce3019eb001e7a7204cb", - "sha256:428ac484592f780e8cd7b6b14eb568f7c85460c92e2a37cb0c0e5186e1a0d076", - "sha256:44e6c85bbdc809383b509d732b06419fb4544dca29ebe18480379633623baafb", - "sha256:4674f0daa1823c295845b6a740d98a840d7a1c11df00d1fd62614545c1583787", - "sha256:4be32da0c3827ac9132bb488d331cb32e8d9638dd41a0557c5569d57cf22c9c1", - "sha256:4db3ed6a907b555e57cc2e6f14dc3a4c2458cdad8919e40b5357ab9b6db6c43e", - "sha256:5c52a036535d12590c32c49209e79cabaad9f9ad8aa4cbd875b68c4d67a9cbce", - "sha256:629a1ba2115dce8bf75a5cce9f2486ae483cb89c0145795603d6554bdc83e801", - "sha256:62a66ff235e4c2e37ed3b6104d8b478d767ff73838d1222132a7a026aa548764", - "sha256:63068a11171e4276f6ece913bde059e77c713b48c3a848814a6537f35afb8365", - "sha256:63c19702db10ad79151a059d2d6336fe0c470f2e18d0d4d1a57f7f9713875dcf", - "sha256:644ec81edec0f4ad17d51c838a7d01e42811054543b76d4ba2c5d6af741ce2a6", - "sha256:6535d996f6537ecb298b4e287a855f37deaf64ff007162ec0afb9ab8ba3b8b71", - "sha256:6f4548c5ead23ad13fb7a2c8ea541357474ec13c2b736feb02e19a3085fac002", - "sha256:716a78a342679cd1177bc8c2fe957e0ab91405bd43a17094324845200b2fddf4", - "sha256:74610105ebd6f33d7c10f8907afed696e79c59e3043c5f20eaa3a46fddf33b4c", - "sha256:768939f7c4353c0fac2f7c37897e10b1414b571fd85dd9fc49e6a87e37a2e0d8", - "sha256:86cffe9c6dfcfe22e28027069725c7f57f4b868a3f86e81d1c62462764dc46d4", - "sha256:8aae5aea53cbfe024919715eca696b1a3201886ce83790537d1c3668459c7146", - "sha256:8b2b8503edb06822c86d82fa64a4a5cb0760bb8f31f26e138ec743f422f37cfc", - "sha256:912e95017ff51dc3d7b6e2be158dedc889d9a5cc3382445589ce554f1a34c0ea", - "sha256:9a7b8ac36fd688c8361cbc7bf1cb5866977ece6e0b17c34aa0df58bda4fa18a4", - "sha256:9e89d5c8509fbd6c03d0dd1972925b22f50db0792ce06324ba069f10787429ad", - "sha256:ae270e79f7e169ccfe23284ff5ea2d52a6f401dc01b337efb54b3783e2ce3f28", - "sha256:b07c25d52b1c16ce5de088046cd2432b30f9ad5e224ff17c8f496d9cb7d1d451", - "sha256:b39e6011cd06822eb964d038d5dff5da5d98652b81f5ecd439277b32361a3a50", - "sha256:bd55f8fc8fa494958772a2a7302b0354ab16e0b9272b3c3d83cdb5bec5bd1779", - "sha256:c15b32a7aca8038ed7644f854bf17b663bc38e1671b5d6f43f9a2b2bd0c46f63", - "sha256:c1b4474beee02ede1eef86c25ad4600a424fe36cff01a6103cb4533c6bf0169e", - "sha256:c79c0685f142ca53256722a384540832420dff4ab15fec1863d7e5bc8691bdcc", - "sha256:c9ebfb2507751f7196995142f057d1324afdab56db1d9743aab7f50289abd022", - "sha256:d7ad66e8e50225ebf4236368cc43c37f59d5e6728f15f6e258c8639fa0dd8e6d", - "sha256:d82ab6816c3277dc962cfcdc85b1efa0e5f50fb2c449432deaf2398a2928ab94", - "sha256:d9fd2547e6decdbf985d579cf3fc78e4c1d662b9b0ff7cc7862baaab71c9cc5b", - "sha256:de38add67a0af869b0d79c525d3e4588ac1ffa92f39116dbe0ed9753f26eba7d", - "sha256:e19122296822deafce89a0c5e8685704c067ae65d45e79718c92df7b3ec3d331", - "sha256:e44961e36cb13c495806d4cac67640ac2866cb99044e210895b506c26ee63d3a", - "sha256:e4c81ed2820b9023a9a90717020315e63b17b18c274a332e3b6437d7ff70abe0", - "sha256:e683e6ecc587643f8cde8f5da6768e9d165cd31edf39ee90ed7034f9ca0eefee", - "sha256:f39e2f3530ed1626c66e7493be7a8423b023ca852aacdc91fb30162c350d2a92", - "sha256:f56f49b2553d7dd85fd86e029515a221e5c1f8cb3d9c38b470bc38bde7b8445a", - "sha256:fb9fc32399dca861584d96eccd6c980b69bbcd7c228d06fb74fe53e007aa8ef9" + "sha256:0824a28ec542a0be22f60c6ac36d679e0e262e5353203bea81d44ee81fe9c6d4", + "sha256:085161be5f3b30fd9b3e7b9a8c301f935c8313dcf928a07b116324abea2c1c2c", + "sha256:0ae1387db4aecb1f485fb70a6c0148c6cdaebb6038f1d40089b1fc84a5db556f", + "sha256:0d59fd927b1f04de57a2ba0137166d31c1a6dd9e764ad4af552912d70428c92b", + "sha256:0f957943bc718b87144ecaee70762bc2bc3f1a7a53c7b861103546d3a403f0a6", + "sha256:13a9e2d3ee855db3dd6ea1ba5203316a1b1fd8eaeffc37c5b54987e61e4194ae", + "sha256:1a330812d9cc7ac2182586f6d41b4d0fadf9be9049f350e0efb275c8ee8eb692", + "sha256:22be16571504c9ccea919fcedb459d5ab20d41172056206eb2994e2ff06118a4", + "sha256:2d10e07aa2b91835d6abec555ec8b2733347956991901eea6ffac295f83a30e4", + "sha256:35371f8438028fdccfaf3570b31d98e8d9eda8bb1d6ab9473f5a390969e98717", + "sha256:3c026eb44f744acaa2bda7493dad903aa5bf5fc4f2554293a798d5606710055d", + "sha256:41ff7b0da5af71a51b53f501a3bac65fb0ec311ebed1632e58fc6107f03b9198", + "sha256:4401ae5fc52ad8d26d2a5d8a7428b0f0c72431683f8e63e42e70606374c311a1", + "sha256:44349150f6811b44b25574839b39ae35291f6496eb795b7366fef3bd3cf112d3", + "sha256:447af20e25fdbe16f26e84eb714ba21d98868705cb138252d28bc400381f6ffb", + "sha256:4a8d8977b0c6ef5aeadcb644da9e69ae0dcfe66ec7f368c89c72e058bd71164d", + "sha256:4e12ae8cc979cf83d258acb5e1f1cf2f3f83524d1564a49d20b8bec14b637f08", + "sha256:592ac539812e9b46046620341498caf09ca21023c41c893e1eb9dbda00a70cbf", + "sha256:5e6b86b5847a016d0fbd31ffe1001b63355ed309651851295315031ea7eb5a9b", + "sha256:608a7fd78c67bee8936378299a6cb9f5149bb80238c7a566fc3e6717a4e68710", + "sha256:61f70dc68bd36810972e55bbbe83674ea073dd1dcc121040a08cdf3416c5349c", + "sha256:65dad5a248823a4996724a88eb51d4b31587aa7aa428562dbe459c684e5787ae", + "sha256:777abfab476cf83b5177b84d7486497e034eb9eaea0d746ce0c1268c71652077", + "sha256:7e216d8044a356fc0337c7a2a0536d6de07888d7bcda76febcb8adc50bdbbd00", + "sha256:85d9636f72e8991a1706b2b55b06c27545448baf9f6dbf51c4004609aacd7dcb", + "sha256:899b8cd4781c400454f2f64f7776a5d87bbd7b3e7f7bda0cb18f857bb1334664", + "sha256:8a289d23d4c46f1a82d5db4abeb40b9b5be91731ee19a379d15790e53031c014", + "sha256:8d2dfa71665a29b153a9681edb1c8d9c1ea50dfc2375fb4dac99ea7e21a0bcd9", + "sha256:8e3c3e38930cfb729cb8137d7f055e5a473ddaf1217966aa6238c88bd9fd50e6", + "sha256:8f8770dfc6e2c6a2d4569f411015c8d751c980d17a14b0530da2d7f27ffdd88e", + "sha256:932fc826442132dde42ee52cf66d941f581c685a6313feebed358411238f60f9", + "sha256:96d636c77af18b5cb664ddf12dab9b15a0cfe9c0bde715da38698c8cea748bfa", + "sha256:97ddc94d46088304772d21b060041c97fc16bdda13c6c7f9d8fcd8d5ae0d8611", + "sha256:98caba4476a6c8d59ec1eb00c7dd862ba9beca34085642d46ed503cc2d440d4b", + "sha256:9901d36492009a0a9b94b20e52ebfc8453bf49bb2b27bca2c9706f8b4f5a554a", + "sha256:99e266ae0b5d15f1ca8d278a668df6f51cc4b854513daab5cae695ed7b721cf8", + "sha256:9c38bf15a40ccf5619fa2fe8f26106c7e8e080d7760aeccb3722664c8656b030", + "sha256:a27801adef24cc30871da98a105f77995e13a25a505a0161911f6aafbd66e678", + "sha256:abd3e72dd5b97e3af4246cdada7738ef0e608168de952b837b8dd7e90341f015", + "sha256:adb697c0bd35100dc690de83154627fbab1f4f3c0386df266dded865fc50a902", + "sha256:b12c6b18269ca471eedd41c1b6a1065b2f7827508edb9a7ed5555e9a56dcfc97", + "sha256:b9389a429e0e5142e69d5bf4a435dd688c14478a19bb901735cdf75e57b13845", + "sha256:ba9e7484d286cd5a43744e5f47b0b3fb457865baf07bafc6bee91896364e1419", + "sha256:bb5555cff66c4d3d6213a296b360f9e1a8e323e74e0426b6c10ed7f4d021e464", + "sha256:be57b6d56e49c2739cdf776839a92330e933dd5e5d929966fbbd380c77f060be", + "sha256:c69e42c892c018cd3c8d90da61d845f50a8243062b19d228189b0224150018a9", + "sha256:ccc660a77e1c2bf24ddbce969af9447a9474790160cfb23de6be4fa88e3951c7", + "sha256:d5275455b3e4627c8e7154feaf7ee0743c2e7af82f6e3b561967b1cca755a0be", + "sha256:d75cded8a3cff93da9edc31446872d2997e327921d8eed86641efafd350e1df1", + "sha256:d872ec5aeb086cbea771c573600d47944eea2dcba8be5f3ee649bfe3cb8dc9ba", + "sha256:d891c136b5b310d0e702e186d70cd16d1119ea8927347045124cb286b29297e5", + "sha256:db1dab894cc139f67822a92910466531de5ea6034ddfd2b11c0d4c6257168073", + "sha256:e28bf44afa2b187cc9f41749138a64435bf340adfcacb5b2290c070ce99839d4", + "sha256:e5ea1cf0872ee455c03e5674b5bca5e3e68e159379c1af0903e89f5eba9ccc3a", + "sha256:e77363e8425325384f9d49272c54045bbed2f478e9dd698dbc65dbc37860eb0a", + "sha256:ee5defd1733fd6ec08b168bd4f5387d5b322f45ca9e0e6c817ea6c4cd36313e3", + "sha256:f1592791f8204ae9166de22ba7e6705fa4ebd02936c09436a1bb85aabca3e599", + "sha256:f2d1ec60d6d256bdf298cb86b78dd715980828f50c46701abc3b0a2b3f8a0dc0", + "sha256:f3ca78518bc6bc92828cd11867b121891d75cae4ea9e908d72030609b996db1b", + "sha256:f7b15f589593110ae767ce997775d645b47e5cbbf54fd322f8ebea6277466cec", + "sha256:fd1213c86e48dfdc5a0cc676551db467495a95a662d2396ecd58e719191446e1", + "sha256:ff74026a461eb0660366fb01c650c1d00f833a086b336bdad7ab00cc952072b3" ], "index": "pypi", "markers": "python_version >= '3.9'", - "version": "==7.6.8" + "version": "==7.6.9" }, "iniconfig": { "hashes": [ diff --git a/dbrepo-search-service/init/database.json b/dbrepo-search-service/init/database.json index 1e6bdd0c4c..caba2e16cd 100644 --- a/dbrepo-search-service/init/database.json +++ b/dbrepo-search-service/init/database.json @@ -530,6 +530,9 @@ "is_public": { "type": "boolean" }, + "is_schema_public": { + "type": "boolean" + }, "name": { "type": "text", "fields": { @@ -796,6 +799,9 @@ "is_public": { "type": "boolean" }, + "is_schema_public": { + "type": "boolean" + }, "is_versioned": { "type": "boolean" }, @@ -1210,6 +1216,9 @@ "is_public": { "type": "boolean" }, + "is_schema_public": { + "type": "boolean" + }, "last_modified": { "type": "date" }, 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 new file mode 100644 index 0000000000000000000000000000000000000000..4d97fc82b85e61e053b9a4f209e316730331a85a GIT binary patch literal 39597 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 C@q1<f 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 new file mode 100644 index 0000000000000000000000000000000000000000..4d97fc82b85e61e053b9a4f209e316730331a85a GIT binary patch literal 39597 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 C@q1<f literal 0 HcmV?d00001 diff --git a/dbrepo-ui/components/TimeDrift.vue b/dbrepo-ui/components/TimeDrift.vue index 362fa28aaf..2f2555f9f8 100644 --- a/dbrepo-ui/components/TimeDrift.vue +++ b/dbrepo-ui/components/TimeDrift.vue @@ -4,7 +4,6 @@ v-if="timestamp && offSeconds > 3" class="banner" border="start" - tile type="warning"> {{ $t('error.data.drift') + ' ' + offSeconds + 's' }} </v-alert> diff --git a/dbrepo-ui/components/database/DatabaseCreate.vue b/dbrepo-ui/components/database/DatabaseCreate.vue index 5da87cebbd..40ab3837b9 100644 --- a/dbrepo-ui/components/database/DatabaseCreate.vue +++ b/dbrepo-ui/components/database/DatabaseCreate.vue @@ -17,7 +17,7 @@ <v-row dense> <v-col> <v-text-field - v-model="createDatabaseDto.name" + v-model="payload.name" name="database" :variant="inputVariant" :label="$t('pages.database.subpages.create.name.label')" @@ -45,10 +45,6 @@ :rules="[v => !!v || $t('validation.required')]" return-object required> - <template - v-slot:selection> - <span>{{ engine.name }}</span> - </template> <template v-if="engine" v-slot:details> @@ -57,6 +53,42 @@ </v-select> </v-col> </v-row> + <v-row> + <v-col + md="6"> + <v-select + v-model="payload.is_public" + name="public" + :label="$t('pages.database.subpages.create.data.label')" + :hint="$t('pages.database.subpages.create.data.hint')" + persistent-hint + :variant="inputVariant" + :items="visibilityOptions" + item-title="name" + item-value="value" + :rules="[v => !!v || $t('validation.required')]" + return-object + required> + </v-select> + </v-col> + <v-col + md="6"> + <v-select + v-model="payload.is_schema_public" + name="schema-public" + :label="$t('pages.database.subpages.create.schema.label')" + :hint="$t('pages.database.subpages.create.schema.hint')" + persistent-hint + :variant="inputVariant" + :items="visibilityOptions" + item-title="name" + item-value="value" + :rules="[v => !!v || $t('validation.required')]" + return-object + required> + </v-select> + </v-col> + </v-row> </v-card-text> <v-card-actions> <v-spacer /> @@ -91,9 +123,20 @@ export default { loadingContainers: false, engine: null, engines: [], - createDatabaseDto: { + visibilityOptions: [ + { + name: this.$t('toolbars.database.public'), + value: true + }, + { + name: this.$t('toolbars.database.private'), + value: false + } + ], + payload: { name: null, - is_public: true + is_public: true, + is_schema_public: true, } } }, @@ -144,10 +187,10 @@ export default { }) }, create () { - const payload = { container_id: this.engine.id, name: this.createDatabaseDto.name, is_public: true } - const databaseService = useDatabaseService() this.loading = true - databaseService.create(payload) + this.payload.container_id = this.engine.id + const databaseService = useDatabaseService() + databaseService.create(this.payload) .then(async (database) => { await this.$router.push(`/database/${database.id}/info`) this.loading = false diff --git a/dbrepo-ui/composables/view-service.ts b/dbrepo-ui/composables/view-service.ts index 5b3a25a149..c870402dfb 100644 --- a/dbrepo-ui/composables/view-service.ts +++ b/dbrepo-ui/composables/view-service.ts @@ -34,6 +34,22 @@ export const useViewService = (): any => { }) } + async function update(databaseId: number, viewId: number, payload: ViewUpdateDto): Promise<ViewDto> { + const axios = useAxiosInstance() + console.debug('update view with id', viewId) + return new Promise<ViewDto>((resolve, reject) => { + axios.post<ViewDto>(`/api/database/${databaseId}/view/${viewId}`, payload) + .then((response) => { + console.info('Update view with id', viewId) + resolve(response.data) + }) + .catch((error) => { + console.error('Failed to update view', error) + reject(axiosErrorToApiError(error)) + }) + }) + } + async function reExecuteData(databaseId: number, viewId: number, page: number | null, size: number | null): Promise<QueryResultDto> { const axios = useAxiosInstance() console.debug('re-execute view with id', viewId, 'in database with id', databaseId) @@ -89,5 +105,5 @@ export const useViewService = (): any => { }) } - return {remove, create, reExecuteData, reExecuteCount, exportData} + return {remove, create, update, reExecuteData, reExecuteCount, exportData} } diff --git a/dbrepo-ui/dto/index.ts b/dbrepo-ui/dto/index.ts index ba4c413042..a11cb5ccb7 100644 --- a/dbrepo-ui/dto/index.ts +++ b/dbrepo-ui/dto/index.ts @@ -378,6 +378,7 @@ interface DatabaseModifyAccessDto { interface DatabaseModifyVisibilityDto { is_public: boolean; + is_schema_public: boolean; } interface DatabaseTransferDto { @@ -394,6 +395,10 @@ interface ViewCreateDto { is_public: boolean; } +interface ViewUpdateDto { + is_public: boolean; +} + interface QueryDto { id: number; creator: UserDto; diff --git a/dbrepo-ui/locales/en-US.json b/dbrepo-ui/locales/en-US.json index 8b6807bdbf..b775fedeeb 100644 --- a/dbrepo-ui/locales/en-US.json +++ b/dbrepo-ui/locales/en-US.json @@ -289,6 +289,12 @@ "read": "You can read all contents of this table" } }, + "visibility": { + "title": "Visibility", + "public": "Open", + "mixed": "Data is public", + "private": "Closed" + }, "description": { "title": "Description", "empty": "(no description)" @@ -591,7 +597,10 @@ "title": "Internal Name" }, "visibility": { - "title": "Visibility" + "title": "Visibility", + "public": "Open", + "mixed": "Data is public", + "private": "Closed" }, "size": { "title": "Size" @@ -640,6 +649,14 @@ "label": "Engine", "hint": "Required" }, + "data": { + "label": "Data Visibility", + "hint": "Required" + }, + "schema": { + "label": "Schema Visibility", + "hint": "Required" + }, "submit": { "text": "Create" }, @@ -696,10 +713,16 @@ }, "visibility": { "title": "Visibility", - "subtitle": "Private databases hide the data while metadata is still visible. Public databases are fully transparent", - "visibility": { - "label": "Database Visibility", - "hint": "Required" + "subtitle": "", + "data": { + "label": "Data Visibility", + "hint": "Required", + "help": "Public = visible to anyone, Private = visible only to designated users" + }, + "schema": { + "label": "Schema Visibility", + "hint": "Required", + "help": "Public = visible to anyone, Private = visible only to designated users" }, "submit": { "text": "Modify" diff --git a/dbrepo-ui/pages/database/[database_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/info.vue index d012f7ef34..e05722b493 100644 --- a/dbrepo-ui/pages/database/[database_id]/info.vue +++ b/dbrepo-ui/pages/database/[database_id]/info.vue @@ -60,9 +60,7 @@ <v-list-item :title="$t('pages.database.visibility.title')" density="compact"> - <div> - {{ database.is_public ? 'Public' : 'Private' }} - </div> + {{ databaseVisibility }} </v-list-item> <v-list-item :title="$t('pages.database.size.title')" @@ -370,6 +368,18 @@ export default { this.database.tables.forEach((t) => { sum += t.data_length }) return sizeToHumanLabel(sum) }, + databaseVisibility () { + if (!this.database) { + return null + } + if (this.database.is_public && this.database.is_schema_public) { + return this.$t('pages.database.visibility.open') + } + if (!this.database.is_public && !this.database.is_schema_public) { + return this.$t('pages.database.visibility.closed') + } + return this.$t('pages.database.visibility.mixed') + }, previewImage () { if (!this.database) { return null diff --git a/dbrepo-ui/pages/database/[database_id]/settings.vue b/dbrepo-ui/pages/database/[database_id]/settings.vue index 65dd3b03bf..b3d5b63461 100644 --- a/dbrepo-ui/pages/database/[database_id]/settings.vue +++ b/dbrepo-ui/pages/database/[database_id]/settings.vue @@ -138,10 +138,50 @@ v-model="modifyVisibility.is_public" :items="visibility" :variant="inputVariant" - :label="$t('pages.database.subpages.settings.visibility.visibility.label')" - :hint="$t('pages.database.subpages.settings.visibility.visibility.hint')" + :label="$t('pages.database.subpages.settings.visibility.data.label')" + :hint="$t('pages.database.subpages.settings.visibility.data.hint')" persistent-hint - name="visibility" /> + name="visibility"> + <template + v-slot:append> + <v-tooltip + location="bottom"> + <template + v-slot:activator="{ props }"> + <v-icon + v-bind="props" + icon="mdi-help-circle-outline" /> + </template> + {{ $t('pages.database.subpages.settings.visibility.data.help') }} + </v-tooltip> + </template> + </v-select> + </v-col> + </v-row> + <v-row> + <v-col md="8"> + <v-select + v-model="modifyVisibility.is_schema_public" + :items="visibility" + :variant="inputVariant" + :label="$t('pages.database.subpages.settings.visibility.schema.label')" + :hint="$t('pages.database.subpages.settings.visibility.schema.hint')" + persistent-hint + name="schema-visibility"> + <template + v-slot:append> + <v-tooltip + location="bottom"> + <template + v-slot:activator="{ props }"> + <v-icon + v-bind="props" + icon="mdi-help-circle-outline" /> + </template> + {{ $t('pages.database.subpages.settings.visibility.schema.help') }} + </v-tooltip> + </template> + </v-select> </v-col> </v-row> <v-row> @@ -253,7 +293,8 @@ export default { editAccessDialog: false, editVisibilityDialog: false, modifyVisibility: { - is_public: null + is_public: null, + is_schema_public: null }, modifyOwner: { id: null @@ -349,7 +390,7 @@ export default { if (!this.modifyVisibility || !this.database) { return false } - return this.modifyVisibility.is_public === this.database.is_public + return this.modifyVisibility.is_public === this.database.is_public && this.modifyVisibility.is_schema_public === this.database.is_schema_public }, canModifyVisibility () { if (!this.isOwner) { @@ -434,6 +475,7 @@ export default { return } this.modifyVisibility.is_public = this.database.is_public + this.modifyVisibility.is_schema_public = this.database.is_schema_public this.modifyOwner.id = this.database.owner.id }, methods: { 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 e109a7db3e..ff87b3ff3a 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 @@ -36,6 +36,10 @@ :title="$t('pages.table.name.title')"> {{ table.internal_name }} </v-list-item> + <v-list-item + :title="$t('pages.table.visibility.title')"> + {{ databaseVisibility }} + </v-list-item> <v-list-item :title="$t('pages.table.size.title')"> {{ sizeToHumanLabel(table.data_length) }} @@ -73,7 +77,7 @@ </v-badge> <span v-else> - {{ accessDescription}} + {{ accessDescription }} </span> </span> </v-list-item> @@ -131,11 +135,6 @@ variant="flat"> <v-card-text> <v-list dense> - <v-list-item - v-if="database" - :title="$t('pages.database.visibility.title')"> - {{ database.is_public ? $t('toolbars.database.public') : $t('toolbars.database.private') }} - </v-list-item> <v-list-item v-if="database" :title="$t('pages.database.name.title')"> @@ -321,6 +320,18 @@ export default { } else if (this.canRead) { return this.$t('pages.table.connection.permissions.read') } + }, + databaseVisibility () { + if (!this.database) { + return null + } + if (this.database.is_public && this.table.is_schema_public) { + return this.$t('pages.table.visibility.open') + } + if (!this.database.is_public && !this.table.is_schema_public) { + return this.$t('pages.table.visibility.closed') + } + return this.$t('pages.table.visibility.mixed') } } } 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 57f943f22b..458294d1c7 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/create/schema.vue @@ -273,10 +273,7 @@ export default { .catch(({code, message}) => { this.loading = false const toast = useToastInstance() - if (typeof code !== 'string') { - return - } - toast.error(message) + toast.error(this.$t(`${code}: ${message}`)) }) .finally(() => { this.loading = false diff --git a/helm/dbrepo/Chart.yaml b/helm/dbrepo/Chart.yaml index abb0c1821a..19585b20f9 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.5.2" -appVersion: "1.5.2" +version: "1.6.0" +appVersion: "1.6.0" keywords: - dbrepo maintainers: diff --git a/helm/dbrepo/README.md b/helm/dbrepo/README.md index 759e67bf43..f8c6b12d75 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.5.2" +helm install my-release "oci://registry.datalab.tuwien.ac.at/dbrepo/helm/dbrepo" --values ./values.yaml --version "1.6.0" ``` ## 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.5.2" +helm install my-release "oci://oci://registry.datalab.tuwien.ac.at/dbrepo/helm" --values ./values.yaml --version "1.6.0" ``` 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 1a122d2fe3..b4f253a182 100644 --- a/helm/dbrepo/values.yaml +++ b/helm/dbrepo/values.yaml @@ -369,7 +369,7 @@ analyseservice: enabled: true image: ## @skip analyseservice.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.5.2 + name: registry.datalab.tuwien.ac.at/dbrepo/analyse-service:1.6.0 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod podSecurityContext: ## @param analyseservice.podSecurityContext.enabled Enable pods' Security Context @@ -430,7 +430,7 @@ metadataservice: enabled: true image: ## @skip metadataservice.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.5.2 + name: registry.datalab.tuwien.ac.at/dbrepo/metadata-service:1.6.0 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod podSecurityContext: ## @param metadataservice.podSecurityContext.enabled Enable pods' Security Context @@ -527,7 +527,7 @@ dataservice: endpoint: http://data-service image: ## @skip dataservice.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.5.2 + name: registry.datalab.tuwien.ac.at/dbrepo/data-service:1.6.0 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod podSecurityContext: ## @param dataservice.podSecurityContext.enabled Enable pods' Security Context @@ -613,7 +613,7 @@ searchservice: endpoint: http://search-service image: ## @skip searchservice.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.5.2 + name: registry.datalab.tuwien.ac.at/dbrepo/search-service:1.6.0 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod podSecurityContext: ## @param searchservice.podSecurityContext.enabled Enable pods' Security Context @@ -660,7 +660,7 @@ searchservice: init: image: ## @skip searchservice.init.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.5.2 + name: registry.datalab.tuwien.ac.at/dbrepo/search-service-init:1.6.0 ## @param searchservice.init.resourcesPreset The container resource preset resourcesPreset: "nano" ## @param searchservice.init.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads) @@ -721,7 +721,7 @@ storageservice: init: image: ## @skip storageservice.init.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.5.2 + name: registry.datalab.tuwien.ac.at/dbrepo/storage-service-init:1.6.0 ## @param storageservice.init.resourcesPreset The container resource preset resourcesPreset: "nano" ## @param storageservice.init.resources Set container requests and limits for different resources like CPU or memory (essential for production workloads) @@ -827,7 +827,7 @@ ui: enabled: true image: ## @skip ui.image.name - name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.5.2 + name: registry.datalab.tuwien.ac.at/dbrepo/ui:1.6.0 ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod podSecurityContext: ## @param ui.podSecurityContext.enabled Enable pods' Security Context diff --git a/install.sh b/install.sh index 12a20e9868..1e7520e29b 100644 --- a/install.sh +++ b/install.sh @@ -1,7 +1,7 @@ #!/bin/bash # preset -VERSION="1.5.2" +VERSION="1.6.0" MIN_CPU=8 MIN_RAM=4 MIN_MAP_COUNT=262144 diff --git a/lib/python/dbrepo/RestClient.py b/lib/python/dbrepo/RestClient.py index b80daff7d0..985b971aff 100644 --- a/lib/python/dbrepo/RestClient.py +++ b/lib/python/dbrepo/RestClient.py @@ -28,7 +28,7 @@ class RestClient: :param username: The REST API username. Optional. :param password: The REST API password. Optional. :param secure: When set to false, the requests library will not verify the authenticity of your TLS/SSL - certificates (i.e. when using self-signed certificates). Default: true. + certificates (i.e. when using self-signed certificates). Default: `True`. """ endpoint: str = None username: str = None @@ -431,14 +431,15 @@ class RestClient: raise ResponseCodeError(f'Failed to find database: response code: {response.status_code} is not ' f'200 (OK): {response.text}') - def create_database(self, name: str, container_id: int, is_public: bool) -> Database: + def create_database(self, name: str, container_id: int, is_public: bool = True, + is_schema_public: bool = True) -> Database: """ Create a databases in a container with given container id. :param name: The name of the database. :param container_id: The container id. - :param is_public: The visibility of the database. If set to true everything will be visible, otherwise only - the metadata (schema, identifiers) will be visible to the public. + :param is_public: The visibility of the data. If set to true the data will be publicly visible. Optional. Default: `True`. + :param is_schema_public: The visibility of the schema metadata. If set to true the schema metadata will be publicly visible. Optional. Default: `True`. :returns: The database, if successful. @@ -452,7 +453,8 @@ class RestClient: """ url = f'/api/database' response = self._wrapper(method="post", url=url, force_auth=True, - payload=CreateDatabase(name=name, container_id=container_id, is_public=is_public)) + payload=CreateDatabase(name=name, container_id=container_id, is_public=is_public, + is_schema_public=is_schema_public)) if response.status_code == 201: body = response.json() return Database.model_validate(body) @@ -487,7 +489,7 @@ class RestClient: :param privileged_username: The container privileged user username. :param privileged_password: The container privileged user password. :param port: The container port bound to the host. Optional. - :param ui_host: The container hostname displayed in the user interface. Optional. Default: value of `host` + :param ui_host: The container hostname displayed in the user interface. Optional. Default: value of `host`. :param ui_port: The container port displayed in the user interface. Optional. Default: `default_port` of image. :returns: The container, if successful. @@ -519,13 +521,13 @@ class RestClient: raise ResponseCodeError(f'Failed to create container: response code: {response.status_code} is not ' f'201 (CREATED): {response.text}') - def update_database_visibility(self, database_id: int, is_public: bool) -> Database: + def update_database_visibility(self, database_id: int, is_public: bool, is_schema_public: bool) -> Database: """ Updates the database visibility of a database with given database id. :param database_id: The database id. - :param is_public: The visibility of the database. If set to true everything will be visible, otherwise only - the metadata (schema, identifiers) will be visible to the public. + :param is_public: The visibility of the data. If set to true the data will be publicly visible. + :param is_schema_public: The visibility of the schema metadata. If set to true the schema metadata will be publicly visible. :returns: The database, if successful. @@ -537,7 +539,8 @@ class RestClient: :raises ResponseCodeError: If something went wrong with the update. """ url = f'/api/database/{database_id}' - response = self._wrapper(method="put", url=url, force_auth=True, payload=ModifyVisibility(is_public=is_public)) + response = self._wrapper(method="put", url=url, force_auth=True, + payload=ModifyVisibility(is_public=is_public, is_schema_public=is_schema_public)) if response.status_code == 202: body = response.json() return Database.model_validate(body) @@ -882,6 +885,32 @@ 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: + """ + Get a view of a database with given database id and view id. + + :param database_id: The database id. + :param view_id: The view id. + :param is_public: If set to `True`, the view is publicly visible. + + :returns: The view, if successful. + + :raises ForbiddenError: If something went wrong with the authorization. + :raises NotExistsError: If the container does not exist. + :raises ResponseCodeError: If something went wrong with the retrieval. + """ + url = f'/api/database/{database_id}/view/{view_id}' + 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) + if response.status_code == 403: + raise ForbiddenError(f'Failed to update view: not allowed') + if response.status_code == 404: + raise NotExistsError(f'Failed to update view: not found') + raise ResponseCodeError(f'Failed to update view: response code: {response.status_code} is not ' + f'202 (ACCEPTED): {response.text}') + def create_view(self, database_id: int, name: str, query: str, is_public: bool) -> View: """ Create a view in a database with given database id. @@ -1197,7 +1226,7 @@ class RestClient: :param file_path: The path of the file that is imported on the storage service. :param separator: The csv column separator. :param upload: If set to true, the file from file_path will be uploaded, otherwise no upload will be performed \ - and the file_path will be treated as S3 filename and analysed instead. Optional. Default: true. + and the file_path will be treated as S3 filename and analysed instead. Optional. Default: `True`. :returns: The determined ranking of the primary key candidates, if successful. @@ -1326,8 +1355,8 @@ class RestClient: :param database_id: The database id. :param table_id: The table id. - :param page: The result pagination number. Optional. Default: 0. - :param size: The result pagination size. Optional. Default: 10. + :param page: The result pagination number. Optional. Default: `0`. + :param size: The result pagination size. Optional. Default: `10`. :param timestamp: The query execution time. Optional. :returns: The result of the view query, if successful. @@ -1559,10 +1588,10 @@ class RestClient: :param database_id: The database id. :param query: The query statement. - :param page: The result pagination number. Optional. Default: 0. - :param size: The result pagination size. Optional. Default: 10. + :param page: The result pagination number. Optional. Default: `0`. + :param size: The result pagination size. Optional. Default: `10`. :param timestamp: The timestamp at which the data validity is set. Optional. Default: <current timestamp>. - :param df: If true, the result is returned as Pandas DataFrame. Optional. Default: False. + :param df: If true, the result is returned as Pandas DataFrame. Optional. Default: `False`. :returns: The result set, if successful. @@ -1612,10 +1641,10 @@ class RestClient: :param database_id: The database id. :param subset_id: The subset id. - :param page: The result pagination number. Optional. Default: 0. - :param size: The result pagination size. Optional. Default: 10. - :param size: The result pagination size. Optional. Default: 10. - :param df: If true, the result is returned as Pandas DataFrame. Optional. Default: False. + :param page: The result pagination number. Optional. Default: `0`. + :param size: The result pagination size. Optional. Default: `10`. + :param size: The result pagination size. Optional. Default: `10`. + :param df: If true, the result is returned as Pandas DataFrame. Optional.Optional. Default: `False`. :returns: The result set, if successful. @@ -1653,8 +1682,8 @@ class RestClient: :param database_id: The database id. :param subset_id: The subset id. - :param page: The result pagination number. Optional. Default: 0. - :param size: The result pagination size. Optional. Default: 10. + :param page: The result pagination number. Optional. Default: `0`. + :param size: The result pagination size. Optional. Default: `10`. :returns: The result set, if successful. diff --git a/lib/python/dbrepo/api/dto.py b/lib/python/dbrepo/api/dto.py index 4de986e870..525864fc4d 100644 --- a/lib/python/dbrepo/api/dto.py +++ b/lib/python/dbrepo/api/dto.py @@ -46,6 +46,11 @@ class CreateDatabase(BaseModel): name: str container_id: int is_public: bool + is_schema_public: bool + + +class UpdateView(BaseModel): + is_public: bool class CreateContainer(BaseModel): @@ -486,6 +491,7 @@ class UpdateColumn(BaseModel): class ModifyVisibility(BaseModel): is_public: bool + is_schema_public: bool class ModifyOwner(BaseModel): @@ -874,8 +880,8 @@ class DataType(BaseModel): display_name: str value: str documentation: str - is_quoted: bool - is_buildable: bool + is_quoted: bool + is_buildable: bool size_min: Optional[int] = None size_max: Optional[int] = None size_default: Optional[int] = None @@ -884,8 +890,8 @@ class DataType(BaseModel): d_max: Optional[int] = None d_default: Optional[int] = None d_required: Optional[bool] = None - data_hint: Optional[str] = None - type_hint: Optional[str] = None + data_hint: Optional[str] = None + type_hint: Optional[str] = None class Column(BaseModel): diff --git a/lib/python/pyproject.toml b/lib/python/pyproject.toml index e032c5edfe..d6c33c6d01 100644 --- a/lib/python/pyproject.toml +++ b/lib/python/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "dbrepo" -version = "1.5.2" +version = "1.6.0" description = "DBRepo Python Library" keywords = [ "DBRepo", diff --git a/lib/python/setup.py b/lib/python/setup.py index 50be6c428a..fadd15e30e 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.5.2", + version="1.6.0", description="A library for communicating with DBRepo", url="https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/1.5/", author="Martin Weise", diff --git a/sonar-project.properties b/sonar-project.properties index 54228d8d4c..fdbf030ef0 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.5.2 +sonar.projectVersion=1.6.0 # general sonar.qualitygate.wait=true sonar.projectCreation.mainBranchName=master -- GitLab From 8b37f4da369937c9e7b89cd45b89f9f2c846c034 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Sun, 8 Dec 2024 17:25:07 +0100 Subject: [PATCH 02/12] WIP --- .../service/SchemaServiceIntegrationTest.java | 15 -- .../service/SubsetServiceIntegrationTest.java | 24 +- .../service/ViewServiceIntegrationTest.java | 1 - .../java/at/tuwien/mapper/DataMapper.java | 7 +- .../java/at/tuwien/mapper/MetadataMapper.java | 4 + .../java/at/tuwien/service/SubsetService.java | 3 +- .../impl/SubsetServiceMariaDbImpl.java | 10 +- .../service/impl/ViewServiceMariaDbImpl.java | 1 - dbrepo-metadata-db/1_setup-schema.sql | 14 +- .../api/container/ContainerBriefDto.java | 5 - .../at/tuwien/api/container/ContainerDto.java | 5 - .../internal/PrivilegedContainerDto.java | 5 - .../api/database/DatabaseAccessDto.java | 8 +- .../at/tuwien/api/database/DatabaseDto.java | 10 +- .../at/tuwien/api/database/LoadFileDto.java | 2 +- .../at/tuwien/api/database/ViewBriefDto.java | 4 +- .../java/at/tuwien/api/database/ViewDto.java | 12 +- .../internal/PrivilegedDatabaseDto.java | 26 +- .../database/internal/PrivilegedViewDto.java | 12 +- .../database/query/ExecuteStatementDto.java | 2 +- .../tuwien/api/database/query/ExportDto.java | 2 +- .../tuwien/api/database/query/ImportDto.java | 2 +- .../api/database/query/QueryBriefDto.java | 17 +- .../tuwien/api/database/query/QueryDto.java | 17 +- .../api/database/query/SaveStatementDto.java | 2 +- .../tuwien/api/database/table/TableDto.java | 8 - .../api/database/table/TableHistoryDto.java | 6 +- .../api/database/table/TupleDeleteDto.java | 2 +- .../api/database/table/TupleUpdateDto.java | 4 +- .../table/columns/ColumnBriefDto.java | 10 +- .../table/columns/concepts/ConceptDto.java | 5 - .../table/columns/concepts/UnitDto.java | 5 - .../table/internal/PrivilegedTableDto.java | 8 - .../api/identifier/IdentifierBriefDto.java | 11 - .../tuwien/api/identifier/IdentifierDto.java | 13 +- .../api/identifier/RelatedIdentifierDto.java | 5 - .../at/tuwien/api/semantics/OntologyDto.java | 7 - .../at/tuwien/entities/database/Database.java | 11 - .../at/tuwien/entities/database/View.java | 8 +- .../tuwien/entities/database/table/Table.java | 17 +- .../entities/identifier/Identifier.java | 6 +- .../java/at/tuwien/mapper/MetadataMapper.java | 3 + .../impl/SearchServiceGatewayImpl.java | 6 +- .../java/at/tuwien/test/AbstractUnitTest.java | 12 +- .../main/java/at/tuwien/test/BaseTest.java | 236 ++++++----------- dbrepo-search-service/init/database.json | 241 ++++++++++-------- lib/python/dbrepo/api/dto.py | 34 +-- 47 files changed, 319 insertions(+), 549 deletions(-) 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 index 23503384b6..4a4cfb8057 100644 --- 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 @@ -107,7 +107,6 @@ public class SchemaServiceIntegrationTest extends AbstractUnitTest { assertEquals(DATABASE_2_ID, response.getTdbid()); assertTrue(response.getIsVersioned()); assertEquals(DATABASE_2_PUBLIC, response.getIsPublic()); - assertEquals(DATABASE_2_OWNER, response.getCreatedBy()); assertNotNull(response.getCreator()); assertEquals(DATABASE_2_OWNER, response.getCreator().getId()); assertEquals(USER_2_NAME, response.getCreator().getName()); @@ -115,12 +114,6 @@ public class SchemaServiceIntegrationTest extends AbstractUnitTest { assertEquals(USER_2_FIRSTNAME, response.getCreator().getFirstname()); assertEquals(USER_2_LASTNAME, response.getCreator().getLastname()); assertEquals(USER_2_QUALIFIED_NAME, response.getCreator().getQualifiedName()); - assertNotNull(response.getCreator().getAttributes()); - assertEquals(USER_2_AFFILIATION, response.getCreator().getAttributes().getAffiliation()); - assertEquals(USER_2_THEME, response.getCreator().getAttributes().getTheme()); - assertEquals(USER_2_LANGUAGE, response.getCreator().getAttributes().getLanguage()); - assertEquals(USER_2_ORCID_URL, response.getCreator().getAttributes().getOrcid()); - assertNull(response.getCreator().getAttributes().getMariadbPassword()); final List<IdentifierDto> identifiers = response.getIdentifiers(); assertNotNull(identifiers); assertEquals(0, identifiers.size()); @@ -147,7 +140,6 @@ public class SchemaServiceIntegrationTest extends AbstractUnitTest { assertEquals(DATABASE_1_ID, response.getTdbid()); assertTrue(response.getIsVersioned()); assertEquals(DATABASE_1_PUBLIC, response.getIsPublic()); - assertEquals(DATABASE_1_OWNER, response.getCreatedBy()); assertNotNull(response.getCreator()); assertEquals(DATABASE_1_OWNER, response.getCreator().getId()); assertEquals(USER_1_NAME, response.getCreator().getName()); @@ -155,12 +147,6 @@ public class SchemaServiceIntegrationTest extends AbstractUnitTest { assertEquals(USER_1_FIRSTNAME, response.getCreator().getFirstname()); assertEquals(USER_1_LASTNAME, response.getCreator().getLastname()); assertEquals(USER_1_QUALIFIED_NAME, response.getCreator().getQualifiedName()); - assertNotNull(response.getCreator().getAttributes()); - assertEquals(USER_1_AFFILIATION, response.getCreator().getAttributes().getAffiliation()); - assertEquals(USER_1_THEME, response.getCreator().getAttributes().getTheme()); - assertEquals(USER_1_LANGUAGE, response.getCreator().getAttributes().getLanguage()); - assertEquals(USER_1_ORCID_UNCOMPRESSED, response.getCreator().getAttributes().getOrcid()); - assertNull(response.getCreator().getAttributes().getMariadbPassword()); final List<IdentifierDto> identifiers = response.getIdentifiers(); assertNotNull(identifiers); assertEquals(0, identifiers.size()); @@ -373,7 +359,6 @@ public class SchemaServiceIntegrationTest extends AbstractUnitTest { assertEquals("not_in_metadata_db2", response.getName()); assertEquals(DATABASE_1_ID, response.getVdbid()); assertEquals(DATABASE_1_ID, response.getDatabase().getId()); - assertEquals(DATABASE_1_OWNER, response.getCreatedBy()); assertEquals(DATABASE_1_OWNER, response.getCreator().getId()); assertFalse(response.getIsInitialView()); assertEquals(DATABASE_1_PUBLIC, response.getIsPublic()); 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 0f0820926f..68a725b60e 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 @@ -78,8 +78,8 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { Thread.sleep(1000) /* wait for test container some more */; /* mock */ - when(metadataServiceGateway.getUserById(QUERY_1_CREATED_BY)) - .thenReturn(QUERY_1_CREATOR); + when(metadataServiceGateway.getUserById(USER_1_ID)) + .thenReturn(USER_1_DTO); /* test */ final QueryResultDto response = queryService.execute(DATABASE_1_PRIVILEGED_DTO, QUERY_1_STATEMENT, Instant.now(), USER_1_ID, 0L, 10L, null, null); @@ -119,8 +119,8 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { Thread.sleep(1000) /* wait for test container some more */; /* mock */ - when(metadataServiceGateway.getUserById(QUERY_1_CREATED_BY)) - .thenReturn(QUERY_1_CREATOR); + when(metadataServiceGateway.getUserById(USER_1_ID)) + .thenReturn(USER_1_DTO); /* test */ final QueryResultDto response = queryService.execute(DATABASE_1_PRIVILEGED_DTO, QUERY_7_STATEMENT, Instant.now(), USER_1_ID, 0L, 10L, null, null); @@ -150,8 +150,8 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getIdentifiers(DATABASE_1_ID, QUERY_1_ID)) .thenReturn(List.of(IDENTIFIER_2_DTO)); - when(metadataServiceGateway.getUserById(QUERY_1_CREATED_BY)) - .thenReturn(QUERY_1_CREATOR); + when(metadataServiceGateway.getUserById(USER_1_ID)) + .thenReturn(USER_1_DTO); /* test */ final QueryResultDto response = queryService.execute(DATABASE_1_PRIVILEGED_DTO, QUERY_1_STATEMENT, Instant.now(), USER_1_ID, 0L, 1L, null, null); @@ -255,8 +255,8 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { InterruptedException { /* mock */ - when(metadataServiceGateway.getUserById(QUERY_2_CREATED_BY)) - .thenReturn(QUERY_2_CREATOR); + when(metadataServiceGateway.getUserById(USER_1_ID)) + .thenReturn(USER_1_DTO); /* test */ persist_generic(QUERY_2_ID, List.of(IDENTIFIER_5_DTO), true); @@ -271,8 +271,8 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { InterruptedException { /* mock */ - when(metadataServiceGateway.getUserById(QUERY_1_CREATED_BY)) - .thenReturn(QUERY_1_CREATOR); + when(metadataServiceGateway.getUserById(USER_1_ID)) + .thenReturn(USER_1_DTO); /* test */ persist_generic(QUERY_1_ID, List.of(IDENTIFIER_2_DTO), false); @@ -322,8 +322,8 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { /* mock */ when(metadataServiceGateway.getIdentifiers(DATABASE_1_ID, QUERY_1_ID)) .thenReturn(List.of(IDENTIFIER_2_DTO)); - when(metadataServiceGateway.getUserById(QUERY_1_CREATED_BY)) - .thenReturn(QUERY_1_CREATOR); + when(metadataServiceGateway.getUserById(USER_1_ID)) + .thenReturn(USER_1_DTO); MariaDbConfig.insertQueryStore(DATABASE_1_PRIVILEGED_DTO, QUERY_1_DTO, USER_1_ID); /* test */ 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 4018c95334..527830d0e5 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 @@ -115,7 +115,6 @@ public class ViewServiceIntegrationTest extends AbstractUnitTest { assertEquals("not_in_metadata_db2", view0.getInternalName()); assertEquals(DATABASE_1_ID, view0.getVdbid()); assertEquals(DATABASE_1_ID, view0.getDatabase().getId()); - assertEquals(DATABASE_1_OWNER, view0.getCreatedBy()); assertEquals(DATABASE_1_OWNER, view0.getCreator().getId()); assertFalse(view0.getIsInitialView()); assertEquals(DATABASE_1_PUBLIC, view0.getIsPublic()); 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 53f98d342c..b29a3198df 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 @@ -20,7 +20,7 @@ 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.user.UserDto; +import at.tuwien.api.user.UserBriefDto; import at.tuwien.config.QueryConfig; import at.tuwien.exception.QueryNotFoundException; import at.tuwien.exception.TableNotFoundException; @@ -218,7 +218,7 @@ public interface DataMapper { * @return The list of columns. * @throws JSQLParserException The table/view or column was not found in the database. */ - default List<ColumnDto> parseColumns(Long databaseId, List<TableBriefDto> tables, String query) throws JSQLParserException { + default List<ColumnDto> parseColumns(Long databaseId, List<TableDto> tables, String query) throws JSQLParserException { final List<ColumnDto> columns = new ArrayList<>(); final CCJSqlParserManager parserRealSql = new CCJSqlParserManager(); final net.sf.jsqlparser.statement.Statement statement = parserRealSql.parse(new StringReader(query)); @@ -371,10 +371,9 @@ public interface DataMapper { .created(LocalDateTime.parse(data.getString(2), mariaDbFormatter) .atZone(ZoneId.of("UTC")) .toInstant()) - .creator(UserDto.builder() + .creator(UserBriefDto.builder() .id(UUID.fromString(data.getString(3))) .build()) - .createdBy(UUID.fromString(data.getString(3))) .query(data.getString(4)) .queryHash(data.getString(5)) .resultHash(data.getString(6)) diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MetadataMapper.java b/dbrepo-data-service/services/src/main/java/at/tuwien/mapper/MetadataMapper.java index a585f2e98a..61a95b32d3 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 @@ -13,6 +13,8 @@ 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.PrivilegedUserDto; import at.tuwien.api.user.UserBriefDto; import at.tuwien.api.user.UserDto; @@ -55,4 +57,6 @@ public interface MetadataMapper { }) TableBriefDto tableDtoToTableBriefDto(TableDto data); + IdentifierBriefDto identifierDtoToIdentifierBriefDto(IdentifierDto data); + } 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 938da8820c..6072b04e7b 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 @@ -141,12 +141,11 @@ public interface SubsetService { * @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 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, - RemoteUnavailableException, UserNotFoundException, DatabaseNotFoundException, MetadataServiceException; + RemoteUnavailableException, DatabaseNotFoundException, MetadataServiceException; /** * Inserts a query and metadata to the query store of a given database id. 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 8c5cc6d601..425f14a399 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 @@ -8,6 +8,7 @@ import at.tuwien.api.database.internal.PrivilegedDatabaseDto; import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.database.query.QueryResultDto; import at.tuwien.api.database.table.columns.ColumnDto; +import at.tuwien.api.identifier.IdentifierBriefDto; import at.tuwien.api.identifier.IdentifierDto; import at.tuwien.api.identifier.IdentifierTypeDto; import at.tuwien.exception.*; @@ -162,6 +163,7 @@ public class SubsetServiceMariaDbImpl extends HibernateConnector implements Subs query.setIdentifiers(identifiers.stream() .filter(i -> i.getType().equals(IdentifierTypeDto.SUBSET)) .filter(i -> i.getQueryId().equals(query.getId())) + .map(metadataMapper::identifierDtoToIdentifierBriefDto) .toList()); queries.add(query); } @@ -261,7 +263,7 @@ public class SubsetServiceMariaDbImpl extends HibernateConnector implements Subs @Override public QueryDto findById(PrivilegedDatabaseDto database, Long queryId) throws QueryNotFoundException, SQLException, - RemoteUnavailableException, UserNotFoundException, DatabaseNotFoundException, MetadataServiceException { + RemoteUnavailableException, DatabaseNotFoundException, MetadataServiceException { final ComboPooledDataSource dataSource = getPrivilegedDataSource(database); final Connection connection = dataSource.getConnection(); try { @@ -274,7 +276,11 @@ public class SubsetServiceMariaDbImpl extends HibernateConnector implements Subs throw new QueryNotFoundException("Failed to find query"); } final QueryDto query = dataMapper.resultSetToQueryDto(resultSet); - query.setIdentifiers(metadataServiceGateway.getIdentifiers(database.getId(), queryId)); + final List<IdentifierBriefDto> identifiers = metadataServiceGateway.getIdentifiers(database.getId(), queryId) + .stream() + .map(metadataMapper::identifierDtoToIdentifierBriefDto) + .toList(); + query.setIdentifiers(identifiers); query.setCreator(database.getOwner()); query.setDatabaseId(database.getId()); return query; 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 7ca776ff8a..e639c07722 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 @@ -115,7 +115,6 @@ public class ViewServiceMariaDbImpl extends HibernateConnector implements ViewSe .toString()) .isPublic(database.getIsPublic()) .creator(database.getOwner()) - .createdBy(database.getOwner().getId()) .identifiers(new LinkedList<>()) .isInitialView(false) .vdbid(database.getId()) diff --git a/dbrepo-metadata-db/1_setup-schema.sql b/dbrepo-metadata-db/1_setup-schema.sql index b74e346783..351410d7d3 100644 --- a/dbrepo-metadata-db/1_setup-schema.sql +++ b/dbrepo-metadata-db/1_setup-schema.sql @@ -88,14 +88,13 @@ CREATE TABLE IF NOT EXISTS `mdb_databases` is_public boolean NOT NULL DEFAULT TRUE, is_schema_public boolean NOT NULL DEFAULT TRUE, image longblob, - created_by character varying(36), owned_by character varying(36), contact_person character varying(36), created timestamp NOT NULL DEFAULT NOW(), last_modified timestamp, PRIMARY KEY (id), FOREIGN KEY (cid) REFERENCES mdb_containers (id), - FOREIGN KEY (created_by) REFERENCES mdb_users (id), + FOREIGN KEY (owned_by) REFERENCES mdb_users (id), FOREIGN KEY (owned_by) REFERENCES mdb_users (id), FOREIGN KEY (contact_person) REFERENCES mdb_users (id) ) WITH SYSTEM VERSIONING; @@ -130,13 +129,12 @@ CREATE TABLE IF NOT EXISTS `mdb_tables` created timestamp NOT NULL DEFAULT NOW(), versioned boolean not null default true, is_schema_public boolean not null default true, - created_by character varying(36) NOT NULL, owned_by character varying(36) NOT NULL, last_modified timestamp, PRIMARY KEY (ID), UNIQUE (tDBID, internal_name), FOREIGN KEY (tDBID) REFERENCES mdb_databases (id), - FOREIGN KEY (created_by) REFERENCES mdb_users (id), + FOREIGN KEY (owned_by) REFERENCES mdb_users (id), FOREIGN KEY (owned_by) REFERENCES mdb_users (id) ) WITH SYSTEM VERSIONING; @@ -327,10 +325,10 @@ CREATE TABLE IF NOT EXISTS `mdb_view` InitialView BOOLEAN NOT NULL, created timestamp NOT NULL DEFAULT NOW(), last_modified timestamp, - created_by character varying(36) NOT NULL, + owned_by character varying(36) NOT NULL, PRIMARY KEY (id), FOREIGN KEY (vdbid) REFERENCES mdb_databases (id), - FOREIGN KEY (created_by) REFERENCES mdb_users (id) + FOREIGN KEY (owned_by) REFERENCES mdb_users (id) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_banner_messages` @@ -398,11 +396,11 @@ CREATE TABLE IF NOT EXISTS `mdb_identifiers` result_number BIGINT, doi VARCHAR(255), created TIMESTAMP NOT NULL DEFAULT NOW(), - created_by VARCHAR(36) NOT NULL, + owned_by VARCHAR(36) NOT NULL, last_modified TIMESTAMP, PRIMARY KEY (id), /* must be a single id from persistent identifier concept */ FOREIGN KEY (dbid) REFERENCES mdb_databases (id), - FOREIGN KEY (created_by) REFERENCES mdb_users (id) + FOREIGN KEY (owned_by) REFERENCES mdb_users (id) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `mdb_identifier_licenses` 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 7acd4fc3ce..4038a39dc6 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 @@ -46,9 +46,4 @@ public class ContainerBriefDto { @NotNull @Schema(example = "10") private Integer count; - - @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant created; } 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 8f745f9ee9..e55b010202 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 @@ -54,9 +54,4 @@ public class ContainerDto { @Schema(example = "10") private Long count; - @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant created; - } 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 index 3a7a375618..6c377f0e88 100644 --- 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 @@ -46,11 +46,6 @@ public class PrivilegedContainerDto { @NotNull private ImageDto image; - @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant created; - @ToString.Exclude private String username; 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 271bae9b4d..7abc667741 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 @@ -1,6 +1,7 @@ package at.tuwien.api.database; +import at.tuwien.api.user.UserBriefDto; import at.tuwien.api.user.UserDto; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -33,14 +34,9 @@ public class DatabaseAccessDto { private Long hdbid; @NotNull - private UserDto user; + private UserBriefDto user; @NotNull private AccessTypeDto type; - @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant created; - } 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 2e98eabe38..3343f23b68 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 @@ -72,23 +72,15 @@ public class DatabaseDto { private List<IdentifierBriefDto> subsets; - @ToString.Exclude - @NotNull - private UserBriefDto creator; - @ToString.Exclude @NotNull private UserBriefDto contact; + @ToString.Exclude @NotNull private UserBriefDto owner; @JsonProperty("preview_image") private String previewImage; - @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant created; - } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/LoadFileDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/LoadFileDto.java index fbdbcc5380..7c4a9a7247 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/LoadFileDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/LoadFileDto.java @@ -15,7 +15,7 @@ import lombok.extern.jackson.Jacksonized; @ToString public class LoadFileDto { - @NotBlank(message = "filepath is required") + @NotBlank @Schema(example = "sample.csv") private String filepath; 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 ab1f0a4156..bf72c4dda7 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 @@ -59,7 +59,7 @@ public class ViewBriefDto { private String queryHash; @JsonIgnore - @JsonProperty("created_by") - private UUID createdBy; + @JsonProperty("owned_by") + private UUID ownedBy; } 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 fa90bcded4..294bd04bd4 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 @@ -66,19 +66,9 @@ public class ViewDto { private String queryHash; @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant created; - - @NotNull - private UserBriefDto creator; + private UserBriefDto owner; @NotNull private List<ViewColumnDto> columns; - @JsonProperty("last_modified") - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant lastModified; - } 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 index 68382fdb62..c5ead1721e 100644 --- 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 @@ -1,12 +1,12 @@ package at.tuwien.api.database.internal; -import at.tuwien.api.container.ContainerBriefDto; import at.tuwien.api.container.internal.PrivilegedContainerDto; import at.tuwien.api.database.DatabaseAccessDto; -import at.tuwien.api.database.ViewBriefDto; -import at.tuwien.api.database.table.TableBriefDto; -import at.tuwien.api.identifier.IdentifierBriefDto; +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 at.tuwien.api.user.UserDto; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; @@ -51,9 +51,9 @@ public class PrivilegedDatabaseDto { @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") @@ -71,27 +71,19 @@ public class PrivilegedDatabaseDto { private List<DatabaseAccessDto> accesses; - private List<IdentifierBriefDto> identifiers; + private List<IdentifierDto> identifiers; - private List<IdentifierBriefDto> subsets; - - @ToString.Exclude - @NotNull - private UserBriefDto creator; + private List<IdentifierDto> subsets; @ToString.Exclude @NotNull private UserBriefDto contact; + @ToString.Exclude @NotNull private UserBriefDto owner; @JsonProperty("preview_image") private String previewImage; - @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant created; - } 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 index 1951609115..135073d556 100644 --- 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 @@ -67,19 +67,9 @@ public class PrivilegedViewDto { private String queryHash; @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant created; - - @NotNull - private UserBriefDto creator; + private UserBriefDto owner; @NotNull private List<ViewColumnDto> columns; - @JsonProperty("last_modified") - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant lastModified; - } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/ExecuteStatementDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/ExecuteStatementDto.java index afc6a6b640..fbc8bfebe0 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/ExecuteStatementDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/ExecuteStatementDto.java @@ -15,7 +15,7 @@ import lombok.extern.jackson.Jacksonized; @ToString public class ExecuteStatementDto { - @NotBlank(message = "statement is required") + @NotBlank @Schema(example = "SELECT `id` FROM `air_quality`") private String statement; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/ExportDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/ExportDto.java index b844947b83..1b2b1e0386 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/ExportDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/ExportDto.java @@ -15,7 +15,7 @@ import lombok.extern.jackson.Jacksonized; @ToString public class ExportDto { - @NotBlank(message = "location is required") + @NotBlank @Schema(example = "/tmp/file.csv") private String location; } 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 1b31d9d619..a50c2d1bdf 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 @@ -17,7 +17,7 @@ import lombok.extern.jackson.Jacksonized; @ToString public class ImportDto { - @NotBlank(message = "location is required") + @NotBlank @Schema(example = "file.csv") private String location; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java index b27222e596..28f8b61a52 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java @@ -23,22 +23,22 @@ import java.util.List; @ToString public class QueryBriefDto { - @NotNull(message = "id is required") + @NotNull private Long id; - @NotNull(message = "database id is required") + @NotNull @JsonProperty("database_id") private Long databaseId; - @NotNull(message = "creator is required") - private UserBriefDto creator; + @NotNull + private UserBriefDto owner; @NotNull @Schema(example = "2022-01-01 08:00:00.000") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "UTC") private Instant execution; - @NotBlank(message = "statement is required") + @NotBlank @Schema(example = "SELECT `id` FROM `air_quality`") private String query; @@ -46,7 +46,7 @@ public class QueryBriefDto { @Schema(example = "SELECT `id` FROM `air_quality`") private String queryNormalized; - @NotBlank(message = "query hash is required") + @NotBlank @JsonProperty("query_hash") @Schema(example = "17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76") private String queryHash; @@ -69,9 +69,4 @@ public class QueryBriefDto { private List<IdentifierBriefDto> identifiers; - @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant created; - } 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 01215a20e3..b26a8c3c4e 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 @@ -22,22 +22,22 @@ import java.util.List; @ToString public class QueryDto { - @NotNull(message = "id is required") + @NotNull private Long id; - @NotNull(message = "database id is required") + @NotNull @JsonProperty("database_id") private Long databaseId; - @NotNull(message = "creator is required") - private UserBriefDto creator; + @NotNull + private UserBriefDto owner; @NotNull @Schema(example = "2021-03-12T15:26:21Z") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") private Instant execution; - @NotBlank(message = "statement is required") + @NotBlank @Schema(example = "SELECT `id` FROM `air_quality`") private String query; @@ -52,7 +52,7 @@ public class QueryDto { @NotNull private List<IdentifierBriefDto> identifiers; - @NotBlank(message = "query hash is required") + @NotBlank @JsonProperty("query_hash") @Schema(example = "17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76") private String queryHash; @@ -70,9 +70,4 @@ public class QueryDto { @Schema(example = "1") private Long resultNumber; - @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant created; - } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/SaveStatementDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/SaveStatementDto.java index 724d3da41a..19fd6ffbaf 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/SaveStatementDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/query/SaveStatementDto.java @@ -15,7 +15,7 @@ import lombok.extern.jackson.Jacksonized; @ToString public class SaveStatementDto { - @NotBlank(message = "statement is required") + @NotBlank @Schema(example = "SELECT `id` FROM `air_quality`") private String statement; } 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 a9f57d4ff7..2370f45429 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 @@ -59,9 +59,6 @@ public class TableDto { @Schema(example = "true") private Boolean isSchemaPublic; - @NotNull - private UserBriefDto creator; - @NotNull private UserBriefDto owner; @@ -104,11 +101,6 @@ public class TableDto { @Schema(example = "3276", description = "in bytes") private Long avgRowLength; - @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant created; - @NotNull private List<ColumnDto> columns; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableHistoryDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableHistoryDto.java index b127b0b1b8..87dfbd2eef 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableHistoryDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableHistoryDto.java @@ -18,15 +18,15 @@ import java.time.Instant; @ToString public class TableHistoryDto { - @NotNull(message = "event timestamp is required") + @NotNull @Schema(example = "2021-03-12T15:26:21Z") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") private Instant timestamp; - @NotNull(message = "event name is required") + @NotNull private String event; - @NotNull(message = "total number is required") + @NotNull @Schema(example = "1") private Long total; 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 e3a0845c88..eb626b0eaf 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 @@ -16,7 +16,7 @@ import java.util.Map; @ToString public class TupleDeleteDto { - @NotNull(message = "primary key columns are required") + @NotNull private Map<String, Object> keys; } 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 2378318ae5..fee00469b1 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 @@ -16,10 +16,10 @@ import java.util.Map; @ToString public class TupleUpdateDto { - @NotNull(message = "data is required") + @NotNull private Map<String, Object> data; - @NotNull(message = "primary key columns are required") + @NotNull 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 e811991912..9383154574 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 @@ -17,22 +17,22 @@ import lombok.extern.jackson.Jacksonized; @ToString public class ColumnBriefDto { - @NotNull(message = "id is required") + @NotNull private Long id; @JsonProperty("database_id") - @NotNull(message = "database id is required") + @NotNull private Long databaseId; @JsonProperty("table_id") - @NotNull(message = "table id is required") + @NotNull private Long tableId; - @NotBlank(message = "name is required") + @NotBlank @Schema(example = "date") private String name; - @NotBlank(message = "internal name is required") + @NotBlank @JsonProperty("internal_name") @Schema(example = "mdb_date") private String internalName; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java index dc9c62f00a..df171a5ee4 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java @@ -32,11 +32,6 @@ public class ConceptDto { private String description; - @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant created; - @NotNull private List<ColumnBriefDto> columns; } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java index 89c64b2c03..bd2975c0cc 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/columns/concepts/UnitDto.java @@ -32,11 +32,6 @@ public class UnitDto { private String description; - @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant created; - @NotNull private List<ColumnBriefDto> columns; } 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 index a71a64b63b..fcc95fdc0c 100644 --- 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 @@ -60,9 +60,6 @@ public class PrivilegedTableDto { @Schema(example = "true") private Boolean isSchemaPublic; - @NotNull - private UserBriefDto creator; - @NotNull private UserBriefDto owner; @@ -105,11 +102,6 @@ public class PrivilegedTableDto { @Schema(example = "3276", description = "in bytes") private Long avgRowLength; - @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant created; - @NotNull private List<ColumnDto> columns; 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 ac2fe81f7a..0a36c561a3 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 @@ -65,15 +65,4 @@ public class IdentifierBriefDto { @JsonProperty("created_by") private UUID createdBy; - @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant created; - - @NotNull - @JsonProperty("last_modified") - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant lastModified; - } 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 8a76ca7e14..bff087c590 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 @@ -92,7 +92,7 @@ public class IdentifierDto { private String publisher; @NotNull - private UserDto creator; + private UserDto owner; @JsonProperty("publication_day") @Schema(example = "15") @@ -120,15 +120,4 @@ public class IdentifierDto { @JsonProperty("created_by") private UUID createdBy; - @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant created; - - @NotNull - @JsonProperty("last_modified") - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant lastModified; - } 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 0306da3a7c..271333c49d 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 @@ -37,11 +37,6 @@ public class RelatedIdentifierDto { @Schema(example = "Cites") private RelationTypeDto relation; - @ToString.Exclude - @JsonIgnore - @NotNull - private UserDto creator; - } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyDto.java index c597227683..09099331ec 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/semantics/OntologyDto.java @@ -51,11 +51,4 @@ public class OntologyDto { @Schema(example = "rdf/om-2.0.rdf") private String rdfPath; - private UserBriefDto creator; - - @NotNull - @Schema(example = "2021-03-12T15:26:21Z") - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") - private Instant created; - } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java index 8dc4864265..41808a1453 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/Database.java @@ -50,17 +50,6 @@ public class Database implements Serializable { @Column(updatable = false, nullable = false) private Long id; - @ToString.Exclude - @JdbcTypeCode(java.sql.Types.VARCHAR) - @Column(name = "created_by", columnDefinition = "VARCHAR(36)") - private UUID createdBy; - - @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE) - @JoinColumns({ - @JoinColumn(name = "created_by", referencedColumnName = "ID", insertable = false, updatable = false) - }) - private User creator; - @ToString.Exclude @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "owned_by", columnDefinition = "VARCHAR(36)") diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java index e10d7f2518..5584ce0105 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java @@ -48,14 +48,14 @@ public class View { @ToString.Exclude @JdbcTypeCode(java.sql.Types.VARCHAR) - @Column(name = "created_by", columnDefinition = "VARCHAR(36)") - private UUID createdBy; + @Column(name = "owned_by", columnDefinition = "VARCHAR(36)") + private UUID ownedBy; @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST) @JoinColumns({ - @JoinColumn(name = "created_by", referencedColumnName = "ID", insertable = false, updatable = false) + @JoinColumn(name = "owned_by", referencedColumnName = "ID", insertable = false, updatable = false) }) - private User creator; + private User owner; @Column(name = "vname", nullable = false, columnDefinition = "VARCHAR(64)") private String name; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java index 55e1af1b9a..f81b98f2e9 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java @@ -1,13 +1,14 @@ package at.tuwien.entities.database.table; -import at.tuwien.entities.database.table.columns.TableColumn; import at.tuwien.entities.database.Database; +import at.tuwien.entities.database.table.columns.TableColumn; import at.tuwien.entities.database.table.constraints.Constraints; import at.tuwien.entities.identifier.Identifier; import at.tuwien.entities.user.User; import com.fasterxml.jackson.annotation.JsonFormat; import jakarta.persistence.CascadeType; import jakarta.persistence.OrderBy; +import jakarta.persistence.*; import lombok.*; import lombok.extern.log4j.Log4j2; import org.hibernate.annotations.*; @@ -15,8 +16,6 @@ import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; -import jakarta.persistence.*; - import java.time.Instant; import java.util.List; import java.util.UUID; @@ -45,18 +44,6 @@ public class Table { @Column(updatable = false, nullable = false) private Long tdbid; - @JdbcTypeCode(java.sql.Types.VARCHAR) - @Column(name = "created_by", columnDefinition = "VARCHAR(36)") - private UUID createdBy; - - @ToString.Exclude - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumns({ - @JoinColumn(name = "created_by", referencedColumnName = "ID", insertable = false, updatable = false) - }) - private User creator; - - @JdbcTypeCode(java.sql.Types.VARCHAR) @Column(name = "owned_by", columnDefinition = "VARCHAR(36)") private UUID ownedBy; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java index abf76758cc..547e28fca6 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java @@ -157,7 +157,7 @@ public class Identifier implements Serializable { @Column(nullable = false) @JdbcTypeCode(java.sql.Types.VARCHAR) - private UUID createdBy; + private UUID ownedBy; /** * Users are never created/updated/deleted by the Identifier entity. @@ -165,9 +165,9 @@ public class Identifier implements Serializable { @ToString.Exclude @ManyToOne(fetch = FetchType.LAZY) @JoinColumns({ - @JoinColumn(name = "createdBy", referencedColumnName = "ID", insertable = false, updatable = false) + @JoinColumn(name = "owned_by", referencedColumnName = "ID", insertable = false, updatable = false) }) - private User creator; + private User owner; @CreatedDate @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP default NOW()") 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 55f0a31c86..c005937028 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,6 +10,7 @@ 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; @@ -119,6 +120,8 @@ public interface MetadataMapper { }) ContainerBriefDto containerToContainerBriefDto(Container data); + PrivilegedDatabaseDto databaseToPrivilegedDatabaseDto(Database data); + @Mappings({ @Mapping(target = "titles", source = "."), @Mapping(target = "publisher", source = "publisher"), 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 d97483beb1..0f14b8d348 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 @@ -3,7 +3,9 @@ package at.tuwien.gateway.impl; import at.tuwien.api.database.DatabaseDto; import at.tuwien.config.GatewayConfig; import at.tuwien.entities.database.Database; -import at.tuwien.exception.*; +import at.tuwien.exception.DatabaseNotFoundException; +import at.tuwien.exception.SearchServiceConnectionException; +import at.tuwien.exception.SearchServiceException; import at.tuwien.gateway.SearchServiceGateway; import at.tuwien.mapper.MetadataMapper; import lombok.extern.log4j.Log4j2; @@ -42,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.customDatabaseToDatabaseDto(database), headers), DatabaseDto.class); + metadataMapper.databaseToPrivilegedDatabaseDto(database), headers), DatabaseDto.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 7da2ede960..8e613cfa7c 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 @@ -36,9 +36,9 @@ public abstract class AbstractUnitTest extends BaseTest { DATABASE_1.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_1, IDENTIFIER_2, IDENTIFIER_3, IDENTIFIER_4))); 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.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_1_BRIEF_DTO, IDENTIFIER_2_BRIEF_DTO, IDENTIFIER_3_BRIEF_DTO, IDENTIFIER_4_BRIEF_DTO))); - DATABASE_1_PRIVILEGED_DTO.setTables(new LinkedList<>(List.of(TABLE_1_BRIEF_DTO, TABLE_2_BRIEF_DTO, TABLE_3_BRIEF_DTO, TABLE_4_BRIEF_DTO))); - DATABASE_1_PRIVILEGED_DTO.setViews(new LinkedList<>(List.of(VIEW_1_BRIEF_DTO, VIEW_2_BRIEF_DTO, VIEW_3_BRIEF_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))); TABLE_1_DTO.setColumns(new LinkedList<>(TABLE_1_COLUMNS_DTO)); TABLE_1_DTO.setConstraints(TABLE_1_CONSTRAINTS_DTO); TABLE_2.setDatabase(DATABASE_1); @@ -81,9 +81,9 @@ public abstract class AbstractUnitTest extends BaseTest { 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_BRIEF_DTO, TABLE_6_BRIEF_DTO, TABLE_7_BRIEF_DTO))); - DATABASE_2_PRIVILEGED_DTO.setViews(new LinkedList<>(List.of(VIEW_4_BRIEF_DTO))); - DATABASE_2_PRIVILEGED_DTO.setIdentifiers(new LinkedList<>(List.of(IDENTIFIER_5_BRIEF_DTO))); + 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))); TABLE_5.setDatabase(DATABASE_2); TABLE_5.setColumns(new LinkedList<>(TABLE_5_COLUMNS)); TABLE_5.setConstraints(TABLE_5_CONSTRAINTS); 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 e577839b3a..8d4df649f7 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 @@ -1008,7 +1008,6 @@ public abstract class BaseTest { .name(CONTAINER_1_NAME) .internalName(CONTAINER_1_INTERNALNAME) .image(CONTAINER_1_IMAGE_DTO) - .created(CONTAINER_1_CREATED) .host(CONTAINER_1_HOST) .port(CONTAINER_1_PORT) .build(); @@ -1017,7 +1016,6 @@ public abstract class BaseTest { .id(CONTAINER_1_ID) .name(CONTAINER_1_NAME) .internalName(CONTAINER_1_INTERNALNAME) - .created(CONTAINER_1_CREATED) .quota(CONTAINER_1_QUOTA) .count(CONTAINER_1_COUNT) .build(); @@ -1027,7 +1025,6 @@ public abstract class BaseTest { .name(CONTAINER_1_NAME) .internalName(CONTAINER_1_INTERNALNAME) .image(CONTAINER_1_IMAGE_DTO) - .created(CONTAINER_1_CREATED) .host(CONTAINER_1_HOST) .port(CONTAINER_1_PORT) .username(CONTAINER_1_PRIVILEGED_USERNAME) @@ -1067,7 +1064,6 @@ public abstract class BaseTest { .name(CONTAINER_2_NAME) .internalName(CONTAINER_2_INTERNALNAME) .image(CONTAINER_2_IMAGE_DTO) - .created(CONTAINER_2_CREATED) .host(CONTAINER_2_HOST) .port(CONTAINER_2_PORT) .build(); @@ -1076,7 +1072,6 @@ public abstract class BaseTest { .id(CONTAINER_2_ID) .name(CONTAINER_2_NAME) .internalName(CONTAINER_2_INTERNALNAME) - .created(CONTAINER_2_CREATED) .quota(CONTAINER_2_QUOTA) .build(); @@ -1212,7 +1207,6 @@ public abstract class BaseTest { public final static DatabaseDto DATABASE_3_DTO = DatabaseDto.builder() .id(DATABASE_3_ID) - .created(DATABASE_3_CREATED) .isPublic(DATABASE_3_PUBLIC) .name(DATABASE_3_NAME) .container(CONTAINER_1_BRIEF_DTO) @@ -1243,15 +1237,12 @@ public abstract class BaseTest { public final static DatabaseDto DATABASE_4_DTO = DatabaseDto.builder() .id(DATABASE_4_ID) - .created(Instant.now().minus(4, HOURS)) .isPublic(DATABASE_4_PUBLIC) .isSchemaPublic(DATABASE_4_SCHEMA_PUBLIC) .name(DATABASE_4_NAME) .description(DATABASE_4_DESCRIPTION) .internalName(DATABASE_4_INTERNALNAME) .exchangeName(DATABASE_4_EXCHANGE) - .created(DATABASE_4_CREATED) - .creator(USER_4_BRIEF_DTO) .owner(USER_4_BRIEF_DTO) .tables(new LinkedList<>()) .views(new LinkedList<>()) @@ -1448,7 +1439,6 @@ public abstract class BaseTest { .id(TABLE_1_ID) .tdbid(DATABASE_1_ID) .database(null) /* DATABASE_1_PRIVILEGED_DTO */ - .created(TABLE_1_CREATED) .internalName(TABLE_1_INTERNALNAME) .isVersioned(TABLE_1_VERSIONED) .isPublic(TABLE_1_SCHEMA_PUBLIC) @@ -1460,7 +1450,6 @@ public abstract class BaseTest { .columns(new LinkedList<>() /* TABLE_1_COLUMNS_DTO */) .constraints(null) /* TABLE_1_CONSTRAINTS_DTO */ .owner(USER_1_BRIEF_DTO) - .creator(USER_1_BRIEF_DTO) .isPublic(DATABASE_1_PUBLIC) .avgRowLength(TABLE_1_AVG_ROW_LENGTH) .numRows(TABLE_1_NUM_ROWS) @@ -1481,8 +1470,6 @@ public abstract class BaseTest { .identifiers(new LinkedList<>()) .columns(new LinkedList<>() /* TABLE_1_COLUMNS */) .constraints(null) /* TABLE_1_CONSTRAINTS */ - .createdBy(USER_1_ID) - .creator(USER_1) .ownedBy(USER_1_ID) .owner(USER_1) .lastModified(TABLE_1_LAST_MODIFIED) @@ -1495,7 +1482,6 @@ public abstract class BaseTest { public final static TableDto TABLE_1_DTO = TableDto.builder() .id(TABLE_1_ID) .tdbid(DATABASE_1_ID) - .created(TABLE_1_CREATED) .internalName(TABLE_1_INTERNALNAME) .isVersioned(TABLE_1_VERSIONED) .isSchemaPublic(TABLE_1_SCHEMA_PUBLIC) @@ -1507,7 +1493,6 @@ public abstract class BaseTest { .columns(new LinkedList<>() /* TABLE_1_COLUMNS_DTO */) .constraints(null) /* TABLE_1_CONSTRAINT_DTO */ .owner(USER_1_BRIEF_DTO) - .creator(USER_1_BRIEF_DTO) .avgRowLength(TABLE_1_AVG_ROW_LENGTH) .numRows(TABLE_1_NUM_ROWS) .dataLength(TABLE_1_DATA_LENGTH) @@ -1661,8 +1646,6 @@ public abstract class BaseTest { .queueName(TABLE_2_QUEUE_NAME) .columns(new LinkedList<>() /* TABLE_2_COLUMNS */) .constraints(null) /* TABLE_2_CONSTRAINTS */ - .creator(USER_2) - .createdBy(USER_2_ID) .owner(USER_2) .ownedBy(USER_2_ID) .avgRowLength(TABLE_2_AVG_ROW_LENGTH) @@ -1675,7 +1658,6 @@ public abstract class BaseTest { .id(TABLE_2_ID) .tdbid(DATABASE_1_ID) .database(null) /* DATABASE_1_PRIVILEGED_DTO */ - .created(TABLE_2_CREATED) .internalName(TABLE_2_INTERNALNAME) .isVersioned(TABLE_2_VERSIONED) .description(TABLE_2_DESCRIPTION) @@ -1685,7 +1667,6 @@ public abstract class BaseTest { .identifiers(new LinkedList<>()) .columns(new LinkedList<>() /* TABLE_2_COLUMNS_DTO */) .constraints(null) /* TABLE_2_CONSTRAINTS_DTO */ - .creator(USER_2_BRIEF_DTO) .owner(USER_2_BRIEF_DTO) .avgRowLength(TABLE_2_AVG_ROW_LENGTH) .numRows(TABLE_2_NUM_ROWS) @@ -1696,7 +1677,6 @@ public abstract class BaseTest { public final static TableDto TABLE_2_DTO = TableDto.builder() .id(TABLE_2_ID) .tdbid(DATABASE_1_ID) - .created(TABLE_2_CREATED) .internalName(TABLE_2_INTERNALNAME) .isVersioned(TABLE_2_VERSIONED) .isSchemaPublic(TABLE_2_SCHEMA_PUBLIC) @@ -1706,7 +1686,6 @@ public abstract class BaseTest { .routingKey(TABLE_2_ROUTING_KEY) .columns(new LinkedList<>() /* TABLE_2_COLUMNS_DTO */) .constraints(null) /* TABLE_2_CONSTRAINTS_DTO */ - .creator(USER_2_BRIEF_DTO) .owner(USER_2_BRIEF_DTO) .avgRowLength(TABLE_2_AVG_ROW_LENGTH) .numRows(TABLE_2_NUM_ROWS) @@ -1754,8 +1733,6 @@ public abstract class BaseTest { .queueName(TABLE_3_QUEUE_NAME) .columns(new LinkedList<>() /* TABLE_3_COLUMNS */) .constraints(null) /* TABLE_3_CONSTRAINTS */ - .creator(USER_3) - .createdBy(USER_3_ID) .owner(USER_3) .ownedBy(USER_3_ID) .avgRowLength(TABLE_3_AVG_ROW_LENGTH) @@ -1767,7 +1744,6 @@ public abstract class BaseTest { public final static TableDto TABLE_3_DTO = TableDto.builder() .id(TABLE_3_ID) .tdbid(DATABASE_1_ID) - .created(TABLE_3_CREATED) .internalName(TABLE_3_INTERNALNAME) .isVersioned(TABLE_3_VERSIONED) .description(TABLE_3_DESCRIPTION) @@ -1776,7 +1752,6 @@ public abstract class BaseTest { .routingKey(TABLE_3_ROUTING_KEY) .columns(new LinkedList<>() /* TABLE_3_COLUMNS_DTO */) .constraints(null) /* TABLE_3_CONSTRAINTS_DTO */ - .creator(USER_3_BRIEF_DTO) .owner(USER_3_BRIEF_DTO) .avgRowLength(TABLE_3_AVG_ROW_LENGTH) .numRows(TABLE_3_NUM_ROWS) @@ -1853,7 +1828,6 @@ public abstract class BaseTest { .queueName(TABLE_5_QUEUE_NAME) .columns(new LinkedList<>()) /* TABLE_5_COLUMNS */ .constraints(null) /* TABLE_5_CONSTRAINTS */ - .createdBy(USER_1_ID) .ownedBy(USER_1_ID) .owner(USER_1) .build(); @@ -1861,7 +1835,6 @@ public abstract class BaseTest { public final static TableDto TABLE_5_DTO = TableDto.builder() .id(TABLE_5_ID) .tdbid(DATABASE_2_ID) - .created(Instant.now()) .internalName(TABLE_5_INTERNALNAME) .isVersioned(TABLE_5_VERSIONED) .isSchemaPublic(TABLE_5_SCHEMA_PUBLIC) @@ -1878,7 +1851,6 @@ public abstract class BaseTest { .id(TABLE_5_ID) .tdbid(DATABASE_2_ID) .database(null) /* DATABASE_2_PRIVILEGED_DTO */ - .created(TABLE_5_CREATED) .internalName(TABLE_5_INTERNALNAME) .isVersioned(TABLE_5_VERSIONED) .isSchemaPublic(TABLE_5_SCHEMA_PUBLIC) @@ -1889,7 +1861,6 @@ public abstract class BaseTest { .identifiers(new LinkedList<>()) .columns(new LinkedList<>() /* TABLE_5_COLUMNS_DTO */) .constraints(null) /* TABLE_5_CONSTRAINTS_DTO */ - .creator(USER_5_BRIEF_DTO) .owner(USER_5_BRIEF_DTO) .isPublic(DATABASE_2_PUBLIC) .avgRowLength(TABLE_5_AVG_ROW_LENGTH) @@ -1933,7 +1904,6 @@ public abstract class BaseTest { .queueName(TABLE_6_QUEUE_NAME) .columns(new LinkedList<>()) /* TABLE_6_COLUMNS */ .constraints(null) /* TABLE_6_CONSTRAINTS */ - .createdBy(USER_1_ID) .ownedBy(USER_1_ID) .owner(USER_1) .created(TABLE_6_CREATED) @@ -1942,7 +1912,6 @@ public abstract class BaseTest { public final static TableDto TABLE_6_DTO = TableDto.builder() .id(TABLE_6_ID) .tdbid(DATABASE_2_ID) - .created(TABLE_6_CREATED) .internalName(TABLE_6_INTERNALNAME) .isVersioned(TABLE_6_VERSIONED) .isSchemaPublic(TABLE_6_SCHEMA_PUBLIC) @@ -1953,7 +1922,6 @@ public abstract class BaseTest { .columns(new LinkedList<>()) /* TABLE_6_COLUMNS_DTO */ .constraints(null) /* TABLE_6_CONSTRAINTS_DTO */ .owner(USER_1_BRIEF_DTO) - .created(TABLE_6_CREATED) .build(); public final static TableBriefDto TABLE_6_BRIEF_DTO = TableBriefDto.builder() @@ -1991,7 +1959,6 @@ public abstract class BaseTest { .queueName(TABLE_7_QUEUE_NAME) .columns(new LinkedList<>()) /* TABLE_7_COLUMNS */ .constraints(null) /* TABLE_7_CONSTRAINTS */ - .createdBy(USER_1_ID) .ownedBy(USER_1_ID) .owner(USER_1) .created(TABLE_7_CREATED) @@ -2000,7 +1967,6 @@ public abstract class BaseTest { public final static TableDto TABLE_7_DTO = TableDto.builder() .id(TABLE_7_ID) .tdbid(DATABASE_2_ID) - .created(TABLE_7_CREATED) .internalName(TABLE_7_INTERNAL_NAME) .isVersioned(TABLE_7_VERSIONED) .isSchemaPublic(TABLE_7_SCHEMA_PUBLIC) @@ -2011,7 +1977,6 @@ public abstract class BaseTest { .columns(new LinkedList<>()) /* TABLE_7_COLUMNS_DTO */ .constraints(null) /* TABLE_7_CONSTRAINTS_DTO */ .owner(USER_1_BRIEF_DTO) - .created(TABLE_7_CREATED) .build(); public final static TableBriefDto TABLE_7_BRIEF_DTO = TableBriefDto.builder() @@ -2052,8 +2017,6 @@ public abstract class BaseTest { .constraints(null) /* TABLE_4_CONSTRAINTS */ .isVersioned(TABLE_4_VERSIONED) .isSchemaPublic(TABLE_4_SCHEMA_PUBLIC) - .creator(USER_1) - .createdBy(USER_1_ID) .owner(USER_1) .ownedBy(USER_1_ID) .created(TABLE_4_CREATED) @@ -2076,9 +2039,7 @@ public abstract class BaseTest { .constraints(null) /* TABLE_4_CONSTRAINTS_DTO */ .isVersioned(TABLE_4_VERSIONED) .isSchemaPublic(TABLE_4_SCHEMA_PUBLIC) - .creator(USER_1_BRIEF_DTO) .owner(USER_1_BRIEF_DTO) - .created(TABLE_4_CREATED) .avgRowLength(TABLE_4_AVG_ROW_LENGTH) .numRows(TABLE_4_NUM_ROWS) .dataLength(TABLE_4_DATA_LENGTH) @@ -2203,7 +2164,6 @@ public abstract class BaseTest { .queueName(TABLE_8_QUEUE_NAME) .columns(new LinkedList<>()) /* TABLE_8_COLUMNS */ .constraints(null) /* TABLE_8_CONSTRAINTS */ - .createdBy(USER_1_ID) .ownedBy(USER_1_ID) .owner(USER_1) .created(TABLE_8_CREATED) @@ -2221,9 +2181,7 @@ public abstract class BaseTest { .queueName(TABLE_8_QUEUE_NAME) .columns(new LinkedList<>()) /* TABLE_8_COLUMNS_DTO */ .constraints(null) /* TABLE_8_CONSTRAINTS_DTO */ - .creator(USER_1_BRIEF_DTO) .owner(USER_1_BRIEF_DTO) - .created(TABLE_8_CREATED) .build(); public final static TableBriefDto TABLE_8_BRIEF_DTO = TableBriefDto.builder() @@ -2246,9 +2204,7 @@ public abstract class BaseTest { .name(TABLE_8_NAME) .queueName(TABLE_8_QUEUE_NAME) .columns(new LinkedList<>()) /* TABLE_8_COLUMNS_DTO */ - .creator(USER_1_BRIEF_DTO) .owner(USER_1_BRIEF_DTO) - .created(TABLE_8_CREATED) .isPublic(DATABASE_3_PUBLIC) .build(); @@ -2536,9 +2492,8 @@ public abstract class BaseTest { .query(QUERY_1_STATEMENT) .queryHash(QUERY_1_QUERY_HASH) .resultHash(QUERY_1_RESULT_HASH) - .created(QUERY_1_CREATED) .execution(QUERY_1_EXECUTION) - .creator(USER_1_BRIEF_DTO) + .owner(USER_1_BRIEF_DTO) .isPersisted(QUERY_1_PERSISTED) .resultNumber(3L) .build(); @@ -2549,9 +2504,8 @@ public abstract class BaseTest { .query(QUERY_1_STATEMENT) .queryHash(QUERY_1_QUERY_HASH) .resultHash(QUERY_1_RESULT_HASH) - .created(QUERY_1_CREATED) .execution(QUERY_1_EXECUTION) - .creator(USER_1_BRIEF_DTO) + .owner(USER_1_BRIEF_DTO) .isPersisted(QUERY_1_PERSISTED) .resultNumber(3L) .build(); @@ -2573,8 +2527,7 @@ public abstract class BaseTest { .queryNormalized(QUERY_2_STATEMENT) .resultNumber(QUERY_2_RESULT_NUMBER) .resultHash(QUERY_2_RESULT_HASH) - .created(QUERY_2_CREATED) - .creator(USER_1_BRIEF_DTO) + .owner(USER_1_BRIEF_DTO) .queryHash(QUERY_2_QUERY_HASH) .execution(QUERY_2_EXECUTION) .isPersisted(QUERY_2_PERSISTED) @@ -2600,8 +2553,7 @@ public abstract class BaseTest { .queryNormalized(QUERY_3_STATEMENT) .resultNumber(QUERY_3_RESULT_NUMBER) .resultHash(QUERY_3_RESULT_HASH) - .created(QUERY_3_CREATED) - .creator(USER_1_BRIEF_DTO) + .owner(USER_1_BRIEF_DTO) .queryHash(QUERY_3_QUERY_HASH) .execution(QUERY_3_EXECUTION) .isPersisted(QUERY_3_PERSISTED) @@ -2628,11 +2580,10 @@ public abstract class BaseTest { .query(QUERY_4_STATEMENT) .queryHash(QUERY_4_QUERY_HASH) .resultHash(QUERY_4_RESULT_HASH) - .created(QUERY_4_CREATED) .execution(QUERY_4_EXECUTION) .isPersisted(QUERY_4_PERSISTED) .resultNumber(QUERY_4_RESULT_NUMBER) - .creator(USER_1_BRIEF_DTO) + .owner(USER_3_BRIEF_DTO) .isPersisted(QUERY_4_PERSISTED) .build(); @@ -2669,10 +2620,10 @@ public abstract class BaseTest { .queryNormalized(QUERY_4_STATEMENT) .resultNumber(QUERY_4_RESULT_NUMBER) .resultHash(QUERY_4_RESULT_HASH) - .created(QUERY_4_CREATED) .queryHash(QUERY_4_QUERY_HASH) .execution(QUERY_4_EXECUTION) .isPersisted(QUERY_4_PERSISTED) + .owner(USER_1_BRIEF_DTO) .build(); public final static Long QUERY_5_ID = 5L; @@ -2694,11 +2645,10 @@ public abstract class BaseTest { .queryNormalized(QUERY_5_STATEMENT) .resultNumber(QUERY_5_RESULT_NUMBER) .resultHash(QUERY_5_RESULT_HASH) - .created(QUERY_5_CREATED) .queryHash(QUERY_5_QUERY_HASH) .execution(QUERY_5_EXECUTION) .isPersisted(QUERY_5_PERSISTED) - .creator(USER_1_BRIEF_DTO) + .owner(USER_1_BRIEF_DTO) .build(); public final static QueryResultDto QUERY_5_RESULT_DTO = QueryResultDto.builder() @@ -2733,8 +2683,7 @@ public abstract class BaseTest { .queryNormalized(QUERY_6_STATEMENT) .resultNumber(QUERY_6_RESULT_NUMBER) .resultHash(QUERY_6_RESULT_HASH) - .created(QUERY_6_CREATED) - .creator(USER_1_BRIEF_DTO) + .owner(USER_1_BRIEF_DTO) .queryHash(QUERY_6_QUERY_HASH) .execution(QUERY_6_EXECUTION) .isPersisted(QUERY_6_PERSISTED) @@ -4726,7 +4675,8 @@ public abstract class BaseTest { .isPublic(VIEW_1_PUBLIC) .query(VIEW_1_QUERY) .queryHash(VIEW_1_QUERY_HASH) - .createdBy(USER_1_ID) + .ownedBy(USER_1_ID) + .owner(USER_1) .columns(null) /* VIEW_1_COLUMNS */ .build(); @@ -4801,7 +4751,7 @@ public abstract class BaseTest { .internalName(VIEW_1_INTERNAL_NAME) .vdbid(VIEW_1_DATABASE_ID) .isPublic(VIEW_1_PUBLIC) - .creator(USER_1_BRIEF_DTO) + .owner(USER_1_BRIEF_DTO) .query(VIEW_1_QUERY) .queryHash(VIEW_1_QUERY_HASH) .columns(VIEW_1_COLUMNS_DTO) @@ -4816,7 +4766,7 @@ public abstract class BaseTest { .internalName(VIEW_1_INTERNAL_NAME) .vdbid(VIEW_1_DATABASE_ID) .isPublic(VIEW_1_PUBLIC) - .creator(USER_1_BRIEF_DTO) + .owner(USER_1_BRIEF_DTO) .query(VIEW_1_QUERY) .queryHash(VIEW_1_QUERY_HASH) .columns(VIEW_1_COLUMNS_DTO) @@ -4829,7 +4779,7 @@ public abstract class BaseTest { .internalName(VIEW_1_INTERNAL_NAME) .vdbid(VIEW_1_DATABASE_ID) .isPublic(VIEW_1_PUBLIC) - .createdBy(USER_1_ID) + .ownedBy(USER_1_ID) .query(VIEW_1_QUERY) .queryHash(VIEW_1_QUERY_HASH) .build(); @@ -4900,7 +4850,8 @@ public abstract class BaseTest { .columns(null) /* VIEW_2_COLUMNS */ .query(VIEW_2_QUERY) .queryHash(VIEW_2_QUERY_HASH) - .createdBy(USER_1_ID) + .ownedBy(USER_1_ID) + .owner(USER_1) .build(); public final static List<ViewColumn> VIEW_2_COLUMNS = List.of( @@ -4957,7 +4908,7 @@ public abstract class BaseTest { .columns(VIEW_2_COLUMNS_DTO) .query(VIEW_2_QUERY) .queryHash(VIEW_2_QUERY_HASH) - .creator(USER_1_BRIEF_DTO) + .owner(USER_1_BRIEF_DTO) .build(); public final static PrivilegedViewDto VIEW_2_PRIVILEGED_DTO = PrivilegedViewDto.builder() @@ -4968,7 +4919,7 @@ public abstract class BaseTest { .internalName(VIEW_2_INTERNAL_NAME) .vdbid(VIEW_2_DATABASE_ID) .isPublic(VIEW_2_PUBLIC) - .creator(USER_2_BRIEF_DTO) + .owner(USER_2_BRIEF_DTO) .query(VIEW_2_QUERY) .queryHash(VIEW_2_QUERY_HASH) .columns(VIEW_2_COLUMNS_DTO) @@ -4983,7 +4934,7 @@ public abstract class BaseTest { .isPublic(VIEW_2_PUBLIC) .query(VIEW_2_QUERY) .queryHash(VIEW_2_QUERY_HASH) - .createdBy(USER_1_ID) + .ownedBy(USER_1_ID) .build(); public final static Long VIEW_3_ID = 3L; @@ -5050,7 +5001,7 @@ public abstract class BaseTest { .columns(null) /* VIEW_3_COLUMNS */ .query(VIEW_3_QUERY) .queryHash(VIEW_3_QUERY_HASH) - .createdBy(USER_1_ID) + .ownedBy(USER_1_ID) .build(); public final static PrivilegedViewDto VIEW_3_PRIVILEGED_DTO = PrivilegedViewDto.builder() @@ -5061,7 +5012,7 @@ public abstract class BaseTest { .internalName(VIEW_3_INTERNAL_NAME) .vdbid(VIEW_3_DATABASE_ID) .isPublic(VIEW_3_PUBLIC) - .creator(USER_1_BRIEF_DTO) + .owner(USER_1_BRIEF_DTO) .query(VIEW_3_QUERY) .queryHash(VIEW_3_QUERY_HASH) .columns(VIEW_3_COLUMNS_DTO) @@ -5121,7 +5072,7 @@ public abstract class BaseTest { .columns(VIEW_3_COLUMNS_DTO) .query(VIEW_3_QUERY) .queryHash(VIEW_3_QUERY_HASH) - .creator(USER_1_BRIEF_DTO) + .owner(USER_1_BRIEF_DTO) .build(); public final static ViewBriefDto VIEW_3_BRIEF_DTO = ViewBriefDto.builder() @@ -5133,7 +5084,7 @@ public abstract class BaseTest { .isPublic(VIEW_3_PUBLIC) .query(VIEW_3_QUERY) .queryHash(VIEW_3_QUERY_HASH) - .createdBy(USER_1_ID) + .ownedBy(USER_1_ID) .build(); public final static Long VIEW_4_ID = 4L; @@ -5295,7 +5246,7 @@ public abstract class BaseTest { .isPublic(VIEW_4_PUBLIC) .query(VIEW_4_QUERY) .queryHash(VIEW_4_QUERY_HASH) - .createdBy(USER_1_ID) + .ownedBy(USER_1_ID) .columns(null) /* VIEW_4_COLUMNS */ .build(); @@ -5308,7 +5259,7 @@ public abstract class BaseTest { .isPublic(VIEW_4_PUBLIC) .query(VIEW_4_QUERY) .queryHash(VIEW_4_QUERY_HASH) - .creator(USER_1_BRIEF_DTO) + .owner(USER_1_BRIEF_DTO) .columns(VIEW_4_COLUMNS_DTO) .build(); @@ -5321,7 +5272,7 @@ public abstract class BaseTest { .isPublic(VIEW_4_PUBLIC) .query(VIEW_4_QUERY) .queryHash(VIEW_4_QUERY_HASH) - .createdBy(USER_1_ID) + .ownedBy(USER_1_ID) .build(); public final static List<ViewColumn> VIEW_4_COLUMNS = List.of( @@ -5498,7 +5449,7 @@ public abstract class BaseTest { .isPublic(VIEW_5_PUBLIC) .query(VIEW_5_QUERY) .queryHash(VIEW_5_QUERY_HASH) - .createdBy(USER_1_ID) + .ownedBy(USER_1_ID) .columns(null) .build(); @@ -5511,7 +5462,7 @@ public abstract class BaseTest { .isPublic(VIEW_5_PUBLIC) .query(VIEW_5_QUERY) .queryHash(VIEW_5_QUERY_HASH) - .creator(USER_1_BRIEF_DTO) + .owner(USER_1_BRIEF_DTO) .columns(null) .build(); @@ -5927,8 +5878,8 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_1_RESULT_NUMBER) .publisher(IDENTIFIER_1_PUBLISHER) .type(IDENTIFIER_1_TYPE) - .createdBy(USER_1_ID) - .creator(USER_1) + .ownedBy(USER_1_ID) + .owner(USER_1) .licenses(new LinkedList<>(List.of(LICENSE_1))) .creators(new LinkedList<>(List.of(IDENTIFIER_1_CREATOR_1))) .funders(new LinkedList<>(List.of(IDENTIFIER_1_FUNDER_1))) @@ -5954,7 +5905,8 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_1_RESULT_NUMBER) .publisher(IDENTIFIER_1_PUBLISHER) .type(IDENTIFIER_1_TYPE) - .createdBy(USER_1_ID) + .ownedBy(USER_1_ID) + .owner(USER_1) .licenses(List.of(LICENSE_1)) .creators(List.of(IDENTIFIER_1_CREATOR_1)) .funders(List.of(IDENTIFIER_1_FUNDER_1)) @@ -5968,8 +5920,6 @@ public abstract class BaseTest { .descriptions(List.of(IDENTIFIER_1_DESCRIPTION_1_DTO)) .titles(List.of(IDENTIFIER_1_TITLE_1_DTO, IDENTIFIER_1_TITLE_2_DTO)) .doi(IDENTIFIER_1_DOI) - .created(IDENTIFIER_1_CREATED) - .lastModified(IDENTIFIER_1_MODIFIED) .execution(IDENTIFIER_1_EXECUTION) .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR) .publicationMonth(IDENTIFIER_1_PUBLICATION_MONTH) @@ -5980,7 +5930,7 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_1_RESULT_NUMBER) .publisher(IDENTIFIER_1_PUBLISHER) .type(IDENTIFIER_1_TYPE_DTO) - .creator(USER_1_DTO) + .owner(USER_1_DTO) .licenses(List.of(LICENSE_1_DTO)) .creators(List.of(IDENTIFIER_1_CREATOR_1_DTO)) .funders(List.of(IDENTIFIER_1_FUNDER_1_DTO)) @@ -5993,8 +5943,6 @@ public abstract class BaseTest { .queryId(IDENTIFIER_1_QUERY_ID) .titles(List.of(IDENTIFIER_1_TITLE_1_DTO, IDENTIFIER_1_TITLE_2_DTO)) .doi(IDENTIFIER_1_DOI) - .created(IDENTIFIER_1_CREATED) - .lastModified(IDENTIFIER_1_MODIFIED) .publicationYear(IDENTIFIER_1_PUBLICATION_YEAR) .publisher(IDENTIFIER_1_PUBLISHER) .type(IDENTIFIER_1_TYPE_DTO) @@ -6247,8 +6195,7 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_5_RESULT_NUMBER) .publisher(IDENTIFIER_5_PUBLISHER) .type(IDENTIFIER_5_TYPE) - .createdBy(USER_2_ID) - .creator(USER_2) + .owner(USER_2) .creators(new LinkedList<>(List.of(IDENTIFIER_5_CREATOR_1, IDENTIFIER_5_CREATOR_2))) .status(IDENTIFIER_5_STATUS_TYPE) .build(); @@ -6260,8 +6207,6 @@ public abstract class BaseTest { .descriptions(List.of(IDENTIFIER_5_DESCRIPTION_1_DTO)) .titles(List.of(IDENTIFIER_5_TITLE_1_DTO)) .doi(IDENTIFIER_5_DOI) - .created(IDENTIFIER_5_CREATED) - .lastModified(IDENTIFIER_5_MODIFIED) .execution(IDENTIFIER_5_EXECUTION) .publicationDay(IDENTIFIER_5_PUBLICATION_DAY) .publicationMonth(IDENTIFIER_5_PUBLICATION_MONTH) @@ -6273,7 +6218,7 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_5_RESULT_NUMBER) .publisher(IDENTIFIER_5_PUBLISHER) .type(IDENTIFIER_5_TYPE_DTO) - .creator(USER_2_DTO) + .owner(USER_2_DTO) .creators(List.of(IDENTIFIER_5_CREATOR_1_DTO, IDENTIFIER_5_CREATOR_2_DTO)) .build(); @@ -6283,8 +6228,6 @@ public abstract class BaseTest { .queryId(IDENTIFIER_5_QUERY_ID) .titles(List.of(IDENTIFIER_5_TITLE_1_DTO)) .doi(IDENTIFIER_5_DOI) - .created(IDENTIFIER_5_CREATED) - .lastModified(IDENTIFIER_5_MODIFIED) .publicationYear(IDENTIFIER_5_PUBLICATION_YEAR) .publisher(IDENTIFIER_5_PUBLISHER) .type(IDENTIFIER_5_TYPE_DTO) @@ -6530,8 +6473,8 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_6_RESULT_NUMBER) .publisher(IDENTIFIER_6_PUBLISHER) .type(IDENTIFIER_6_TYPE) - .createdBy(USER_3_ID) - .creator(USER_3) + .ownedBy(USER_3_ID) + .owner(USER_3) .licenses(new LinkedList<>(List.of(LICENSE_1))) .creators(new LinkedList<>(List.of(IDENTIFIER_6_CREATOR_1, IDENTIFIER_6_CREATOR_2, IDENTIFIER_6_CREATOR_3))) .status(IDENTIFIER_6_STATUS_TYPE) @@ -6544,8 +6487,6 @@ public abstract class BaseTest { .descriptions(List.of(IDENTIFIER_6_DESCRIPTION_1_DTO)) .titles(List.of(IDENTIFIER_6_TITLE_1_DTO)) .doi(IDENTIFIER_6_DOI) - .created(IDENTIFIER_6_CREATED) - .lastModified(IDENTIFIER_6_MODIFIED) .execution(IDENTIFIER_6_EXECUTION) .publicationDay(IDENTIFIER_6_PUBLICATION_DAY) .publicationMonth(IDENTIFIER_6_PUBLICATION_MONTH) @@ -6557,7 +6498,7 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_6_RESULT_NUMBER) .publisher(IDENTIFIER_6_PUBLISHER) .type(IDENTIFIER_6_TYPE_DTO) - .creator(USER_3_DTO) + .owner(USER_3_DTO) .licenses(new LinkedList<>(List.of(LICENSE_1_DTO))) .creators(new LinkedList<>(List.of(IDENTIFIER_6_CREATOR_1_DTO, IDENTIFIER_6_CREATOR_2_DTO, IDENTIFIER_6_CREATOR_3_DTO))) .status(IDENTIFIER_6_STATUS_TYPE_DTO) @@ -6570,8 +6511,6 @@ public abstract class BaseTest { .queryId(IDENTIFIER_6_QUERY_ID) .titles(List.of(IDENTIFIER_6_TITLE_1_DTO)) .doi(IDENTIFIER_6_DOI) - .created(IDENTIFIER_6_CREATED) - .lastModified(IDENTIFIER_6_MODIFIED) .publicationYear(IDENTIFIER_6_PUBLICATION_YEAR) .publisher(IDENTIFIER_6_PUBLISHER) .type(IDENTIFIER_6_TYPE_DTO) @@ -6658,8 +6597,6 @@ public abstract class BaseTest { .descriptions(new LinkedList<>()) .titles(new LinkedList<>()) .doi(IDENTIFIER_7_DOI) - .created(IDENTIFIER_7_CREATED) - .lastModified(IDENTIFIER_7_MODIFIED) .execution(IDENTIFIER_7_EXECUTION) .publicationDay(IDENTIFIER_7_PUBLICATION_DAY) .publicationMonth(IDENTIFIER_7_PUBLICATION_MONTH) @@ -6667,7 +6604,7 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_7_RESULT_NUMBER) .publisher(IDENTIFIER_7_PUBLISHER) .type(IDENTIFIER_7_TYPE_DTO) - .creator(USER_4_DTO) + .owner(USER_4_DTO) .licenses(new LinkedList<>()) .funders(new LinkedList<>()) .creators(new LinkedList<>()) @@ -6755,8 +6692,8 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_2_RESULT_NUMBER) .publisher(IDENTIFIER_2_PUBLISHER) .type(IDENTIFIER_2_TYPE) - .createdBy(USER_1_ID) - .creator(USER_1) + .ownedBy(USER_1_ID) + .owner(USER_1) .licenses(new LinkedList<>(List.of(LICENSE_1))) .creators(new LinkedList<>()) .status(IDENTIFIER_2_STATUS_TYPE) @@ -6769,8 +6706,6 @@ public abstract class BaseTest { .descriptions(new LinkedList<>()) .titles(new LinkedList<>()) .doi(IDENTIFIER_2_DOI) - .created(IDENTIFIER_2_CREATED) - .lastModified(IDENTIFIER_2_MODIFIED) .execution(IDENTIFIER_2_EXECUTION) .publicationDay(IDENTIFIER_2_PUBLICATION_DAY) .publicationMonth(IDENTIFIER_2_PUBLICATION_MONTH) @@ -6782,7 +6717,7 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_2_RESULT_NUMBER) .publisher(IDENTIFIER_2_PUBLISHER) .type(IDENTIFIER_2_TYPE_DTO) - .creator(USER_1_DTO) + .owner(USER_1_DTO) .licenses(new LinkedList<>(List.of(LICENSE_1_DTO))) .creators(new LinkedList<>()) .status(IDENTIFIER_2_STATUS_TYPE_DTO) @@ -6794,8 +6729,6 @@ public abstract class BaseTest { .databaseId(IDENTIFIER_2_DATABASE_ID) .titles(new LinkedList<>()) .doi(IDENTIFIER_2_DOI) - .created(IDENTIFIER_2_CREATED) - .lastModified(IDENTIFIER_2_MODIFIED) .publicationYear(IDENTIFIER_2_PUBLICATION_YEAR) .publisher(IDENTIFIER_2_PUBLISHER) .type(IDENTIFIER_2_TYPE_DTO) @@ -6860,8 +6793,8 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_3_RESULT_NUMBER) .publisher(IDENTIFIER_3_PUBLISHER) .type(IDENTIFIER_3_TYPE) - .createdBy(USER_1_ID) - .creator(USER_1) + .ownedBy(USER_1_ID) + .owner(USER_1) .licenses(new LinkedList<>(List.of(LICENSE_1))) .creators(new LinkedList<>()) .status(IDENTIFIER_3_STATUS_TYPE) @@ -6874,8 +6807,6 @@ public abstract class BaseTest { .descriptions(new LinkedList<>()) .titles(new LinkedList<>()) .doi(IDENTIFIER_3_DOI) - .created(IDENTIFIER_3_CREATED) - .lastModified(IDENTIFIER_3_MODIFIED) .execution(IDENTIFIER_3_EXECUTION) .publicationDay(IDENTIFIER_3_PUBLICATION_DAY) .publicationMonth(IDENTIFIER_3_PUBLICATION_MONTH) @@ -6887,7 +6818,7 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_3_RESULT_NUMBER) .publisher(IDENTIFIER_3_PUBLISHER) .type(IDENTIFIER_3_TYPE_DTO) - .creator(USER_1_DTO) + .owner(USER_1_DTO) .licenses(new LinkedList<>(List.of(LICENSE_1_DTO))) .creators(new LinkedList<>()) .status(IDENTIFIER_3_STATUS_TYPE_DTO) @@ -6899,8 +6830,6 @@ public abstract class BaseTest { .viewId(IDENTIFIER_3_VIEW_ID) .titles(new LinkedList<>()) .doi(IDENTIFIER_3_DOI) - .created(IDENTIFIER_3_CREATED) - .lastModified(IDENTIFIER_3_MODIFIED) .publicationYear(IDENTIFIER_3_PUBLICATION_YEAR) .publisher(IDENTIFIER_3_PUBLISHER) .type(IDENTIFIER_3_TYPE_DTO) @@ -6966,8 +6895,8 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_4_RESULT_NUMBER) .publisher(IDENTIFIER_4_PUBLISHER) .type(IDENTIFIER_4_TYPE) - .createdBy(USER_1_ID) - .creator(USER_1) + .ownedBy(USER_1_ID) + .owner(USER_1) .licenses(new LinkedList<>(List.of(LICENSE_1))) .creators(new LinkedList<>()) .status(IDENTIFIER_4_STATUS_TYPE) @@ -6980,8 +6909,6 @@ public abstract class BaseTest { .descriptions(new LinkedList<>()) .titles(new LinkedList<>()) .doi(IDENTIFIER_4_DOI) - .created(IDENTIFIER_4_CREATED) - .lastModified(IDENTIFIER_4_MODIFIED) .execution(IDENTIFIER_4_EXECUTION) .publicationDay(IDENTIFIER_4_PUBLICATION_DAY) .publicationMonth(IDENTIFIER_4_PUBLICATION_MONTH) @@ -6990,7 +6917,7 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_4_RESULT_NUMBER) .publisher(IDENTIFIER_4_PUBLISHER) .type(IDENTIFIER_4_TYPE_DTO) - .creator(USER_1_DTO) + .owner(USER_1_DTO) .licenses(new LinkedList<>(List.of(LICENSE_1_DTO))) .creators(new LinkedList<>()) .status(IDENTIFIER_4_STATUS_TYPE_DTO) @@ -7002,8 +6929,6 @@ public abstract class BaseTest { .tableId(IDENTIFIER_4_TABLE_ID) .titles(new LinkedList<>()) .doi(IDENTIFIER_4_DOI) - .created(IDENTIFIER_4_CREATED) - .lastModified(IDENTIFIER_4_MODIFIED) .publicationYear(IDENTIFIER_4_PUBLICATION_YEAR) .publisher(IDENTIFIER_4_PUBLISHER) .type(IDENTIFIER_4_TYPE_DTO) @@ -7119,8 +7044,8 @@ public abstract class BaseTest { .exchangeName(DATABASE_1_EXCHANGE) .created(DATABASE_1_CREATED) .lastModified(DATABASE_1_LAST_MODIFIED) - .createdBy(DATABASE_1_CREATED_BY) - .creator(USER_1) + .ownedBy(DATABASE_1_CREATED_BY) + .owner(USER_1) .ownedBy(DATABASE_1_OWNER) .owner(USER_1) .image(new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}) @@ -7135,7 +7060,6 @@ public abstract class BaseTest { public final static DatabaseDto DATABASE_1_DTO = DatabaseDto.builder() .id(DATABASE_1_ID) - .created(Instant.now().minus(1, HOURS)) .isPublic(DATABASE_1_PUBLIC) .name(DATABASE_1_NAME) .container(CONTAINER_1_BRIEF_DTO) @@ -7148,17 +7072,14 @@ public abstract class BaseTest { public final static PrivilegedDatabaseDto DATABASE_1_PRIVILEGED_DTO = PrivilegedDatabaseDto.builder() .id(DATABASE_1_ID) - .created(Instant.now().minus(1, HOURS)) .isPublic(DATABASE_1_PUBLIC) .name(DATABASE_1_NAME) .container(CONTAINER_1_PRIVILEGED_DTO) .internalName(DATABASE_1_INTERNALNAME) .exchangeName(DATABASE_1_EXCHANGE) - .identifiers(List.of(IDENTIFIER_1_BRIEF_DTO, IDENTIFIER_2_BRIEF_DTO, IDENTIFIER_3_BRIEF_DTO, IDENTIFIER_4_BRIEF_DTO)) - .tables(List.of(TABLE_1_BRIEF_DTO, TABLE_2_BRIEF_DTO, TABLE_3_BRIEF_DTO, TABLE_4_BRIEF_DTO)) - .views(List.of(VIEW_1_BRIEF_DTO, VIEW_2_BRIEF_DTO, VIEW_3_BRIEF_DTO)) - .created(DATABASE_1_CREATED) - .creator(USER_1_BRIEF_DTO) + .identifiers(List.of(IDENTIFIER_1_DTO, IDENTIFIER_2_DTO, IDENTIFIER_3_DTO, IDENTIFIER_4_DTO)) + .tables(List.of(TABLE_1_DTO, TABLE_2_DTO, TABLE_3_DTO, TABLE_4_DTO)) + .views(List.of(VIEW_1_DTO, VIEW_2_DTO, VIEW_3_DTO)) .owner(USER_1_BRIEF_DTO) .build(); @@ -7174,7 +7095,7 @@ public abstract class BaseTest { .type(AccessTypeDto.READ) .hdbid(DATABASE_1_ID) .huserid(USER_1_ID) - .user(USER_1_DTO) + .user(USER_1_BRIEF_DTO) .build(); public final static DatabaseAccess DATABASE_1_USER_1_WRITE_OWN_ACCESS = DatabaseAccess.builder() @@ -7205,7 +7126,7 @@ public abstract class BaseTest { .type(AccessTypeDto.READ) .hdbid(DATABASE_1_ID) .huserid(USER_2_ID) - .user(USER_2_DTO) + .user(USER_2_BRIEF_DTO) .build(); public final static DatabaseAccess DATABASE_1_USER_2_WRITE_OWN_ACCESS = DatabaseAccess.builder() @@ -7220,7 +7141,7 @@ public abstract class BaseTest { .type(AccessTypeDto.WRITE_OWN) .hdbid(DATABASE_1_ID) .huserid(USER_2_ID) - .user(USER_2_DTO) + .user(USER_2_BRIEF_DTO) .build(); public final static DatabaseAccess DATABASE_1_USER_2_WRITE_ALL_ACCESS = DatabaseAccess.builder() @@ -7235,7 +7156,7 @@ public abstract class BaseTest { .type(AccessTypeDto.WRITE_ALL) .hdbid(DATABASE_1_ID) .huserid(USER_2_ID) - .user(USER_2_DTO) + .user(USER_2_BRIEF_DTO) .build(); public final static DatabaseAccess DATABASE_1_USER_3_READ_ACCESS = DatabaseAccess.builder() @@ -7266,7 +7187,7 @@ public abstract class BaseTest { .type(AccessTypeDto.WRITE_ALL) .hdbid(DATABASE_1_ID) .huserid(USER_3_ID) - .user(USER_3_DTO) + .user(USER_3_BRIEF_DTO) .build(); public final static Database DATABASE_2 = Database.builder() @@ -7283,8 +7204,6 @@ public abstract class BaseTest { .exchangeName(DATABASE_2_EXCHANGE) .created(DATABASE_2_CREATED) .lastModified(DATABASE_2_LAST_MODIFIED) - .createdBy(DATABASE_2_CREATOR) - .creator(USER_2) .ownedBy(DATABASE_2_OWNER) .owner(USER_2) .contactPerson(USER_2_ID) @@ -7297,23 +7216,19 @@ public abstract class BaseTest { public final static PrivilegedDatabaseDto DATABASE_2_PRIVILEGED_DTO = PrivilegedDatabaseDto.builder() .id(DATABASE_2_ID) - .created(Instant.now().minus(1, HOURS)) .isPublic(DATABASE_2_PUBLIC) .name(DATABASE_2_NAME) .container(CONTAINER_1_PRIVILEGED_DTO) .internalName(DATABASE_2_INTERNALNAME) .exchangeName(DATABASE_2_EXCHANGE) - .identifiers(List.of(IDENTIFIER_5_BRIEF_DTO)) - .tables(List.of(TABLE_5_BRIEF_DTO, TABLE_6_BRIEF_DTO, TABLE_7_BRIEF_DTO)) - .views(List.of(VIEW_4_BRIEF_DTO)) - .created(DATABASE_2_CREATED) - .creator(USER_2_BRIEF_DTO) + .identifiers(List.of(IDENTIFIER_5_DTO)) + .tables(List.of(TABLE_5_DTO, TABLE_6_DTO, TABLE_7_DTO)) + .views(List.of(VIEW_4_DTO)) .owner(USER_2_BRIEF_DTO) .build(); public final static DatabaseDto DATABASE_2_DTO = DatabaseDto.builder() .id(DATABASE_2_ID) - .created(DATABASE_2_CREATED) .isPublic(DATABASE_2_PUBLIC) .name(DATABASE_2_NAME) .container(CONTAINER_1_BRIEF_DTO) @@ -7377,7 +7292,7 @@ public abstract class BaseTest { .type(AccessTypeDto.WRITE_ALL) .hdbid(DATABASE_2_ID) .huserid(USER_2_ID) - .user(USER_2_DTO) + .user(USER_2_BRIEF_DTO) .build(); public final static DatabaseAccess DATABASE_2_USER_3_READ_ACCESS = DatabaseAccess.builder() @@ -7392,7 +7307,7 @@ public abstract class BaseTest { .type(AccessTypeDto.READ) .hdbid(DATABASE_2_ID) .huserid(USER_3_ID) - .user(USER_3_DTO) + .user(USER_3_BRIEF_DTO) .build(); public final static DatabaseAccess DATABASE_2_USER_3_WRITE_OWN_ACCESS = DatabaseAccess.builder() @@ -7425,8 +7340,6 @@ public abstract class BaseTest { .exchangeName(DATABASE_3_EXCHANGE) .created(DATABASE_3_CREATED) .lastModified(DATABASE_3_LAST_MODIFIED) - .createdBy(DATABASE_3_CREATOR_ID) - .creator(USER_3) .ownedBy(DATABASE_3_OWNER) .owner(USER_3) .contactPerson(USER_3_ID) @@ -7449,7 +7362,7 @@ public abstract class BaseTest { .type(AccessTypeDto.READ) .hdbid(DATABASE_3_ID) .huserid(USER_1_ID) - .user(USER_1_DTO) + .user(USER_1_BRIEF_DTO) .build(); public final static DatabaseAccess DATABASE_3_USER_1_WRITE_OWN_ACCESS = DatabaseAccess.builder() @@ -7464,7 +7377,7 @@ public abstract class BaseTest { .type(AccessTypeDto.WRITE_OWN) .hdbid(DATABASE_3_ID) .huserid(USER_1_ID) - .user(USER_1_DTO) + .user(USER_1_BRIEF_DTO) .build(); public final static DatabaseAccess DATABASE_3_USER_1_WRITE_ALL_ACCESS = DatabaseAccess.builder() @@ -7511,7 +7424,7 @@ public abstract class BaseTest { .type(AccessTypeDto.READ) .hdbid(DATABASE_3_ID) .huserid(USER_3_ID) - .user(USER_3_DTO) + .user(USER_3_BRIEF_DTO) .build(); public final static DatabaseAccess DATABASE_3_USER_3_WRITE_OWN_ACCESS = DatabaseAccess.builder() @@ -7526,7 +7439,7 @@ public abstract class BaseTest { .type(AccessTypeDto.WRITE_OWN) .hdbid(DATABASE_3_ID) .huserid(USER_3_ID) - .user(USER_3_DTO) + .user(USER_3_BRIEF_DTO) .build(); public final static DatabaseAccess DATABASE_3_USER_3_WRITE_ALL_ACCESS = DatabaseAccess.builder() @@ -7541,22 +7454,19 @@ public abstract class BaseTest { .type(AccessTypeDto.WRITE_ALL) .hdbid(DATABASE_3_ID) .huserid(USER_3_ID) - .user(USER_3_DTO) + .user(USER_3_BRIEF_DTO) .build(); public final static PrivilegedDatabaseDto DATABASE_3_PRIVILEGED_DTO = PrivilegedDatabaseDto.builder() .id(DATABASE_3_ID) - .created(Instant.now().minus(1, HOURS)) .isPublic(DATABASE_3_PUBLIC) .name(DATABASE_3_NAME) .container(CONTAINER_1_PRIVILEGED_DTO) .internalName(DATABASE_3_INTERNALNAME) .exchangeName(DATABASE_3_EXCHANGE) - .identifiers(List.of(IDENTIFIER_6_BRIEF_DTO)) - .tables(List.of(TABLE_8_BRIEF_DTO)) - .views(List.of(VIEW_5_BRIEF_DTO)) - .created(DATABASE_3_CREATED) - .creator(USER_3_BRIEF_DTO) + .identifiers(List.of(IDENTIFIER_6_DTO)) + .tables(List.of(TABLE_8_DTO)) + .views(List.of(VIEW_5_DTO)) .owner(USER_3_BRIEF_DTO) .build(); @@ -7574,8 +7484,8 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_7_RESULT_NUMBER) .publisher(IDENTIFIER_7_PUBLISHER) .type(IDENTIFIER_7_TYPE) - .createdBy(USER_4_ID) - .creator(USER_4) + .ownedBy(USER_4_ID) + .owner(USER_4) .licenses(new LinkedList<>()) .creators(new LinkedList<>(List.of(IDENTIFIER_7_CREATOR_1))) .relatedIdentifiers(new LinkedList<>()) @@ -7596,8 +7506,6 @@ public abstract class BaseTest { .exchangeName(DATABASE_4_EXCHANGE) .created(DATABASE_4_CREATED) .lastModified(DATABASE_4_LAST_MODIFIED) - .createdBy(DATABASE_4_CREATOR) - .creator(USER_4) .ownedBy(DATABASE_4_OWNER) .owner(USER_4) .contactPerson(USER_4_ID) diff --git a/dbrepo-search-service/init/database.json b/dbrepo-search-service/init/database.json index caba2e16cd..fb175700c6 100644 --- a/dbrepo-search-service/init/database.json +++ b/dbrepo-search-service/init/database.json @@ -18,20 +18,16 @@ }, "user": { "properties": { - "attributes": { - "properties": { - "theme": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } + "id": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 } } }, - "id": { + "qualified_name": { "type": "text", "fields": { "keyword": { @@ -40,7 +36,7 @@ } } }, - "qualified_name": { + "name": { "type": "text", "fields": { "keyword": { @@ -49,7 +45,7 @@ } } }, - "username": { + "orcid": { "type": "text", "fields": { "keyword": { @@ -57,16 +53,8 @@ "ignore_above": 256 } } - } - } - } - } - }, - "contact": { - "properties": { - "attributes": { - "properties": { - "theme": { + }, + "username": { "type": "text", "fields": { "keyword": { @@ -76,7 +64,11 @@ } } } - }, + } + } + }, + "contact": { + "properties": { "id": { "type": "text", "fields": { @@ -95,6 +87,24 @@ } } }, + "name": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "orcid": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, "username": { "type": "text", "fields": { @@ -236,20 +246,16 @@ }, "creator": { "properties": { - "attributes": { - "properties": { - "theme": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } + "id": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 } } }, - "id": { + "qualified_name": { "type": "text", "fields": { "keyword": { @@ -258,7 +264,16 @@ } } }, - "qualified_name": { + "name": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "orcid": { "type": "text", "fields": { "keyword": { @@ -315,6 +330,24 @@ } } }, + "name": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "orcid": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, "username": { "type": "text", "fields": { @@ -400,9 +433,6 @@ "id": { "type": "long" }, - "last_modified": { - "type": "date" - }, "licenses": { "properties": { "description": { @@ -544,19 +574,6 @@ }, "owner": { "properties": { - "attributes": { - "properties": { - "theme": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - } - } - }, "id": { "type": "text", "fields": { @@ -716,31 +733,18 @@ "created": { "type": "date" }, - "created_by": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - }, "creator": { "properties": { - "attributes": { - "properties": { - "theme": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } + "id": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 } } }, - "id": { + "qualified_name": { "type": "text", "fields": { "keyword": { @@ -749,7 +753,16 @@ } } }, - "qualified_name": { + "name": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "orcid": { "type": "text", "fields": { "keyword": { @@ -819,20 +832,16 @@ }, "owner": { "properties": { - "attributes": { - "properties": { - "theme": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } + "id": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 } } }, - "id": { + "qualified_name": { "type": "text", "fields": { "keyword": { @@ -841,7 +850,16 @@ } } }, - "qualified_name": { + "name": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "orcid": { "type": "text", "fields": { "keyword": { @@ -934,20 +952,16 @@ }, "creator": { "properties": { - "attributes": { - "properties": { - "theme": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } + "id": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 } } }, - "id": { + "qualified_name": { "type": "text", "fields": { "keyword": { @@ -956,7 +970,16 @@ } } }, - "qualified_name": { + "name": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "orcid": { "type": "text", "fields": { "keyword": { @@ -1007,6 +1030,24 @@ } } }, + "name": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "orcid": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, "username": { "type": "text", "fields": { @@ -1092,9 +1133,6 @@ "id": { "type": "long" }, - "last_modified": { - "type": "date" - }, "licenses": { "properties": { "description": { @@ -1219,9 +1257,6 @@ "is_schema_public": { "type": "boolean" }, - "last_modified": { - "type": "date" - }, "name": { "type": "text", "fields": { diff --git a/lib/python/dbrepo/api/dto.py b/lib/python/dbrepo/api/dto.py index 525864fc4d..027010be8d 100644 --- a/lib/python/dbrepo/api/dto.py +++ b/lib/python/dbrepo/api/dto.py @@ -96,7 +96,6 @@ class Container(BaseModel): host: str port: int image: Image - created: Timestamp ui_host: Optional[str] = None ui_port: Optional[int] = None @@ -105,7 +104,6 @@ class ContainerBrief(BaseModel): id: int name: str image: ImageBrief - created: Timestamp internal_name: str running: Optional[bool] = None hash: Optional[str] = None @@ -397,8 +395,7 @@ class Language(str, Enum): class DatabaseAccess(BaseModel): type: AccessType - user: User - created: Timestamp + user: UserBrief class CreateAccess(BaseModel): @@ -596,10 +593,8 @@ class Identifier(BaseModel): id: int database_id: int type: IdentifierType - creator: UserBrief + owner: UserBrief status: IdentifierStatusType - created: Timestamp - last_modified: Timestamp publication_year: int publisher: str creators: List[IdentifierCreator] @@ -628,8 +623,7 @@ class View(BaseModel): name: str query: str query_hash: str - created: Timestamp - creator: User + owner: UserBrief internal_name: str is_public: bool initial_view: bool @@ -657,18 +651,15 @@ class ViewBrief(BaseModel): identifier: List[Identifier] query: str query_hash: str - created: Timestamp - creator: User + owner: UserBrief internal_name: str is_public: bool initial_view: bool - last_modified: Timestamp class Concept(BaseModel): id: int uri: str - created: Timestamp name: Optional[str] = None description: Optional[str] = None @@ -704,7 +695,6 @@ class TableStatistics(BaseModel): class Unit(BaseModel): id: int uri: str - created: Timestamp name: Optional[str] = None description: Optional[str] = None @@ -857,17 +847,15 @@ class IdentifierType(str, Enum): class Query(BaseModel): id: int - creator: User + owner: UserBrief execution: Timestamp query: str type: QueryType - created: Timestamp database_id: int query_hash: str is_persisted: bool result_hash: str query_normalized: str - last_modified: Timestamp result_number: Optional[int] = None identifiers: List[Identifier] = field(default_factory=list) @@ -946,14 +934,11 @@ class Table(BaseModel): id: int database_id: int name: str - creator: User - owner: User - created: Timestamp + owner: UserBrief columns: List[Column] constraints: Constraints internal_name: str is_versioned: bool - created_by: str queue_name: str routing_key: str is_public: bool @@ -980,10 +965,8 @@ class ColumnMinimal(BaseModel): class Database(BaseModel): id: int name: str - creator: User - owner: User - contact: User - created: Timestamp + owner: UserBrief + contact: UserBrief exchange_name: str internal_name: str is_public: bool @@ -1007,7 +990,6 @@ class DatabaseBrief(BaseModel): identifiers: Optional[List[Identifier]] = field(default_factory=list) contact: UserBrief owner: UserBrief - created: Timestamp class Unique(BaseModel): -- GitLab From 512e30bf74a09d804b1ff9b1bd3e86abc9ed5e87 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Mon, 9 Dec 2024 13:16:23 +0100 Subject: [PATCH 03/12] Proof of concept seems to work --- dbrepo-analyse-service/Pipfile.lock | 118 +++++----- .../lib/dbrepo-1.6.0.tar.gz | Bin 39597 -> 39681 bytes .../at/tuwien/endpoints/TableEndpoint.java | 4 +- .../java/at/tuwien/config/MariaDbConfig.java | 2 +- .../endpoint/TableEndpointUnitTest.java | 2 +- .../DatabaseServiceIntegrationTest.java | 2 - .../service/SchemaServiceIntegrationTest.java | 30 +-- .../service/ViewServiceIntegrationTest.java | 2 +- .../impl/MetadataServiceGatewayImpl.java | 4 +- .../java/at/tuwien/mapper/DataMapper.java | 16 +- .../impl/DatabaseServiceMariaDbImpl.java | 3 - .../impl/SchemaServiceMariaDbImpl.java | 4 +- .../impl/SubsetServiceMariaDbImpl.java | 2 +- .../service/impl/ViewServiceMariaDbImpl.java | 2 +- .../at/tuwien/api/container/ContainerDto.java | 1 + .../internal/PrivilegedContainerDto.java | 1 + .../at/tuwien/api/database/ViewBriefDto.java | 1 - .../at/tuwien/api/database/ViewCreateDto.java | 5 + .../at/tuwien/api/database/ViewUpdateDto.java | 5 + .../api/database/table/TableBriefDto.java | 7 +- .../at/tuwien/entities/database/View.java | 4 +- .../entities/identifier/Identifier.java | 2 +- .../java/at/tuwien/mapper/MetadataMapper.java | 23 +- .../at/tuwien/endpoints/DatabaseEndpoint.java | 53 +++-- .../tuwien/endpoints/IdentifierEndpoint.java | 11 +- .../at/tuwien/endpoints/TableEndpoint.java | 8 +- .../at/tuwien/endpoints/ViewEndpoint.java | 2 +- .../tuwien/validation/EndpointValidator.java | 14 +- .../endpoints/DatabaseEndpointUnitTest.java | 25 ++- .../endpoints/IdentifierEndpointUnitTest.java | 8 +- .../tuwien/mapper/MetadataMapperUnitTest.java | 19 +- .../DatabaseServicePersistenceTest.java | 33 +-- .../service/DatabaseServiceUnitTest.java | 6 +- .../service/impl/DatabaseServiceImpl.java | 10 +- .../service/impl/IdentifierServiceImpl.java | 21 +- .../tuwien/service/impl/TableServiceImpl.java | 2 - .../tuwien/service/impl/ViewServiceImpl.java | 16 +- .../main/java/at/tuwien/test/BaseTest.java | 7 - dbrepo-search-service/Pipfile.lock | 114 +++++----- dbrepo-search-service/init/Pipfile.lock | 112 +++++----- .../init/lib/dbrepo-1.6.0.tar.gz | Bin 39597 -> 39681 bytes dbrepo-search-service/lib/dbrepo-1.6.0.tar.gz | Bin 39597 -> 39681 bytes .../components/database/DatabaseCreate.vue | 3 - .../components/database/DatabaseToolbar.vue | 6 + .../components/dialogs/ViewVisibility.vue | 148 +++++++++++++ dbrepo-ui/components/identifier/Persist.vue | 1 + dbrepo-ui/components/subset/Builder.vue | 60 ++++-- dbrepo-ui/components/table/TableList.vue | 29 ++- dbrepo-ui/components/table/TableSchema.vue | 43 ++-- dbrepo-ui/components/table/TableToolbar.vue | 29 ++- dbrepo-ui/components/user/UserBadge.vue | 3 +- dbrepo-ui/components/view/ViewList.vue | 24 +++ dbrepo-ui/components/view/ViewToolbar.vue | 109 +++++++++- dbrepo-ui/composables/image-service.ts | 21 ++ dbrepo-ui/composables/view-service.ts | 22 +- dbrepo-ui/dto/index.ts | 19 +- dbrepo-ui/locales/en-US.json | 39 ++-- .../pages/database/[database_id]/info.vue | 15 +- .../[database_id]/table/[table_id]/info.vue | 52 ++--- .../[database_id]/table/[table_id]/schema.vue | 18 +- .../[database_id]/view/[view_id]/data.vue | 35 ++- .../[database_id]/view/[view_id]/info.vue | 71 ++++-- .../[database_id]/view/[view_id]/schema.vue | 202 ++++++++++++++++++ dbrepo-ui/pages/signup.vue | 3 - lib/python/dbrepo/RestClient.py | 9 +- lib/python/dbrepo/api/dto.py | 14 +- 66 files changed, 1161 insertions(+), 515 deletions(-) create mode 100644 dbrepo-ui/components/dialogs/ViewVisibility.vue create mode 100644 dbrepo-ui/composables/image-service.ts create mode 100644 dbrepo-ui/pages/database/[database_id]/view/[view_id]/schema.vue diff --git a/dbrepo-analyse-service/Pipfile.lock b/dbrepo-analyse-service/Pipfile.lock index e9c218d9ab..139a80e626 100644 --- a/dbrepo-analyse-service/Pipfile.lock +++ b/dbrepo-analyse-service/Pipfile.lock @@ -427,7 +427,7 @@ }, "dbrepo": { "hashes": [ - "sha256:2fca7fb5037f3497cb4154f770ebe4690e5ff93aef4c4d4ef39288b34806f077" + "sha256:e5331baeb427e2dfbb9d0085deba0b19c9b3e3505d9b49721cf86c0dff19c5d6" ], "path": "./lib/dbrepo-1.6.0.tar.gz" }, @@ -959,65 +959,65 @@ }, "numpy": { "hashes": [ - "sha256:016d0f6f5e77b0f0d45d77387ffa4bb89816b57c835580c3ce8e099ef830befe", - "sha256:02135ade8b8a84011cbb67dc44e07c58f28575cf9ecf8ab304e51c05528c19f0", - "sha256:08788d27a5fd867a663f6fc753fd7c3ad7e92747efc73c53bca2f19f8bc06f48", - "sha256:0d30c543f02e84e92c4b1f415b7c6b5326cbe45ee7882b6b77db7195fb971e3a", - "sha256:0fa14563cc46422e99daef53d725d0c326e99e468a9320a240affffe87852564", - "sha256:13138eadd4f4da03074851a698ffa7e405f41a0845a6b1ad135b81596e4e9958", - "sha256:14e253bd43fc6b37af4921b10f6add6925878a42a0c5fe83daee390bca80bc17", - "sha256:15cb89f39fa6d0bdfb600ea24b250e5f1a3df23f901f51c8debaa6a5d122b2f0", - "sha256:17ee83a1f4fef3c94d16dc1802b998668b5419362c8a4f4e8a491de1b41cc3ee", - "sha256:2312b2aa89e1f43ecea6da6ea9a810d06aae08321609d8dc0d0eda6d946a541b", - "sha256:2564fbdf2b99b3f815f2107c1bbc93e2de8ee655a69c261363a1172a79a257d4", - "sha256:3522b0dfe983a575e6a9ab3a4a4dfe156c3e428468ff08ce582b9bb6bd1d71d4", - "sha256:4394bc0dbd074b7f9b52024832d16e019decebf86caf909d94f6b3f77a8ee3b6", - "sha256:45966d859916ad02b779706bb43b954281db43e185015df6eb3323120188f9e4", - "sha256:4d1167c53b93f1f5d8a139a742b3c6f4d429b54e74e6b57d0eff40045187b15d", - "sha256:4f2015dfe437dfebbfce7c85c7b53d81ba49e71ba7eadbf1df40c915af75979f", - "sha256:50ca6aba6e163363f132b5c101ba078b8cbd3fa92c7865fd7d4d62d9779ac29f", - "sha256:50d18c4358a0a8a53f12a8ba9d772ab2d460321e6a93d6064fc22443d189853f", - "sha256:5641516794ca9e5f8a4d17bb45446998c6554704d888f86df9b200e66bdcce56", - "sha256:576a1c1d25e9e02ed7fa5477f30a127fe56debd53b8d2c89d5578f9857d03ca9", - "sha256:6a4825252fcc430a182ac4dee5a505053d262c807f8a924603d411f6718b88fd", - "sha256:72dcc4a35a8515d83e76b58fdf8113a5c969ccd505c8a946759b24e3182d1f23", - "sha256:747641635d3d44bcb380d950679462fae44f54b131be347d5ec2bce47d3df9ed", - "sha256:762479be47a4863e261a840e8e01608d124ee1361e48b96916f38b119cfda04a", - "sha256:78574ac2d1a4a02421f25da9559850d59457bac82f2b8d7a44fe83a64f770098", - "sha256:825656d0743699c529c5943554d223c021ff0494ff1442152ce887ef4f7561a1", - "sha256:8637dcd2caa676e475503d1f8fdb327bc495554e10838019651b76d17b98e512", - "sha256:96fe52fcdb9345b7cd82ecd34547fca4321f7656d500eca497eb7ea5a926692f", - "sha256:973faafebaae4c0aaa1a1ca1ce02434554d67e628b8d805e61f874b84e136b09", - "sha256:996bb9399059c5b82f76b53ff8bb686069c05acc94656bb259b1d63d04a9506f", - "sha256:a38c19106902bb19351b83802531fea19dee18e5b37b36454f27f11ff956f7fc", - "sha256:a6b46587b14b888e95e4a24d7b13ae91fa22386c199ee7b418f449032b2fa3b8", - "sha256:a9f7f672a3388133335589cfca93ed468509cb7b93ba3105fce780d04a6576a0", - "sha256:aa08e04e08aaf974d4458def539dece0d28146d866a39da5639596f4921fd761", - "sha256:b0df3635b9c8ef48bd3be5f862cf71b0a4716fa0e702155c45067c6b711ddcef", - "sha256:b47fbb433d3260adcd51eb54f92a2ffbc90a4595f8970ee00e064c644ac788f5", - "sha256:baed7e8d7481bfe0874b566850cb0b85243e982388b7b23348c6db2ee2b2ae8e", - "sha256:bc6f24b3d1ecc1eebfbf5d6051faa49af40b03be1aaa781ebdadcbc090b4539b", - "sha256:c006b607a865b07cd981ccb218a04fc86b600411d83d6fc261357f1c0966755d", - "sha256:c181ba05ce8299c7aa3125c27b9c2167bca4a4445b7ce73d5febc411ca692e43", - "sha256:c7662f0e3673fe4e832fe07b65c50342ea27d989f92c80355658c7f888fcc83c", - "sha256:c80e4a09b3d95b4e1cac08643f1152fa71a0a821a2d4277334c88d54b2219a41", - "sha256:c894b4305373b9c5576d7a12b473702afdf48ce5369c074ba304cc5ad8730dff", - "sha256:d7aac50327da5d208db2eec22eb11e491e3fe13d22653dce51b0f4109101b408", - "sha256:d89dd2b6da69c4fff5e39c28a382199ddedc3a5be5390115608345dec660b9e2", - "sha256:d9beb777a78c331580705326d2367488d5bc473b49a9bc3036c154832520aca9", - "sha256:dc258a761a16daa791081d026f0ed4399b582712e6fc887a95af09df10c5ca57", - "sha256:e14e26956e6f1696070788252dcdff11b4aca4c3e8bd166e0df1bb8f315a67cb", - "sha256:e6988e90fcf617da2b5c78902fe8e668361b43b4fe26dbf2d7b0f8034d4cafb9", - "sha256:e711e02f49e176a01d0349d82cb5f05ba4db7d5e7e0defd026328e5cfb3226d3", - "sha256:ea4dedd6e394a9c180b33c2c872b92f7ce0f8e7ad93e9585312b0c5a04777a4a", - "sha256:ecc76a9ba2911d8d37ac01de72834d8849e55473457558e12995f4cd53e778e0", - "sha256:f55ba01150f52b1027829b50d70ef1dafd9821ea82905b63936668403c3b471e", - "sha256:f653490b33e9c3a4c1c01d41bc2aef08f9475af51146e4a7710c450cf9761598", - "sha256:fa2d1337dc61c8dc417fbccf20f6d1e139896a30721b7f1e832b2bb6ef4eb6c4" + "sha256:0557eebc699c1c34cccdd8c3778c9294e8196df27d713706895edc6f57d29608", + "sha256:0798b138c291d792f8ea40fe3768610f3c7dd2574389e37c3f26573757c8f7ef", + "sha256:0da8495970f6b101ddd0c38ace92edea30e7e12b9a926b57f5fabb1ecc25bb90", + "sha256:0f0986e917aca18f7a567b812ef7ca9391288e2acb7a4308aa9d265bd724bdae", + "sha256:122fd2fcfafdefc889c64ad99c228d5a1f9692c3a83f56c292618a59aa60ae83", + "sha256:140dd80ff8981a583a60980be1a655068f8adebf7a45a06a6858c873fcdcd4a0", + "sha256:16757cf28621e43e252c560d25b15f18a2f11da94fea344bf26c599b9cf54b73", + "sha256:18142b497d70a34b01642b9feabb70156311b326fdddd875a9981f34a369b671", + "sha256:1c92113619f7b272838b8d6702a7f8ebe5edea0df48166c47929611d0b4dea69", + "sha256:1e25507d85da11ff5066269d0bd25d06e0a0f2e908415534f3e603d2a78e4ffa", + "sha256:30bf971c12e4365153afb31fc73f441d4da157153f3400b82db32d04de1e4066", + "sha256:3579eaeb5e07f3ded59298ce22b65f877a86ba8e9fe701f5576c99bb17c283da", + "sha256:36b2b43146f646642b425dd2027730f99bac962618ec2052932157e213a040e9", + "sha256:3905a5fffcc23e597ee4d9fb3fcd209bd658c352657548db7316e810ca80458e", + "sha256:3a4199f519e57d517ebd48cb76b36c82da0360781c6a0353e64c0cac30ecaad3", + "sha256:3f2f5cddeaa4424a0a118924b988746db6ffa8565e5829b1841a8a3bd73eb59a", + "sha256:40deb10198bbaa531509aad0cd2f9fadb26c8b94070831e2208e7df543562b74", + "sha256:440cfb3db4c5029775803794f8638fbdbf71ec702caf32735f53b008e1eaece3", + "sha256:4723a50e1523e1de4fccd1b9a6dcea750c2102461e9a02b2ac55ffeae09a4410", + "sha256:4bddbaa30d78c86329b26bd6aaaea06b1e47444da99eddac7bf1e2fab717bd72", + "sha256:4e58666988605e251d42c2818c7d3d8991555381be26399303053b58a5bbf30d", + "sha256:54dc1d6d66f8d37843ed281773c7174f03bf7ad826523f73435deb88ba60d2d4", + "sha256:57fcc997ffc0bef234b8875a54d4058afa92b0b0c4223fc1f62f24b3b5e86038", + "sha256:58b92a5828bd4d9aa0952492b7de803135038de47343b2aa3cc23f3b71a3dc4e", + "sha256:5a145e956b374e72ad1dff82779177d4a3c62bc8248f41b80cb5122e68f22d13", + "sha256:6ab153263a7c5ccaf6dfe7e53447b74f77789f28ecb278c3b5d49db7ece10d6d", + "sha256:7832f9e8eb00be32f15fdfb9a981d6955ea9adc8574c521d48710171b6c55e95", + "sha256:7fe4bb0695fe986a9e4deec3b6857003b4cfe5c5e4aac0b95f6a658c14635e31", + "sha256:7fe8f3583e0607ad4e43a954e35c1748b553bfe9fdac8635c02058023277d1b3", + "sha256:85ad7d11b309bd132d74397fcf2920933c9d1dc865487128f5c03d580f2c3d03", + "sha256:9874bc2ff574c40ab7a5cbb7464bf9b045d617e36754a7bc93f933d52bd9ffc6", + "sha256:a184288538e6ad699cbe6b24859206e38ce5fba28f3bcfa51c90d0502c1582b2", + "sha256:a222d764352c773aa5ebde02dd84dba3279c81c6db2e482d62a3fa54e5ece69b", + "sha256:a50aeff71d0f97b6450d33940c7181b08be1441c6c193e678211bff11aa725e7", + "sha256:a55dc7a7f0b6198b07ec0cd445fbb98b05234e8b00c5ac4874a63372ba98d4ab", + "sha256:a62eb442011776e4036af5c8b1a00b706c5bc02dc15eb5344b0c750428c94219", + "sha256:a7d41d1612c1a82b64697e894b75db6758d4f21c3ec069d841e60ebe54b5b571", + "sha256:a98f6f20465e7618c83252c02041517bd2f7ea29be5378f09667a8f654a5918d", + "sha256:afe8fb968743d40435c3827632fd36c5fbde633b0423da7692e426529b1759b1", + "sha256:b0b227dcff8cdc3efbce66d4e50891f04d0a387cce282fe1e66199146a6a8fca", + "sha256:b30042fe92dbd79f1ba7f6898fada10bdaad1847c44f2dff9a16147e00a93661", + "sha256:b606b1aaf802e6468c2608c65ff7ece53eae1a6874b3765f69b8ceb20c5fa78e", + "sha256:b6207dc8fb3c8cb5668e885cef9ec7f70189bec4e276f0ff70d5aa078d32c88e", + "sha256:c2aed8fcf8abc3020d6a9ccb31dbc9e7d7819c56a348cc88fd44be269b37427e", + "sha256:cb24cca1968b21355cc6f3da1a20cd1cebd8a023e3c5b09b432444617949085a", + "sha256:cff210198bb4cae3f3c100444c5eaa573a823f05c253e7188e1362a5555235b3", + "sha256:d35717333b39d1b6bb8433fa758a55f1081543de527171543a2b710551d40881", + "sha256:df12a1f99b99f569a7c2ae59aa2d31724e8d835fc7f33e14f4792e3071d11221", + "sha256:e09d40edfdb4e260cb1567d8ae770ccf3b8b7e9f0d9b5c2a9992696b30ce2742", + "sha256:e12c6c1ce84628c52d6367863773f7c8c8241be554e8b79686e91a43f1733773", + "sha256:e2b8cd48a9942ed3f85b95ca4105c45758438c7ed28fff1e4ce3e57c3b589d8e", + "sha256:e500aba968a48e9019e42c0c199b7ec0696a97fa69037bea163b55398e390529", + "sha256:ebe5e59545401fbb1b24da76f006ab19734ae71e703cdb4a8b347e84a0cece67", + "sha256:f0dd071b95bbca244f4cb7f70b77d2ff3aaaba7fa16dc41f58d14854a6204e6c", + "sha256:f8c8b141ef9699ae777c6278b52c706b653bf15d135d302754f6b2e90eb30367" ], "index": "pypi", "markers": "python_version >= '3.10'", - "version": "==2.1.3" + "version": "==2.2.0" }, "opensearch-py": { "hashes": [ @@ -1627,7 +1627,7 @@ "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9" ], - "markers": "python_version >= '3.10'", + "markers": "python_version >= '3.8'", "version": "==2.2.3" }, "werkzeug": { @@ -2264,7 +2264,7 @@ "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9" ], - "markers": "python_version >= '3.10'", + "markers": "python_version >= '3.8'", "version": "==2.2.3" }, "wrapt": { diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.0.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.6.0.tar.gz index 4d97fc82b85e61e053b9a4f209e316730331a85a..d1262e2a6a79187d2692942785d6b9cf3e031765 100644 GIT binary patch delta 39485 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 delta 39376 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 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 2a9beb3d04..d427615138 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 @@ -79,7 +79,7 @@ public class TableEndpoint { mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), @ApiResponse(responseCode = "404", - description = "Failed to find database in metadata database or table in data database", + description = "Failed to find database or table in metadata database", content = {@Content( mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), @@ -97,7 +97,7 @@ public class TableEndpoint { public ResponseEntity<TableDto> create(@NotNull @PathVariable("databaseId") Long databaseId, @Valid @RequestBody TableCreateDto data) throws DatabaseNotFoundException, RemoteUnavailableException, TableMalformedException, DatabaseUnavailableException, TableExistsException, - TableNotFoundException, QueryMalformedException, MetadataServiceException { + TableNotFoundException, QueryMalformedException, MetadataServiceException, ContainerNotFoundException { log.debug("endpoint create table, databaseId={}, data.name={}", databaseId, data.getName()); /* check */ if (data.getConstraints().getPrimaryKey().isEmpty()) { 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 38b33c4713..a30ffb7b81 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 @@ -265,7 +265,7 @@ public class MariaDbConfig { prepareStatement.setString(5, query.getQueryHash()); prepareStatement.setString(6, query.getResultHash()); prepareStatement.setLong(7, query.getResultNumber()); - prepareStatement.setTimestamp(8, Timestamp.from(query.getCreated())); + prepareStatement.setTimestamp(8, Timestamp.from(query.getExecution())); prepareStatement.setTimestamp(9, Timestamp.from(query.getExecution())); log.trace("prepared statement: {}", prepareStatement); prepareStatement.executeUpdate(); 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 f13b02caa2..d9adc26ffe 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 @@ -86,7 +86,7 @@ public class TableEndpointUnitTest extends AbstractUnitTest { @WithMockUser(username = USER_LOCAL_ADMIN_USERNAME, authorities = {"system"}) public void create_succeeds() throws DatabaseUnavailableException, TableMalformedException, DatabaseNotFoundException, TableExistsException, RemoteUnavailableException, SQLException, - TableNotFoundException, QueryMalformedException, MetadataServiceException { + TableNotFoundException, QueryMalformedException, MetadataServiceException, ContainerNotFoundException { /* mock */ when(metadataServiceGateway.getDatabaseById(DATABASE_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 f1dc40b5af..f1e5d0670c 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 @@ -58,8 +58,6 @@ public class DatabaseServiceIntegrationTest extends AbstractUnitTest { assertNull(response.getName()); assertEquals(DATABASE_1_INTERNALNAME, response.getInternalName()); assertEquals(EXCHANGE_DBREPO_NAME, response.getExchangeName()); - assertNotNull(response.getCreator()); - assertEquals(USER_1_ID, response.getCreator().getId()); assertNotNull(response.getOwner()); assertEquals(USER_1_ID, response.getOwner().getId()); assertNotNull(response.getContact()); 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 index 4a4cfb8057..b6867b0c88 100644 --- 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 @@ -107,13 +107,13 @@ public class SchemaServiceIntegrationTest extends AbstractUnitTest { assertEquals(DATABASE_2_ID, response.getTdbid()); assertTrue(response.getIsVersioned()); assertEquals(DATABASE_2_PUBLIC, response.getIsPublic()); - assertNotNull(response.getCreator()); - assertEquals(DATABASE_2_OWNER, response.getCreator().getId()); - assertEquals(USER_2_NAME, response.getCreator().getName()); - assertEquals(USER_2_USERNAME, response.getCreator().getUsername()); - assertEquals(USER_2_FIRSTNAME, response.getCreator().getFirstname()); - assertEquals(USER_2_LASTNAME, response.getCreator().getLastname()); - assertEquals(USER_2_QUALIFIED_NAME, response.getCreator().getQualifiedName()); + 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()); @@ -140,13 +140,13 @@ public class SchemaServiceIntegrationTest extends AbstractUnitTest { assertEquals(DATABASE_1_ID, response.getTdbid()); assertTrue(response.getIsVersioned()); assertEquals(DATABASE_1_PUBLIC, response.getIsPublic()); - assertNotNull(response.getCreator()); - assertEquals(DATABASE_1_OWNER, response.getCreator().getId()); - assertEquals(USER_1_NAME, response.getCreator().getName()); - assertEquals(USER_1_USERNAME, response.getCreator().getUsername()); - assertEquals(USER_1_FIRSTNAME, response.getCreator().getFirstname()); - assertEquals(USER_1_LASTNAME, response.getCreator().getLastname()); - assertEquals(USER_1_QUALIFIED_NAME, response.getCreator().getQualifiedName()); + 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()); @@ -359,7 +359,7 @@ public class SchemaServiceIntegrationTest extends AbstractUnitTest { assertEquals("not_in_metadata_db2", response.getName()); assertEquals(DATABASE_1_ID, response.getVdbid()); assertEquals(DATABASE_1_ID, response.getDatabase().getId()); - assertEquals(DATABASE_1_OWNER, response.getCreator().getId()); + assertEquals(DATABASE_1_OWNER, response.getOwner().getId()); assertFalse(response.getIsInitialView()); assertEquals(DATABASE_1_PUBLIC, response.getIsPublic()); assertTrue(response.getQuery().length() >= 69); 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 527830d0e5..bcc0e38a46 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 @@ -115,7 +115,7 @@ public class ViewServiceIntegrationTest extends AbstractUnitTest { assertEquals("not_in_metadata_db2", view0.getInternalName()); assertEquals(DATABASE_1_ID, view0.getVdbid()); assertEquals(DATABASE_1_ID, view0.getDatabase().getId()); - assertEquals(DATABASE_1_OWNER, view0.getCreator().getId()); + assertEquals(DATABASE_1_OWNER, view0.getOwner().getId()); assertFalse(view0.getIsInitialView()); assertEquals(DATABASE_1_PUBLIC, view0.getIsPublic()); assertTrue(view0.getQuery().length() >= 69); 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 3c03f022b3..b6593238fd 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 @@ -103,7 +103,7 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { log.error("Failed to find database with id {}: service responded unsuccessful: {}", id, response.getStatusCode()); throw new MetadataServiceException("Failed to find database: service responded unsuccessful: " + response.getStatusCode()); } - final List<String> expectedHeaders = List.of("X-Username", "X-Password"); + final List<String> expectedHeaders = List.of("X-Username", "X-Password", "X-Host", "X-Port"); if (!response.getHeaders().keySet().containsAll(expectedHeaders)) { log.error("Failed to find all privileged database headers"); log.debug("expected headers: {}", expectedHeaders); @@ -117,6 +117,8 @@ public class MetadataServiceGatewayImpl implements MetadataServiceGateway { final PrivilegedDatabaseDto 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))); log.debug("found privileged database username={}", database.getContainer().getUsername()); return database; } 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 b29a3198df..f617766d2c 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 @@ -115,7 +115,7 @@ public interface DataMapper { .toString()) .columns(new LinkedList<>()) .identifiers(new LinkedList<>()) - .creator(database.getOwner()) + .owner(database.getOwner()) .build(); } @@ -368,10 +368,7 @@ public interface DataMapper { /* note that next() is called outside this mapping function */ return QueryDto.builder() .id(data.getLong(1)) - .created(LocalDateTime.parse(data.getString(2), mariaDbFormatter) - .atZone(ZoneId.of("UTC")) - .toInstant()) - .creator(UserBriefDto.builder() + .owner(UserBriefDto.builder() .id(UUID.fromString(data.getString(3))) .build()) .query(data.getString(4)) @@ -487,7 +484,7 @@ public interface DataMapper { if (!resultSet.next()) { throw new TableNotFoundException("Failed to find table in the information schema"); } - final TableDto table = TableDto.builder() + return TableDto.builder() .name(resultSet.getString(1)) .internalName(resultSet.getString(1)) .isVersioned(resultSet.getString(2).equals("SYSTEM VERSIONED")) @@ -501,7 +498,7 @@ public interface DataMapper { .description(resultSet.getString(10)) .columns(new LinkedList<>()) .identifiers(new LinkedList<>()) - .creator(database.getOwner()) + .owner(database.getOwner()) .owner(database.getOwner()) .constraints(ConstraintsDto.builder() .foreignKeys(new LinkedList<>()) @@ -511,11 +508,6 @@ public interface DataMapper { .build()) .isPublic(database.getIsPublic()) .build(); - if (resultSet.getString(7) != null && !resultSet.getString(7).isEmpty()) { - table.setCreated(Timestamp.valueOf(resultSet.getString(7)) - .toInstant()); - } - return table; } default Object dataColumnToObject(Object data, ColumnDto column) { 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 0b86a4014b..7bb5927692 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 @@ -53,9 +53,6 @@ public class DatabaseServiceMariaDbImpl extends HibernateConnector implements Da return PrivilegedDatabaseDto.builder() .internalName(data.getInternalName()) .exchangeName(rabbitConfig.getExchangeName()) - .creator(UserBriefDto.builder() - .id(data.getUserId()) - .build()) .owner(UserBriefDto.builder() .id(data.getUserId()) .build()) 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 index 7bbb9d6025..faa9510a09 100644 --- 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 @@ -105,7 +105,7 @@ public class SchemaServiceMariaDbImpl extends HibernateConnector implements Sche } } table.setTdbid(database.getId()); - table.setCreator(database.getCreator()); + table.setOwner(database.getOwner()); final TableDto tmpTable = table; tmpTable.getColumns() .forEach(column -> { @@ -141,7 +141,7 @@ public class SchemaServiceMariaDbImpl extends HibernateConnector implements Sche ViewDto view = dataMapper.schemaResultSetToView(database, resultSet1); view.setDatabase(database); view.setVdbid(database.getId()); - view.setCreator(database.getOwner()); + view.setOwner(database.getOwner()); /* obtain view columns */ start = System.currentTimeMillis(); final PreparedStatement statement2 = connection.prepareStatement(mariaDbMapper.databaseTableColumnsSelectRawQuery()); 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 425f14a399..95fa159937 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 @@ -281,7 +281,7 @@ public class SubsetServiceMariaDbImpl extends HibernateConnector implements Subs .map(metadataMapper::identifierDtoToIdentifierBriefDto) .toList(); query.setIdentifiers(identifiers); - query.setCreator(database.getOwner()); + query.setOwner(database.getOwner()); query.setDatabaseId(database.getId()); return query; } catch (SQLException e) { 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 e639c07722..49cc6b7505 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 @@ -114,7 +114,7 @@ public class ViewServiceMariaDbImpl extends HibernateConnector implements ViewSe .hashString(data.getQuery(), StandardCharsets.UTF_8) .toString()) .isPublic(database.getIsPublic()) - .creator(database.getOwner()) + .owner(database.getOwner()) .identifiers(new LinkedList<>()) .isInitialView(false) .vdbid(database.getId()) 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 e55b010202..9928c8e54d 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 @@ -35,6 +35,7 @@ public class ContainerDto { @NotBlank private String host; + @NotNull private Integer port; @JsonProperty("ui_host") 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 index 6c377f0e88..b9d6a403a7 100644 --- 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 @@ -35,6 +35,7 @@ public class PrivilegedContainerDto { @NotBlank private String host; + @NotNull private Integer port; @JsonProperty("ui_host") 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 bf72c4dda7..e29bfbc109 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 @@ -58,7 +58,6 @@ public class ViewBriefDto { @Schema(example = "7de03e818900b6ea6d58ad0306d4a741d658c6df3d1964e89ed2395d8c7e7916") private String queryHash; - @JsonIgnore @JsonProperty("owned_by") private UUID ownedBy; 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/ViewCreateDto.java index 583b5f0d81..9fcb734f58 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/ViewCreateDto.java @@ -32,4 +32,9 @@ public class ViewCreateDto { @Schema(example = "true") private Boolean isPublic; + @NotNull + @JsonProperty("is_schema_public") + @Schema(example = "true") + private Boolean isSchemaPublic; + } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewUpdateDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewUpdateDto.java index 01fae15d08..434ce0d9b6 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewUpdateDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/ViewUpdateDto.java @@ -20,4 +20,9 @@ public class ViewUpdateDto { @Schema(example = "true") private Boolean isPublic; + @NotNull + @JsonProperty("is_schema_public") + @Schema(example = "true") + private Boolean isSchemaPublic; + } 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 5a2cff9b75..615948486c 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 @@ -47,12 +47,17 @@ public class TableBriefDto { @Schema(example = "true") private Boolean isVersioned; + @NotNull + @JsonProperty("is_public") + @Schema(example = "true") + private Boolean isPublic; + @NotNull @JsonProperty("is_schema_public") @Schema(example = "true") private Boolean isSchemaPublic; @NotNull - @JsonProperty("owner_by") + @JsonProperty("owned_by") private UUID ownedBy; } diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java index 5584ce0105..2421612358 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/View.java @@ -29,9 +29,9 @@ import java.util.UUID; @Table(name = "mdb_view") @NamedQueries({ @NamedQuery(name = "View.findAllPublicByDatabaseId", query = "select v from View v where v.database.id = ?1 and v.isPublic = true"), - @NamedQuery(name = "View.findAllPublicOrMineByDatabaseId", query = "select v from View v where v.database.id = ?1 and (v.isPublic = true or v.createdBy = ?2)"), + @NamedQuery(name = "View.findAllPublicOrMineByDatabaseId", query = "select v from View v where v.database.id = ?1 and (v.isPublic = true or v.ownedBy = ?2)"), @NamedQuery(name = "View.findPublicByDatabaseIdAndId", query = "select v from View v where v.database.id = ?1 and v.id = ?2 and v.isPublic = true"), - @NamedQuery(name = "View.findPublicOrMineByDatabaseIdAndId", query = "select v from View v where v.database.id = ?1 and v.id = ?2 and (v.isPublic = true or v.createdBy = ?3)") + @NamedQuery(name = "View.findPublicOrMineByDatabaseIdAndId", query = "select v from View v where v.database.id = ?1 and v.id = ?2 and (v.isPublic = true or v.ownedBy = ?3)") }) public class View { diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java index 547e28fca6..7e4252a445 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/identifier/Identifier.java @@ -155,7 +155,7 @@ public class Identifier implements Serializable { @Column private String doi; - @Column(nullable = false) + @Column(name = "owned_by", nullable = false) @JdbcTypeCode(java.sql.Types.VARCHAR) private UUID ownedBy; 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 c005937028..984f4425dd 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 @@ -480,6 +480,7 @@ public interface MetadataMapper { @Mappings({ @Mapping(target = "databaseId", source = "tdbid"), + @Mapping(target = "isPublic", source = "database.isPublic"), }) TableBriefDto tableToTableBriefDto(Table data); @@ -530,7 +531,6 @@ public interface MetadataMapper { .name(data.getName()) .internalName(data.getInternalName()) .owner(userToUserBriefDto(data.getOwner())) - .creator(userToUserBriefDto(data.getCreator())) .tdbid(data.getTdbid()) .isPublic(data.getDatabase().getIsPublic()) .isSchemaPublic(data.getIsSchemaPublic()) @@ -538,7 +538,6 @@ public interface MetadataMapper { .description(data.getDescription()) .identifiers(new LinkedList<>()) .columns(new LinkedList<>()) - .created(data.getCreated()) .constraints(constraintsToConstraintsDto(data.getConstraints())) .build(); if (data.getIdentifiers() != null) { @@ -836,9 +835,6 @@ public interface MetadataMapper { ViewBriefDto viewToViewBriefDto(View data); - @Mappings({ - @Mapping(target = "createdBy", source = "creator.id"), - }) View viewDtoToView(ViewDto data); /* keep */ @@ -860,7 +856,18 @@ public interface MetadataMapper { LanguageType languageTypeDtoToLanguageType(LanguageTypeDto data); - default DatabaseDto customDatabaseToDatabaseDto(Database data) { + default Boolean onlySchemaPublicOrOwner(Boolean schemaIsPublic, User caller, User owner, User databaseOwner) { + if (schemaIsPublic) { + return true; + } + /* private schema */ + if (caller == null) { + return false; + } + return owner.equals(caller) || databaseOwner.equals(caller); + } + + default DatabaseDto customDatabaseToDatabaseDto(Database data, User caller) { if (data == null) { return null; } @@ -874,9 +881,7 @@ public interface MetadataMapper { .isPublic(data.getIsPublic()) .isSchemaPublic(data.getIsSchemaPublic()) .container(containerToContainerBriefDto(data.getContainer())) - .creator(userToUserBriefDto(data.getCreator())) .owner(userToUserBriefDto(data.getOwner())) - .created(data.getCreated()) .contact(userToUserBriefDto(data.getContact())) .subsets(new LinkedList<>()) .accesses(new LinkedList<>()) @@ -892,12 +897,14 @@ public interface MetadataMapper { if (data.getTables() != null) { database.setTables(new LinkedList<>(data.getTables() .stream() + .filter(t -> onlySchemaPublicOrOwner(t.getIsSchemaPublic(), caller, t.getOwner(), t.getDatabase().getOwner())) .map(this::tableToTableBriefDto) .toList())); } if (data.getViews() != null) { database.setViews(new LinkedList<>(data.getViews() .stream() + .filter(v -> onlySchemaPublicOrOwner(v.getIsSchemaPublic(), caller, v.getOwner(), v.getDatabase().getOwner())) .map(this::viewToViewBriefDto) .toList())); } 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 2eeb947c55..f0e2aaeaa1 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 @@ -3,7 +3,6 @@ package at.tuwien.endpoints; import at.tuwien.api.database.*; import at.tuwien.api.error.ApiErrorDto; import at.tuwien.entities.container.Container; -import at.tuwien.entities.container.image.DataType; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.DatabaseAccess; import at.tuwien.entities.user.User; @@ -155,13 +154,14 @@ public class DatabaseEndpoint { SearchServiceException, SearchServiceConnectionException, ContainerQuotaException { log.debug("endpoint create database, data.name={}", data.getName()); final Container container = containerService.find(data.getCid()); + final User caller = userService.findByUsername(principal.getName()); if (container.getDatabases().size() + 1 > container.getQuota()) { log.error("Failed to create database: quota of {} exceeded", container.getQuota()); throw new ContainerQuotaException("Failed to create database: quota of " + container.getQuota() + " exceeded"); } final User user = userService.findByUsername(principal.getName()); final Database database = databaseService.create(container, data, user); - final DatabaseDto dto = databaseMapper.customDatabaseToDatabaseDto(database); + final DatabaseDto dto = databaseMapper.customDatabaseToDatabaseDto(database, caller); return ResponseEntity.status(HttpStatus.CREATED) .body(dto); } @@ -207,16 +207,17 @@ public class DatabaseEndpoint { }) public ResponseEntity<DatabaseDto> refreshTableMetadata(@NotNull @PathVariable("databaseId") Long databaseId, @NotNull Principal principal) throws DataServiceException, - DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, + DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, UserNotFoundException, SearchServiceConnectionException, NotAllowedException, QueryNotFoundException, MalformedException, TableNotFoundException { log.debug("endpoint refresh database metadata, databaseId={}", databaseId); - Database database = databaseService.findById(databaseId); + final Database database = databaseService.findById(databaseId); + final User caller = userService.findByUsername(principal.getName()); if (!database.getOwner().equals(principal)) { log.error("Failed to refresh database tables metadata: not owner"); throw new NotAllowedException("Failed to refresh tables metadata: not owner"); } - final DatabaseDto dto = databaseMapper.customDatabaseToDatabaseDto(databaseService.updateTableMetadata(database)); + final DatabaseDto dto = databaseMapper.customDatabaseToDatabaseDto(databaseService.updateTableMetadata(database), caller); return ResponseEntity.ok(dto); } @@ -256,15 +257,16 @@ public class DatabaseEndpoint { }) public ResponseEntity<DatabaseDto> refreshViewMetadata(@NotNull @PathVariable("databaseId") Long databaseId, @NotNull Principal principal) throws DataServiceException, - DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, + DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, UserNotFoundException, SearchServiceConnectionException, NotAllowedException, QueryNotFoundException, ViewNotFoundException { log.debug("endpoint refresh database metadata, databaseId={}", databaseId); - Database database = databaseService.findById(databaseId); + final Database database = databaseService.findById(databaseId); + final User caller = userService.findByUsername(principal.getName()); if (!database.getOwner().equals(principal)) { log.error("Failed to refresh database views metadata: not owner"); throw new NotAllowedException("Failed to refresh database views metadata: not owner"); } - final DatabaseDto dto = databaseMapper.customDatabaseToDatabaseDto(databaseService.updateViewMetadata(database)); + final DatabaseDto dto = databaseMapper.customDatabaseToDatabaseDto(databaseService.updateViewMetadata(database), caller); return ResponseEntity.ok(dto); } @@ -310,14 +312,15 @@ public class DatabaseEndpoint { public ResponseEntity<DatabaseDto> visibility(@NotNull @PathVariable("databaseId") Long databaseId, @Valid @RequestBody DatabaseModifyVisibilityDto data, @NotNull Principal principal) throws DatabaseNotFoundException, - NotAllowedException, SearchServiceException, SearchServiceConnectionException { + NotAllowedException, SearchServiceException, SearchServiceConnectionException, UserNotFoundException { log.debug("endpoint modify database visibility, databaseId={}, data={}", databaseId, data); final Database database = databaseService.findById(databaseId); - if (!database.getOwner().equals(principal)) { + final User caller = userService.findByUsername(principal.getName()); + if (!database.getOwner().equals(caller)) { log.error("Failed to modify database visibility: not owner"); throw new NotAllowedException("Failed to modify database visibility: not owner"); } - final DatabaseDto dto = databaseMapper.customDatabaseToDatabaseDto(databaseService.modifyVisibility(database, data)); + final DatabaseDto dto = databaseMapper.customDatabaseToDatabaseDto(databaseService.modifyVisibility(database, data), caller); return ResponseEntity.accepted() .body(dto); } @@ -368,13 +371,13 @@ public class DatabaseEndpoint { SearchServiceException, SearchServiceConnectionException { log.debug("endpoint transfer database, databaseId={}, transferDto.id={}", databaseId, data.getId()); final Database database = databaseService.findById(databaseId); - final User user = userService.findByUsername(principal.getName()); + final User caller = userService.findByUsername(principal.getName()); final User newOwner = userService.findById(data.getId()); - if (!database.getOwner().equals(user)) { + if (!database.getOwner().equals(caller)) { log.error("Failed to transfer database: not owner"); throw new NotAllowedException("Failed to transfer database: not owner"); } - final DatabaseDto dto = databaseMapper.customDatabaseToDatabaseDto(databaseService.modifyOwner(database, newOwner)); + final DatabaseDto dto = databaseMapper.customDatabaseToDatabaseDto(databaseService.modifyOwner(database, newOwner), caller); return ResponseEntity.accepted() .body(dto); } @@ -425,8 +428,8 @@ public class DatabaseEndpoint { StorageUnavailableException, StorageNotFoundException { log.debug("endpoint modify database image, databaseId={}, data.key={}", databaseId, data.getKey()); final Database database = databaseService.findById(databaseId); - final User user = userService.findByUsername(principal.getName()); - if (!database.getOwner().equals(user)) { + final User caller = userService.findByUsername(principal.getName()); + if (!database.getOwner().equals(caller)) { log.error("Failed to update database image: not owner"); throw new NotAllowedException("Failed to update database image: not owner"); } @@ -435,7 +438,7 @@ public class DatabaseEndpoint { if (data.getKey() != null) { image = storageService.getBytes(data.getKey()); } - dto = databaseMapper.customDatabaseToDatabaseDto(databaseService.modifyImage(database, image)); + dto = databaseMapper.customDatabaseToDatabaseDto(databaseService.modifyImage(database, image), caller); return ResponseEntity.accepted() .body(dto); } @@ -480,7 +483,7 @@ public class DatabaseEndpoint { mediaType = "application/json", schema = @Schema(implementation = DatabaseDto.class))}), @ApiResponse(responseCode = "404", - description = "Database or exchange could not be found", + description = "Database, user or exchange could not be found", content = {@Content( mediaType = "application/json", schema = @Schema(implementation = ApiErrorDto.class))}), @@ -497,10 +500,16 @@ public class DatabaseEndpoint { }) public ResponseEntity<DatabaseDto> findById(@NotNull @PathVariable("databaseId") Long databaseId, Principal principal) throws DataServiceException, - DataServiceConnectionException, DatabaseNotFoundException, ExchangeNotFoundException { + DataServiceConnectionException, DatabaseNotFoundException, ExchangeNotFoundException, UserNotFoundException { log.debug("endpoint find database, databaseId={}", databaseId); final Database database = databaseService.findById(databaseId); - final DatabaseDto dto = databaseMapper.customDatabaseToDatabaseDto(database); + final User caller; + if (principal != null) { + caller = userService.findByUsername(principal.getName()); + } else { + caller = null; + } + final DatabaseDto dto = databaseMapper.customDatabaseToDatabaseDto(database, caller); if (database.getOwner().equals(principal)) { log.debug("current logged-in user is also the owner: additionally load access list"); /* only owner sees the access rights */ @@ -514,7 +523,9 @@ public class DatabaseEndpoint { if (UserUtil.isSystem(principal)) { headers.set("X-Username", database.getContainer().getPrivilegedUsername()); headers.set("X-Password", database.getContainer().getPrivilegedPassword()); - headers.set("Access-Control-Expose-Headers", "X-Username X-Password"); + headers.set("X-Host", database.getContainer().getHost()); + headers.set("X-Port", "" + database.getContainer().getPort()); + headers.set("Access-Control-Expose-Headers", "X-Username X-Password X-Host X-Port"); } return ResponseEntity.status(HttpStatus.OK) .headers(headers) 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 7f2e0ee93d..354b7245fd 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 @@ -3,7 +3,10 @@ package at.tuwien.endpoints; import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.database.table.columns.concepts.ConceptDto; import at.tuwien.api.error.ApiErrorDto; -import at.tuwien.api.identifier.*; +import at.tuwien.api.identifier.BibliographyTypeDto; +import at.tuwien.api.identifier.IdentifierCreateDto; +import at.tuwien.api.identifier.IdentifierDto; +import at.tuwien.api.identifier.IdentifierSaveDto; import at.tuwien.api.identifier.ld.LdDatasetDto; import at.tuwien.api.user.external.ExternalMetadataDto; import at.tuwien.config.EndpointConfig; @@ -409,7 +412,7 @@ public class IdentifierEndpoint { final User user = userService.findByUsername(principal.getName()); final Identifier identifier = identifierService.find(identifierId); /* check owner */ - if (!identifier.getCreator().equals(user) && !UserUtil.hasRole(principal, "create-foreign-identifier")) { + if (!identifier.getOwner().equals(user) && !UserUtil.hasRole(principal, "create-foreign-identifier")) { log.error("Failed to save identifier: foreign user"); throw new NotAllowedException("Failed to save identifier: foreign user"); } @@ -436,7 +439,7 @@ public class IdentifierEndpoint { throw new MalformedException("Failed to save view identifier: only parameters database_id & view_id must be present"); } final View view = viewService.findById(database, data.getViewId()); - if (!endpointValidator.validateOnlyMineOrReadAccessOrHasRole(view.getCreator(), principal, access, "create-foreign-identifier")) { + if (!endpointValidator.validateOnlyMineOrReadAccessOrHasRole(view.getOwner(), principal, access, "create-foreign-identifier")) { log.error("Failed to save view identifier: insufficient access or role"); throw new MalformedException("Failed to save view identifier: insufficient access or role"); } @@ -459,7 +462,7 @@ public class IdentifierEndpoint { } log.debug("retrieving subset from data service: data.database_id={}, data.query_id={}", data.getDatabaseId(), data.getQueryId()); final QueryDto query = dataServiceGateway.findQuery(data.getDatabaseId(), data.getQueryId()); - final User queryCreator = userService.findById(query.getCreator().getId()); + final User queryCreator = userService.findById(query.getOwner().getId()); if (!endpointValidator.validateOnlyMineOrReadAccessOrHasRole(queryCreator, principal, access, "create-foreign-identifier")) { log.error("Failed to create subset identifier: insufficient access or role"); throw new MalformedException("Failed to create subset identifier: insufficient access or role"); 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 407ae812b4..936e1e8e34 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 @@ -407,9 +407,11 @@ public class TableEndpoint { final Table table = tableService.findById(databaseId, tableId); boolean hasAccess = UserUtil.isSystem(principal); try { - final User user = userService.findByUsername(principal.getName()); - accessService.find(table.getDatabase(), user); - hasAccess = true; + if (principal != null) { + final User user = userService.findByUsername(principal.getName()); + accessService.find(table.getDatabase(), user); + hasAccess = true; + } } catch (UserNotFoundException | AccessNotFoundException e) { /* ignore */ } 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 05edffa711..a186c0efc2 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 @@ -311,7 +311,7 @@ public class ViewEndpoint { log.debug("endpoint update view, databaseId={}, viewId={}", databaseId, viewId); final Database database = databaseService.findById(databaseId); final View view = viewService.findById(database, viewId); - if (!database.getOwner().equals(principal) && !view.getCreator().equals(principal)) { + if (!database.getOwner().equals(principal) && !view.getOwner().equals(principal)) { log.error("Failed to update view: not the database- or view owner"); throw new NotAllowedException("Failed to update view: not the database- or view owner"); } 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 75f76d440a..75c277a3b9 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 @@ -188,8 +188,8 @@ public class EndpointValidator { return false; } - public boolean validateOnlyMineOrReadAccessOrHasRole(User creator, Principal principal, DatabaseAccess access, String role) { - if (validateOnlyMineOrWriteAccessOrHasRole(creator, principal, access, role)) { + 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)) { @@ -203,23 +203,23 @@ public class EndpointValidator { @Transactional(readOnly = true) public void validateOnlyOwnerOrWriteAll(Table table, User user) throws NotAllowedException, AccessNotFoundException { - log.trace("table creator: {}", table.getCreatedBy()); + log.trace("table owner: {}", table.getOwnedBy()); final DatabaseAccess access = accessService.find(table.getDatabase(), user); log.trace("found access {}", access); if (access.getType().equals(AccessType.READ)) { log.error("Access not allowed: insufficient access (only read-access)"); throw new NotAllowedException("Access not allowed: insufficient access (only read-access)"); } - if (table.getCreatedBy().equals(user.getId()) && (access.getType().equals(AccessType.WRITE_OWN) || access.getType().equals(AccessType.WRITE_ALL))) { - log.trace("grant access: table creator with write access"); + if (table.getOwnedBy().equals(user.getId()) && (access.getType().equals(AccessType.WRITE_OWN) || access.getType().equals(AccessType.WRITE_ALL))) { + log.trace("grant access: table owner with write access"); return; } if (access.getType().equals(AccessType.WRITE_ALL)) { log.trace("grant access: write-all access"); return; } - log.error("Access not allowed: insufficient access (neither creator {} nor write-all access)", table.getCreatedBy()); - throw new NotAllowedException("Access not allowed: insufficient access (neither creator nor write-all access)"); + log.error("Access not allowed: insufficient access (neither owner {} nor write-all access)", table.getOwnedBy()); + throw new NotAllowedException("Access not allowed: insufficient access (neither owner nor write-all access)"); } public void validateOnlyPrivateHasRole(Database database, Principal principal, String role) 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 2d6033ed92..5ad07a1175 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 @@ -1,7 +1,5 @@ package at.tuwien.endpoints; -import at.tuwien.service.StorageService; -import at.tuwien.test.AbstractUnitTest; import at.tuwien.api.database.*; import at.tuwien.entities.database.Database; import at.tuwien.entities.user.User; @@ -9,9 +7,11 @@ import at.tuwien.exception.*; import at.tuwien.gateway.KeycloakGateway; import at.tuwien.repository.UserRepository; import at.tuwien.service.AccessService; -import at.tuwien.service.ContainerService; import at.tuwien.service.BrokerService; +import at.tuwien.service.ContainerService; +import at.tuwien.service.StorageService; import at.tuwien.service.impl.DatabaseServiceImpl; +import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -104,7 +104,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { public void create_succeeds() throws DataServiceException, DataServiceConnectionException, UserNotFoundException, DatabaseNotFoundException, ContainerNotFoundException, SearchServiceException, SearchServiceConnectionException, AuthServiceException, AuthServiceConnectionException, - CredentialsInvalidException, BrokerServiceException, BrokerServiceConnectionException, ContainerQuotaException { + BrokerServiceException, BrokerServiceConnectionException, ContainerQuotaException { final DatabaseCreateDto request = DatabaseCreateDto.builder() .cid(CONTAINER_1_ID) .name(DATABASE_1_NAME) @@ -194,7 +194,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @WithMockUser(username = USER_1_USERNAME, authorities = {"modify-database-visibility"}) public void visibility_hasRole_succeeds() throws NotAllowedException, UserNotFoundException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException, AuthServiceException, - AuthServiceConnectionException, CredentialsInvalidException { + AuthServiceConnectionException { final DatabaseModifyVisibilityDto request = DatabaseModifyVisibilityDto.builder() .isPublic(true) .build(); @@ -311,8 +311,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, - CredentialsInvalidException { + SearchServiceConnectionException, AuthServiceException, AuthServiceConnectionException { final DatabaseTransferDto request = DatabaseTransferDto.builder() .id(USER_4_ID) .build(); @@ -353,7 +352,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @Test @WithAnonymousUser public void findById_anonymous_succeeds() throws DataServiceException, DataServiceConnectionException, - DatabaseNotFoundException, ExchangeNotFoundException { + DatabaseNotFoundException, ExchangeNotFoundException, UserNotFoundException { /* test */ findById_generic(DATABASE_1_ID, DATABASE_1, null); @@ -372,7 +371,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_1_USERNAME, authorities = {"find-database"}) public void findById_hasRole_succeeds() throws DataServiceException, DataServiceConnectionException, - DatabaseNotFoundException, ExchangeNotFoundException { + DatabaseNotFoundException, ExchangeNotFoundException, UserNotFoundException { /* pre-condition */ assertTrue(DATABASE_3_PUBLIC); @@ -384,7 +383,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_1_USERNAME, authorities = {"find-database"}) public void findById_hasRoleForeign_succeeds() throws DataServiceException, DataServiceConnectionException, - DatabaseNotFoundException, ExchangeNotFoundException { + DatabaseNotFoundException, ExchangeNotFoundException, UserNotFoundException { /* pre-condition */ assertTrue(DATABASE_3_PUBLIC); @@ -396,7 +395,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_1_USERNAME, authorities = {"find-database"}) public void findById_ownerSeesAccessRights_succeeds() throws DataServiceException, DataServiceConnectionException, - DatabaseNotFoundException, ExchangeNotFoundException { + DatabaseNotFoundException, ExchangeNotFoundException, UserNotFoundException { /* mock */ when(accessService.list(DATABASE_1)) @@ -501,7 +500,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { public void visibility_generic(Long databaseId, Database database, DatabaseModifyVisibilityDto data, Principal principal) throws NotAllowedException, DatabaseNotFoundException, - SearchServiceException, SearchServiceConnectionException { + SearchServiceException, SearchServiceConnectionException, UserNotFoundException { /* mock */ if (database != null) { @@ -523,7 +522,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { public DatabaseDto findById_generic(Long databaseId, Database database, Principal principal) throws DataServiceConnectionException, DatabaseNotFoundException, ExchangeNotFoundException, - DataServiceException { + DataServiceException, UserNotFoundException { /* mock */ if (database != null) { diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/IdentifierEndpointUnitTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/endpoints/IdentifierEndpointUnitTest.java index af98f87e57..8a98bf11f5 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 @@ -1,12 +1,11 @@ package at.tuwien.endpoints; -import at.tuwien.entities.identifier.IdentifierType; -import at.tuwien.test.AbstractUnitTest; import at.tuwien.api.identifier.*; import at.tuwien.config.EndpointConfig; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.DatabaseAccess; import at.tuwien.entities.identifier.Identifier; +import at.tuwien.entities.identifier.IdentifierType; import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.gateway.DataServiceGateway; @@ -14,6 +13,7 @@ import at.tuwien.service.AccessService; import at.tuwien.service.DatabaseService; import at.tuwien.service.IdentifierService; import at.tuwien.service.UserService; +import at.tuwien.test.AbstractUnitTest; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.log4j.Log4j2; import org.apache.commons.io.FileUtils; @@ -97,8 +97,6 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { assertEquals(compare.getTitles().size(), body.getTitles().size()); assertEquals(compare.getDescriptions().size(), body.getDescriptions().size()); assertEquals(compare.getDescriptions(), body.getDescriptions()); - assertEquals(compare.getCreated(), body.getCreated()); - assertEquals(compare.getLastModified(), body.getLastModified()); assertEquals(compare.getDoi(), body.getDoi()); assertEquals(compare.getLicenses().size(), body.getLicenses().size()); assertEquals(compare.getPublicationDay(), body.getPublicationDay()); @@ -136,8 +134,6 @@ public class IdentifierEndpointUnitTest extends AbstractUnitTest { assertEquals(compare.getDescriptions().get(0).getDescription(), body.getDescriptions().get(0).getDescription()); assertEquals(compare.getDescriptions().get(0).getLanguage(), body.getDescriptions().get(0).getLanguage()); assertEquals(compare.getDescriptions().get(0).getDescriptionType(), body.getDescriptions().get(0).getDescriptionType()); - assertEquals(compare.getCreated(), body.getCreated()); - assertEquals(compare.getLastModified(), body.getLastModified()); assertEquals(compare.getDoi(), body.getDoi()); assertEquals(compare.getLicenses().size(), body.getLicenses().size()); assertEquals(compare.getLicenses().get(0).getIdentifier(), body.getLicenses().get(0).getIdentifier()); 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 be037472dd..66add61c39 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 @@ -3,20 +3,12 @@ package at.tuwien.mapper; import at.tuwien.api.database.DatabaseDto; 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.ColumnTypeDto; -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.IdentifierBriefDto; 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.container.Container; -import at.tuwien.entities.database.Database; import at.tuwien.entities.identifier.*; import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; @@ -32,7 +24,6 @@ import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; @@ -185,7 +176,7 @@ public class MetadataMapperUnitTest extends AbstractUnitTest { public void customDatabaseToDatabaseDto_succeeds() { /* test */ - final DatabaseDto response = metadataMapper.customDatabaseToDatabaseDto(DATABASE_1); + final DatabaseDto response = metadataMapper.customDatabaseToDatabaseDto(DATABASE_1, USER_1); assertEquals(DATABASE_1_ID, response.getId()); assertNotNull(response.getContact()); assertEquals(USER_1_ID, response.getContact().getId()); @@ -195,20 +186,12 @@ public class MetadataMapperUnitTest extends AbstractUnitTest { assertEquals(4, response.getIdentifiers().size()); final IdentifierBriefDto identifier1 = response.getIdentifiers().get(0); assertEquals(DATABASE_1_ID, identifier1.getDatabaseId()); - assertNotNull(identifier1.getCreated()); - assertNotNull(identifier1.getLastModified()); final IdentifierBriefDto identifier2 = response.getIdentifiers().get(1); assertEquals(DATABASE_1_ID, identifier2.getDatabaseId()); - assertNotNull(identifier2.getCreated()); - assertNotNull(identifier2.getLastModified()); final IdentifierBriefDto identifier3 = response.getIdentifiers().get(2); assertEquals(DATABASE_1_ID, identifier3.getDatabaseId()); - assertNotNull(identifier3.getCreated()); - assertNotNull(identifier3.getLastModified()); final IdentifierBriefDto identifier4 = response.getIdentifiers().get(3); assertEquals(DATABASE_1_ID, identifier4.getDatabaseId()); - assertNotNull(identifier4.getCreated()); - assertNotNull(identifier4.getLastModified()); /* Table 1 formatted */ final TableBriefDto table0 = response.getTables().get(0); assertEquals(TABLE_1_ID, table0.getId()); diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServicePersistenceTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServicePersistenceTest.java index 436ccd1879..b324a94c9e 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServicePersistenceTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/service/DatabaseServicePersistenceTest.java @@ -1,7 +1,7 @@ package at.tuwien.service; import at.tuwien.entities.database.Database; -import at.tuwien.exception.*; +import at.tuwien.exception.DatabaseNotFoundException; import at.tuwien.repository.ContainerRepository; import at.tuwien.repository.DatabaseRepository; import at.tuwien.repository.LicenseRepository; @@ -19,7 +19,8 @@ import org.springframework.transaction.annotation.Transactional; import java.util.List; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; @Log4j2 @SpringBootTest @@ -81,13 +82,13 @@ public class DatabaseServicePersistenceTest extends AbstractUnitTest { assertEquals(IMAGE_1_REGISTRY, response.getContainer().getImage().getRegistry()); assertEquals(IMAGE_1_PORT, response.getContainer().getImage().getDefaultPort()); /* creator */ - assertNotNull(response.getCreator()); - assertEquals(USER_1_ID, response.getCreator().getId()); - assertEquals(USER_1_USERNAME, response.getCreator().getUsername()); - assertEquals(USER_1_EMAIL, response.getCreator().getEmail()); - assertEquals(USER_1_THEME, response.getCreator().getTheme()); - assertEquals(USER_1_LANGUAGE, response.getCreator().getLanguage()); - assertNotNull(response.getCreator().getAccesses()); + assertNotNull(response.getOwner()); + assertEquals(USER_1_ID, response.getOwner().getId()); + assertEquals(USER_1_USERNAME, response.getOwner().getUsername()); + assertEquals(USER_1_EMAIL, response.getOwner().getEmail()); + assertEquals(USER_1_THEME, response.getOwner().getTheme()); + assertEquals(USER_1_LANGUAGE, response.getOwner().getLanguage()); + assertNotNull(response.getOwner().getAccesses()); } @Test @@ -119,13 +120,13 @@ public class DatabaseServicePersistenceTest extends AbstractUnitTest { assertEquals(IMAGE_1_REGISTRY, response.getContainer().getImage().getRegistry()); assertEquals(IMAGE_1_PORT, response.getContainer().getImage().getDefaultPort()); /* creator */ - assertNotNull(response.getCreator()); - assertEquals(USER_1_ID, response.getCreator().getId()); - assertEquals(USER_1_USERNAME, response.getCreator().getUsername()); - assertEquals(USER_1_EMAIL, response.getCreator().getEmail()); - assertEquals(USER_1_THEME, response.getCreator().getTheme()); - assertEquals(USER_1_LANGUAGE, response.getCreator().getLanguage()); - assertNotNull(response.getCreator().getAccesses()); + assertNotNull(response.getOwner()); + assertEquals(USER_1_ID, response.getOwner().getId()); + assertEquals(USER_1_USERNAME, response.getOwner().getUsername()); + assertEquals(USER_1_EMAIL, response.getOwner().getEmail()); + assertEquals(USER_1_THEME, response.getOwner().getTheme()); + assertEquals(USER_1_LANGUAGE, response.getOwner().getLanguage()); + assertNotNull(response.getOwner().getAccesses()); } } 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 8f37dde792..b127f1b89f 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 @@ -285,12 +285,10 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { assertNotNull(response.getViews()); assertNotNull(response.getAccesses()); assertNotNull(response.getIdentifiers()); - assertNotNull(response.getCreatedBy()); - assertNotNull(response.getCreator()); + assertNotNull(response.getOwnedBy()); + assertNotNull(response.getOwner()); assertNotNull(response.getContactPerson()); assertNotNull(response.getContact()); - assertNotNull(response.getCreatedBy()); - assertNotNull(response.getOwner()); assertNotNull(response.getImage()); assertNotNull(response.getExchangeName()); return response; 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 346190a50c..9ffa720d4d 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 @@ -11,7 +11,6 @@ import at.tuwien.entities.container.Container; import at.tuwien.entities.database.*; import at.tuwien.entities.database.table.Table; import at.tuwien.entities.database.table.columns.TableColumn; -import at.tuwien.entities.database.table.constraints.Constraints; import at.tuwien.entities.database.table.constraints.foreignKey.ForeignKey; import at.tuwien.entities.database.table.constraints.foreignKey.ForeignKeyReference; import at.tuwien.entities.database.table.constraints.primaryKey.PrimaryKey; @@ -22,14 +21,17 @@ import at.tuwien.gateway.DataServiceGateway; import at.tuwien.gateway.SearchServiceGateway; import at.tuwien.mapper.MetadataMapper; import at.tuwien.repository.DatabaseRepository; -import at.tuwien.service.*; +import at.tuwien.service.DatabaseService; import lombok.extern.log4j.Log4j2; import org.apache.commons.lang3.RandomStringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.*; +import java.util.LinkedList; +import java.util.List; +import java.util.Optional; +import java.util.UUID; @Log4j2 @Service @@ -95,8 +97,6 @@ public class DatabaseServiceImpl implements DatabaseService { .container(container) .ownedBy(user.getId()) .owner(user) - .createdBy(user.getId()) - .creator(user) .contactPerson(user.getId()) .contact(user) .tables(new LinkedList<>()) 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 df0f895f5d..0682225e8a 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/IdentifierServiceImpl.java @@ -2,7 +2,10 @@ package at.tuwien.service.impl; import at.tuwien.ExportResourceDto; import at.tuwien.api.database.query.QueryDto; -import at.tuwien.api.identifier.*; +import at.tuwien.api.identifier.BibliographyTypeDto; +import at.tuwien.api.identifier.IdentifierCreateDto; +import at.tuwien.api.identifier.IdentifierSaveDto; +import at.tuwien.api.identifier.IdentifierTypeDto; import at.tuwien.config.MetadataConfig; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.LanguageType; @@ -16,7 +19,8 @@ import at.tuwien.gateway.DataServiceGateway; import at.tuwien.gateway.SearchServiceGateway; import at.tuwien.mapper.MetadataMapper; import at.tuwien.repository.IdentifierRepository; -import at.tuwien.service.*; +import at.tuwien.service.IdentifierService; +import at.tuwien.service.ViewService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.springframework.core.io.InputStreamResource; @@ -27,7 +31,10 @@ import org.thymeleaf.context.Context; import org.thymeleaf.exceptions.TemplateInputException; import java.nio.charset.Charset; -import java.util.*; +import java.util.LinkedList; +import java.util.List; +import java.util.Objects; +import java.util.Optional; import java.util.stream.Stream; @Slf4j @@ -159,8 +166,8 @@ public class IdentifierServiceImpl implements IdentifierService { SearchServiceConnectionException, IdentifierNotFoundException, ViewNotFoundException { final Identifier identifier = find(data.getId()); identifier.setDatabase(database); - identifier.setCreatedBy(user.getId()); - identifier.setCreator(user); + identifier.setOwnedBy(user.getId()); + identifier.setOwner(user); identifier.setStatus(IdentifierStatusType.DRAFT); /* set from data */ identifier.setTableId(data.getTableId()); @@ -227,8 +234,8 @@ public class IdentifierServiceImpl implements IdentifierService { SearchServiceConnectionException, IdentifierNotFoundException, ViewNotFoundException { final Identifier identifier = metadataMapper.identifierCreateDtoToIdentifier(data); identifier.setDatabase(database); - identifier.setCreatedBy(user.getId()); - identifier.setCreator(user); + identifier.setOwnedBy(user.getId()); + identifier.setOwner(user); identifier.setStatus(IdentifierStatusType.DRAFT); /* create in metadata database */ if (data.getCreators() != null) { 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 7b9d593723..d90351ae6c 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 @@ -109,8 +109,6 @@ public class TableServiceImpl implements TableService { .queueName(rabbitConfig.getQueueName()) .tdbid(database.getId()) .database(database) - .createdBy(owner.getId()) - .creator(owner) .ownedBy(owner.getId()) .owner(owner) .numRows(0L) 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 7bb12bb5fc..b0a8f01796 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 @@ -65,7 +65,7 @@ public class ViewServiceImpl implements ViewService { } return database.getViews() .stream() - .filter(v -> v.getIsPublic() || v.getCreatedBy().equals(user.getId())) + .filter(v -> v.getIsPublic() || v.getOwnedBy().equals(user.getId())) .toList(); } @@ -96,8 +96,8 @@ public class ViewServiceImpl implements ViewService { .database(database) .name(data.getName()) .internalName(metadataMapper.nameToInternalName(data.getName())) - .createdBy(creator.getId()) - .creator(creator) + .ownedBy(creator.getId()) + .owner(creator) .identifiers(new LinkedList<>()) .query(data.getQuery()) .queryHash(Hashing.sha256() @@ -105,6 +105,7 @@ public class ViewServiceImpl implements ViewService { .toString()) .columns(new LinkedList<>()) .isInitialView(false) + .isSchemaPublic(data.getIsSchemaPublic()) .isPublic(data.getIsPublic()) .build(); /* create in data service */ @@ -137,7 +138,6 @@ public class ViewServiceImpl implements ViewService { @Transactional public View update(Database database, View view, ViewUpdateDto data) throws DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException, ViewNotFoundException { - database = databaseRepository.save(database); final Optional<View> optional = database.getViews() .stream() .filter(v -> v.getInternalName().equals(view.getInternalName())) @@ -146,11 +146,13 @@ public class ViewServiceImpl implements ViewService { log.error("Failed to find view"); throw new ViewNotFoundException("Failed to find view"); } - optional.get() - .setIsPublic(data.getIsPublic()); + final View tmpView = optional.get(); + tmpView.setIsPublic(data.getIsPublic()); + tmpView.setIsSchemaPublic(data.getIsSchemaPublic()); + database = databaseRepository.save(database); /* update in search service */ searchServiceGateway.update(database); - log.info("Updated view with id {}", optional.get().getId()); + log.info("Updated view with id {}", tmpView.getId()); return optional.get(); } 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 8d4df649f7..8158a206c9 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 @@ -5878,7 +5878,6 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_1_RESULT_NUMBER) .publisher(IDENTIFIER_1_PUBLISHER) .type(IDENTIFIER_1_TYPE) - .ownedBy(USER_1_ID) .owner(USER_1) .licenses(new LinkedList<>(List.of(LICENSE_1))) .creators(new LinkedList<>(List.of(IDENTIFIER_1_CREATOR_1))) @@ -5905,7 +5904,6 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_1_RESULT_NUMBER) .publisher(IDENTIFIER_1_PUBLISHER) .type(IDENTIFIER_1_TYPE) - .ownedBy(USER_1_ID) .owner(USER_1) .licenses(List.of(LICENSE_1)) .creators(List.of(IDENTIFIER_1_CREATOR_1)) @@ -6473,7 +6471,6 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_6_RESULT_NUMBER) .publisher(IDENTIFIER_6_PUBLISHER) .type(IDENTIFIER_6_TYPE) - .ownedBy(USER_3_ID) .owner(USER_3) .licenses(new LinkedList<>(List.of(LICENSE_1))) .creators(new LinkedList<>(List.of(IDENTIFIER_6_CREATOR_1, IDENTIFIER_6_CREATOR_2, IDENTIFIER_6_CREATOR_3))) @@ -6692,7 +6689,6 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_2_RESULT_NUMBER) .publisher(IDENTIFIER_2_PUBLISHER) .type(IDENTIFIER_2_TYPE) - .ownedBy(USER_1_ID) .owner(USER_1) .licenses(new LinkedList<>(List.of(LICENSE_1))) .creators(new LinkedList<>()) @@ -6793,7 +6789,6 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_3_RESULT_NUMBER) .publisher(IDENTIFIER_3_PUBLISHER) .type(IDENTIFIER_3_TYPE) - .ownedBy(USER_1_ID) .owner(USER_1) .licenses(new LinkedList<>(List.of(LICENSE_1))) .creators(new LinkedList<>()) @@ -6895,7 +6890,6 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_4_RESULT_NUMBER) .publisher(IDENTIFIER_4_PUBLISHER) .type(IDENTIFIER_4_TYPE) - .ownedBy(USER_1_ID) .owner(USER_1) .licenses(new LinkedList<>(List.of(LICENSE_1))) .creators(new LinkedList<>()) @@ -7484,7 +7478,6 @@ public abstract class BaseTest { .resultNumber(IDENTIFIER_7_RESULT_NUMBER) .publisher(IDENTIFIER_7_PUBLISHER) .type(IDENTIFIER_7_TYPE) - .ownedBy(USER_4_ID) .owner(USER_4) .licenses(new LinkedList<>()) .creators(new LinkedList<>(List.of(IDENTIFIER_7_CREATOR_1))) diff --git a/dbrepo-search-service/Pipfile.lock b/dbrepo-search-service/Pipfile.lock index 60f55e7c72..f03f35f4a4 100644 --- a/dbrepo-search-service/Pipfile.lock +++ b/dbrepo-search-service/Pipfile.lock @@ -375,7 +375,7 @@ }, "dbrepo": { "hashes": [ - "sha256:2fca7fb5037f3497cb4154f770ebe4690e5ff93aef4c4d4ef39288b34806f077" + "sha256:e5331baeb427e2dfbb9d0085deba0b19c9b3e3505d9b49721cf86c0dff19c5d6" ], "path": "./lib/dbrepo-1.6.0.tar.gz" }, @@ -860,64 +860,64 @@ }, "numpy": { "hashes": [ - "sha256:016d0f6f5e77b0f0d45d77387ffa4bb89816b57c835580c3ce8e099ef830befe", - "sha256:02135ade8b8a84011cbb67dc44e07c58f28575cf9ecf8ab304e51c05528c19f0", - "sha256:08788d27a5fd867a663f6fc753fd7c3ad7e92747efc73c53bca2f19f8bc06f48", - "sha256:0d30c543f02e84e92c4b1f415b7c6b5326cbe45ee7882b6b77db7195fb971e3a", - "sha256:0fa14563cc46422e99daef53d725d0c326e99e468a9320a240affffe87852564", - "sha256:13138eadd4f4da03074851a698ffa7e405f41a0845a6b1ad135b81596e4e9958", - "sha256:14e253bd43fc6b37af4921b10f6add6925878a42a0c5fe83daee390bca80bc17", - "sha256:15cb89f39fa6d0bdfb600ea24b250e5f1a3df23f901f51c8debaa6a5d122b2f0", - "sha256:17ee83a1f4fef3c94d16dc1802b998668b5419362c8a4f4e8a491de1b41cc3ee", - "sha256:2312b2aa89e1f43ecea6da6ea9a810d06aae08321609d8dc0d0eda6d946a541b", - "sha256:2564fbdf2b99b3f815f2107c1bbc93e2de8ee655a69c261363a1172a79a257d4", - "sha256:3522b0dfe983a575e6a9ab3a4a4dfe156c3e428468ff08ce582b9bb6bd1d71d4", - "sha256:4394bc0dbd074b7f9b52024832d16e019decebf86caf909d94f6b3f77a8ee3b6", - "sha256:45966d859916ad02b779706bb43b954281db43e185015df6eb3323120188f9e4", - "sha256:4d1167c53b93f1f5d8a139a742b3c6f4d429b54e74e6b57d0eff40045187b15d", - "sha256:4f2015dfe437dfebbfce7c85c7b53d81ba49e71ba7eadbf1df40c915af75979f", - "sha256:50ca6aba6e163363f132b5c101ba078b8cbd3fa92c7865fd7d4d62d9779ac29f", - "sha256:50d18c4358a0a8a53f12a8ba9d772ab2d460321e6a93d6064fc22443d189853f", - "sha256:5641516794ca9e5f8a4d17bb45446998c6554704d888f86df9b200e66bdcce56", - "sha256:576a1c1d25e9e02ed7fa5477f30a127fe56debd53b8d2c89d5578f9857d03ca9", - "sha256:6a4825252fcc430a182ac4dee5a505053d262c807f8a924603d411f6718b88fd", - "sha256:72dcc4a35a8515d83e76b58fdf8113a5c969ccd505c8a946759b24e3182d1f23", - "sha256:747641635d3d44bcb380d950679462fae44f54b131be347d5ec2bce47d3df9ed", - "sha256:762479be47a4863e261a840e8e01608d124ee1361e48b96916f38b119cfda04a", - "sha256:78574ac2d1a4a02421f25da9559850d59457bac82f2b8d7a44fe83a64f770098", - "sha256:825656d0743699c529c5943554d223c021ff0494ff1442152ce887ef4f7561a1", - "sha256:8637dcd2caa676e475503d1f8fdb327bc495554e10838019651b76d17b98e512", - "sha256:96fe52fcdb9345b7cd82ecd34547fca4321f7656d500eca497eb7ea5a926692f", - "sha256:973faafebaae4c0aaa1a1ca1ce02434554d67e628b8d805e61f874b84e136b09", - "sha256:996bb9399059c5b82f76b53ff8bb686069c05acc94656bb259b1d63d04a9506f", - "sha256:a38c19106902bb19351b83802531fea19dee18e5b37b36454f27f11ff956f7fc", - "sha256:a6b46587b14b888e95e4a24d7b13ae91fa22386c199ee7b418f449032b2fa3b8", - "sha256:a9f7f672a3388133335589cfca93ed468509cb7b93ba3105fce780d04a6576a0", - "sha256:aa08e04e08aaf974d4458def539dece0d28146d866a39da5639596f4921fd761", - "sha256:b0df3635b9c8ef48bd3be5f862cf71b0a4716fa0e702155c45067c6b711ddcef", - "sha256:b47fbb433d3260adcd51eb54f92a2ffbc90a4595f8970ee00e064c644ac788f5", - "sha256:baed7e8d7481bfe0874b566850cb0b85243e982388b7b23348c6db2ee2b2ae8e", - "sha256:bc6f24b3d1ecc1eebfbf5d6051faa49af40b03be1aaa781ebdadcbc090b4539b", - "sha256:c006b607a865b07cd981ccb218a04fc86b600411d83d6fc261357f1c0966755d", - "sha256:c181ba05ce8299c7aa3125c27b9c2167bca4a4445b7ce73d5febc411ca692e43", - "sha256:c7662f0e3673fe4e832fe07b65c50342ea27d989f92c80355658c7f888fcc83c", - "sha256:c80e4a09b3d95b4e1cac08643f1152fa71a0a821a2d4277334c88d54b2219a41", - "sha256:c894b4305373b9c5576d7a12b473702afdf48ce5369c074ba304cc5ad8730dff", - "sha256:d7aac50327da5d208db2eec22eb11e491e3fe13d22653dce51b0f4109101b408", - "sha256:d89dd2b6da69c4fff5e39c28a382199ddedc3a5be5390115608345dec660b9e2", - "sha256:d9beb777a78c331580705326d2367488d5bc473b49a9bc3036c154832520aca9", - "sha256:dc258a761a16daa791081d026f0ed4399b582712e6fc887a95af09df10c5ca57", - "sha256:e14e26956e6f1696070788252dcdff11b4aca4c3e8bd166e0df1bb8f315a67cb", - "sha256:e6988e90fcf617da2b5c78902fe8e668361b43b4fe26dbf2d7b0f8034d4cafb9", - "sha256:e711e02f49e176a01d0349d82cb5f05ba4db7d5e7e0defd026328e5cfb3226d3", - "sha256:ea4dedd6e394a9c180b33c2c872b92f7ce0f8e7ad93e9585312b0c5a04777a4a", - "sha256:ecc76a9ba2911d8d37ac01de72834d8849e55473457558e12995f4cd53e778e0", - "sha256:f55ba01150f52b1027829b50d70ef1dafd9821ea82905b63936668403c3b471e", - "sha256:f653490b33e9c3a4c1c01d41bc2aef08f9475af51146e4a7710c450cf9761598", - "sha256:fa2d1337dc61c8dc417fbccf20f6d1e139896a30721b7f1e832b2bb6ef4eb6c4" + "sha256:0557eebc699c1c34cccdd8c3778c9294e8196df27d713706895edc6f57d29608", + "sha256:0798b138c291d792f8ea40fe3768610f3c7dd2574389e37c3f26573757c8f7ef", + "sha256:0da8495970f6b101ddd0c38ace92edea30e7e12b9a926b57f5fabb1ecc25bb90", + "sha256:0f0986e917aca18f7a567b812ef7ca9391288e2acb7a4308aa9d265bd724bdae", + "sha256:122fd2fcfafdefc889c64ad99c228d5a1f9692c3a83f56c292618a59aa60ae83", + "sha256:140dd80ff8981a583a60980be1a655068f8adebf7a45a06a6858c873fcdcd4a0", + "sha256:16757cf28621e43e252c560d25b15f18a2f11da94fea344bf26c599b9cf54b73", + "sha256:18142b497d70a34b01642b9feabb70156311b326fdddd875a9981f34a369b671", + "sha256:1c92113619f7b272838b8d6702a7f8ebe5edea0df48166c47929611d0b4dea69", + "sha256:1e25507d85da11ff5066269d0bd25d06e0a0f2e908415534f3e603d2a78e4ffa", + "sha256:30bf971c12e4365153afb31fc73f441d4da157153f3400b82db32d04de1e4066", + "sha256:3579eaeb5e07f3ded59298ce22b65f877a86ba8e9fe701f5576c99bb17c283da", + "sha256:36b2b43146f646642b425dd2027730f99bac962618ec2052932157e213a040e9", + "sha256:3905a5fffcc23e597ee4d9fb3fcd209bd658c352657548db7316e810ca80458e", + "sha256:3a4199f519e57d517ebd48cb76b36c82da0360781c6a0353e64c0cac30ecaad3", + "sha256:3f2f5cddeaa4424a0a118924b988746db6ffa8565e5829b1841a8a3bd73eb59a", + "sha256:40deb10198bbaa531509aad0cd2f9fadb26c8b94070831e2208e7df543562b74", + "sha256:440cfb3db4c5029775803794f8638fbdbf71ec702caf32735f53b008e1eaece3", + "sha256:4723a50e1523e1de4fccd1b9a6dcea750c2102461e9a02b2ac55ffeae09a4410", + "sha256:4bddbaa30d78c86329b26bd6aaaea06b1e47444da99eddac7bf1e2fab717bd72", + "sha256:4e58666988605e251d42c2818c7d3d8991555381be26399303053b58a5bbf30d", + "sha256:54dc1d6d66f8d37843ed281773c7174f03bf7ad826523f73435deb88ba60d2d4", + "sha256:57fcc997ffc0bef234b8875a54d4058afa92b0b0c4223fc1f62f24b3b5e86038", + "sha256:58b92a5828bd4d9aa0952492b7de803135038de47343b2aa3cc23f3b71a3dc4e", + "sha256:5a145e956b374e72ad1dff82779177d4a3c62bc8248f41b80cb5122e68f22d13", + "sha256:6ab153263a7c5ccaf6dfe7e53447b74f77789f28ecb278c3b5d49db7ece10d6d", + "sha256:7832f9e8eb00be32f15fdfb9a981d6955ea9adc8574c521d48710171b6c55e95", + "sha256:7fe4bb0695fe986a9e4deec3b6857003b4cfe5c5e4aac0b95f6a658c14635e31", + "sha256:7fe8f3583e0607ad4e43a954e35c1748b553bfe9fdac8635c02058023277d1b3", + "sha256:85ad7d11b309bd132d74397fcf2920933c9d1dc865487128f5c03d580f2c3d03", + "sha256:9874bc2ff574c40ab7a5cbb7464bf9b045d617e36754a7bc93f933d52bd9ffc6", + "sha256:a184288538e6ad699cbe6b24859206e38ce5fba28f3bcfa51c90d0502c1582b2", + "sha256:a222d764352c773aa5ebde02dd84dba3279c81c6db2e482d62a3fa54e5ece69b", + "sha256:a50aeff71d0f97b6450d33940c7181b08be1441c6c193e678211bff11aa725e7", + "sha256:a55dc7a7f0b6198b07ec0cd445fbb98b05234e8b00c5ac4874a63372ba98d4ab", + "sha256:a62eb442011776e4036af5c8b1a00b706c5bc02dc15eb5344b0c750428c94219", + "sha256:a7d41d1612c1a82b64697e894b75db6758d4f21c3ec069d841e60ebe54b5b571", + "sha256:a98f6f20465e7618c83252c02041517bd2f7ea29be5378f09667a8f654a5918d", + "sha256:afe8fb968743d40435c3827632fd36c5fbde633b0423da7692e426529b1759b1", + "sha256:b0b227dcff8cdc3efbce66d4e50891f04d0a387cce282fe1e66199146a6a8fca", + "sha256:b30042fe92dbd79f1ba7f6898fada10bdaad1847c44f2dff9a16147e00a93661", + "sha256:b606b1aaf802e6468c2608c65ff7ece53eae1a6874b3765f69b8ceb20c5fa78e", + "sha256:b6207dc8fb3c8cb5668e885cef9ec7f70189bec4e276f0ff70d5aa078d32c88e", + "sha256:c2aed8fcf8abc3020d6a9ccb31dbc9e7d7819c56a348cc88fd44be269b37427e", + "sha256:cb24cca1968b21355cc6f3da1a20cd1cebd8a023e3c5b09b432444617949085a", + "sha256:cff210198bb4cae3f3c100444c5eaa573a823f05c253e7188e1362a5555235b3", + "sha256:d35717333b39d1b6bb8433fa758a55f1081543de527171543a2b710551d40881", + "sha256:df12a1f99b99f569a7c2ae59aa2d31724e8d835fc7f33e14f4792e3071d11221", + "sha256:e09d40edfdb4e260cb1567d8ae770ccf3b8b7e9f0d9b5c2a9992696b30ce2742", + "sha256:e12c6c1ce84628c52d6367863773f7c8c8241be554e8b79686e91a43f1733773", + "sha256:e2b8cd48a9942ed3f85b95ca4105c45758438c7ed28fff1e4ce3e57c3b589d8e", + "sha256:e500aba968a48e9019e42c0c199b7ec0696a97fa69037bea163b55398e390529", + "sha256:ebe5e59545401fbb1b24da76f006ab19734ae71e703cdb4a8b347e84a0cece67", + "sha256:f0dd071b95bbca244f4cb7f70b77d2ff3aaaba7fa16dc41f58d14854a6204e6c", + "sha256:f8c8b141ef9699ae777c6278b52c706b653bf15d135d302754f6b2e90eb30367" ], "markers": "python_version == '3.11'", - "version": "==2.1.3" + "version": "==2.2.0" }, "opensearch-py": { "hashes": [ diff --git a/dbrepo-search-service/init/Pipfile.lock b/dbrepo-search-service/init/Pipfile.lock index 3138db0a9d..9f92191fba 100644 --- a/dbrepo-search-service/init/Pipfile.lock +++ b/dbrepo-search-service/init/Pipfile.lock @@ -593,64 +593,64 @@ }, "numpy": { "hashes": [ - "sha256:016d0f6f5e77b0f0d45d77387ffa4bb89816b57c835580c3ce8e099ef830befe", - "sha256:02135ade8b8a84011cbb67dc44e07c58f28575cf9ecf8ab304e51c05528c19f0", - "sha256:08788d27a5fd867a663f6fc753fd7c3ad7e92747efc73c53bca2f19f8bc06f48", - "sha256:0d30c543f02e84e92c4b1f415b7c6b5326cbe45ee7882b6b77db7195fb971e3a", - "sha256:0fa14563cc46422e99daef53d725d0c326e99e468a9320a240affffe87852564", - "sha256:13138eadd4f4da03074851a698ffa7e405f41a0845a6b1ad135b81596e4e9958", - "sha256:14e253bd43fc6b37af4921b10f6add6925878a42a0c5fe83daee390bca80bc17", - "sha256:15cb89f39fa6d0bdfb600ea24b250e5f1a3df23f901f51c8debaa6a5d122b2f0", - "sha256:17ee83a1f4fef3c94d16dc1802b998668b5419362c8a4f4e8a491de1b41cc3ee", - "sha256:2312b2aa89e1f43ecea6da6ea9a810d06aae08321609d8dc0d0eda6d946a541b", - "sha256:2564fbdf2b99b3f815f2107c1bbc93e2de8ee655a69c261363a1172a79a257d4", - "sha256:3522b0dfe983a575e6a9ab3a4a4dfe156c3e428468ff08ce582b9bb6bd1d71d4", - "sha256:4394bc0dbd074b7f9b52024832d16e019decebf86caf909d94f6b3f77a8ee3b6", - "sha256:45966d859916ad02b779706bb43b954281db43e185015df6eb3323120188f9e4", - "sha256:4d1167c53b93f1f5d8a139a742b3c6f4d429b54e74e6b57d0eff40045187b15d", - "sha256:4f2015dfe437dfebbfce7c85c7b53d81ba49e71ba7eadbf1df40c915af75979f", - "sha256:50ca6aba6e163363f132b5c101ba078b8cbd3fa92c7865fd7d4d62d9779ac29f", - "sha256:50d18c4358a0a8a53f12a8ba9d772ab2d460321e6a93d6064fc22443d189853f", - "sha256:5641516794ca9e5f8a4d17bb45446998c6554704d888f86df9b200e66bdcce56", - "sha256:576a1c1d25e9e02ed7fa5477f30a127fe56debd53b8d2c89d5578f9857d03ca9", - "sha256:6a4825252fcc430a182ac4dee5a505053d262c807f8a924603d411f6718b88fd", - "sha256:72dcc4a35a8515d83e76b58fdf8113a5c969ccd505c8a946759b24e3182d1f23", - "sha256:747641635d3d44bcb380d950679462fae44f54b131be347d5ec2bce47d3df9ed", - "sha256:762479be47a4863e261a840e8e01608d124ee1361e48b96916f38b119cfda04a", - "sha256:78574ac2d1a4a02421f25da9559850d59457bac82f2b8d7a44fe83a64f770098", - "sha256:825656d0743699c529c5943554d223c021ff0494ff1442152ce887ef4f7561a1", - "sha256:8637dcd2caa676e475503d1f8fdb327bc495554e10838019651b76d17b98e512", - "sha256:96fe52fcdb9345b7cd82ecd34547fca4321f7656d500eca497eb7ea5a926692f", - "sha256:973faafebaae4c0aaa1a1ca1ce02434554d67e628b8d805e61f874b84e136b09", - "sha256:996bb9399059c5b82f76b53ff8bb686069c05acc94656bb259b1d63d04a9506f", - "sha256:a38c19106902bb19351b83802531fea19dee18e5b37b36454f27f11ff956f7fc", - "sha256:a6b46587b14b888e95e4a24d7b13ae91fa22386c199ee7b418f449032b2fa3b8", - "sha256:a9f7f672a3388133335589cfca93ed468509cb7b93ba3105fce780d04a6576a0", - "sha256:aa08e04e08aaf974d4458def539dece0d28146d866a39da5639596f4921fd761", - "sha256:b0df3635b9c8ef48bd3be5f862cf71b0a4716fa0e702155c45067c6b711ddcef", - "sha256:b47fbb433d3260adcd51eb54f92a2ffbc90a4595f8970ee00e064c644ac788f5", - "sha256:baed7e8d7481bfe0874b566850cb0b85243e982388b7b23348c6db2ee2b2ae8e", - "sha256:bc6f24b3d1ecc1eebfbf5d6051faa49af40b03be1aaa781ebdadcbc090b4539b", - "sha256:c006b607a865b07cd981ccb218a04fc86b600411d83d6fc261357f1c0966755d", - "sha256:c181ba05ce8299c7aa3125c27b9c2167bca4a4445b7ce73d5febc411ca692e43", - "sha256:c7662f0e3673fe4e832fe07b65c50342ea27d989f92c80355658c7f888fcc83c", - "sha256:c80e4a09b3d95b4e1cac08643f1152fa71a0a821a2d4277334c88d54b2219a41", - "sha256:c894b4305373b9c5576d7a12b473702afdf48ce5369c074ba304cc5ad8730dff", - "sha256:d7aac50327da5d208db2eec22eb11e491e3fe13d22653dce51b0f4109101b408", - "sha256:d89dd2b6da69c4fff5e39c28a382199ddedc3a5be5390115608345dec660b9e2", - "sha256:d9beb777a78c331580705326d2367488d5bc473b49a9bc3036c154832520aca9", - "sha256:dc258a761a16daa791081d026f0ed4399b582712e6fc887a95af09df10c5ca57", - "sha256:e14e26956e6f1696070788252dcdff11b4aca4c3e8bd166e0df1bb8f315a67cb", - "sha256:e6988e90fcf617da2b5c78902fe8e668361b43b4fe26dbf2d7b0f8034d4cafb9", - "sha256:e711e02f49e176a01d0349d82cb5f05ba4db7d5e7e0defd026328e5cfb3226d3", - "sha256:ea4dedd6e394a9c180b33c2c872b92f7ce0f8e7ad93e9585312b0c5a04777a4a", - "sha256:ecc76a9ba2911d8d37ac01de72834d8849e55473457558e12995f4cd53e778e0", - "sha256:f55ba01150f52b1027829b50d70ef1dafd9821ea82905b63936668403c3b471e", - "sha256:f653490b33e9c3a4c1c01d41bc2aef08f9475af51146e4a7710c450cf9761598", - "sha256:fa2d1337dc61c8dc417fbccf20f6d1e139896a30721b7f1e832b2bb6ef4eb6c4" + "sha256:0557eebc699c1c34cccdd8c3778c9294e8196df27d713706895edc6f57d29608", + "sha256:0798b138c291d792f8ea40fe3768610f3c7dd2574389e37c3f26573757c8f7ef", + "sha256:0da8495970f6b101ddd0c38ace92edea30e7e12b9a926b57f5fabb1ecc25bb90", + "sha256:0f0986e917aca18f7a567b812ef7ca9391288e2acb7a4308aa9d265bd724bdae", + "sha256:122fd2fcfafdefc889c64ad99c228d5a1f9692c3a83f56c292618a59aa60ae83", + "sha256:140dd80ff8981a583a60980be1a655068f8adebf7a45a06a6858c873fcdcd4a0", + "sha256:16757cf28621e43e252c560d25b15f18a2f11da94fea344bf26c599b9cf54b73", + "sha256:18142b497d70a34b01642b9feabb70156311b326fdddd875a9981f34a369b671", + "sha256:1c92113619f7b272838b8d6702a7f8ebe5edea0df48166c47929611d0b4dea69", + "sha256:1e25507d85da11ff5066269d0bd25d06e0a0f2e908415534f3e603d2a78e4ffa", + "sha256:30bf971c12e4365153afb31fc73f441d4da157153f3400b82db32d04de1e4066", + "sha256:3579eaeb5e07f3ded59298ce22b65f877a86ba8e9fe701f5576c99bb17c283da", + "sha256:36b2b43146f646642b425dd2027730f99bac962618ec2052932157e213a040e9", + "sha256:3905a5fffcc23e597ee4d9fb3fcd209bd658c352657548db7316e810ca80458e", + "sha256:3a4199f519e57d517ebd48cb76b36c82da0360781c6a0353e64c0cac30ecaad3", + "sha256:3f2f5cddeaa4424a0a118924b988746db6ffa8565e5829b1841a8a3bd73eb59a", + "sha256:40deb10198bbaa531509aad0cd2f9fadb26c8b94070831e2208e7df543562b74", + "sha256:440cfb3db4c5029775803794f8638fbdbf71ec702caf32735f53b008e1eaece3", + "sha256:4723a50e1523e1de4fccd1b9a6dcea750c2102461e9a02b2ac55ffeae09a4410", + "sha256:4bddbaa30d78c86329b26bd6aaaea06b1e47444da99eddac7bf1e2fab717bd72", + "sha256:4e58666988605e251d42c2818c7d3d8991555381be26399303053b58a5bbf30d", + "sha256:54dc1d6d66f8d37843ed281773c7174f03bf7ad826523f73435deb88ba60d2d4", + "sha256:57fcc997ffc0bef234b8875a54d4058afa92b0b0c4223fc1f62f24b3b5e86038", + "sha256:58b92a5828bd4d9aa0952492b7de803135038de47343b2aa3cc23f3b71a3dc4e", + "sha256:5a145e956b374e72ad1dff82779177d4a3c62bc8248f41b80cb5122e68f22d13", + "sha256:6ab153263a7c5ccaf6dfe7e53447b74f77789f28ecb278c3b5d49db7ece10d6d", + "sha256:7832f9e8eb00be32f15fdfb9a981d6955ea9adc8574c521d48710171b6c55e95", + "sha256:7fe4bb0695fe986a9e4deec3b6857003b4cfe5c5e4aac0b95f6a658c14635e31", + "sha256:7fe8f3583e0607ad4e43a954e35c1748b553bfe9fdac8635c02058023277d1b3", + "sha256:85ad7d11b309bd132d74397fcf2920933c9d1dc865487128f5c03d580f2c3d03", + "sha256:9874bc2ff574c40ab7a5cbb7464bf9b045d617e36754a7bc93f933d52bd9ffc6", + "sha256:a184288538e6ad699cbe6b24859206e38ce5fba28f3bcfa51c90d0502c1582b2", + "sha256:a222d764352c773aa5ebde02dd84dba3279c81c6db2e482d62a3fa54e5ece69b", + "sha256:a50aeff71d0f97b6450d33940c7181b08be1441c6c193e678211bff11aa725e7", + "sha256:a55dc7a7f0b6198b07ec0cd445fbb98b05234e8b00c5ac4874a63372ba98d4ab", + "sha256:a62eb442011776e4036af5c8b1a00b706c5bc02dc15eb5344b0c750428c94219", + "sha256:a7d41d1612c1a82b64697e894b75db6758d4f21c3ec069d841e60ebe54b5b571", + "sha256:a98f6f20465e7618c83252c02041517bd2f7ea29be5378f09667a8f654a5918d", + "sha256:afe8fb968743d40435c3827632fd36c5fbde633b0423da7692e426529b1759b1", + "sha256:b0b227dcff8cdc3efbce66d4e50891f04d0a387cce282fe1e66199146a6a8fca", + "sha256:b30042fe92dbd79f1ba7f6898fada10bdaad1847c44f2dff9a16147e00a93661", + "sha256:b606b1aaf802e6468c2608c65ff7ece53eae1a6874b3765f69b8ceb20c5fa78e", + "sha256:b6207dc8fb3c8cb5668e885cef9ec7f70189bec4e276f0ff70d5aa078d32c88e", + "sha256:c2aed8fcf8abc3020d6a9ccb31dbc9e7d7819c56a348cc88fd44be269b37427e", + "sha256:cb24cca1968b21355cc6f3da1a20cd1cebd8a023e3c5b09b432444617949085a", + "sha256:cff210198bb4cae3f3c100444c5eaa573a823f05c253e7188e1362a5555235b3", + "sha256:d35717333b39d1b6bb8433fa758a55f1081543de527171543a2b710551d40881", + "sha256:df12a1f99b99f569a7c2ae59aa2d31724e8d835fc7f33e14f4792e3071d11221", + "sha256:e09d40edfdb4e260cb1567d8ae770ccf3b8b7e9f0d9b5c2a9992696b30ce2742", + "sha256:e12c6c1ce84628c52d6367863773f7c8c8241be554e8b79686e91a43f1733773", + "sha256:e2b8cd48a9942ed3f85b95ca4105c45758438c7ed28fff1e4ce3e57c3b589d8e", + "sha256:e500aba968a48e9019e42c0c199b7ec0696a97fa69037bea163b55398e390529", + "sha256:ebe5e59545401fbb1b24da76f006ab19734ae71e703cdb4a8b347e84a0cece67", + "sha256:f0dd071b95bbca244f4cb7f70b77d2ff3aaaba7fa16dc41f58d14854a6204e6c", + "sha256:f8c8b141ef9699ae777c6278b52c706b653bf15d135d302754f6b2e90eb30367" ], "markers": "python_version == '3.11'", - "version": "==2.1.3" + "version": "==2.2.0" }, "opensearch-py": { "hashes": [ 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 index 4d97fc82b85e61e053b9a4f209e316730331a85a..d1262e2a6a79187d2692942785d6b9cf3e031765 100644 GIT binary patch delta 39485 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 delta 39376 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 diff --git a/dbrepo-search-service/lib/dbrepo-1.6.0.tar.gz b/dbrepo-search-service/lib/dbrepo-1.6.0.tar.gz index 4d97fc82b85e61e053b9a4f209e316730331a85a..d1262e2a6a79187d2692942785d6b9cf3e031765 100644 GIT binary patch delta 39485 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 delta 39376 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 diff --git a/dbrepo-ui/components/database/DatabaseCreate.vue b/dbrepo-ui/components/database/DatabaseCreate.vue index 40ab3837b9..cd85489790 100644 --- a/dbrepo-ui/components/database/DatabaseCreate.vue +++ b/dbrepo-ui/components/database/DatabaseCreate.vue @@ -180,9 +180,6 @@ export default { .catch(({code}) => { this.loadingContainers = false const toast = useToastInstance() - if (typeof code !== 'string') { - return - } toast.error(this.$t(code)) }) }, diff --git a/dbrepo-ui/components/database/DatabaseToolbar.vue b/dbrepo-ui/components/database/DatabaseToolbar.vue index 5f3c8c8398..65363c3467 100644 --- a/dbrepo-ui/components/database/DatabaseToolbar.vue +++ b/dbrepo-ui/components/database/DatabaseToolbar.vue @@ -118,6 +118,12 @@ export default { roles () { return this.userStore.getRoles }, + isContrastTheme () { + return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') + }, + isDarkTheme () { + return this.$vuetify.theme.global.name.toLowerCase().startsWith('dark') + }, colorVariant () { return this.isContrastTheme ? '' : (this.isDarkTheme ? 'tertiary' : 'secondary') }, diff --git a/dbrepo-ui/components/dialogs/ViewVisibility.vue b/dbrepo-ui/components/dialogs/ViewVisibility.vue new file mode 100644 index 0000000000..7ac381711e --- /dev/null +++ b/dbrepo-ui/components/dialogs/ViewVisibility.vue @@ -0,0 +1,148 @@ +<template> + <div> + <v-form + ref="form" + v-model="valid" + autocomplete="off" + @submit.prevent="submit"> + <v-card + :title="$t('pages.view.visibility.title')"> + <v-card-text> + <v-row> + <v-col> + </v-col> + </v-row> + <v-row + dense> + <v-col> + <v-select + v-model="modify.is_public" + :items="visibilities" + persistent-hint + :variant="inputVariant" + required + :rules="[ + v => v !== null || $t('validation.required') + ]" + :label="$t('pages.database.subpages.create.data.label')" + :hint="$t('pages.database.subpages.create.data.hint')" /> + </v-col> + </v-row> + <v-row + dense> + <v-col> + <v-select + v-model="modify.is_schema_public" + :items="visibilities" + persistent-hint + :variant="inputVariant" + required + :rules="[ + v => v !== null || $t('validation.required') + ]" + :label="$t('pages.database.subpages.create.schema.label')" + :hint="$t('pages.database.subpages.create.schema.hint')" /> + </v-col> + </v-row> + </v-card-text> + <v-card-actions> + <v-spacer /> + <v-btn + :variant="buttonVariant" + :text="$t('navigation.cancel')" + @click="cancel" /> + <v-btn + id="database" + variant="flat" + :disabled="!valid || !isChange" + :color="buttonColor" + type="submit" + :text="$t('navigation.modify')" + @click="updateVisibility" /> + </v-card-actions> + </v-card> + </v-form> + </div> +</template> + +<script> +import { useCacheStore } from '@/stores/cache' + +export default { + props: { + view: { + type: Object, + default () { + return { + is_public: true, + is_schema_public: true + } + } + }, + }, + data () { + return { + valid: false, + loading: false, + loadingUsers: false, + users: [], + error: false, + visibilities: [ + { title: this.$t('toolbars.database.public'), value: true }, + { title: this.$t('toolbars.database.private'), value: false }, + ], + modify: { + is_public: this.view.is_public, + is_schema_public: this.view.is_schema_public + }, + cacheStore: useCacheStore() + } + }, + computed: { + database () { + return this.cacheStore.getDatabase + }, + 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 + }, + isChange () { + return this.view.is_public !== this.modify.is_public || this.view.is_schema_public !== this.modify.is_schema_public + }, + buttonColor () { + return !this.isChange ? null : 'warning' + } + }, + methods: { + submit () { + this.$refs.form.validate() + }, + cancel () { + this.$emit('close', { success: false }) + }, + updateVisibility () { + this.loading = true + const viewService = useViewService() + viewService.update(this.$route.params.database_id, this.$route.params.view_id, this.modify) + .then(() => { + this.loading = false + const toast = useToastInstance() + toast.success(this.$t('success.view.modified')) + this.$emit('close', { success: true }) + }) + .catch(({code, message}) => { + this.loading = false + const toast = useToastInstance() + toast.error(message) + }) + .finally(() => { + this.loading = false + }) + } + } +} +</script> diff --git a/dbrepo-ui/components/identifier/Persist.vue b/dbrepo-ui/components/identifier/Persist.vue index 1795d05866..5c6d7c6289 100644 --- a/dbrepo-ui/components/identifier/Persist.vue +++ b/dbrepo-ui/components/identifier/Persist.vue @@ -1176,6 +1176,7 @@ export default { this.addDescription() this.fetchLicenses() this.fetchIdentifier() + this.$refs.form.validate() }, methods: { cancel () { diff --git a/dbrepo-ui/components/subset/Builder.vue b/dbrepo-ui/components/subset/Builder.vue index 3a3cd3a142..2a14b8f474 100644 --- a/dbrepo-ui/components/subset/Builder.vue +++ b/dbrepo-ui/components/subset/Builder.vue @@ -61,20 +61,11 @@ :hint="$t('pages.view.subpages.create.name.hint')" /> </v-col> </v-row> - <v-row - v-if="isView && !view.is_public" - dense> - <v-col> - <v-alert - :text="$t('pages.view.subpages.create.visibility.warn')" - border="start" - color="warning" /> - </v-col> - </v-row> <v-row v-if="isView" dense> - <v-col lg="8"> + <v-col + md="4"> <v-select v-model="view.is_public" :items="visibilities" @@ -85,8 +76,23 @@ :rules="[ v => !!v || $t('validation.required') ]" - :label="$t('pages.view.subpages.create.visibility.label')" - :hint="$t('pages.view.subpages.create.visibility.hint')" /> + :label="$t('pages.database.subpages.create.data.label')" + :hint="$t('pages.database.subpages.create.data.hint')" /> + </v-col> + <v-col + md="4"> + <v-select + v-model="view.is_schema_public" + :items="visibilities" + persistent-hint + :variant="inputVariant" + required + clearable + :rules="[ + v => !!v || $t('validation.required') + ]" + :label="$t('pages.database.subpages.create.schema.label')" + :hint="$t('pages.database.subpages.create.schema.hint')" /> </v-col> </v-row> <v-window @@ -121,6 +127,7 @@ :label="$t('pages.view.subpages.create.columns.label')" :hint="$t('pages.view.subpages.create.columns.hint')" :rules="[v => !!v || $t('validation.required')]" + :loading="loadingColumns" return-object multiple @update:model-value="buildQuery"> @@ -322,6 +329,7 @@ export default { return { table: null, views: [], + columns: [], timestamp: null, executeDifferentTimestamp: false, visibilities: [ @@ -338,6 +346,7 @@ export default { }, view: { is_public: true, + is_schema_public: true, name: null, query: null }, @@ -345,6 +354,7 @@ export default { clauses: [], tabs: 0, loadingQuery: false, + loadingColumns: false, cacheStore: useCacheStore(), userStore: useUserStore() } @@ -359,12 +369,6 @@ export default { } return this.database.container.image.operators }, - columns () { - if (!this.table) { - return [] - } - return this.table.columns - }, tables () { if (!this.database) { return [] @@ -462,12 +466,30 @@ export default { }, table () { this.select = [] + if (!this.table) { + return + } + this.fetchTableColumns(this.table.id) } }, mounted () { this.selectTable() }, methods: { + fetchTableColumns (tableId) { + this.loadingColumns = true + const tableService = useTableService() + tableService.findOne(this.$route.params.database_id, tableId) + .then((table) => { + this.columns = table.columns + this.loadingColumns = false + }) + .catch(({code}) => { + const toast = useToastInstance() + toast.error(this.$t(code)) + this.loadingColumns = false + }) + }, validViewName (name) { if (!name) { return false diff --git a/dbrepo-ui/components/table/TableList.vue b/dbrepo-ui/components/table/TableList.vue index 2fc2c7d791..8bb77b2b5a 100644 --- a/dbrepo-ui/components/table/TableList.vue +++ b/dbrepo-ui/components/table/TableList.vue @@ -19,6 +19,21 @@ :subtitle="table.description ? table.description : ''" :to="`/database/${$route.params.database_id}/table/${table.id}/info`"> <template v-slot:append> + <v-chip + v-if="table && table.is_public" + size="small" + class="ml-2" + color="success" + :text="$t('toolbars.database.public')" + variant="outlined" /> + <v-chip + v-if="table && !table.is_public" + size="small" + class="ml-2" + :color="colorVariant" + variant="outlined" + :text="$t('toolbars.database.private')" + flat /> <v-tooltip v-if="hasPublishedIdentifier(table)" :text="$t('pages.identifier.pid.title')" @@ -91,14 +106,18 @@ export default { return [] } return this.database.tables + }, + isContrastTheme () { + return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') + }, + isDarkTheme () { + return this.$vuetify.theme.global.name.toLowerCase().startsWith('dark') + }, + colorVariant () { + return this.isContrastTheme ? '' : (this.isDarkTheme ? 'tertiary' : 'secondary') } }, methods: { - pick (item, mode) { - this.column = item - this.mode = mode - this.dialogSemantic = true - }, closed (data) { console.debug('closed dialog', data) this.dialogSemantic = false diff --git a/dbrepo-ui/components/table/TableSchema.vue b/dbrepo-ui/components/table/TableSchema.vue index cc3a5e687d..e9cb03c617 100644 --- a/dbrepo-ui/components/table/TableSchema.vue +++ b/dbrepo-ui/components/table/TableSchema.vue @@ -228,7 +228,9 @@ export default { data () { return { valid: false, + columnTypes: [], loadColumn: false, + loadingColumnTypes: false, tableColumns: [], cacheStore: useCacheStore() } @@ -237,22 +239,6 @@ export default { database () { return this.cacheStore.getDatabase }, - columnTypes () { - if (!this.database) { - return [] - } - const types = this.database.container.image.data_types - if (this.columns.filter(c => c.type === 'serial').length > 0) { - return types.filter(t => t.value !== 'serial') - } - return types - }, - dateFormats () { - if (!this.database || !('container' in this.database) || !('image' in this.database.container) || !('date_formats' in this.database.container.image)) { - return [] - } - return this.database.container.image.date_formats - }, inputVariant () { const runtimeConfig = useRuntimeConfig() return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') ? runtimeConfig.public.variant.input.contrast : runtimeConfig.public.variant.input.normal @@ -272,7 +258,32 @@ export default { } } }, + mounted () { + this.fetchColumnTypes() + }, methods: { + fetchColumnTypes () { + if (!this.database) { + return + } + this.loadingColumnTypes = true + const imageService = useImageService() + imageService.findById(this.database.container.id) + .then((image) => { + const types = image.data_types + if (this.columns.filter(c => c.type === 'serial').length > 0) { + this.columnTypes = types.filter(t => t.value !== 'serial') + } else { + this.columnTypes = types + } + this.loadingColumnTypes = false + }) + .catch(({code}) => { + this.loadingColumnTypes = false + const toast = useToastInstance() + toast.error(this.$t(code)) + }) + }, shift (column) { if (!this.columns || this.columns.length === 0) { return false diff --git a/dbrepo-ui/components/table/TableToolbar.vue b/dbrepo-ui/components/table/TableToolbar.vue index 1c222cc7c6..595893b8f0 100644 --- a/dbrepo-ui/components/table/TableToolbar.vue +++ b/dbrepo-ui/components/table/TableToolbar.vue @@ -6,7 +6,8 @@ size="small" icon="mdi-arrow-left" :to="`/database/${$route.params.database_id}/table`" /> - <v-toolbar-title> + <v-toolbar-title + v-if="table"> <v-skeleton-loader v-if="!table && $vuetify.display.lgAndUp" type="subtitle" @@ -15,6 +16,21 @@ v-if="table && $vuetify.display.lgAndUp"> {{ table.name }} </span> + <v-chip + v-if="table && table.is_public" + size="small" + class="ml-2" + color="success" + :text="$t('toolbars.database.public')" + variant="outlined" /> + <v-chip + v-if="table && !table.is_public" + size="small" + class="ml-2" + :color="colorVariant" + variant="outlined" + :text="$t('toolbars.database.private')" + flat /> </v-toolbar-title> <v-spacer /> <v-btn @@ -170,7 +186,16 @@ export default { buttonVariant () { const runtimeConfig = useRuntimeConfig() return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') ? runtimeConfig.public.variant.button.contrast : runtimeConfig.public.variant.button.normal - } + }, + isContrastTheme () { + return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') + }, + isDarkTheme () { + return this.$vuetify.theme.global.name.toLowerCase().startsWith('dark') + }, + colorVariant () { + return this.isContrastTheme ? '' : (this.isDarkTheme ? 'tertiary' : 'secondary') + }, }, methods: { closed (event) { diff --git a/dbrepo-ui/components/user/UserBadge.vue b/dbrepo-ui/components/user/UserBadge.vue index 71da03d929..f7bd18c60f 100644 --- a/dbrepo-ui/components/user/UserBadge.vue +++ b/dbrepo-ui/components/user/UserBadge.vue @@ -33,7 +33,6 @@ export default { computed: { hasOrcid () { return !(!this.user || !this.user.attributes || !this.user.attributes.orcid); - }, orcid () { if (!this.hasOrcid) { @@ -46,7 +45,7 @@ export default { return userService.userToFullName(this.user) }, isSelf () { - if (!this.otherUser) { + if (!this.otherUser || !this.user) { return false } return this.user.id === this.otherUser.id diff --git a/dbrepo-ui/components/view/ViewList.vue b/dbrepo-ui/components/view/ViewList.vue index ea2dc0946c..6fe8451903 100644 --- a/dbrepo-ui/components/view/ViewList.vue +++ b/dbrepo-ui/components/view/ViewList.vue @@ -14,6 +14,21 @@ :class="clazz(view)" :to="`/database/${$route.params.database_id}/view/${view.id}/info`"> <template v-slot:append> + <v-chip + v-if="view && view.is_public" + size="small" + class="ml-2" + color="success" + :text="$t('toolbars.database.public')" + variant="outlined" /> + <v-chip + v-if="view && !view.is_public" + size="small" + class="ml-2" + :color="colorVariant" + variant="outlined" + :text="$t('toolbars.database.private')" + flat /> <v-tooltip v-if="hasPublishedIdentifier(view)" :text="$t('pages.identifier.pid.title')" @@ -60,6 +75,15 @@ export default { return [] } return this.database.views + }, + isContrastTheme () { + return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') + }, + isDarkTheme () { + return this.$vuetify.theme.global.name.toLowerCase().startsWith('dark') + }, + colorVariant () { + return this.isContrastTheme ? '' : (this.isDarkTheme ? 'tertiary' : 'secondary') } }, methods: { diff --git a/dbrepo-ui/components/view/ViewToolbar.vue b/dbrepo-ui/components/view/ViewToolbar.vue index c43b730397..8bb39f0070 100644 --- a/dbrepo-ui/components/view/ViewToolbar.vue +++ b/dbrepo-ui/components/view/ViewToolbar.vue @@ -6,8 +6,27 @@ icon="mdi-arrow-left" :to="`/database/${$route.params.database_id}/view`" /> <v-toolbar-title - v-if="view" - :text="title" /> + v-if="cachedView"> + <span + v-if="$vuetify.display.lgAndUp"> + {{ title }} + </span> + <v-chip + v-if="cachedView.is_public" + size="small" + class="ml-2" + color="success" + :text="$t('toolbars.database.public')" + variant="outlined" /> + <v-chip + v-if="!cachedView.is_public" + size="small" + class="ml-2" + :color="colorVariant" + variant="outlined" + :text="$t('toolbars.database.private')" + flat /> + </v-toolbar-title> <v-spacer /> <v-btn v-if="canDeleteView" @@ -18,6 +37,14 @@ color="error" :text="$t('navigation.delete')" @click="deleteView" /> + <v-btn + v-if="canUpdateVisibility" + class="mr-2" + variant="flat" + :prepend-icon="$vuetify.display.lgAndUp ? 'mdi-eye' : null" + color="warning" + :text="$t('navigation.visibility')" + @click="updateViewDialog = true" /> <v-btn v-if="canCreatePid" class="mr-2" @@ -26,6 +53,14 @@ color="primary" :text="($vuetify.display.lgAndUp ? $t('toolbars.view.pid.xl') + ' ' : '') + $t('toolbars.view.pid.permanent')" :to="`/database/${$route.params.database_id}/view/${$route.params.view_id}/persist`" /> + <v-dialog + v-model="updateViewDialog" + persistent + max-width="640"> + <ViewVisibility + :view="cachedView" + @close="close" /> + </v-dialog> <template v-slot:extension> <v-tabs v-model="tab" @@ -34,8 +69,13 @@ :text="$t('navigation.info')" :to="`/database/${$route.params.database_id}/view/${$route.params.view_id}/info`" /> <v-tab + v-if="canViewData" :text="$t('navigation.data')" :to="`/database/${$route.params.database_id}/view/${$route.params.view_id}/data`" /> + <v-tab + v-if="canViewSchema" + :text="$t('navigation.schema')" + :to="`/database/${$route.params.database_id}/view/${$route.params.view_id}/schema`" /> </v-tabs> </template> </v-toolbar> @@ -44,15 +84,20 @@ <script> import { useUserStore } from '@/stores/user' import { useCacheStore } from '@/stores/cache' +import CreateOntology from "@/components/dialogs/CreateOntology.vue" +import ViewVisibility from "@/components/dialogs/ViewVisibility.vue" export default { components: { + ViewVisibility, + CreateOntology }, data () { return { tab: null, loading: false, loadingDelete: false, + updateViewDialog: false, userStore: useUserStore(), cacheStore: useCacheStore() } @@ -68,17 +113,53 @@ export default { const runtimeConfig = useRuntimeConfig() return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') ? runtimeConfig.public.variant.button.contrast : runtimeConfig.public.variant.button.normal }, - view () { + cachedView () { if (!this.database) { return null } return this.database.views.filter(v => v.id === Number(this.$route.params.view_id))[0] }, + canViewData () { + if (!this.cachedView || !this.user) { + return false + } + if (this.cachedView.is_public) { + return true + } + return this.hasReadAccess || this.cachedView.owned_by === this.user.id || this.database.owner.id === this.user.id + }, + canViewSchema () { + if (!this.cachedView) { + return false + } + if (this.cachedView.is_schema_public) { + return true + } + if (!this.user) { + return false + } + return this.hasReadAccess || this.cachedView.owned_by === this.user.id || this.database.owner.id === this.user.id + }, canDeleteView () { - if (!this.roles || !this.user || !this.view || !this.view.creator) { + if (!this.roles || !this.user || !this.view) { return false } - return this.roles.includes('delete-database-view') && this.view.creator.id === this.user.id + return this.roles.includes('delete-database-view') && this.cachedView.owned_by === this.user.id + }, + canUpdateVisibility () { + if (!this.roles || !this.user || !this.view) { + return false + } + return this.roles.includes('create-database-view') && this.cachedView.owned_by === this.user.id + }, + isContrastTheme () { + return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') + }, + isDarkTheme () { + return this.$vuetify.theme.global.name.toLowerCase().startsWith('dark') + }, + colorVariant () { + return this.isContrastTheme ? '' : (this.isDarkTheme ? 'tertiary' : 'secondary') }, canCreatePid () { if (!this.roles || !this.user || !this.view) { @@ -90,6 +171,12 @@ export default { access () { return this.userStore.getAccess }, + hasReadAccess () { + if (!this.access) { + return false + } + return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own' + }, user () { return this.userStore.getUser }, @@ -100,7 +187,7 @@ export default { if (!this.view) { return [] } - return this.view.identifiers.filter(s => s.view_id === Number(this.$route.params.view_id)) + return this.cachedView.identifiers.filter(s => s.view_id === Number(this.$route.params.view_id)) }, identifier () { /* mount pid */ @@ -115,10 +202,10 @@ export default { return this.identifiers[0] }, title () { - if (!this.view) { + if (!this.cachedView) { return null } - return this.view.name + return this.cachedView.name } }, methods: { @@ -142,6 +229,12 @@ export default { .finally(() => { this.loadingDelete = false }) + }, + close ({success}) { + this.updateViewDialog = false + if (success) { + this.cacheStore.reloadDatabase() + } } } } diff --git a/dbrepo-ui/composables/image-service.ts b/dbrepo-ui/composables/image-service.ts new file mode 100644 index 0000000000..9af0304a16 --- /dev/null +++ b/dbrepo-ui/composables/image-service.ts @@ -0,0 +1,21 @@ +import {axiosErrorToApiError} from '@/utils' + +export const useImageService = (): any => { + async function findById(id: number): Promise<ImageDto> { + const axios = useAxiosInstance(); + console.debug('find image by id', id); + return new Promise<ImageDto>((resolve, reject) => { + axios.get<ImageDto>(`/api/image/${id}`) + .then((response) => { + console.info('Found image') + resolve(response.data) + }) + .catch((error) => { + console.error('Failed to find image', error) + reject(axiosErrorToApiError(error)) + }) + }) + } + + return {findById} +} diff --git a/dbrepo-ui/composables/view-service.ts b/dbrepo-ui/composables/view-service.ts index c870402dfb..9c9a6792d3 100644 --- a/dbrepo-ui/composables/view-service.ts +++ b/dbrepo-ui/composables/view-service.ts @@ -18,6 +18,22 @@ export const useViewService = (): any => { }) } + async function findOne(databaseId: number, viewId: number): Promise<ViewDto> { + const axios = useAxiosInstance() + console.debug('get view with id', viewId, 'in database with id', databaseId) + return new Promise<ViewDto>((resolve, reject) => { + axios.get<ViewDto>(`/api/database/${databaseId}/view/${viewId}`) + .then((response) => { + console.info('Deleted view with id', viewId, 'in database with id', databaseId) + resolve(response.data) + }) + .catch((error) => { + console.error('Failed to delete view', error) + reject(axiosErrorToApiError(error)) + }) + }) + } + async function create(databaseId: number, payload: ViewCreateDto): Promise<ViewDto> { const axios = useAxiosInstance() console.debug('create view in database with id', databaseId) @@ -38,7 +54,7 @@ export const useViewService = (): any => { const axios = useAxiosInstance() console.debug('update view with id', viewId) return new Promise<ViewDto>((resolve, reject) => { - axios.post<ViewDto>(`/api/database/${databaseId}/view/${viewId}`, payload) + axios.put<ViewDto>(`/api/database/${databaseId}/view/${viewId}`, payload) .then((response) => { console.info('Update view with id', viewId) resolve(response.data) @@ -54,7 +70,7 @@ export const useViewService = (): any => { const axios = useAxiosInstance() console.debug('re-execute view with id', viewId, 'in database with id', databaseId) return new Promise<QueryResultDto>((resolve, reject) => { - axios.get<QueryResultDto>(`/api/database/${databaseId}/view/${viewId}/data`, { params: {page, size} }) + axios.get<QueryResultDto>(`/api/database/${databaseId}/view/${viewId}/data`, {params: {page, size}}) .then((response) => { console.info('Re-executed view with id', viewId, 'in database with id', databaseId) resolve(response.data) @@ -105,5 +121,5 @@ export const useViewService = (): any => { }) } - return {remove, create, update, reExecuteData, reExecuteCount, exportData} + return {remove, findOne, create, update, reExecuteData, reExecuteCount, exportData} } diff --git a/dbrepo-ui/dto/index.ts b/dbrepo-ui/dto/index.ts index a11cb5ccb7..03c7173bec 100644 --- a/dbrepo-ui/dto/index.ts +++ b/dbrepo-ui/dto/index.ts @@ -93,10 +93,11 @@ interface TableBriefDto { id: number; name: string; description: string; - owner: UserBriefDto; - columns: ColumnBriefDto[]; internal_name: string; is_versioned: boolean; + is_public: boolean; + is_schema_public: boolean; + owned_by: string; } interface ColumnBriefDto { @@ -505,6 +506,20 @@ interface ImageBriefDto { jdbc_method: string; } +interface ImageDto { + id: number; + registry: string; + name: string; + version: string; + driver_class: string; + dialect: string; + jdbc_method: string; + default: boolean; + default_port: number; + data_types: DataTypeDto[]; + operators: OperatorDto[]; +} + interface UserUpdateDto { firstname: string; lastname: string; diff --git a/dbrepo-ui/locales/en-US.json b/dbrepo-ui/locales/en-US.json index b775fedeeb..9e805bf636 100644 --- a/dbrepo-ui/locales/en-US.json +++ b/dbrepo-ui/locales/en-US.json @@ -35,7 +35,8 @@ "loading": "Loading", "view": "View", "modify": "Modify", - "help": "Help" + "help": "Help", + "visibility": "Visibility" }, "pages": { "identifier": { @@ -279,10 +280,10 @@ "title": "ID" }, "broker": { - "title": "Live Data" + "title": "Advanced Data Import Details" }, "connection": { - "title": "Connection Details", + "title": "Connection(s)", "secure": "encrypted", "permissions": { "write": "You can write to this table", @@ -291,19 +292,20 @@ }, "visibility": { "title": "Visibility", - "public": "Open", - "mixed": "Data is public", - "private": "Closed" + "open": "Open", + "data": "Data is public", + "schema": "Schema is public", + "closed": "Closed" }, "description": { "title": "Description", "empty": "(no description)" }, "exchange": { - "title": "Exchange" + "title": "Exchange Name" }, "queue": { - "title": "Queue" + "title": "Queue Name" }, "routing-key": { "title": "Routing Key" @@ -598,9 +600,10 @@ }, "visibility": { "title": "Visibility", - "public": "Open", - "mixed": "Data is public", - "private": "Closed" + "open": "Open", + "data": "Data is public", + "schema": "Schema is public", + "closed": "Closed" }, "size": { "title": "Size" @@ -900,8 +903,8 @@ "query": { "title": "Statement" }, - "creator": { - "title": "Creator" + "owner": { + "title": "Owner" }, "creation": { "title": "Creation" @@ -923,11 +926,6 @@ "columns": { "label": "Data Columns", "hint": "Required" - }, - "visibility": { - "label": "Data Visibility", - "warn": "Only people with at least read access can view the data", - "hint": "Required. When private, the view metadata will still be public but the data will only be visible to people with at least read access to this database" } } } @@ -1310,7 +1308,8 @@ }, "view": { "create": "Successfully created view", - "delete": "Successfully deleted view" + "delete": "Successfully deleted view", + "modified": "Successfully modified view visibility" }, "subset": { "create": "Successfully created subset" @@ -1349,7 +1348,7 @@ }, "import-csv": { "permanent": "Import", - "xl": "CSV" + "xl": "Dataset" }, "dashboard": { "permanent": "Visualize", diff --git a/dbrepo-ui/pages/database/[database_id]/info.vue b/dbrepo-ui/pages/database/[database_id]/info.vue index e05722b493..5b739987fd 100644 --- a/dbrepo-ui/pages/database/[database_id]/info.vue +++ b/dbrepo-ui/pages/database/[database_id]/info.vue @@ -78,13 +78,6 @@ :other-user="user" /> </div> </v-list-item> - <v-list-item - :title="$t('pages.database.created.title')" - density="compact"> - <div> - {{ createdUTC }} - </div> - </v-list-item> <v-list-item v-if="access && access.type" :title="$t('pages.database.subpages.access.title')" @@ -288,12 +281,6 @@ export default { pid () { return this.$route.query.pid }, - createdUTC () { - if (!this.database) { - return - } - return formatTimestampUTCLabel(this.database.created) - }, internal_name () { if (!this.database) { return @@ -378,7 +365,7 @@ export default { if (!this.database.is_public && !this.database.is_schema_public) { return this.$t('pages.database.visibility.closed') } - return this.$t('pages.database.visibility.mixed') + return this.database.is_public ? this.$t('pages.database.visibility.data') : this.$t('pages.database.visibility.schema') }, previewImage () { if (!this.database) { 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 ff87b3ff3a..bdbf5f97d5 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 @@ -55,13 +55,9 @@ <v-list-item :title="$t('pages.table.owner.title')"> <UserBadge - :user="table.creator" + :user="table.owner" :other-user="user" /> </v-list-item> - <v-list-item - :title="$t('pages.table.creation.title')"> - {{ createdUTC }} - </v-list-item> <v-list-item v-if="accessDescription" :title="$t('pages.database.subpages.access.title')"> @@ -84,6 +80,24 @@ </v-list> </v-card-text> </v-card> + <v-divider /> + <v-card + :title="$t('pages.database.title')" + variant="flat"> + <v-card-text> + <v-list dense> + <v-list-item + v-if="database" + :title="$t('pages.database.name.title')"> + <NuxtLink + class="text-primary" + :to="`/database/${database.id}`"> + {{ database.internal_name }} + </NuxtLink> + </v-list-item> + </v-list> + </v-card-text> + </v-card> <v-divider v-if="canWrite && canWriteQueues" /> <v-card @@ -129,24 +143,6 @@ </v-list> </v-card-text> </v-card> - <v-divider /> - <v-card - :title="$t('pages.database.title')" - variant="flat"> - <v-card-text> - <v-list dense> - <v-list-item - v-if="database" - :title="$t('pages.database.name.title')"> - <NuxtLink - class="text-primary" - :to="`/database/${database.id}`"> - {{ database.internal_name }} - </NuxtLink> - </v-list-item> - </v-list> - </v-card-text> - </v-card> <v-breadcrumbs :items="items" class="pa-0 mt-2" /> </div> </template> @@ -246,12 +242,6 @@ export default { } return (this.access.type === 'write_own' && this.table.owner.id === this.user.id) || this.access.type === 'write_all' }, - createdUTC () { - if (this.table.created === undefined || this.table.created === null) { - return null - } - return formatTimestampUTCLabel(this.table.created) - }, access () { return this.userStore.getAccess }, @@ -277,7 +267,7 @@ export default { if (!this.user) { return this.identifiers.filter(i => i.status === 'published') } - return this.identifiers.filter(i => i.status === 'published' || i.creator.id === this.user.id) + return this.identifiers.filter(i => i.status === 'published' || i.owned_by === this.user.id) }, identifier () { if (this.pid) { @@ -331,7 +321,7 @@ export default { if (!this.database.is_public && !this.table.is_schema_public) { return this.$t('pages.table.visibility.closed') } - return this.$t('pages.table.visibility.mixed') + return this.database.is_public ? this.$t('pages.database.visibility.data') : this.$t('pages.database.visibility.schema') } } } 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 65b6034348..ec8fce9b54 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 @@ -1,5 +1,6 @@ <template> - <div> + <div + v-if="canViewSchema"> <TableToolbar :selection="selection" /> <v-toolbar @@ -184,9 +185,24 @@ export default { access () { return this.userStore.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.userStore.getRoles }, + canViewSchema () { + if (!this.table) { + return false + } + if (this.table.is_schema_public) { + return true + } + return this.hasReadAccess || this.table.owned_by === this.user.id || this.database.owner.id === this.user.id + }, primaryKeysColumns () { return this.table.constraints.primary_key.map(pk => pk.column.internal_name).join(', ') }, 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 bc460da08b..6f34086a2c 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 @@ -1,7 +1,8 @@ <template> - <div> + <div + v-if="canViewData"> <ViewToolbar - v-if="view" /> + v-if="cachedView" /> <v-toolbar color="secondary" :title="$t('toolbars.database.current')" @@ -69,14 +70,18 @@ export default { disabled: true } ], - cacheStore: useCacheStore() + cacheStore: useCacheStore(), + userStore: useUserStore() } }, computed: { + user () { + return this.userStore.getUser + }, database () { return this.cacheStore.getDatabase }, - view () { + cachedView () { if (!this.database) { return null } @@ -85,20 +90,38 @@ export default { access () { return this.userStore.getAccess }, + hasReadAccess () { + if (!this.access) { + return false + } + return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own' + }, canDownload () { if (!this.view) { return false } - if (this.view.is_public) { + if (this.cachedView.is_public) { return true } if (!this.access) { return false } return this.access.type === 'read' || this.access.type === 'write_own' || this.access.type === 'write_all' - } + }, + canViewData () { + if (!this.cachedView || !this.user) { + return false + } + if (this.cachedView.is_public) { + return true + } + return this.hasReadAccess || this.cachedView.owned_by === this.user.id || this.database.owner.id === this.user.id + }, }, mounted () { + if (!this.canViewData) { + return + } this.reload() }, methods: { 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 064fa5f3f2..364516f45f 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 @@ -4,7 +4,7 @@ <v-window v-model="tab"> <v-window-item - v-if="view"> + v-if="cachedView"> <v-card variant="flat"> <Summary v-if="hasIdentifier" @@ -23,30 +23,35 @@ variant="flat"> <v-card-text> <v-list - v-if="view" + v-if="cachedView" dense> <v-list-item :title="$t('pages.view.name.title')"> - {{ view.internal_name }} + {{ cachedView.internal_name }} </v-list-item> <v-list-item :title="$t('pages.view.query.title')"> - <pre>{{ view.query }}</pre> + <pre>{{ cachedView.query }}</pre> </v-list-item> <v-list-item - :title="$t('pages.view.creator.title')"> + :title="$t('pages.view.owner.title')"> <UserBadge - :user="view.creator" + v-if="view" + :user="view.owner" :other-user="user" /> + <v-skeleton-loader + v-else + type="subtitle" + width="200" /> </v-list-item> <v-list-item - v-if="view.created" + v-if="cachedView.created" :title="$t('pages.view.creation.title')"> - {{ formatUTC(view.created) }} + {{ formatUTC(cachedView.created) }} </v-list-item> <v-list-item :title="$t('pages.view.visibility.title')"> - {{ view.is_public ? $t('toolbars.database.public') : $t('toolbars.database.private') }} + {{ viewVisibility }} </v-list-item> </v-list> </v-card-text> @@ -107,6 +112,8 @@ export default { data () { return { tab: 0, + loadingView: false, + view: null, items: [ { title: this.$t('navigation.databases'), @@ -145,7 +152,7 @@ export default { database () { return this.cacheStore.getDatabase }, - view () { + cachedView () { if (!this.database) { return null } @@ -196,11 +203,43 @@ export default { } const userService = useUserService() return userService.userToFullName(this.view.creator) + }, + viewVisibility () { + if (!this.cachedView) { + return null + } + if (this.cachedView.is_public && this.cachedView.is_schema_public) { + return this.$t('pages.database.visibility.open') + } + if (!this.cachedView.is_public && !this.cachedView.is_schema_public) { + return this.$t('pages.database.visibility.closed') + } + return this.cachedView.is_public ? this.$t('pages.database.visibility.data') : this.$t('pages.database.visibility.schema') } }, + mounted () { + this.fetchView() + }, methods: { formatUTC (timestamp) { return formatTimestampUTCLabel(timestamp) + }, + fetchView () { + this.loadingView = true + const viewService = useViewService() + viewService.findOne(this.$route.params.database_id, this.$route.params.view_id) + .then((view) => { + this.view = view + this.loadingView = false + }) + .catch(({code}) => { + this.loadingView = false + const toast = useToastInstance() + toast.error(this.$t(code)) + }) + .finally(() => { + this.loadingView = false + }) } } } @@ -222,16 +261,4 @@ pre { #back-btn::before { opacity: 0; } -.skeleton-large > div { - width: 400px !important; -} -.skeleton-medium > div { - width: 200px !important; -} -.skeleton-small > div { - width: 100px !important; -} -.skeleton-xsmall > div { - width: 50px !important; -} </style> 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 new file mode 100644 index 0000000000..b3352010b2 --- /dev/null +++ b/dbrepo-ui/pages/database/[database_id]/view/[view_id]/schema.vue @@ -0,0 +1,202 @@ +<template> + <div + v-if="canViewSchema"> + <ViewToolbar /> + <v-toolbar + color="secondary" + :title="$t('pages.table.subpages.schema.title')" + variant="flat" /> + <v-card + variant="flat" + rounded="0" + tile> + <v-data-table + v-if="view" + class="full-width" + disable-sort + :loading="loading" + hide-default-footer + :items-per-page="-1" + :headers="headers" + :items="view.columns"> + <template v-slot:item.is_null_allowed="{ item }"> + <span + v-if="item.is_null_allowed"> + {{ $t('pages.table.subpages.schema.bullet') }} + </span> + {{ item.is_null_allowed }} + </template> + <template v-slot:item.extra="{ item }"> + <pre>{{ extra(item) }}</pre> + </template> + <template v-slot:item.column_concept="{ item }"> + <a + v-if="hasConcept(item)" + :href="item.concept.uri"> + {{ item.concept.name ? item.concept.name : item.concept.uri }} + </a> + </template> + <template v-slot:item.column_unit="{ item }"> + <a + v-if="hasUnit(item)" + :href="item.unit.uri"> + {{ item.unit.name ? item.unit.name : item.unit.uri }} + </a> + </template> + </v-data-table> + </v-card> + <v-breadcrumbs + :items="items" + class="pa-0 mt-2" /> + </div> +</template> + +<script> +import TableToolbar from '@/components/table/TableToolbar.vue' +import { useUserStore } from '@/stores/user' +import { useCacheStore } from '@/stores/cache' + +export default { + components: { + TableToolbar + }, + data () { + return { + loading: false, + view: null, + items: [ + { + title: this.$t('navigation.databases'), + to: '/database' + }, + { + title: `${this.$route.params.database_id}`, + to: `/database/${this.$route.params.database_id}/info` + }, + { + title: this.$t('navigation.views'), + to: `/database/${this.$route.params.database_id}/view` + }, + { + title: `${this.$route.params.view_id}`, + to: `/database/${this.$route.params.database_id}/view/${this.$route.params.view_id}` + }, + { + title: this.$t('navigation.schema'), + to: `/database/${this.$route.params.database_id}/view/${this.$route.params.view_id}/schema`, + disabled: true + } + ], + headers: [ + { value: 'internal_name', title: this.$t('pages.table.subpages.schema.internal-name.title') }, + { value: 'column_type', title: this.$t('pages.table.subpages.schema.column-type.title') }, + { value: 'extra', title: this.$t('pages.table.subpages.schema.extra.title') }, + { value: 'column_concept', title: this.$t('pages.table.subpages.schema.concept.title') }, + { value: 'column_unit', title: this.$t('pages.table.subpages.schema.unit.title') }, + { 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() + } + }, + mounted () { + this.fetchView() + }, + computed: { + user () { + return this.userStore.getUser + }, + database () { + return this.cacheStore.getDatabase + }, + access () { + return this.userStore.getAccess + }, + hasReadAccess () { + if (!this.access) { + return false + } + return this.access.type === 'read' || this.access.type === 'write_all' || this.access.type === 'write_own' + }, + cachedView () { + if (!this.database) { + return null + } + return this.database.views.filter(v => v.id === Number(this.$route.params.view_id))[0] + }, + canViewSchema () { + if (!this.cachedView) { + return false + } + if (this.cachedView.is_schema_public) { + return true + } + if (!this.user) { + return false + } + return this.hasReadAccess || this.cachedView.owned_by === this.user.id || this.database.owner.id === this.user.id + }, + roles () { + return this.userStore.getRoles + }, + 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 + } + }, + methods: { + extra (column) { + if (column.column_type === 'float') { + return `precision=${column.size}` + } else if (['decimal', 'double'].includes(column.column_type)) { + let extra = '' + if (column.size !== null) { + extra += `size=${column.size}` + } + if (column.d !== null) { + if (extra.length > 0) { + extra += ', ' + } + extra += `d=${column.d}` + } + return extra + } else if (column.column_type === 'enum') { + return `(${column.enums.join(', ')})` + } else if (column.column_type === 'set') { + return `(${column.sets.join(', ')})` + } else if (['int', 'char', 'varchar', 'binary', 'varbinary', 'tinyint', 'size="small"int', 'mediumint', 'bigint'].includes(column.column_type)) { + return column.size !== null ? `size=${column.size}` : '' + } + return null + }, + hasUnit (item) { + return item.unit && 'uri' in item.unit + }, + hasConcept (item) { + return item.concept && 'uri' in item.concept + }, + fetchView () { + this.loading = true + const viewService = useViewService() + viewService.findOne(this.$route.params.database_id, this.$route.params.view_id) + .then((view) => { + this.view = view + this.loading = false + }) + .catch(({code}) => { + this.loading = false + const toast = useToastInstance() + toast.error(this.$t(code)) + }) + .finally(() => { + this.loading = false + }) + } + } +} +</script> diff --git a/dbrepo-ui/pages/signup.vue b/dbrepo-ui/pages/signup.vue index 54c0060225..2548a6dfa9 100644 --- a/dbrepo-ui/pages/signup.vue +++ b/dbrepo-ui/pages/signup.vue @@ -130,9 +130,6 @@ export default { .catch(({code}) => { this.loading = false const toast = useToastInstance() - if (typeof code !== 'string') { - return - } toast.error(this.$t(code)) }) .finally(() => { diff --git a/lib/python/dbrepo/RestClient.py b/lib/python/dbrepo/RestClient.py index 985b971aff..2f5f161a3f 100644 --- a/lib/python/dbrepo/RestClient.py +++ b/lib/python/dbrepo/RestClient.py @@ -911,15 +911,15 @@ class RestClient: raise ResponseCodeError(f'Failed to update view: response code: {response.status_code} is not ' f'202 (ACCEPTED): {response.text}') - def create_view(self, database_id: int, name: str, query: str, is_public: bool) -> View: + def create_view(self, database_id: int, name: str, query: str, is_public: bool, is_schema_public: bool) -> View: """ Create a view in a database with given database id. :param database_id: The database id. :param name: The name of the created view. :param query: The query of the created view. - :param is_public: The visibility of the view. If set to true everything will be visible, otherwise only - the metadata (schema, identifiers) will be visible to the public. + :param is_public: The visibility of the data. If set to true the data will be publicly visible. Optional. Default: `True`. + :param is_schema_public: The visibility of the schema metadata. If set to true the schema metadata will be publicly visible. Optional. Default: `True`. :returns: The created view, if successful. @@ -933,7 +933,8 @@ class RestClient: """ url = f'/api/database/{database_id}/view' response = self._wrapper(method="post", url=url, force_auth=True, - payload=CreateView(name=name, query=query, is_public=is_public)) + payload=CreateView(name=name, query=query, is_public=is_public, + is_schema_public=is_schema_public)) if response.status_code == 201: body = response.json() return View.model_validate(body) diff --git a/lib/python/dbrepo/api/dto.py b/lib/python/dbrepo/api/dto.py index 027010be8d..55e79d912c 100644 --- a/lib/python/dbrepo/api/dto.py +++ b/lib/python/dbrepo/api/dto.py @@ -126,7 +126,9 @@ class TableBrief(BaseModel): description: Optional[str] internal_name: str is_versioned: bool - owner: UserBrief + is_public: bool + is_schema_public: bool + owned_by: str class UserAttributes(BaseModel): @@ -627,7 +629,6 @@ class View(BaseModel): internal_name: str is_public: bool initial_view: bool - last_modified: Timestamp columns: List[ViewColumn] identifiers: List[Identifier] = field(default_factory=list) @@ -636,6 +637,7 @@ class CreateView(BaseModel): name: str query: str is_public: bool + is_schema_public: bool class Result(BaseModel): @@ -648,13 +650,13 @@ class ViewBrief(BaseModel): id: int database_id: int name: str - identifier: List[Identifier] - query: str - query_hash: str - owner: UserBrief internal_name: str is_public: bool + is_schema_public: bool initial_view: bool + query: str + query_hash: str + owned_by: str class Concept(BaseModel): -- GitLab From 2a9bbac8df984424bd2575fb2dfb506e3edbff48 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Mon, 9 Dec 2024 14:19:51 +0100 Subject: [PATCH 04/12] Sync initial admin user, ref #470 --- dbrepo-analyse-service/Pipfile.lock | 2 +- .../lib/dbrepo-1.6.0.tar.gz | Bin 39681 -> 39703 bytes dbrepo-auth-service/init/Dockerfile | 19 + dbrepo-auth-service/init/Pipfile | 11 + dbrepo-auth-service/init/Pipfile.lock | 391 ++++++++++++++++++ dbrepo-auth-service/init/app.py | 31 ++ dbrepo-search-service/Pipfile.lock | 2 +- .../init/lib/dbrepo-1.6.0.tar.gz | Bin 39681 -> 39703 bytes dbrepo-search-service/lib/dbrepo-1.6.0.tar.gz | Bin 39681 -> 39703 bytes docker-compose.yml | 20 + 10 files changed, 474 insertions(+), 2 deletions(-) create mode 100644 dbrepo-auth-service/init/Dockerfile create mode 100644 dbrepo-auth-service/init/Pipfile create mode 100644 dbrepo-auth-service/init/Pipfile.lock create mode 100644 dbrepo-auth-service/init/app.py diff --git a/dbrepo-analyse-service/Pipfile.lock b/dbrepo-analyse-service/Pipfile.lock index 139a80e626..09eee0a9c5 100644 --- a/dbrepo-analyse-service/Pipfile.lock +++ b/dbrepo-analyse-service/Pipfile.lock @@ -427,7 +427,7 @@ }, "dbrepo": { "hashes": [ - "sha256:e5331baeb427e2dfbb9d0085deba0b19c9b3e3505d9b49721cf86c0dff19c5d6" + "sha256:ab3cef49028a22f55e7411983e7f5040daf0e6b70d3794faeb7b49c6e04bc99e" ], "path": "./lib/dbrepo-1.6.0.tar.gz" }, diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.0.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.6.0.tar.gz index d1262e2a6a79187d2692942785d6b9cf3e031765..bf639a7f68d8c4a647a8ea2feef12d4909c2a190 100644 GIT binary patch delta 39246 zcmZqN#x#8!6PtWD2gl0$6WKKDBZC$dTNGz__E~P6Cb+V~NUq+*#YD5mv4PRyWRL&6 zS9RZ6>-@`BuM#&2%M(z&{bYKC$_4Mz($d`6tFgD&<^DfE_2)}dW8G)<-!<mT{yX`5 z_vX$2m45Y|FE9UA_I;nRUG4Uk^BNq!^1J@OyZz_Q-vl0~>I1KKyZ`>}uFuC`URIxN z|K?A{kHhyK-YQ>xKK%d2yjrs_+sd-rx6Xb0UM~NyysXTF`*#;N%l=&-^?A2`-#0!! zzCJ$wZwY_j@4aFB>zqZzvtRNy2G$8bpQ`Qs?_|IA`GNo6`7ZyduRr>K`l0{dMgHIa z{qe(tf^vR|gI%BNXaD){`}xV6MWx>)UjP4av|FbB-~RF)yXzbN)ITqHp7H*u;D@HW zf5i_7^~_CO_dkEi|MilS?Rpp9+?#w%diUu&4Wd*3xBhH=yYpCF?((cZXG`3d*_(YU zD~o#)wu}4l!;jy-9X{-Qc1d2=y!-ddD#8zblM2h3A3J}0&#|K`3yUfXZ{?Wl>qi}1 zeLDN`veGcqb?4XBuhaL>_xn&d)oZR<^xN0ZPD|G~@xHm%6MSuRtToGnrdzWb(qelu z?sB~IIc~^yrleQEP0FZVKw??8WbFB^6}pR`|2(FV5XwBQ`+ekMJ-c;X%Qmb@WnY+o zzwg7&M7FlpSfkTBWTkblJ?(wt^n0KAtNW7nQgQrsHv-PR?qfT{JGs7~vW{!RI&+!d zW&ia|_OMU?$=1Lk`nDiv#^Mj>KEJ)c(*B}fSnr2(JiITqyq_I#@olhTBRem{HFMd= zJ+u564T}mJSZs~Y=xtS6$YA0Sd9jC`m8HRqyW)Dog$v*3tV;al^RIy8g;pQi{JxkA z&JXS;JlMHNHSj{khQrqP_}*_wtKajfrYYItQ@dP%PfMuj!=k=xuG+6nrW{ytWA>g^ z-w*uJ@|n-Sxy9jz-v2mLr}Hmn8N7_}+j1ygkgX;;VOQGxhffmsA6!wb&ahgFzr3f7 zf3yGJSy#68&19Ee$r-is1_P(Be?dC`#-;P_GUxEkynl3=HoNux{Gf8V1?|dlW+q(q zjn#~M4A>2P?YL9AFFesLX5@^OUS@P{7hAf?)BRP8OBXYhew@93-^%k=f7&f}ZeJ_7 z?Wwd?Z3o*8^@eMF0s;-y3G9r5HWwx1Sxj^_gR&j-V<Vb2>|yitlK!>kc#Zt3%eUnc z|0tIke$bI_OS`mcl5o!M*mRc_4XznG;xa70)gL%^FHw$py||r1CF>PMpDxxL)3f`f zgwB3o3f=jyx~%@m<?0z??U`>LfBJUcfh+TZZ~2+|2TOWnqU3GwOCLD>ZthE_D@BbA zp*t9-nW#Em6n6jfMsnG~i_T|5A2W;Os<d&QPRn@Q^ohg5@QhsmQxBuuake$Z`Vuc~ zpWkELcKCYzyN1YZnJteO+P&F6@4w+u5xED7jy^RUnz~U;+qBykiZQs)mAJ;h!+&^> zdG7H&rB8lc{}Cj*Q&TA6y2z3gt$hkRr57-AX@5Ir$l99gv|6%FBbvimDC(jME879P znazq{ctjhwGSB?n6|u=s#^}XQVI8&O)i-)J6r8I0Ew`cKd_9kg$A)=J7~UvLvnPF7 zq}s>K`D3l*gC{$;i0HmyUMat#{j=7au4UZU4;`L+ckksHj6Pu;Mhs!g&cDl@<+UWq zp*KREjhUx<-yc@rj?8P}lQVdh%5XOXar{;*d1kpqW5KMu+hbp-+CI;$)A<>qzwOUz zH=$alYLBx??^aYQn%0=r8{}@ayLsVDXOMutNe|=anZ|9U59(Bo+-2ITFn7nZhTK!0 z+ZzRc+HUrCTD0n<N9z@lfDYMbUl&E%JBI0{)I94^zupkFDXN~UG3lUZ<f;b;jwKa4 zndET#x@>z=cqc%&Vm^CKXtao8Q7!+jGL_qWZrcx7vwWUV#U3c`==Y#=X}yE2puGP| z(V}UdcSOCoV*?%6`P^0Bd*8?*jXz-G`aM4CZ+lBkmz7==oBq8^*ID)10j4ju3CBX` zv_@Z6w5s~Bah~_7<0nLKm=}n?@JJV2B;cPYpeuH$K0sH*wX6JP?SXnhp96xq?Aq1~ zf}FBvod{YLV8G{O#!({1XH<S9pryXV)2&OW=2zgS!d%yvQC62$OG$SIHn!y+k$$n` zZlFWZyeb)i{UTXUq90XE%t)HABJ?PE>K6`Y&bG4hC%sG&dzdf(?^tube~a?UqKyaM z?LP9mQKYbsW8=&z9cQxsGJVLE`W3Zy?eggbPW!_SPtz_~bZW7(z|Y4D7grXtAGl+* zpk6&dQnIj!A?m$)R14$pT$V476Sl|le>i*8RBO+zPmg;t)~Eex$r3HAUeu;<s=e6s z(V@@_S<4I;>l)A1Hl8r4txbVBlH-6+l*~)k1u};;91lxx5-?Cc$saL4+4jbY>>cxV zyBf<M==k_tEW@@=o>x6T$Le9l>gUEkQk#>?-<Q@;oVa|+&JF)JIA`WM@<t>(FL^Ao zy!*z_f)egh#%_ld&c|7t!u=W2^s<<%ltj4i=3Ty8bF|wt((mgG#dDq8KXBf<uJ+=T z%d+31XZ%=KZA|Ro=JDwZSmnWxaDaD_Z}N%btIo=;czxl<+{*JFrzbN^lzscPYQ^(L zfdsw{@&EJ-MC#A;|2(2$ry!ELP*iC4L}h1@50;bm&N{rX`Ps7Phn5IWn^?|yVOL)! z^S;W++=2$zESKZ!9?jNUb5Fsbc6M0$dG>e8x>9N0H<#=G@!G(dw&A&vqG03SMz=*< zs#Z-~qriSdH%2j+v1Z+qqm9C`HV;BPBEyYm+0Lm?<z_vwa>BB!^-EgH<~JvN^R4mq z@soHr)gwXk?yc`l3Ecv1hhJ1FUzz_Se@5lyf-~(2DeV>^?O%5aF!XpnP@b!BP_$b@ z<|GSWg@Vu96?5}UER!vDEajOmg)Ed@*L74gaFx#`2~llVDXEK6!b<*Gp)pnugpS^v zyd{Y(C~@<Hg(`Nfu^GH?UFy3xH;J1*p7nCxLa9<)gX4nf-bIQJnzvoaP5QIK;q+on z$E|`^(u|Xpt(<z<{#AJ?9Y33<cc|DR($uJxLs2l3SK{&JJD+7Xbnd8`zUOs?@6FKJ zHA|EiY_U7k{h+X#dD+!AMWxG^LgQ0qAE}!LOn%~gY0?jUp~aidN3ZpNx1%$pK6A_B z3w6)^WaT|M&amHhwR(6hc|mEvj^9L+ZJo=i=TA6TVf}I5?x^#2+=-2$OYg0j`5{G? z!R6$^Oxe|Z%1tXCadj_A4h<+5y}9UUK>n(%Q!EoRBy`OU&E7SgXiz^H^mvx^^Ld+i zna+LkSjei`eAuPrlj!sIi4P`8)f6o#ToPG7`^1(jf4C3xFR%LhXwzLA%jou_-!)Zg z9&Zw^U2tmc*Tw7gdRbG}Oc6=T+_z=fl9!o>WM+xooFRB|qt6zlV55uYSDPx&kSb)e z6OeK$mD-baHYM3Yc)d%`g|@?I7|v?m_10hIvRYI``Nfxrrc5sh<rsH~uE5X$j>GjY z&)B%7{Hov8XT5-DxA;d%k(qxzn3moC{wGW7^s*~oP4uU4;5FKC#e0oNkir3`CzDxu ze_a#fD_ZmHnCpKTi8CuA41{|we3RXNXhQwci)+rBYx3Wj66R;OK~d?ksOc07i=<q^ z<5I_KK6~ZNnAUo~c1w9l*OjP=3%GfFHw&$j`OWClVyCugdHsdGiIHcvx-qZZc1**~ zNG$LF$(KH#Oq@29Br!-Ci3?Y*K9KgPs=?mtlDxamy?w4~T}rE)u7nj`D`r)A_~X(t zCTYRP7aZND&*_cI_Bnm_!UN^&amS_!=DXe2{!}G-A!KptW##0;Imulw?pbb~vcmRF z)aPfe3`@#ZCj~`h-hJU+uNErxQsddQz-eBGggSgrFiKh{sW;qSHBn6BN{_Vok_?B* z$Lt*4W2Mi=X9eC?2>jPu7}R}bPUI|U?dzqYnZIr%Uz&J0bZ_+C-!|QuYFBiaf|Vui zv4qF!?)-h?b$o?lSkP{BmH0f{yeSViy`5ayp48&N?WVxTlxDb3u;sMF?0TV#g4gwS zG>dFl;j_r@Mv2Rh<c&@zl#=I1geQMIQX%S8bIrVV-})(AY>&hpP~70OvVrA<n5pfp zPaVZ=F;B0RwFrDna_(KNUnG54X2E@*Op_O1lm6NM`f}92!SjNFzD{SDQ%vt3ze7G> zZ{{mUzmZ$$z@Ok3u;lWTrU&2IcG&jTUtpN#`2NKqhNB@Gi<xb=YW`mn<6CsE#pHwl zqfD^7>EkPWCrS?a-k$eS?2G?_(-FE%tgqhAklv6|xwunwBjYSrqc|n~2-8^x8^1Mk zT;V#@<=4EVbJcXW@2NRO<`>tq>eTPOXf$hW>EqPJS93g{?91I2AAfI4@Alr;uaCLz zuDn)nq__TS?$6WVZjT>@KYsq~sOAc5v-^zyTJBv`km~fUIeO{Nl8anQ_A51iUXkdD zaT1kushf3_$>{dkZ?iXRCHzfVUHS3VuF8*>Z~naLx;tym{Mh+>*fgZ|XXnp)8{gRy zXL?&aU02TTf<SJJ>AJ*2dG}1#^{$@%diCjRlGC@<Y`-9Ta4u^@J;&TzTV6X@8{g6D znaq7=&U@Zk>8r(31^knBc%|yEhou>%ze<`vb<f6MZrQhHJl*o$nYYe+O43sEZI#*9 zTPp9loXl?c^|+0NJ)c?5^2r+(iG!D}#po8Pb8~21iDlD!ZEcnjAG<9wbobq>Gql4i z>(nk)w`y~}xLp1wI_L$*4!d8<SN65OF*?H0(olAM^L6&;^9(;W`bk=*_W8<k*Y`8{ zuC+AyT_|sNZJHuuV1a`{%8u>p-r5~*Vmdl4Uv&Y~;o4n06xF4s%1G7bF_`aKUAr&6 zFDT|@)*Vwnsa-8+Cq6P%{&%G8Xi8R1=y!<_uJ1=wLo9NRKW4f8-RAYdvXc7`-33nF zE67+hU7)l{km;UrZu*nr%oMA=6QwoHRaokcl^hGi89Kv{v%jCg>R{o~zG8v8Y~do_ zr#|Lut7n^eRx8yohc!4f@#G1d{Ve(+`D{i>pqhf1%JZZ1q$e)8CU*3;b;#Yvr%iW8 zM(nt&w)Mihxz7vrH7c!=XTN<?%({2&@s9ZntCcx?x1au@&~}GcYsdW=FZy_6cyv2u zl4REQ)wkUJkSF`FRcUXk^i963eKo6Dk2Sw`y%Am}aQhu2^W&}G8>R`EtBM}tm>+fc z;t!2QM@zTd6<Au_ohw-MsO$I%4`nm250jP&zg^@aWBW-YGex21P=@hM+jH{^4}SjY zx8tSeorpE;&$!kz&e}Njp_Tbx#zLi)G1@wArz@ZQzL+<&{(}s&Kig`V-q3e0YnS~! zwmo@ajtjGtGMmyIt<-;xi`{&4LpBsJ+3mJ)-8oB?&HcS}czD2)pZ&>moIZ&$xXX5b zV6`pbzb~l4pQX=v`1P_i0iuZ_h51b(t8F7p?Pfe&_$4bu*?V8Q@o_F50f7xSEHCdr z8tcV2W#_+lf2&fKET~U+^4PsmMeWh5L$5CDyqpzi`SlL3sQ!Yrfj58D=SZcjojg;j zp^9+|gVw$#=Lq&$H?Dn4D_qNx{NVZgD{dN+Uu75`2nSr`ENJeUE>;(G^5{yP<<bj` zu0-s->6-N{fGc_D)~eHsCWziroH~IeqENO$`MBw)2c=U)KhE_R{L_@cRR8d1mVI1; z-@Dyf-+i7uG5GsV_FY7AQiqxF{oaS4?^U=LFwg0Xz4kpMMxb-)O`pO~D_=1#bYtaS zG2`^v|A*9;*f#Yvbn8E~o1V4jEtm0>h{cOEmOjb|+h6W|&&c@MrpYZiZIkY(x6bJj zc%jQMbCu8Hh0kBgDLu>a{T_7egX+P<^#W{b9p<s^TkuO)G~X$@d!q!$q!XTN8D}*v z-1%2fKxPGtg4msul=&Z~x%{e{AQzr18n^${|H!BH>pt0s&(~M}|NPbS`4>8ic3$~2 zUwn7FJA3D!^M9NF-VObC-pKB`j)|_Z$@Z3YWjv>Dy}QM#QFoked9Uf$wvLpwrcw)@ zf4N~%Ut7t$zISzD#q&f4*%x>JRlMD5o)EoarQGCIq8zcO-?45j_>y3}J*_M|ZAb4y zX|=phC5HtyG;Z(N{PymxgWsZ>7rFHJ7GDT*TwK*XL!5uRf!Ga8vuj_=Ll@U3?`hq3 zz4yP|h0juFul;{v`!CgZh3fHRPnImdIeGpw|E5`Hl3vs5FH1*hSZb|4n6fD(Y-Z8q z<yZd2X?lhn{h&7|WU0IPnQ1Xoxg#`BhGm`Jwq=R-PfgXIUcK9<sI1ZWvbZH>jl{E4 z9;bqM_2$f(>TcAnmhD<-w^=p!>A~P6p>P|K^oJ>WqUTLDS8C^HaI05pwgozEnlAQW zW5K2A=StPp>z^)M-cz4q@KaM$Q|D1Mw|e`@^J_elDsO1%X8P2f@|FwMS$Iap=%=Rn zOdYYp(4e51kAzdzroY^ENW?R(GGueXrI~#0mM7C!9SxdvLFChEAGga%H@v*Pv;+P< z^YfcL|I?%^Nt1*9Hbor?KJ62A*)_oPWcH`vD4}R8m8y*?W=nTXn{>sjeqyT5oF~hs z1xB9CyOlKG?4@q@lvK5YuBUfRDbW^<j&Zvc8Z~>SwWZ(Dsne&bsM{B-pHB77$vjyc ze`w9LnIY=-OI5EQO?u+(v1#)Bqm$o0S-xb6we8{sJx_L@Xp1%B^k4h0Xwt_oJN_9> z`n2VnnBTd{^NS{Z*)pf`<)p8hA_5~%)>j+a?JN+QA0%<w<5~BX^M{t~ld(;{sIq_O zq`#jMH1&VxUsE|?)8XaKrDJNjVU5bcpvkQ2>b%bscg|5c<nE!SW4Us}lP8BJP3H0T zH`6hFx#7=~!$Fe;PW!v*m}+jk^W?~-$s*o<VLFzXg+-r|_>#4CX9jluD4HZ?dc9ck zWN%e{F}IrKt9#FaCdod2x3AN)KT<d{ODN@uzP6@h(B>0fo?U0mcBcFHO_~2`lFHYW zI?9noX-0lCO=h~vFI5ZFx)v2>v~=0ysnbFvKfZ3Ati9PF%5T%ssH|?a*kv)IpVi~F zj5keD@mV@=+Vq~4nX=sKsi*uiPtMG8JMDET<k7M@DfMS{qV#ktgD)F+dpru6cWlxm zOVRsUnk$3rPI<q(lC!gDl8tig(kUtDXS8R2T;hNB`re99={82W8&v{CH7)&(GOlrH z>sy*^y}93GQihJj@|Kjqvu;|dnI`+r?yC5-V%zBmFQJuconn4!y=6J#ep**=czB*% zdduOtztPz!30Keh<&jUH`#PQ7Sm*8O75dDV^W@4|g*z)ItvaVI<`;G~*;vdcD)d-| z<;m5j`uBMVt&TD_R@s~;c$Mem+Q_Tk9%WPK8%>Iv9Jk2x<a*1~Inz>ZtWopw>hrC< zFYY->_oPpk>giMdo}Qa0HbqUb*<JRudPnQ_(&E2tH(xarn&!M)GpjzLdU;{|k3GG7 znm^SqmI*iSY+7+~pRCoh+}w)vThsD|IvcrO<_F%JXnDxebo-jyx;dr?eq8=ocHU@v z%Vnh-_iiowutDLTxA&2f=~qwRI-kR1bd)P4E%>WQR#L#)!nLc`%vJC|qU$Q()p+i4 zg>%ww-2+cF4Ep+e#g9$<IH@&lO?}2~X{JgU<ts{MvFmxxSN;;2acyIk!GnGId~6;b z`6{`NnG=gy?|;kQy?dk9bmuLbH#l`Sz1VO;RYz!nK2Pv53&*`XR8qCB9*Ic1fB1#& z4_%2lO%ZC2v7evH<rHf4_3ppI*>%~&E@y7R_OoHtHYvwdu57#bJ%zD*YGy?A`iAHA zj0|&*yR4meNXcGp-k~OgAKta=x9y)@W4*<G*2?r`?zzHupA^rS_Ru0!V%j3fHEaK- z`-$DYmFmAFy+n5Q?qe@mb$^!cIrsZi&FW{ax%JXHvckzi9s8~+O?tw(V#&qD%T5QZ z_;}!*X~Vm@N4&0lEwI_rd9A%BH|Mm{jic6`lbb%(Z{nD$9wREU?ECH6*(><=9QM@6 zl8DQHJXQ1m&-o6uj1p%h<acfR_V6&fiLS%+_}}$B=j?mdGWxunpp<rDi+E>yKv8aQ z%_4_R`H5dxvzRPnJ<98!#r~;HDYsA3OW(2Wn=rR)fb_!|`M+nlors;<IHUG4v)+gB z4f}4iCpUFFZ?1PcYRR)T`@mC9bw)Y+R2Tni*H{X#Y;6~fNO9&bnfq&(3vYhb_G7yY zxgzhgd~y!(RhGE0LGT*GQvI$E^~rY}D%#6B-`lcehw=Y<D0}Uf&YKGvRuRjUI9Db| ze_gC4uU>cm?)pjlLhmy+X8%9;>cj0<S8xC8$Xz$lDQsgE2Wy>Oed#W_4fe4MS)94s z+t<lS|GSc9`uJXnTTi=N#k$<U7)`ZK2W9KFjnxs>H>~g28uf(ts1=uFhpanSUhc5_ z@BaVs_0=Eh|Ht3!*|?oMYf|EyH*(2l2Jb(9{TZE+R=zCl+viy~XRn-jcuv}ah2_6n z>K{+uxSQRh(2d!=;(X@jlbZES&v+-i^pxrjoU9=2SnN@I?UKftE~#bxv+`>9KCgUz z^^D3D#SZ2vHDA9*UuIvW;w2qry49xRz^nP@ES)(r+E>DQd0o{%R48}8=*`Nz^_opc z^qOGs#=xUHe<TO<>^wHnP<Q5Hrn?6l%WUR*l~-|8%D$Zaj4Q&WyO@7M-ufAy^*%R$ z2zR_vxU<VCT(*^QZLZ{Vk!-&i%nuGOIaXl3_|v&hyAJNL`JZrG=GN{1H(6iXrbOTP zGA*N`IJlH^?@2{A?(gPY3y$iBIKR*RwqVyZ*^IlZ{7%*~+<HHsLBQvqpxz=Qce&T| z^yLj-HB4<u_A`%O<ooJHi<Nt5OvRRKO3gy`^QK<be-%<2-dm8J5q;&S<bA6aJx7DZ zZQ*|939B9$X!gzP7jpGfd6!Yja@*qPK{I{P3tAR}Kl^iX*EViUPS{b%Z+6s3;$Fa8 zmF86bt=lHH)krVa+F^L=PWA2YF_&WAJEkw~JMv8R&+(SecNW$jxOd`UF8i%TM>7JF z-{vbP^wcN3j;T=G{dG@2W9#cjJcav33xbsF1g^?wUAWFJxPwWn{qf8v*S9&JOT51B zeAHXN$E$8y?zY&wD<^J?`sO1m&iTH6^J`II-Lc5zFMn2D%-XwmkKNNZ237a0tat8g zyQE=v{kqii`u&TJuh);hT(bI9d~BTa&*sC6ZQmv`O<PeQBUb<Q&-7=dzn6V<D>-K^ zy5L^S-kmvf{Q3ozmR}So-0d6K`+81d&=F-Hc8R-p=6wHEJ8=n9$ilJ{4>mqrpxeAk zd-d1sW9&9gDSo|PHiETlJNK`6zo&8ine{o>7JN3p5%0S1$UC#^4rM7^-W7754cQV; z4#+4?&!3p*E2SAPqS(=}wSMdWX0!11X?wDFi0z8%%@#;I(=V3Iu`NTU{zTXTwtN3S z7Cdji6>Cvo_FwwTmHi#cn*XY$>m7D4_ss~k-<s5A_Px%+>elVkxh19lf4};({L{Po z`}eCqK6>$>{qNPk@9)3*>3==F_wwh>w+=)-`{{4pUj69L^0|lS9&Y}tZ1evmN4?mS zSAUkP)`anGn97{<lp)&k0Cwg+4)z<TYU1bq-}mXi?V+FV+1u^k$gbVfaDUc+{}mDa z8~^q5@qPMJzvY?m^Zm_5ALbTr`1HS4`cM7V|DScf)tB*?f3Le?ANBTs&Er4&4S(dG z=xx7M@aM<xdV6+ueZGnR-^=Z>xN)<Zu_)<#LH*YMo9FazFyHI2Gt+QOR1N>JS0DE` zpO~!OdwE7Ew_8cC`i20zW{s}tWebX1m%p9!bKmpznv1_(<9Va^{a8pvS5WQa-(8X= z6BTpWj(r!kN~z2)=ifiM_pH3kqxXz*A~)KLq(k%Sua{O^+<sdx)sk?D@0G#2D1oSZ z8h2ux`Hh!Zy1JY{Zyg=~d}sWODWZFYEdy=OU*~V?m6biR{qlvtM3Z&1rhFHwJeke5 zYtDx=os7#?7WWI68-KjArao}__iZ!ZrmiaDXBM08S8&g?q`Ith<s3O1?|FA3?^GUr zlF4;vaoceL7l#jiR|PixjjsR0wl{fI+MQqb+@F=dv*B5$E^_kYqs6ldHRoiM%<ix( zT5x68<5FMt`1RL~W;uzd&N}2i(|6(f6|*j~HT0&Jr8TO?i8iR$co^Pz^2~9O;m?R{ zkM*kCg(n>r?4P_<W$DoZuFEM`dbumlgz<Qq?W_>s{I&bX1L3cW8&%?5He~5vOLjT5 z`r^w67q8CsQ%&&GPxef0*t2k1rSg8KBAK76o87h^T&}hH@0!9ik<(INmu>ti{!3_X zdB@^)naM4a;sS(EGuIYP?VTYmVlgqS%6PME5-aQ51?47L?B4EgZ|wb3wad9AS$Oh9 zS&{mEAA6P;{yDKyo5`iB(|l3wUY2Q3&xkFG_%X$NRhNL7@~q{xpC9y1-t(|}%G3Kl zPaJd62~B!jdiq$hlEb}=6DN2cI-{Vv^Tf*l;d{(-%e!`qZprOBp1y0<!4C1y&zZQG z7d%++^H}WKP4~ip<){6*!^(eY`H3{k&762GKsQpN@nQW^k08}}_vWKYTtVm9i*IBU zJ*n8@oU^XcNB_vey&qo+>pyz(baurouQtEHmuvSMz2p;dSY~lFYS{$Y%Rm1GvQAyM zOKxJH8u#lZj92|c!q#8e%_Wp;ds1YT%JNqyP2=YNn`HR!Vz`@azT(+CtG4Y9UEY|< zpB3Jhxm*2WvsX@0TK&81ZT>m?%op$McoBK-sJG**i*rI2abDJ9a@=+1pu)rq&yMz~ zA%^Q}%bsLS{}MAjKFNFkx?1*oZz3OCX&o`mHj!Z4qC4NRK}z+#^L_3A=TH6r{O7Oz z?`r#Z`z<UYe%9|R{D1yue&P<7|L42s9#;PJ|Gm6yqKD|u`fvPU|K_WItpD%x;pd8k zeb(#E7_3%yPGGiqAXZlwYqu~%aY?Py#oa4wou1d{Z{M#ve}dHeM|O%=L)Q6cd~cWk zw)*Ej>8l5P_RU^#yQtQj<4y7R(=HsfQT*KJ93|z%uKG=EPo1RhWV&gBx)Re;8UG{K zpXUD%l3~-j(3i5HV~h8`uz>P5e%XZj^PHcp5*gLCxoyHP{cD@D`k=)f&(Lz4{2L2P zCYZ!b+K?2M+vq5reNoyjySeOZ<jw!uzw7OO|Iet;uYcY?_3!`Q+y4VU{1AHc|F5{U zJG;Bmzx@3F8Sh!Q|1S^!_CNUcf6m$RH;>HvqqsR|=U)BdjHQv?$N!n?6mv{d(HH1r zT3LVXh>`rQ#SSWVAId8F7F4Xf^!`y?tF+hEj`V;R=Y#Y(v^Q=4e_rHYXLj8o6YGyU zZl{v2?hv%PeN%nU-3S|-!`l7H{(5^1zRkXUVZF`&X`9-QTrR%sSUNd!Q`n}5`}=3u z=QY~u?Y93dlJuX?{-WWvinhFH(HjExaTCQ^9kTB**YC;L9^RX6SG~xkTfR~9zi93@ zn{<BPBdadSN$H+Xi{j^f#=mf{{YBNuCC50#&$>+a(TdkLk{4!O(#YxCdY9)q@B57h z8jZVOyD^<SYuL&9)#7%!G9UlD*^1Q$$3H1t{aPd6lU1%J-?M7!^Jc-VOxI+8Ubr0X zwJo{CIE-Jd`(nLoU034DW}Xknn7bx2^qi7DJLREzp1=a;eYf+YZm+#I`-Du=K8sGN zV9CbjD-})h``uZ3H|zSeu-p#P-??((JLa?twH?(H7HLLkl(g@bw@}NoJwNki>6Dga z<?319eEUvnOp{=J`sTUCgey|syQ6}*`F`~2*zLWozE$ga(eEWf^*YIU^P3dryRbbw z@<Fa|ml8*abLoskm$%23tdP5^_J0wV$G6;#w*&VJt-gNSA!xJj@qcq4p7pCR)_#6m zsW&X;V|}0RBl)Ov|I&Z*%6&?`#mU63t-w>ClW}g-x#s@uO1}<8v-x~Dx4C6;&J*iL z(i^)T+^7gYIDhtg)t?8u4Nsk^xB6e|e$8Nt^ZO{f&L)SKoA``)U6-x5IQ~#c``?rm z;hPrDx?<G#wX<JpNy&Y$ZST9^MV&9I%hfyioApPF<5x2w;qQ|3{%@S<EV-B0Qg!~% z>GoSZHl+m4GPoC$llbA~>E-`Ytc!Npf7b83_Cv+@{;WAy&j0bg$e{B1*P69+UEVj< zA6xc5PVi~^$G825B5ZEf&F$E+De}g)*DF6MSWWg=zH}o03Y~!I_p_J-=Fa7_65d+Z zxyIBm^u_(NOFq7N$NJ#?wTYK(@Bf?oqD=OBS^i&D<JxE4l@oIRZj9^bS!bir5MTWK zW?1>}Y1^BVI}&ZP8HCP6vMEk5UfNy3wZhZa+#<ie>qq9ApY}>0gV*1g*tuyX@457c zC(4!kRQHAa__X%3{gIg0AL^(6TJ_j|QuuY#NAqQT+WtM?rJ!)M@%5wiPwtfdTfQoX z>DS^;#(Br}TNvhc8kq>P22A*&|L5#Im4{}+aVB2NbsywO-aRVpw)TXyQDtDJ#?o@f zEqS-g7iqqI6<Allw@aIk|HUl6{XTPYtoIuB)knOq2(a6~)+MH75C7)de>=W!?@)Uz z5PDQJs$!aF{*#pVYj}>yZtYyS<^z{sTG#sJd>%Kht!S}NUvXlkTK1<z*M*DL?OVFK z>ygyz7bgX;Z*|)D+3$bg=jv_Qp=JyckIx@_S9oo=eSXfq{*&Q1*KMosW%1YgWckwB zIx;B4cxB>R*GrSXOP$rW@k-F&yC@}J@am(&u>W-&o}ajHoef#`d3)&pZvslcPcM7x zy-SWQ^LKv!?KxK~wpX}CmM9w8PPyLF#eL%997XGCTptz}I=xqp?dtm#!ymHC`k%^P zjz`PpC-pCGc<dW&wB@e5Y?sgC;QFnL8U72*{3%}&Y_avO#C9!F_c#HCtLH=*Qgz<0 ze5Sm0-qyAW7R@c*FK=XY{r=FBP`6-q^v32FNkx_`LZS=HMYoDpoOp9G(dpK1`Q18q zuN=+WwU_5_@hP{(Q7^+b?+p=_y5`i)s@;D!KTiF!$=UpbN$H0&${SYB-py6*^;1T? z-XSpQzs<_1qdRA(eK}Uryn`uX%kg!Rdkk|^Cv82jl&fUBuS|;b<4H2&0iG}Aob?|Z z>NMdE67^X9caI)pT>lK`s}a*3*0^hb=|4LoOuKp|Ye}*Ha_$-K@AhxsEG{qaRxPZt z$fj)Gg=MVq;x-W(`@biAk2>I^b>l!t?EV`kMQrOo9+jPJr(iyzwZU`2ts}e3gr>RG z)&GwCdsNb)tbWCjSrvEXHZOaV{l0x=@8vaoPc=(!7=CbQKbIiI+uLQ}-`v4h>2W&V zd^z(Q1<U&~8*=_l;*IvVWr{M@+~SmOYSZ8r{qHi<ws?jcArBrX$B2~ZrkgSBxhV4c zWM1T2pO!%NdMn;9_Dgy<8wNgppL-z5SgUvP<jt$U-F%rQCaEpzxkB30)YDE)PH5%N z)>juy*B_p?T0m7{>5CP6r0!3uGnlR-{#(x2^YigZ8@W%IuUcp`{m_Ou`Mwtqf;8VQ z$^P`Ys;A{z|6`S}$FHm3d-5w{Sx5I*%gr-p$Im+QE7oC=&*2Nn^|iLD!Sy>npK0`6 z6H}Gm^Ix|s<*4%Pr%PYda2s}KzY<eV@6(xMx6kDGNzdi3->(VlZTWg;>7=z@r`7cK zc)Vph@h{o-sbWX|&4uL*+AM;L?%i<w!M9i_?w8r?z2}dK$*z5CaV2s>r$!E2tw%`G zCW)Et%}((QkM_P4G4?;IoBp7Fa>Mivf4`G|%bq>0i}LVRZTx$7R!W;}-JSF%b-&Fj z7vqmEe;63{q%UyipPd!DLQ{8^%~)hqVb*zI!>o@NkFMU(s?la?q<Jewjy=Yw{>B00 z1@<-*es?dlpELcF2Y>nlPfz`T>g_+aCPz;+>-S#Uz_hd1+4$UL@f~NAMNhRY4XnSN z{POI_1mmTbFW=DZ|EQT1k>qu5_uoi`fBnyQu}$C;3$RZQWfk?Gcl`dw&q}Me|5zgW z_1b5*bz2RW3skOZJ;T4#e_iU<-ibH%uaM$#)_DASj!V|Jr02_TEWY|~6MI(Wt6cVt z{>xrTKCjq$Lf3iU_uC!5yCWy$sFk{L$@9xjXsVA_|GrzGy((q%yy{JrFEWj^R1QCK z%i0thHRI(oW2Fq?V3##qYS$Yhw;l68W^c(E?X+x$;}(hKpP#5NZYs^1VRB@BO7LQx zzjAZ`%~DSJRA_Q3_>d&)q!`y$JC|<@x+*8cv&gTyy#Mk$p*MO;M><aGUYvNSGpeIa z)iNll_S|u|dO7ba#~iwKf80o#e>eSq((~hI9yFSKKHaV!lqS5U&`Y4Kf0Kj9rlpy` z(xauWSLOT<=V^Psaq%SPNfmo;%=23F);-`_S?{TnUn7$jvFDj=F)}gBtPOmzC+MEc z<+uH3_WilJ`LBXc`wEM+W0!qqoQ*qQmXpNtQO#z5_HyT#Piqg<OG~*J%vF_m*=gdn zve`j%<=TtqKb+&~eQ-|NQtV~+mDZ`3ez4Tt3N&@A<kfpQ=XKxR{mzox@@D>X|KrWS zt-zjB-+WU3BKDPhN=sJTJyDjkRTGuDs$RS@a$27EY{RUce$NG3+KS3-?qOHwS#Fs7 zamlWYo!3@p>u>qJf-6dB%EJ2Xg_X6JY|gIyJ7??brPBYqf0$ZqlD|B0!i_IoN)KOd zJ0>~B{v40T&&5Y0me(u43!NTs!WR~P|C#ld0KL9le}b-h?p{|berB!Tf4eG|Q%!u6 zBd_}Ssh$os-fCyMx|Z|btQ!fBPd)D0<*;Vy@;iN(r!@8*NnI8uQ2f|ObI#!w<)`(W zEv0u>E3<m^l!O^62dAw$r2Aa7@%E%mrzW>bE_&y+?%I^%$J)~jZ&m$kYw=z5c*z0H zvlj8*-IF{&*zj+z70P+^H|g8%dz~8?=LZ!%=3B)P<a4}p&I$3$EZr_^Mc&<TKRU1O zcHF^FN8j94Pg}Aj_D@FGydv#*N5vBNud_=meCqeOUkb6%xOFo;wA9uxJ-uG;(wW;V zL3i!i3~j}8^Xso&{E@T$#nm->3xv*S$r#$jDyILt``N|Ve|ufZiI7SC^Shp3-cWee z?O{;h(s}bby#w}1$jQy`y%e!y)}(aDM%h!lI$vCv#;&_G$ymcW-RSAZBCD5ARkiJt z4;^0e#Z}Y4euAhQ%W5m7n{&@)MgHI7x+DJnpG%z{8H}IOeK;p{ukc{+&`=F$@8A;& zvprGV`q42^XMxUUme_?V>Rk3e%PsS!c-HD>7v|MpQ~Q2X%YM?V=_`I8nf6<`nuY7v z++&~mFJF3m<KNDNLND_=>5UV`=J>rV*;#P*Ox}EpH%12wwr;3DJ%yF+j^2av_|jzc zHBa;F9e*yUKF*dFwpFvjvj1e)#^NsrQlcv^9@epw&vkyiac<xu$3+!2AKprw-gbF5 zi&WBvH+yAoY~QBL$1+9sYRB1+&TP&O4OIvGMfars`S5R@@iShFo6Fr_urnTW^mt$; zEfnW5u~;pj)9CZT?Hk_wVXFV`x@`LE&d*WH8(x^NVe}SWWixA*fWhVWdYRi(gW}Hz zwEMG6*Apl>U^)9qUCFQ9xyKn^%vrwf|Aia*v9+`R?>nlpe}%fdO;tcP=dAN{4A)M4 z6Pp*49rL{E$=mrM^974%1wKCA8Q{BN!=rP-3nxffJNF5k{v923=f#y(8aDmKtLxo+ zWpy29y?w@P<jnGN@vC{4-6nFen!NmR-6Wt?RCL3>#+&IAm85Qny`FU|HT0r#sca}? zw#=_@whNY=U*l(VU88EUhxMiPJ0A%ySGF!K4|kj&V0H6|Nwn1UHT<Wg{U=^A4G>>; z{B6<%^VgqFPdc+jtVd(DVtazkHP$0(0xwl#>sLmvmJ<B1ees14F*f?g_qflso?>J@ zbz!$lskUE+vnJ2e9~)n6ZMh`VQc_};9H#K9L!#<xX2tXB#s6gOb)GgqExmZ)le?b$ ziNcI;y}GZRC#J18v^e$2U!+HGW;fTP&1Vh?9#oxDUo$V2>4>M1VZ}ea{o5@*riCwy zeiL-jGjdA3%zAmzht}sWYI6L{J=#3))9o&$1(R}9d0O<mb}V(_T$rc!?uU14!Ogjg zERA)nC9Iy!SgE63m?x++ecsICZ*m!u%0~a~5{%_H{W{ZHJMW)e#2@LczZk8by*4^; z(-ro3d#-$}%IANx_HKFTFVpMcxa4@}p2@ew1^oiHnJ!f6%&YgiaQ4F=E{l_wUVS>v zG=1yqJL}f{@8Ev4>tAx?JEI#hwvQt%ZCxG~yiAYbU!iXybMVHiNBN;eb9ept{bE_T zr1iVvTXDDYeirqvKa%&qXpR2b%bU)w?>>35@#fy;KcCiw9eI4r_RNf)W!tKh`qR(J zC7tSxJ^L}(|KWmbkFQMilKEc0Gi%qTXKT*gOr4YFU*x&&dHTcne`<42WNn+i#r)4w z>)Pdfo8l{ycWkNITzr00_2YP@u&GaP>7IAp{hf7ZhU<h9HuKoBBXw#Vr@L>TfBVmK z@pt2eRdVkxzf|Z^`kDT1$-1-6vuB1ZuJ}?nan@s77ro0{+9q4^=JJ`gRYkP11y8A8 z+1{=osGuF1u$0SYm(~W~CEqwa%VX}vUz)Xb?XCqsrv8ZQe4ig(Go9g6xYGHZarX5$ zikER5Kl#M`)ZN<(9#i-Jm2k4vXN^-iv;Ig)XVNUSLQSV#JC-jOxHzd}d*=@C$yYzC zr93(PU?yAh>tf~2FI$frzn-xy#Bkp9SqE=EpS-eOV$*N+0R1oP=C@}lDpt*lYcwf2 zeL*2*y>S-5O`pATR@aR9bwB01AC<c?&)oO3FJEN)#!sAkE9O7m@}yj#Ddzz5z2vP| zieJoNjlD0YcK(raZmXBQd%km-QiIKf$scA-<rPSDcF8=!etDb1vc~Jn<S$?CQJl#p zZhImx@l#}3NPS+S@0ov1q8s0Q5L%~yULtDKrI!|eefPXx<smpLa;COrS=)`Na^{QI zZrb&&_S^#gjgMYG$`4IfD1G~TF?-zwi|O)T953&F)4+f6<)<dwEqv33?kWCy9FzUb zdA>N`eDS;fVV_IdKChVgS+nEIbFI?}3ole&JSxn#Ct;S2qo7D-cfH5m#aHdlo|NCS zS188r(*%Kg4^l)Q?|jMXKY6y@<{#C!f_+Rj%_?c}d}+>Ed?<=5{QB--mMte79XD-U zZXLJyM$VG$hI&B>M?V&une<wwu9)~Za>G5>wc9vMQuo&+>U135qr$%N(--}t3ufH8 z9lYu4+w+qu=Dn3v=+1gt92>OFrv9tN&AXrYq-RFC#@@12*6c`X?|IR^dP%XHoPXk6 zr)La~n>+8F+H&LM{xjdFNY%tOJ@+o1ru$c5mHy46u2c5x=+3rFJTm>_qutZ1Baff7 z?R(tbyeH+j|DMaL9@|RVy(i{=%$tAQE?Um#(a%Nd;zwrJpGw}`>NES@fk&Q`bTlm1 z*ISsE#y?V;r`O~8ds>D_JfraE<4uaI;x32h_@BA_{pNw)=@kzb&YQ9R`iHh-b0zQ8 zJ}CO$=c=O`drSVqrp%2tFHfw^_j+WvsYB~w%M1N*HC=mV)4Lx(r37=f$1IPodX>$+ zLr8VzO{MmuhYBvNmFMndVUy@-p1`~9-AwrdU6Z2gUqAYBa1BFiE0fy%h03owZOqPV z?aE)-`0caxVbPCzH?`-zC^uZc<Jt}3-N&sLWVg<<pLZ_4@p<f@b5B<K?Y6cKmJ5_! z>vB<6mX~?L&xhL{Y`-T^DXjDM!NeMgmChY?(<cTlKB(J&>{7xBtGjH+eurwL8CyP| zzq0+2;Gd_ro6P>#cP$D0-}C?6Tj&2mm7msdElWx-3e@*KeC9>v%uNdSUi;WhxVeW% z($=rIr=qAmE6z~#>#q_gu3%QR_PRezOFuQ+F?n%tO`FN_q$4--)er3*DVpuA$Am5C zRVuIxo^(=_Db8gT;ykn7<W;WCTcb0ff*(_Je3h1UKhn^!&!2Tw!YuW(?w+kn8=kQL zTr#UiH@@b7PLk$64!sS3BNcw!Y?D<8)U$rYP`GK&g60+5TP4m0f0Uf4Vq-elz*xNg z@6JSRy=@|T(+Z9qT|dvQ=#16-R~P*cM;PrE)@<-ju2}i+Sz_fzw|SRN>wl8rj+{U3 zna6g{6Pq8UTii38Z@y}GyT#<f`4)zP3q3*w7w4_Mow#h}mR+keUhVEGv8lWKa#H$y zC!55ZnHRT3?3u{;scxb82^R;)K7$mt)YxaeO;_t@hMqt6GN9~}if4&#`6RXde*dRc zWL~@+AF*WtlVSQhmFY)M`_7G-b!pP8{Aou{?mcrc^~0(^daR!}#m)-Q40!JJ?a<FD zGK<nnMFWLY_V6!T<J}?Wdwh=B#2}VWXP=#zt+pUPtG96GxjpOc)AFKJU5}kyJ7r30 z+y3)!eSQ=%^G=V{+L>Idr@yCQ<|ONDsZK@R<y)3a7peO{=SeA_$I=t8BX0Z4{`BNo zqVU4_rGWgSyM;<t+3J#Orlxm9*p>!=)xOO6qcf~w$wXnP|K5$N>ubJTdt!BUaj@C^ z{>k%9#Q8Njq`l2s-WM?)zr-H<b;sl*CdLwH7g*Ka)qGaCwav>lrk}&Q!R+4N>ofmN zn9Oe~E`9TWnwdrU?K?U;op19BjxC=$$F!_}d(`uKxx&egrXuyb9&cXvJlc_U*NTr{ z=f8Z^7~U@~b>h0xQ44)Toq*S+o{Ei~a^m*f*^`oHyby^L)2m#^e)jFTnYKoO&5r3| z!7n<5O_$zt<23A%s_7TMVBq`XQS!2PA5I)wuMqhB=5h8XbK>@%x_UCY+JC~T$yeX* znQ3)$+dQkl<rjE-QeK`(Wv`c7XzS2tD<R~Z{$sP+{uR{^ytjy5b!@#nv%A0M*vaDU z5?gO}Iw{;xzb0F_G3)r6!&CSEEKLilHC*0bYj{l2Vd1oEU-qujy0GBaJ|oNd*Pe)+ zF1%^B{NCH3&ljF;vU=|CRDEpQJiZ5)HL`w%iW<MnVp?5Rera0u<WEa2|1Dhh{Z759 zhMmDpiCzIy&I?gL0<CTS&o0|~WMAPMH>S2_llFKo;>*cea>(WAUBRcC0&cB+zblJ> z3jLC{6r0G_WFb+-@#vY?;fR344<`T3cy;tpU_+;Zy-1$un?-&9&q!u}pE3KL%zS^v zk49B-O&3nT+?uj8yy9~(8;9|!L#(W^Yz+Pq^#R8!AImVUXMg-M;Z4r*&nuIbKR<nk z?QUy;h=sJl6hp;La&@AYt4d{^3-?Y~ss2Bz-M#$GmJdAYcT)qeY)Ia{=5Wjb>4Hrw zG|Ouz6{zJr_*r()b|HiE_m=_DliBvHIASLC_S;R@-IbMsU;S&Qe&;qm!}?TA<KY>1 zJsAV@4bB<$U+pVO_Oo425NSCk>*hUy=Lic=rT65XRg0GJ<Z$g}`Zcp^;Y;n-Y|APa zy}esJw=MR0ylK)0A9W5Ut0gbYYz&nY#7xYdW__($;eC!TXHt~U?mQ)}$r?{8y6%bW zh+#2xD^DmaYwX{7;O#v}%L{H@QWL*$GliXJeRI>!M^R{XN&OserUf;#7GzZfoT+zM zHc2C&UFo^1wsXrhcdJ&_jas)#9w_}+o#>x?ID+la_Nh1jo!lB&nZ0}3cY&OBU$(Dz zt$%H0rhNa?S%K#-Tk67QWb@iSsQP;ESNf%sPnzvL&Pxa0%#GQ6u<DMqvD_xFbBpe~ zD4i%Un*8CA)(L)<+waz1uitj~V8LtSpKc%LpL!<$I{V}e^{X;rC*PR`E*GnkO<)s! z!^3^Aud4KFwP-==M*mX1tRqa%_Ag2_QlG)`mnGoC-qQ=82?spZSi54H(hM{4>sz<~ zjH;S+L|QLKyYITH*ZR{7!<Fq~!tb|81uU;m_unV@`RM-;%jcJGMA;tWGM^t`Z?Z0c zW8NVHkMDbU4lC@wo`2fF<M9Jc<#1ntUymE4Sx=mK`qQ^iEZkS)V`zY;8}rhYm-CVt zV<L74SM}Yw{$%&$IjpPPGTLL^!WA@lna=V(3wac%D!$k_N5yEqwnm&o<aU;j12f&0 zC?u-JGOA2j5}M9y-L0{$Saah^s~WXOKkJXz)IDMBbSrT064QwME6B}cV`Lp<8QX8) z`cVAEwu>T@{=K)nu;aGs{`srq-fv0z9(&$>dSZVZ$Hu4&?J6BlB1EDxt3=<0I+?DY zE+twovozLt{^!KU@rFU7?#=02q`OqIH&{pgp2%~ZgZuA7M~+A8!Od<jinqt<9#a+F zA{bbIE9iS{@s@-`Uz#Od)<kZ*BCvX8=(0^&U7_>VuDfOHDZ0^8JGgspy#47go>*V& zqn{*iui9uel{Yeb@hYhsYt&Ay__}}L$44QWG3nAZAJg|87S*};_<DxM`^{7R9G~6x zvdYmZy<Cz%(L*b?MaR%Qs%uV0;Q6&z&aR3}Exp@4U$S2HPPC_^$zs0AS1%R^B-w5H zxaF7kyiXsErR_J}GyL+FF>ejyhV#)If809qu|+x5q>*RUS@*NC%g)ZY*!r%ceND<& zudwr)tJOK8pCrY1%(=SbX>e!6k!zPdBJLIUHRN)(-TAeOMW@_2sl7pdxAd8+#C-3o zXT;VuWq-_GbYjMq-Sx|yZ>w#%(EMDYYmTySMI%RW{EjU@l=A=A_B>YWa!pwG(WLje zozgUSyJ_Y53vV|pHvPk*W509Fv~xc%GiY%7OCJB{<Zh$Fpz$T;xpT-o=iNsxT&XD# zZg*M{&MnVB@&41`Q$d9#pOg+R4_#R8BiM1uf7{f?74cOPTF3AH30%=x|IR{eqqWJ~ zE%zMyO5QI?`M8%|G<))^2NRW)Gk&c8(BaP6|G?!-%fq#cUoMLNd8yZZ`=_b#$Lr@k ztlMU>_$TML&Bj%6_YPk3-#LFS<DsJOn~fPN*vb{o>%}ggw&IV;QGM4%cE*C+h2s3{ z?mS%dDEraM_K7Tyy<1go6pKaw;(d3zUNl<LR{wp&k^HEf)CUhLV`P0VE?)3+_ru3> z3Wi?|g;e+!?&MtVB5)%9eWaj#ncbA)s3Yxnd#0t?=qHuVIy~i5O=-=8<dvMC=dw4- z{+F!&ryaJg{#gD0AHmOL_g$9#Y9KEmr6FD4Rs89T-Nv{d>!oiV4xDh!e)amzb5wc- z-*ngCTc=+0<-khqReb$D{8<WdTGIb-SUJk=-S{(NyVC@g3MO5xyC03-wV!zN<)god z&-dM1oLRX|cbUYT4t;Uyul-xzHJ3GtR$9xX1#O=9G?h>CR|ivN>9UVrnw3Y4d-tnq z?*7AE9sF0%_n6+_3->~{pZ7d;u6|O!CR3Rv`&Yk7>+8GJXQ<eA^}Wgs;M^0x@4=!( zt<5eAXDREm%1FH5zKg3OYT|*3-(vKQrn~<tGCIREW7WeN`+JS$T^}qKO)Gm9o3{V+ zy!W%S-gKVp-JN{5e{+HS8NHJ`kBHCa3R{zYwCdR<`@;FTcJmIt4%U08teNX^^QrFt zInU;Od2r&T1;ZJWjQXfA-9hIH3T3moPKNyI-18=Sjeow^y9QhRytmpvHZI6A+F9;+ z*vnvIk;GZ?n*6QLi(7mp3pZpW{QcDQYW~vrhTyB;(j7O{+uTc>T(dW9Lfz{h=bsq` z%{+Zs;rX7ImPhNRSHJum{9=P^?0FGQ!_%>SN59qcxlGpmf4u+Qe4c3YdbJZd*CURI zPP}~EnB#T)qO1dtn=9ANanM$qJv-*ZnvmA1t2P9Qo(dIB<GS<zm`Q8kl#DMTvz+3- zpFYi0;Wo=j&gHyg@C=^W8i8HQCS1R5>=8J_J$Qze>BGou7VU$3h3<HZ-w_TLo0sc% zD7f?To_Euy&;8JIBom}<j$fPalzI)<InTa+YYC6$m|kPBi#MWfiL7e?XL9wrn$F|< z^FQ|-`rEjFmfP$1`6*|@Ypg%?{ruC{@b1L-iDxJM*=f8mD8u3mkJAjU3A2(mZBDJ> zRo!&XM$pFQ;o9t7B}UTclM=+%^XEIIycS7co3#4iJdXEf*~hY_`{!-mtz<QEd&7p? z^)U(Ex3V>D^j5@naQ1Feop9*}LqGFxA!EBm0p&AJv|I147UxVddiZ7n69ePinYDkm zt8iSs5HI&NDzNmYOW_OkhTo>U^IWv9UFmvoe`3(b6oZxKFQ0JxFK%r6<oZm)F`D^= z)b|6^H`d?dd)~0fvh-rd>z&aDGc^3V|C~6+U-7yAvH1$SqAxmzjj6v>rbQgCKXpo# z(el;z7ePH=-`C&$Rkz{m-mCxqef{|T`SJVP|Lxqj^6RW~@iUp*_Uo}7K2x2i)UfSe zrEG2Z;ex+6BHE?;&c2^;!)^ZcU-HH=PKqg-Yqxhz;wg=iE{+rUo_qg>R$0ssrKoS; z=D#Ve++A1IzxhbL^n1C~uhSELyUM0<F;`iv{kdUw^W&B?8caz|A1aRgc+RvyO(I%F z>&L>trq}1UFW1;z?bOYtJjYVvDEo{KqwZ&o`YBstHtUMr)SYSOy>EV?Nc@$HD;_#t zZr(TL%KJ}IQ8D}DHGl2wvRi&t(sp0`GBe#Rh7Z{1|DWM}^xnTUVo&NXO+J=xs}rp? z@6mhZH0GMEvl8QP&hhqj_b%JLWKCPjbk+GYgRk68)^<4gZ=T*>@8CK$m4Ne0m_*Yf zrY|~qf&YBzF`H<;3r7k*<YroGmp+UR6yGOw_Q7fozW3RD2``>=F4_2^eC4Bv*TtHj zBEEc=V5-#3=eN50+viba*S#E1>-wb?sy{vVt@#s@#kXh&-|NU93`Hy#r?^kBDLy!H ztGLRnDbJZ)+B<&daJV?lZuxLey7llyFR`-{o?EUwDU8bIj@e|WExw$)XWEM#|F7nk zFUqwSTkJ}<b^BBOqWb%`qlY8gYP`dB#gtwgpQvGZ!KSZL{PmlcIo5JgK{HJLv#oeq zFMILd?<7a&w?3L#UMD8GuQ2eBFZuJv<@l)^CvLy2kMoiJyi;nLB@ZJ*?<Mo>Nr%hZ zk{M3dmbmG2R94QhyY^67>($3|(+-8Zn%ug)A#`G;#bmwsqrbzMXXxzvZtl4?|KU*| zFH_kW|J*CLuC?jEw_-+x<~rsHKSc63{p|V9`1C^k=DclB51g=0|LCSwd5>%VzVHIO zc^4iW%BW78{xbZoTkjuj)58W|J8UwH+N>)-AL6iJ`ChHiDDrK`ip0;nOJdK6<xbxt znvu#sb-vKa#~Y7)THU?Bf1dcx6_TduYD*??o<3VIGFMOkb>Qm{h0IGI{Y}+Nj(ZY# zS<Ll&|Jslv)z$T<Qd}p-F<#p!ealvQTHU*~B2(_%4`IDMWxM>Xg@;>ye(956xJdNi z^!MG5tlE{G^gg@3V{3f;vyyk-hwJZG?@{8Hf7>(jWw8Qx)uxCGUvqDrJC*&{MC()B zvl@{tH=3UwC~~ZI%@4I^b2y#Amh#d3&vTQ%7RzqSUtD%y`lGL@RCxWbE6IQFWPUX$ zTYW<0?kkCHXA1Wi{(X9&`0(z`=&zEiCQNfHC}fHI{9RD){_E>gT>88HFEe$n@sgUB z|LxGt6939srtz}Vu0<W3DgGmOT36E34_^fS*g2=>-c6|eTHL0#Xz8_Sq7B}xvo|{l zMz?TD{JU~sxv_~v{1Ow*i<6UXY^i@8EY!QI^p=|JoVqi&!?tv7H2j$T?%0(>%Z@#H zG;jGzo7*c^Y|Q?4`@}ax-Zy+bW>&`+m44n-dhOa;+1sj9S1owGM)`62n{U&f-MoF% z>g+zAjAMDXd#C50OM7j8RAe#>KmYSt2YA|M<;;>hf3-sG^3#V>ev78A%(Ogi)5}%Q z+?iPaXHV6}8`El{9R56eb9`&I`d8EbRPQUTwH#TeCvojumKS0X)UJB-O79Y_u!}CW zvA@ri-l|%mxvBKuaw*R%yMCFu)=gTtBrCSgbM>mPPnxrQ-d+7FAN*A_B`Wq$Z^_wR ze}Y0UE!EqfaVj~scJ?akgCAZ$%3l(B?dkNaN&eS__b;!1rG8ZC^-A@tI@iL^S8V&q z!S2?zzkf!a+q>S5zUeO>3*0mkWSc%$c-i+od-iNdS?^yZu!Qf7316qh^tvlc*5+Ke zFtbldS$u-zr!8OP<{5-@w@)eSbKzI|eqsvW<gI^ZTd7+IJu92O#`kctvbopGbCaI# z@S1ld@RLN|q~oQNE~M4Ze_8Zb<f`%6aHr$Vox7{Qb}u?(V6wZsruCNOxhY4wI-;2( zt4p-spFZ__)2DrF_UOZyH7oB;e|z5W;Q!;Nq&I&$HswvPq-~pV+WYRJV+Fgbey*Dl zvfsPlNXoaLCV4YNG|nI83}%?I;jUQep(RxnrvyX~ep+65*eCUWecZ=yLV-+Cf3m`s zyh>p%Upi@R$fooalXAPC21i|Z9<G_hI%%HMskG9)ERM6UzrB3omQKdJ?j5>qYgIaD zUp*Pj6?^9C<ZoP^w>3)re?9&@`Mb<SZ*}PjTViHZh)23}8d}yq*q!mH+mm<lj5$+e z%-(*qn^^zlrI15nYtp3LNg00iKOSp#xS1u?l<Z|!y?fQKWzHL?s7bkJ{Ja-E6L)qJ zTAw;`!jU_{lO{aVJkjYkKRsT*{<&%Leto5w+R1P03$K?Nv1Wg0{+41r!$|#0>3rUn zw3nRm>k@zc6`U7m^O`YebH4kF<CdK5H3>BrtbR6xG(;Ba%*k4uxR7nLxnNrMruqif zBWj709!^cZ`{6Uw5zQu-S7(mB<x;M!FkRF5!}<6xW4riMopRhyr!HOFo1j*#+%fm# zlCzghmRm(G5Wb##Gi&2D5!vV4r@k}({i68fzdGqgy_FX7y1p)gaVZO}KC9k*sjI!{ z_Kh=gXXe)(-k73#ld&i1qfWBSrq!12h5d^K>T{1ASGfM#h;8AoS;ZoXeNJXUhkh=c zZ~o)pSLx%&+=|}j|JhiwaQ(?8t>;8%Joi|4LvPvn=K}ZG9^MF4-#PKwwhNZ}oWXl9 zl=(P{rr&NB<X~AaUF7_^w423qR?T!cDLhZ`faku~mWvx_&p)yJwRLFo^lSB#*=|Vw zG;^KlJMjvucm4UT!KNPVRtv9n>sho-wJ>0;zdK_w?~zHGQ<(S^HnqNa%o_5C@t;7e zxLuBdyR~QQN0$?eE#|HG9^%NmdXI*!LEgIAtgB*L!gr+#)~RYg*)i8rC4TYgpMq01 zO=aK3v((`EAI5!#0-ld^{bt>sfAyB;M~9}D>nA)s)4q9m*EXxy^|!vSimEUD`ShZ{ z@dE+f{}#-4(x>gtH&n$wt7MC6?|=64-21Xmy^~HCWIR6@;`OI)&qqmr!>e~MUwB`B z(m!|iw!ik_&z4_5@@Iebl=FQ5pZvXh^QLvrzQ>>M&fR<W@B1GA`??RAcddEp{QZ9I z?D>0blN;Loua@_JD~BvGURD2gP3`tyHOlg@ucbTZXKycyxP9}P{kHrzjr0C8((l=1 z`@AFnx9i7258lzQ`_{-<v;Fs@jPDOvJzB-tH~i!0FYnuDTsCdzKX!heh{C#^p6~Zx z=(jzv`xMXd*WW*0iu`z)`-%DdllccNA{K9Uc05(mX~y%h?SE9XaPJj|`oOKb6%JLG z?LTz&&97tMMU7uv(kyTMSbNm;;puDd<m$?A*cSh2cK&0_aQf66=bgQ)9N)j%bobfO z)u(f6MSN1y_+Bw6bvT}uZcR9`zEswjgJ<rHoj%iFnMsxYif#@+Q2cDyy#$6|no*X! ztm=P#lDgJjSbHr?x>wskO1dw3LgdMMr#=7OW1e+aGcOaaIJP%e>dfBl2Q?1-<tW^9 zckj#FD|WGmHedZ^s&y_V`^CdF&abS0=fuXAozwGMuQyx#t(NOwg|4La`BCZD#d|*+ zXQ;io))T*1knzD?<NL=qR|+QGQ`T^4SQu#DvM}?(s=}8BS}$5Mwa=t+Dr|36WxMkD zOm)5PwfBb#D)#KX%l`H0L79BcukAjw1r_UdvwQh%kefYi#qtv$1$U-e$x6R%>-%t2 zg*)Hp=2NzvL66Rb81-LqxsoV&g(c}nD2v65b7!y4K7DNEtXaJrEi>M8R0}C2)z4kn zDJj69{B`#3=U11owq9SEpgTkQzVz3hGKF4KwKS}z?WphUX|GS5=IecH?aGpcE9$)@ z4z+z;{;+WO^^dy}=JTD=i`aOx`oQ`HT!HgfOngzaN;h$5n{Jsk)4C1k0#({xW`6!* zX~tW>#(kGj=JuMU*I3W5-0IF4zem(0Avtt$*B<@0FM?YGC;Mx2IhKCajSUyMu5*Sl za=z)hTj6H^zOH|Js@}SI_4dtQAOE(`|Mxn+p6ybH*6ZIlY&*~GGF<UBv8{dT+_UAo zk4Nu*AN<0}o>hXm=F`jr*V9>_%crDtyqvH*cFP)jBO6cuvZc~<4{1$XAGYhB`QON! z_1eGvZ`4=Y%gHsc{&;-q-|u5@?N=sGP5kYf`2XT8_TTyJJ^S`H&y9`vU(fE&zFYhE z``Hiw|JJ|sr#>HiR8)P(pL*z_RN3}#WMuwrDBm)P>AuE)_vD>#zSfr%7<B%BFDoM> zBP;jj;II0Rk62&Svupp`f9ZetpZcZ$*V}nN|DSq`Ve{+%3asD4e*N$Izy8O6p`Z4z z{_n1KU;X#L=>P58*Iv**{nxm@@xS~Y3!7Wwzy5bO|E<0ApWXIJ!qNZJKQ5I0>(?H? z<l4&<y0w=}ZR;jxZ#Y)|*N|zd*@;L6?yot|BL3(WyEFg%!L#r50>+*g=Wj|%?8ls~ zWGC-Ge58BTE%S9!yyZRr1CIM_v6hKenl$%%WhUDj8D`7XZ2SfmTX$bLF*W&CUU&V^ zZ7*-^f4oy+J;#=<W+l9zttF(su6SBrGe68BY;t_i+7OxIg6x^c{%$Oc=XToPzEn&4 z{{LNH|0cYyUj6s)>&NfU_wUcYy6=5%&OYmVx9ao%+`RGQxm#$?#?lvGbnkqQtzLgf z@ZUE9Gq;DauDmIe-?Pl#QhSSYZ~vL4y^l=yg<r4#99b~ECMWu&`kTuFldBvu7td*q zc)F&%q3fLP>q>*?&gVDoel;c3DTY-bf$b}=#@3_WxgUd)qzzwGRd}p;BjcfTKzX$R zQ((1^LfMbXML&ENEwD8Bt<%adQCCsnJ#+2@SHDfVcUJb)-F<AEG0&`qds$DZ^V`OJ z=Y@Qw61IQ0*O%UY`(a1=S`Gg27Yenm3JN=g-+Y>LBe<d=)49SxN3hN{?9EJx2*Y*B zn_i{WOwq5M{gtcTDltK`BlYtio*lu0V)I@p-OIUNZ1}_0>S}wlV9Afh<UelSKXqQ* z+t?^sFUorPLDtWsY5Xr8S#O3~EKnC};+$}=veB&D?2!T6XMy@>SIZ*iN6JbH3yWTl z<6HQe{rvT1l_}*Fk0(9c(`^1}N_=F~<pwRry~n&n_Vn?8S34n*DV5+8TW0bj+2MHM zyqifJ#!F4b=kC{<|0TzsqjLVv!)<<QqK4JB(iTo0OJ+u&`n=mBbmsf32?-KEyPeL4 zas>-B=)97;|KE(Mk8Sm}`d2;~9iJAeiN2c2d|Og{YS5Jl-rs)OH0bHHvRS)oE1z4F zF;}K|S}@nf<qzgho%m89@b038Kb6IWi%lXXG#@#z*SL9i=Z<3~-I0u{p36C#UGnZn zy|QRt)Y$PyTJMvEjfRm(M{Z7rQOit+Bh{DAUGQ13l*8`9MW;gs+ULG37iFp6azk!G z)$_7B3BeoEq!VA<-oAJO>*R>5OIWREK7R4{+zB5a)@OxGZ`2dTgnvXw@of>D?keFI zzEfzCYN&SfGZPPK*IR2ZtmRm7DgW5w^pAp{L$g+%`tzhKM>p)-uQi2Sha=f<W~@v& zzirP#$>y++yw9`)txeasAH5f6emi~c>FxF65x);^cfQ8>>U3UH+~*x0J<NBMjGktj zFL1eb$WAK%o=dI6!bf&1W<FY$9Fr;Lb1bOjWrJLh^J59y%DX$<Dt4DIJ3s%=r5)4w z-y13g+ST9OlM(a3t3N;Y`j_LYO1?0idj0;^+3xuGeLHJ9*E`*oy>E3d_sg={Z~fb9 znt$dz>aDL?HSdJjqFc|?m!F+o99eWgr`n|B)aUJ+#OkH5))rTOoV?~`MV|et_WTsx z8sV#!yLVU~U!F1hllt1tuhW{JSt@Az+vR?C7y6Vod$D$p+uc0@&1_u4PxbUy>ZbH8 zT3W229B3lJV7p>dP01rs`8ieU^W5H=)eH6Kz1>&!>($xRv}U<)GUr9k`|0P$?Xx`G zK8-zQR_F3`^|QrxKHa5`LfkL>q;uoMDxAJ7xoZ>dfAPT7WIOxpt<ulKYpxvX>brOH z_@9&O)8~Bnu;F>fm#0$|FAMDpi5FgSZ^25_qf5-BzMK}>A9r#6yvfx8vi0jTeeZN0 zy^wLyT5$2bAFXwFyW?Bff)y4ze)WlbKmW_?a>J!pey@G;SGD(HSkJ>ZZ5<^l_X1~c zUvzdl%gwb7Z=PoVDpfz(GP&c2Yr#D(i}*`F@>IEhbk==k)fAe;%=n!1;3d%we|!q+ zWIWUkNA~=1olwe}B7UVyJL;$U)IYJ)RF?>r9_{esNRMsYJpX<WKmVh<s(U{l(LZ;I z<;wb(*XRByb$a}oZL&?EO8v!*nG$ccwQdTl#{ccD`y2gdQRR!y$_m$j?<`l=ci2@o z+0`p4-Vj&%px(4u|3Qs&@skeAUo($=5A5sL4`4if{>pv#i}xkB9&*vPzr4Qx(RF{5 zTl*y5`kQFi8fvf4+)|#jW&O(i))((*zk2WY<@+py3Uz}Yv#RzB@7=Gq=MLwd`aR3! z-nsDm&N7TX6EWHA)}oZjZrR-z%{cY99q^u<u#r{Ax9O<Z29uTS(cc_i-xYiPSAEs> z>0d4UMIZl`-urud#dq^X)9byvRCH=ZB7V($_I~k<{qr+<<c~_!E&FHJ^>1D0q*}+5 z_QA8|Q)ip(>n}3Pd?SDKM!njrpBgKkr%PR|cQ;%#KQpve#{1&2)>%JXlM9YW+zY7h zd-0xEygn%6l8j|i-@OYzWDNJ2$Fz7o^xSK`=zFo$eTSa+bB-BIh-o%36qsS5ZY9lO zW&J$Jcgs&<$7|vf<_haDGoH3gELYf2?H7}*u;Z9%?=|tow(2X`nO<>A?bbe4=V-g5 zXs__s9raCBdK_8d4z-R~9vf-C*f~f1{R;c=FXfIBC9G`vE6T&a+*@LJBZ+6a`j6AE zyW&k|&zo`9TWY@gv2xElSA_3;nPl*SlP4~4w)4ejqP_VV$I4w*+ZR32uDU+?J;!I~ z#-G}U{sbiadv7v(f9K6T%kI@){B7EMLR@**vPu6uR_Vqh)(h_EXl^`^&|Ssv@?KY} zTH)BeMHktUw&=c66tLZr5yoVwtt*wQ;C5TdihIeNXIwKw7D5Eqd3An_4X9uD;(gBs zmCeVaOcpuxbzDnRxR%!K#kNT$&|hK2a^Jn}i@uw!-5;QJsHHO?VUh0)4py~WG4dg= z^uz0p>Mwd7aH{^L_c|4?r=6?)9*OVeernxhEK;zIbN<2u>9dc?b#2_v*}U*T!fZF` zu8a2st|&8p<((?iIm!IWDUU5h&U0#2EPm^ov{f6n#dDmiW_+&C@_cW@XWhg{jtP%i z3a*J-RJ-o4dUQQ{)pvzgf15vi@_g_#{8ge()sLxOeXb|#gZTG%*USC$EdKplBS?4Y z{n@uyW(LoYF_<X0`VYhLiOfb1H_qL*bVsIb_Sz$Vn^$&enTp=O)aje|X4fLIWVQ&q zC$|lC)_Wh1;nL?!vtv7c`}V<%j(K~fa&I*5jQafNpV<`NZBHlbR(^RcR{k;P?*596 zrVQ3%`X!S2ytVl!{#-~qSpP1+{$j0RVXMtEsl(SJ<uab0nh@r2=I%kkC8sVFJbmWX zW?d_EOHR7$jI~sEY{jnnJjWed?3N!26zn<OqFpJQs(9$fT|3VDr4=jYKbZSI-Fw<w zl>@$E3b)e#Xl$slf71LiT6RNlKDYJrqb!nQ)hmtjU->M27VX$>vEI7bWRank`?`7y z9{t%9E=w=YeAM24ye+l-FpKp35UKjQl*bBzKc`sgEH84)oOgS!R_Dv>AD>DX_}t;M z&3*AF!|W{k|Jx_Hxy`@kOfPlt<H;%4Qr}fq5-xP;hGX?lX|Go?dk@W9kht6Y-%-9d z(YH4q{&=MJiDuc-%GuNT^A7qs%(2N(PW!aXvcAT&(ea>9)>Xen&u=aB|6>&yC=l<{ zC9ZMr?8!9wsL#S|6K{1bQc^ztvg7bU6P@Ws=WD*7Oqy@SSN!{7?7_UMg#YKb;-XpK zUsx*r;t^M1f5H*#gv7#yK5JIp^v!>;+f44<D!ssKvu2wdcG!Ejf77x9*Oyp1-<O;5 zZ-?{BKbu32)HlfPeqUxGeCfm|(fW_Z(*CkXC++#UE1;v>nsIVc_Dn~P8z)o(-BXuM zTGTmd4)?~H+CGz3T|BXjS$p@PlowpDeGl#_&U5zn?h%!(xmq$|m+syP+IME3(@>oh z<g4-0Wqb6cC(BO7bcb^`&EYw>xH;fLd6@^N<AjT)CEYuZZ4cJ2?{lwQvR*qpvFKvy ztE@ARs=l2`JNcz{{uS3xUfFH;tIyu>IC(24I$f(Wv$9Nax`*VNOxB3FJHqXraRMg1 z0t#;&|J-uz@(_`l673TEd17?aFU_7fXNwpcPhRH9-H*~ht0{aFdS`A=Pd^*e^<(*= zS?8H*0tGfMo$57n(#i>^>z}Yb4W24u-Y0%+oA1fJY0>*6N`yWeeY*VeLrU1*n(lck zqKtK)u(Y3e$h+~W-CL*mwVmt5zE9u2WB<F<xw3QYqDz*}*nGp^ut@a4jI9?wAJ)69 z$7`@SSEG|fWb?t&bf!Mn3PGW`jbFOvUR(5djjgbEtH+GP`o+FSCcJ99e8TWq{qKx( zYZa;{?4I|<Qcty~Y#Qfj{*JRVPiwB!koD5eTc9lyb4JqYVA8C6dt3JTOv&ZdFyMQ$ zg<IvY`AQG5y>s7dT+{w!zIXm{>7T~Z&zS@)!z#l)<T?|)Mb<fdDl<RL^Mc2Kw=3zz zBKK$Ne=j!7%=@!F_4s_2g;zJ;*juw?QCfSwnf+edR?~$H9#cA%^Gao+IxoZ)xviYY zBI$QiX3c6V!Kl0jyZH?>&UwUa+^>8$eNoH9cd1D?ium(xEpU8$svxLxQ&XyR{;i6j zyxl)fM=rmc^SR?>o3pq5miLmST8BB}Rtc@Wm@Bb2Gu~V;DqrgD=F2O3x8?6*<P2Wh zdHUOH<N8}^`;S<MT>ISnEV51WNL9{`myPq{F3q$0Gx7Fck-H4_Pu_F?`|Z@`7*xXW zXX5_<7oQ0B{j+~lEt&S?)00W=3+~?9?y-XDz_Fw6?Ch56KZ@LZbg{#WZXVs;7Ef<f z<?fp167*R;PT>Ek0z<hs9raHqf8(sbWH+(VchO(-z~A{%HlZ~<|GO5<DE`Otze}A- zFkDb=-HOZ~%1ol)D(AM>@;INKYn1tSx^?c^u;)uUTfR<eQlE9OlXq&|DGuKX*G9!3 zCIO~V=HcP_=gytiyCo~<dWk1$@xu#~=S7Ouo9Nw^&AiZ|B%}1vtm)O4HKj#&YgTSO zpxb$S1#4tW)P#IyPo1^ren##ty!GIs+4{2&VvcC7(0lUxoVHx<)ezUXlLxeOo=xBU zI_&c&r!Akj{i_3eJGRd~9lnS2<G)SIy<+C<^_{vaf&XPw`1SPtCi?l8a^rr!x%bUY zGB@6I-R;17!^`|ntyyH^xmJ7(4SD%Yb;93lhuqIjS4562yxPN7R{QPMn_q7pxy)|N zzLspqJk`m!QOl)x!M*Iu6_rJk6=ntt<}UJGqH#n$Xb+!BlGXmKeVrFCC3KX}a#`ZS z%A$I4_lj@&y|2@lGo;mi+RRe5nSF=%<1v5U+0(B}7~HQA)~~OAnfzhTOBF72f5u18 zIHyco-M0SSx|bQ<Y|FpA$>nKZap$GP5hkYEA71fH*A+7Stk<ur{3EZ&c*bp8+)pDB zf$2}5p8a}qX4AH(y?^vBKiFgU`?v3BD>lZvw^ukiu(ELc@jK3;svkW)|J;|CyZ7+g z+*up;HB~UnVIS`nfz=fy$LnQ2MO+p!TKeg<*oiB`i@qMy&D&KPy2<7D*Qc6{WqvEq zJ5JeG$QE4DD9rn4&iXu`8|jY5yDoUQz1~~X{6lq_+R7<gR-Kmnw6-JccDnj{{SK84 zsanT&l~?@Q-@I1LyYy0Cnxnu>#>gKIO^*!A-zZM2J(6uRqp^UY!KU&3g7)@5^?vqi z1eO~A{rjvZ{cFHhO{quXYmQBt_Uv+CS8L3>4_mUz6zY3F&gpn^!NGF!PAitrSI)k0 z7OB+lo!&d`OtqqR;j3d;N?)$BR5F#5Sv9F(Sw@G~^9Qy?0_PfQ^YT)Bn<goWnCTpK zXFRfsXX(zH%?CZ2X9ZN=t#A!a`kA&q!;PW7Frq15GjkWilD8HW(QFan4xRme^}&9V z{zx5B&q!N!@wR91nUHSB{G@ZO3(O~OJh$1`_^#2JlH$xdkJ1BP(~dV+pA>CBQ+_IC zr`rYg<}TrTt*b3Vlk!gN$aej{(2aeC&+~qr!<&yauh>+m)i$YM!bxM-OVw><1|??- z59v<5QGe9u$p5U4#V<Cvw0(bjqD-gGdRJACpv4`<Ac-Z1WmS&4>Quh;E;KCsy(M(Y z>wI5^ld~B5O<4`Dl}vb`Xi#3F>$%RJrE|{;pF8HJhflKf7mGMHRvWA9_{^EGp}{%h zV1oX;{^0c|pHI^`AX~!f>XI`%%*`S)cw=sq;FsCH@@4gAnaoQyq;iAqYAU}{6H{oK z7r`|xJbl-shW@_ywk)pJDVLr{8Caj<j1F-78B=`fMK$x&HCxr=Bjb<G(rhkC_WS7i zy~ZeXmW#mpZO_H{nf;FZJ6Cp&YlWurG@IYYq#w!_+nm^3@L#jux%}ANJ1-^7*vo=g z?mqb%Z+6=7{qGy8_32ejmfK@(SQ5>4b#}kaoaNE|?2cP;f9~v=S&qLCC%>QctMdD~ zlHZ;|vlBN5%Sx2X$TEf+i53;7SZ+DvpXFKRdc-hP|H%XIFn34exgX?2+&6y^F23~P z=wzAYue{FI9NgtA^ze*(b?W4cCB`3j%+XD^U2?5&n;}<D-ltV|eTMauVj30ixl6AP z+_U%7Msf9nu8qHsM?Edsf4p#?O8;+>ynlXW3p2vKMdsu(2ZfyawD!T-8P|Q^onq~_ z{*wFhlx^k~KdGAU8?xDAF9)ss@%G%&v(klP{vJ}3d``bN@mrFA{i{`)`KOmjYcFpO z@11S_>4;qBtF`G5YJ@KPU7wLCs!?C#A#`HK>+h{1OU{PJ37&uZ;q?8jrGm5f{!r}D zOJLsnL)iOxawFF<`Q=5Wdt#)%h(xIfE_-G7ZN|EaYiE|+)QP)Z>7D-Tjl#L8d(WRf z&X{R&^QWVwq{GD*_of$n{C@T4|J9%WSO1O=d;VYj{D1a;uO6N~ntF%P;N`#R&4;i2 z)z_~Nd;VYlx$?QI|H~UReg7<|S89?Ha6HRpTlt}G%SGkXhfgQ$)ZO*xSI=cHR_T?0 z*Opc)%Bh%~nmxg2A8(v&%OXdYw%H3SR`0M%6?nfTZ<}7PJYRVk@4nUitPkX^4PuUc zka~05ur&X}KjqYry9e~HI2E$)F8}@h?2ALCyV-SbD%79wy>k3vtf|!8FrVGp(x<Mx zIq-NxNKkkt`(ni&yVicKxz4*HCvQ*?Ip4Q=-IM=b|JH+u<xl>rfBBM}cjJ-P0hXWp z_m_WBQvBcVz#MV%e`-z0vU38<X3cH5^GK5?z3AU$^~sG(zPV<4MLVp_xoK;3(z!YQ zb8-9fDZG*5%4g~inDtwCe>n2-#>=-aA}oKiT+21snO!-<+Ev7|;>|aS{>N>{R|wBo z*M6}wWYvPp#(T<=Z^_*hn`Y*7x+#&J`)jq~VTXmrT%4wIZ$9uDbnW8rn;rOfk>8$z zZ+2%G@>!Ttv!6t<=I;OWC;IlL8P+><-)&Q#$}6>O?|G#a=Y83?YS*Xv=FRMLX)j~n z<mI?oq~|i1?fj{?*Y#Mq*9*95?7aK&315T7ySMAMnLIJ9nOMfXLh8_(172G5SOc6B z=ShEen7KvO%6EJ0uFKrFzQ4<j*ruq?5a2U$!cYA#@rnrwtQI0q{^>?}KGHdKP2v^r zGIz)8(w1Vp+h6mtDfevU6<wKK?=Hi3C6AGzV!9ar{bO>=)w~7&FlSqa?O(81tX)R! zPU_v4za}-mohk9PFO2t=gouBqwdkU`Cu`4L7M4))IMP{Zs{XaYxWuNo%hX~~QCB{T z@~uU$dgnB4TW=|Gd4sB!2In`i<I{I4gx$Iwp7j6ievjMr)!M)FHNV~G-}pP8pTEAm zEE{&oK~`<;>~HbCUw=n$yZw2acg%lxcJ|5d{@=5<u&}VQxpDY+{P&ChtRrsLYyZFB z^<V$=|K&gapZdT3(f=d=*Vp~a<Stf{zxw}s()SN993KC#`Tss+>;LUj`oE;){8d^n zcW?FEb+G|!gw@+&2N))BoZ46jngfZG4uAZC&*zo-x3&EJ*W;?0x0x>KaIaK8c=)jM zS(GCTd0C##c6`yltKxHoLhbq8TbtjSZh7^wV`lMX{@m*o;1djw%-#9=*X~sp_Zi-E zy8ZfCJ^zc!-n7^CU*!I8QtM;4HcP6mX`O%U!kZ>ftt`J_|M~>(3p;{M|E29xcIev3 zo?^GrXpwiq=_PqDpRrY5ySZ)Edh;uGyY2ENd%J^eW<1=|Sy-&g%<r}%b8cww>&>fQ zpS~>3wS0BZ%FAkQulDXas6LbT9q4|9#lpQ8zR!<jdt1;ru~d1-;c9-v`wj0O8Py+n z@A9T<-O=cUd+!PQ30qC8x5;+N>&RN<xhDDH*83Hr>PZ)P3Z$=>{jAIH-tEnlEdJ}` z-oXFoeoS2F?Q(sEPwQ-!_0N|xysJ9AG5`B}CpopO3)@OMeqT`&lzArX^uP1lrYtZ0 zxckSoUmsn!?LaVN!kT=mW0Ivanev{T@>Xnp&lNTG!p@S%DT^%MwJ%ee@zt|lAu(jl zd&|(nUuOP!cwxaRi>Ml}^zRe(&lL;nc5z*@WPe-8koBTnWk;KG{R_rcx6KPVG%Sz5 zUbMATDk&l4jqkmd?+w47PJ4S;M>$~I>HXmsXI?eEc%JX6(AtkmEsFOgX6PBnsxY-E zOO(E6SrGd8VV_`BL)VJ>$-hn<y2ETJoKe3vi8;k&?ZLUWN5rbj_&3<4)QRt2A@inY zzvta5J7M7|IRzp~9gIiK4{TxTpRDVAdHWewmD1c9zasRd?)+5wyxKg<T<d~Z-RJA( zrK=8dCoec(eOoH=_P&Le!xt%j<8*6YC{QbN{Qw_RRD#R?nu`}p{8SR_Dvnwm%~H{< z@DN;BZ)f73Uu_aBzwtEVyj%J*>m4Tr<ZOT4!%=#G=fv?BH<-@|yH|1SiTlxzqP<PO zKzfywf4i^AaqckH_*XaoPUOga_i&~1Pv_lx{+dsSsLEJo{p|b>Zdt~qYu7U#W~i~T zQaWkyVTDGi3#*@x24BCB_8k)osg*agWEeZQ3B7pHRa_rx;KMqd-`!na<IM8I?MWRc zAMI)ooVZRTp?XexK+_DlH*;I(Z3kU`utn~HVsFO}^`NpXERIRtiOa+k+_y^nV^|Y- zc*<|-Ci~1kTe>bWa_-IM3Nj6@@h(bt5Vtz6TK#OsQRkT%QfCZYBE4r!xu8C4)qw*y z)Qb&DGVTYySrAcQbbpDVj8VfAVV$hw)i=%@7n{rMtllTtu_M9OGw?>a**caoA>E>w zlZ}Z+?C-V<WpDT~)7WL|oa0H;P44bslYjT-T`b$>Lx&}7_DEenaJaierQj+9*HJ4| zi8CF~Psd-Fq99&tsxB3J+tValt>m5M7Kw#c_Dj^8(=L5dJsDqZSpO}=bkYma8%M7y zJ)5&jFzBMYtI<*Q7ZuJ+ERIO?<{zke*7K3$aDU5<=ml0w%<uHxo#NtbX$ZRUV8g71 z+8R%mH@LhpTtD64bVh?}=^~#l&vm9pt&AQ7aENoqy%OWH%P}#VzQs*v;Yro#FBW<$ z&8D1|jtPyfsrbNm^rN+Bp-6pCUgL7kWolnd7lla)Hfm3kDfRfIxwK7n<&o#oUs!_z z!@mUV5|G%@mnW&Pn_Xkpnm@kFc`sJV*7UsYG}~#n<Oo+t8lO(ZedffVqc?Y%$}V!> z(<D={B6p5bTtR87FJHGnX9Z95jeGBGU#Yk*GCLal)$ZYb4makrMma2-H!cXR_chTL zo%H@0Tci?4Nxz`;#2c!29i}`<X`VDMyWA`Ns`~O-2ahFPS$vl3Zb&}+-9U#Ze*4R9 zKXwLOzc0k@*B$fCQ%SRr+4K4gRhuolmGeayHZw?nQQnkfe@ScdDsApJ`%a%{dvg8M zWtNm66Qi?VxqB8Fl*9!@&p%@%^sUdSJEs0+@aitBLlf)yg$_uRGd$5v-m&#ws!C;o zK~??BqjC@I)=OJ)xLt4l`S2B&l+-Pw^JzWRrjOM_f(7RYx9Y82DYaHGT<wU|2@@~l zX<PMtB{Eps+B}#eC3`xzBww2B@RLoa;h9Z}VuFF^wF9$cUmtXfJ@fUB?xF<@2F>={ z9lXEP|IQGoPQJ`}Jlb~tL49eFr`7AbnKZ&@3;ttZafrGcAbjnMz;(|q=H*8P&+lhh z)9swL>Y}iqX~5B&g;N$Sz5O&YZN?<ols!unP6Q-(98dLsv(Ic}xEfdY`id}Zn^Tkg z61i246&jfHZsbWh_c7;QJ6O}?_Wn$@TU3#d!>7#^67~J=hk7jiLjRmr{`s>-Yo7{_ z@WNQ(-`;%^fk&Q)IVJM7^X(G15$|YAW3F7yu=Vu}voqZKvkfy2n3*m+-}LCS-eCu! z%iBA(ztlYFx+IiZ7PRd(&kCU&sb!CM`gqhNT;Bd@OXkAIH|jPy6)iCO)4?Itc690! ziw%obv)2{KO@C@yzxbx}F3+1A7z=`8jI)HCcb|7O`mMH4O-)C}YO068@*K(g+)cVp zI(+M2_Xga5vcECO=dhuC(?nS%E}3i35A|$P`;l<TDzK?q+%TbziH%o9KyP|U_1z4k z<3&4){;@6jnLJ07*WB--=hPr8`6FIa+TypgwR%jCQlFmpDd(fgTKSocAq9qyLxeWY zV$BeJTdzG^bngnu>ptH-u5m1BwCtO_AyYI`&>(S<`;{LL)=$6W@#vlKx>HXIZe^ux z5_)uLiB&>Ru=n}H9=_|Id(5kvvphZIjBnpW!GI$9<IN9>s|8LRVGB_RzUtdE<*GmX zYgNIdNqfAbD*lTGD^J>RCu_1?mXg%@uniWAHtbF6*d^s+ci7ov)up<NF}8oEJujRb zm1VC|lKG6|vX+nGq_w^&`?~hEEbLd=Qdf90Z{D1>%*8)MF4ep|zHIW|EJgn1>r;GZ zC!9NS@&`j^#?{QpZ?j~WI#?!iXDf!*En!^p`{SRie>pRPreE8$?$ET;2a@#DT_-In z?SH<#?}T~!?`vXwb!(nYnqR=VN>C%=%$IBtz1yPglF$9y-PD()6i)9da%(;-ZmAov z_%xgUn$$-t9#3w}78OZr4gIOZYLFP2tZFTJH)+O#gkHAEtFonqG;^l7AD1b-{Ej<q zk;x{et6wE2U(Z(IN_7bL)juz1$$4xtYmO!(`(*tban<W?<s4rZ<a#Xollpkcw{@1G zrsi4eUYq1jRAljNR}5d9|Ml+l%E{R|((JDblcjIE&7a(xBd+?+IB8<$ZT8u7#jZuH zaoDuwY2(XCwZ%>|&i`6={(JRgv*dGfw-hIz%#mYcp8O(5M%w?Z>Mf>LwT7K8Q`<b4 zL=^a)n>nmzh}NmxSUXuhS4<+r*zawFPcqN57n1po_u2pSUQG&i-XU8&**90+R`~B4 zg+te*br;`^GLJKhIvZAGbkFSedj0%c$8I0{TKag=U7Kvl>DQ}%oPVmlxbWlZkHw!K ziCl4-?cP!&6*PHcu5kTX#uhK5g1<Ev89bItPg-RVEiPeSad*#;&b$RHrJko>S6|Qg z>e%W3`}gMO=1CtHx_kbYXw27ZUi-qAx!C5uUzL4#oAKM3Hh0R5W@@hY_U)W<rc-5= zr&gwKc-_@&f0=)u*5hNaJ8JIe<#%9~XS51O13UZk*3Ua?Yk&WHFCiL#w|-xJ^=F4W z)AX2Y9Sx`4Ud_K=|NX*_^LKZ*ODpA0xcpyr&Y6oDA-wZ%J)G>H#LMAsz2#BcK0}j$ z$p#M3IHDJ79!sAdTyc)MW9uE0iElU(I5tV2JtA}JO8Ts1JH<1dzrr5`v#)PHx-U>! zX8L)TFL&aYUOd^V=3mIi8@Pj&)5YOY{i9h+uBg{8iuTSq;$D2cH?~9byj|org_Z5c zpKJ*e_s(UE-0BzAH{IuSdCSK1OrJaczDf=UC2s`HPC6*zU&i=t&EC)U)m&l~Rx@wx zR;&3hnDsunIpGVp-q)bR!V9OV^hg;kN%}Ik(ouig>WQyQQu0DRoaOxJb?_wD%Rm{9 znkV%<%zS4upPQvKMjQO%v)E_Y(a-B)SiOmh?*Na4mBE$md}nV@vc5G-Z(sYr_Q)Bt zHtsY2ro$-XJvXPJb)9znmed(*e+vt_ec|0vylq3zmR9~IgTrebcdXenC;$4o5A8E+ zdeWul%saU3!=Y{;7gNDUjCRdUA|?Xtzl!)~r##)<RzFwn*_B?Nw+37)w`X?o3GX|6 z&XsXfcHW1&?Ut-(UR)9lv6=nuvGIz4IwQf-8}ijMdEVbQr^l*?)#hyEFFkiKoy+6j z+|@JoZ7tY$f!8n2*{;a>%&#d{?+xTuuQuJW@2zy!Nh6)N`9fb_PKt8g7;~M?h(n6a z^3suwXQxRw%T=AJ?-DsM|EvCjokGHm%mF<0=NaCWC-d+5YV>5v#fzmc3YG2FEZE-o zVD}Tb^YY$J?_NH!Q!mn;Bv-O1U17oNtl~rd4HpEgniI|MH_u&kZeo<@J(pP>LPb+l zq_uqnb5oBsezKFiDb-dz%h%sWfIpB|W|=o1d(`jeDwkzNcYU)jVXqe`N_?*o9B&ix zR&f8^ovryjv$tPYaBtZu-o9=Bp54yt@BDkq6u=lgSwQ_p;CGGn+@>~%gZ~OuZsX27 zt7)AP_+5AZRm~OmUSwRCl3sDdee1Vr*)I=jruv?6Y3&e5ObY(s6mXGmg}vR??^C@u zWCZH%-#qbZ^o`@mk%Fzyw(iTbsQ>4#xaE-Cn|ObZ55{J}GtOJs$#p%x@p;j$+3q!* zAI~=I&3Y$L|LbmH%>g%gBSn|}0qowwe0`qTRdNDPyne_wO;_`^ZoHb|Z>v8cV}<w8 zkkZ&!8{AzA($q=<+$SGnw?5$g>HzoOd3;wq`O{e^`{thSKkg^w^H)!1^Zaa;<}>xt z4=xJzg{+%=;4xpU{~_gndS7H2^ShT{xUTt0Q!e&K|1{n8kN00_Ve9MvbF#i-_olC2 z3NbCcmy<Q3&tAHAMW)enPxH#^MT?GmE%Dzd8vbqOw70y<(Sf&hG@m>$y|ne7-JLm$ z{JGvL^}30w9uAbh7d7MSUH0_f#s%{vw>wT+7E&MJyGc}8eusR>Rddzq$%%!650?e+ zmg@}ZkX_e2?<(W!IjiGm{=Tn$?H!M7-v>YYJNwx-?F#CYm}b4|*!BBc?~Bdbewml= zALo}^?sGBAZohQeJnd7+9h=j$l1@k*oxqVf=g|)3O73i}`C6BQUtDGRe>t{#-HGK_ zG7`7>-@ajc=1YD5Cx_Zyk-b5`yLUO;xEj7av25C0#n>I?aVujPeUC_<3^Z2xtn-yu zZTFId*#(7)Us{77s$ZQ{>wEvTbc>w0LH4WN?`nTOYHIUWyn5@q)UOAvitED~Jl5yl zaax;sM)cQeb+1Y9r<P04*($x)VbUgt#pM~375*@pr+yIrVzxa{vVQw6*7!7M_V>D9 zW(!%QA1f1>5}W&J%9%$_KMH%&AFh<B^wQRux9@o6i^i2(4}M#sAe7ynICtMA1!m)= zhI#9+@9-1zWlH*I@vh5O^GC_z+DYHvy%jO=JJa<2;-;Lk>fVcCQ_e=cZST<7c5AmK z@A(<Jrb$xA`9DmnS9xz^`uXjw`h7RDm1B>u<qj_noMf>esZ&lRc8=d9i?Zt%-pJ*y z*x{UCCe8c!SKFK3ZFgDPDz+pFUA~vsbUQiXsL8SOx7AGr*yR!hA6dEe-&R*@`pD1m z+h>VMbA86zZ?D(yZ^~*+`FU$UXG<N&a_uckq~91aud?N}ana2-%@KB;@q;s9epCIi zEz`L_y!$^%vF>KpW`BXxnOC#wgLGeAaoc3|Fj+q8e7}t5p;z4d53$v^ew+U5HS0X_ znZ5eFuWXy1iaIjR;=H<-d1mg1$s3=i3FmI=?Ms<kc$ba$rI*mvnf%VL)H(hptlE^Y z?nC<F7~co`4jlT=SjT+L_=Rdf($ZyTE?T5G6xJ_{Qu%D9H|x?D5h=<3C_mLn8?R(1 zR%YMHe3;~v{3Uv3|9$D`uS?okH!U-2k38`8cgiy5PtQd)CN5%~@80!?qe-J{37c$T z?}h8Ln*Mqzda#sU5@gBL;M?V#slu^7WY3J-D=+M+RxX`T@_YaP{EKma-~XSG*RrnV zh>GJ24{-tBdLOqxKhL^f>7BB2c3g=0U7x!=%DWt8ZNC}(X}!<7GF$yfz0!_KZ-b^3 zzUby_&Yw?JZ|q#ed(`rP-BKf-Y)j71$G+}dcRhNc<BADBoEG<Y*iGeanJRJFtm{P% ze^0_=dnplDDRI7xXs5#mg-dn|vXm?qmHc*#VM$Z@iy)Jz4Py22{x8(KStK$q%CKa_ zOiWoMy=2k_nKV1LKgY6LJ&rIhl<U~NHz?I-N^8CQnp<1^-X92QzuS<t{E+mU>^{Zt z!&f5@-1W<_)B1JhjQ3}Di<Qs#jbjQPitMsmDm#CUh4ZyLlN{3?e%z+^>Z8b!fE96% zd2;z5NM4hi61GV2-(EJ={CXL0snh!3dHuKX|IG?cWl3%_U%tiPMqp)eqWD9Vg+lXI z8Rr~hotd?<Y~P2H#hMi#q>D--lvBM-r(P`Z2yHyCk~-ys!vU|DGWRUGt%WZandxq8 zDL*LMTOX3W)%%02bC>kSgyeWO$NLuQCoMkDy2>VFRB+3EQO~N^=VvWkzwt@^FG;OU zhaJ9r5c=!C^w?)rJN7yG(+l1-^k*ED4q5THvYSKsQt7={)2yz3^;avq-YTk8rtRWs z_(?JB@9K_YzouHPQ<%s+>0F|4x2r}DFV}e=z4v+Q=K1U2-@Ci7cD|3$-EupdJ9qZ) zttoc)SX}-8-KU2SAMgI1?ZkKYH@|tf{JZ+V?1cGWZ#|tI|L()v`S)#?NM6gV|Nc&H zt2~c;?D?|?V(uLKx6|VL|ElW${|-ORwz80%;`jCN-Ph&QufJ4my4b1mB|CZjF)PIx zHy#V>vIp(zv|6t(X5zt`*jnt=mdEXVA+?~%xloa7ztgD+bA&|qIv-zk@qg2v&r*L^ zN}UxJ<gNcFbu9Z9f8vhGQjcU8o)NlRZh64=*NLfn7`6O^wkCH@$>CZd6T14Z{Dqy* z7JaDL8Ft``)*a=vWm50bwocG{)h<6lbP4nKbM14DKi-Ve_5UY)a;5#HDI))Gw#l!! z|2q20YV&N@F1y|7ivzby-_$(+|Hx<ikAM9CXlehye0Vqi_wagi{zYGRhsOO|-gjkc z)6e;CcmGXzUcc&5(V2Yn>DTk~j!X@@{bmKL`<5?PH?`e(Tc(^>W~$W?x32ECz_nL9 ze?BumeQWniqr~&RlM*Z5e@kI9yfnG9I@_K*QkTv4`@Eai&fUyoTKGFHL)n_Q<b|{M zeV+{pk1M-Um;T-P=yumq_ILF=Os8Z8P8H1(+jjNfe&Gx4>K@9`?|e+(Obni4`exzU zvKHIo(779yf7zn`Mo>d%_XhTWCxu4EVun8?Udtu&7c~8u@O!~h15MMT`g;EhfA*iQ z|C6Nnztu4C+b8)yUryJ@uDm~a$Di<{N4Hx&|3Bw{@xSvw?VtaDYw>r7&2RtZ#xLsG z-r6rtZ2$aUYhA;9(Xur~HY+<`i+r8>sJiuY{ki{^|DRtkKm5N|?Ss(I`gD;C|E-0t z)Ia{Sf7RFL((^zH_E-P2w|U*q=6vq|{_ubA?SG~3`k(xxKKvCA=l}P-?sN0xuh+jR z`WJult4H{sm2Hm`k2gK`$qMIi*ltjECHo#jeL{)3Nztmf-!6w=1Wa}h+C0-_$wBt7 z6ISf1db`q1Tf!p$ui_11uJvE83KggtWC%olTCG>(YU_N@_0r_WPlDFp{5kJfhQgcp z9=YIniHhuJEhj4XE1TUr|8L)yg>~PgUoQId=GsZdy0X)6HrBrIZ4l?3y7*uuhmp!5 zeuD-%jwb2)-OS>*+f@Eoh#lxk>E}PD@;pB)cvF4y<w>6fqGvF0XZ2rRyDh}elaZlZ z?_I(T`IDEvs><bQFeceuJrNz;u{2)WAbI=Dj`_Y}8(db@&pwpfyYy$s=EGSJr|x<8 z<LfN_8QVO<P3CNiQ&!w^Z(RiI#cSCn{%VK!y`Ixw^mBj1pY!#v_sjeJd;azQ&OiC5 z{~x(tZWh1c{{M~N_Wv^o_`mo5+s~i(XFaJe-8iFR<M)+mC%ZYPO`VX@Q2$^SXY#_} z$5R?U*XR9z{LQ|umjBQEN*Ony|MK5<G5(H^fAnpC);jrrTlbpwehZ1-e)Vhmtp4Th z%-c*a--^0*NhCes>8xXE$to-BC+^sw=BexC+g7%YKg&`kc=y8E+sSq^*Y#^9r`ouR zzBQ7uTf9&qr}wGF{?=pfS|ucp+f82ddBQA~i+45@@@%@t8aF3l@?(o*4>Gnd=j=Z7 zak2h?Pl2F)yBF=b_@-vEzq;tfgmwRm|IUB?f6o8pfBuJzyl?(rd{E)o|K-9L{#Q5G zFZ`l^sNr+{y8ng0;^+RmJ~iQa;otYam;FyX$#Lq+|0Qw#PyWB)t-33BqDd%;*>>Ik z(89o_eAA?_-Ss<=D*w_y?AM#gwZeVP8<Sa{c>2sgbm_LxN{dBID-U>X-oIkEcTcj^ ztBDq|98cPQF`j*4`)X;Xzi&%?_yp?@i^3L*O0x9SuNLuDpMPbprQ!C?GgoP)T@IQ4 zS$KPyZkSf>eARu9{~f#xgXZRcd%5VDe$`gNWA`M@7XJSz&&w;6P!{EsyiRf%tCWGt z5tscJzr3A)cm2Otm+T)fX8mK@m%+t-HOs6ZO5m4ZuEdgyLjMw#bR~TqV_tUcnxk?1 z>axm9hdRTzKVzx?)YY?lZeD@Fo|Z-?;{aXfug_hq1@|gsKe{th`ev1!`Lo669OQhb zp3Auv%9fR{;=lWHUHOHVyyutn-O1hZW>Tg{Z{C)qOVw_1Dp&9Pn7YTs`(?Fkn2$=R zL0;YMQ>WE_{hRigQ=P+k%T5EuNIUgI6*^bcg_lfNuRhr-(uzIwL4Drmmd%E+qT`h2 z|4L)Osp|iG+x|BExvu(q{^|Owr|UhL7H}O=YW^aw{3rJ2jjKX=;XAf;7C%>a4u1Z{ z?635lwuQ5f#P#RdnV$a;k+j1p=u&T@!`}7Vca?tL-L{YYe_4ue`T?FxYESN!o3&X6 zhD&E3_j~0dCNg(pu4etmkDA*hUi_by)@1SR$CJs&9xXT&!Bu}p*!b^?OD#GdIyY%p zuBl?yT)n<tXi1-jXVUt4Kcud#HJY%;M)Cdn2eqkI6Rm_jXDz9?e`DQ3ApyPJ6K>3S z;u(JITbS@$`&k_t-=dw?tCqCunpA$NUs7E1;s2atAI{r<-Kv$h_NM2j_Jj4`q;}8N zkrh!s;B_$Q{J(wGF*C|szpbm+xGY&wVgI_zdU6Vb&FN>Kci7p#o~M0kW=+|(>F0KN zxlcU*>u_bhML<aCtFom#m3Z4deop+g**LSx%zl3PdG^mcP2TkVdj4ub@b~=L%MbmQ zeE28%`N`!!L$@AnmI}Wk*KV{RRM=+!zuWcxEnTT^^uBFS5MPl|xXt$7ru(*2E_XD` zWIuW_;gHC0bAC=8m;aZ9_ov_8a;#LQXo81Z!`c3&dF$;v^3$`rtS0w%u74j~wSC^Z zSevl**F7ax86A4N@RlU!wuO2N8t(BqGA*9E;-zFpZk$nk!=A-|mGh@h+sty9XMNVE zpt%cOuh;js{@^*f{5r=qrM<eBWD9)j(q>LtxR8HV!pDgveu_#={6gzLKIZw`TC|Sm za-)}dK)vRR%t<9TAC&}OJaaba-o>+j3ySNjf9|@cR66fi=@ChRj-rATBkTN_DX;e> zJLfE0e{24-+|s-AvbbGRZ&e<@c;;k&v}~FDHmz+B*uJH-)!Q6da_4IBp><lWA}0>q zz7;g(;&k5U`Mch*cd!{7CTzO4_GHZcbyHtGW#lnl?{YyuRH=hiQI!8rRoaxC0++I! zy#G(X#e<0Z0l(KTU*S;s{C{&`z6$I4|L)3h{~y12yT8om|B=^n|H3O*YDPR*yev#? zS(0_Si}#O&ro9#SOX_*P>+43z-pR4dk9jnyO}FunxJul2$*ns7&7bYO;K;e`*|ZN{ z=F4_e$^HH77I&^Rd8yWy?@zB)wf&MY*1xc#_SU>ix6fOGT{l&|-ePN_{CLY}RoC3h zdLD}!1k*CVC3+S6&*Bc>zftXK!$jvh%3t(3vXAp^YGk`_A^q)K+T6PL^(6{l*_Z!a zSyiU>{fgbM?2@`VJ>QA@409^HcA9bMX0@y^F%CMu?g*pM85yB}@y9>!-(tqMf96U@ zo9bo8sw^EIdzGKg&D4BcdpTQl#@RbQv!!kdUo~DHlxMT)_KUa2-_)+@JCf1EYjyCs z(+si2b58Sx%Kz@H5x(gAB59@WytT*bJsFnX=?yz~q{#2|ZpVI}q^CK#M~vq`{pz&z z_N;=-2i^qd)&Aec->B`ul6+leUT55Gvyb*Cy{}GS^%PRwc-=!K_{ucVO9Hp&NMCs- z^U3DeikHUG=1gg?-AaB-1ebP}+)nQ2J9;uhd28~7JPWp$9DDqjwq3t)$07T==x)Ka zIfv^DlzS5`R`IVF+##6A(pPak`-AU~1yi2A4>3!4_U)cg&hE@NJF55os9gH{^%Abc z1uC1@-mMKzQsWHCU;g#riW1{okrPh5n?HDFy_y`&-gfJkamIGxB{SQc3-hlrTE1Q) zHY3a-nr~+Kr8(QOg=Vk$8*JOPbgEYTEn8WezpsSWov1&Ws;5_6IJ5h7Ow7M+N1i%& zbxF5$3$`s@vSM8dpO=>Y@5rUjA72>>J#W13DE6$dR_cT22ZN}n1C|F^X2*R~{c(Oz z^u%S`172Q{^KQ|LW_tNqrIEdPftLRCU(+u=o%zA^Q@8QnnnykpMYSrYuDJ5Ve%c9r zqtK<{OCs0&+rBHJvVQCI3wv9yv`*h07FflU-O)bh)Kd1}Ws83t_!nusb>+4zNqvuY zv>i0%S(jMA+ng;CbJ*i#%J!GN7jFu?ZwNJ9B$;&Cbe-4*{W;sCm@0Km?bij|zOih> zJh|Ro2h)x^mG&-D3Q3hZzHQIs9_9EAC3$aVev4p@I==1KWc6hM{1+{Y>Ko;}Z^c~R zpswaW_2r*8H6^R~&Yk!F{mQ{jcy_s;d-J=WHzVVxT2Fd1dq!WC`Hn>gMS0g{6u35P zOC{E9?ah4S9cca`rI|-^*Zd{V_%lrfZKkZy)K$#gpIPxUajQuB#`unPLfh{AWa?HF z+srU)LvVeJiN%y>!i_AoeJn30G&I(GJzdD!esS52M-EYQyIy)3MW5euYS#Hm|6_rf znxUpbhpw^s-`^;GPR%LsF-yf1b*6WYTWz*#Z(kQYQMq8YPTI<U2SgJ8%vM~Q@u;`) zh)3}xCgat@Hjf-nxqM1sdH5&Bmg`Xar_+5+`Tr#z%x+F(yDMu^Sv&KI>5=*)j@Qag z@z?W*`zY`Gx8YTm#Vxk4S7kaP+kOZij%T=KaC&md?V?onL*egxr%2BJ^JQc4lDf2~ z$$ZKWZ_a04$dPM5$NhF<fyUDR(WWyB3R1QBH2I!7#R%wE&Dj=`m)q^Qn0cp}xXU6t z_eIUouXlX<=rpxIcj>O<g>$FWX0LKTvTTjd*Bf=K>u0$??I^Z5tIX8SSEKgZ_rwf+ z(Qb)3FT!+_^Y(`deqQ=Wz*_M01ocDg4hy$DKX$*JlZA6e7TeZlNwW!skxDK%FX=B8 zf5@QyN_JXS;3^^Oo9oXWR5>3c-rHLvvGK;$lkKTG<?nw-ypw5)Ia3s_cw*|t8-L#? zZ!GqRDXiXI)A_o-<Jv9t%+PH~k}XPc(sQoYKl~bB@mIWV<Ldv5G#zT5M;&B(@bPQ> zlECsC+}HlUTX=lWztiRc|E<@pI=!|zPWSx%C2prh?XG>fb9GJXiMQH9tvTX_oRu4{ zw^l!nGEHx5<KFe=`<v<?QE~d)cAVppRKM{<bkgs_SgD%-aj}OcuK8a7`CHyY=^gL) zy0b9+o;!J=v(@)0>k9Mj6ISY{O3qI3ot1EQR)X*B9kWc|i5P{fU0BDYcQ7$l<@#Jv zy;-+B4SuF}n*Cg}GJZkq`q>vIv=}5$@GV=F)ANzDwyXS1`c(<@d-Vc#i)^o2@U=5+ zxhBT6pUFVC)*xrg*Y^S+*KaqM7p{NqvF+`Rd;1@qy}hKheEVL@Iv!Q_28X-TwyQ=- zxAZnG_kH|C^X23Qsh@2JzHnN--+ChWmhQg!cOJ@2=8W%eDRP*ep?RWMYR|t{k5@mD z<8{ii*=-a$^`<QstFXjPRW_*rHVG|r<*%jJGA24Qv`thA+Ow;+{_}*>Zv7wCrX1+H zUjIH%n9-p)=0}2;BzMi_1*zK?1niyEyE02+_p}e`cdtBoo+2Q8w?@Wo+tJ<p_Ivl$ z{`mRK>aI@Y)f%gluQoqhbbMm^j#Bkq^Vcc7nW7<jaO3yF6$dW)Z0|qZQ4^InvG17W z5yhCI%w<Y^3%@8hJ;`i)_busp&eBO;N-l@bn<S~6tWPUj_VCgIj+@(OdNg-k5x6OS zhEHJI!^H;2WxE93lesQRhHY7<u+QyVWJ}xBrsu8BzBU&16B?Q%*1RuV^E^Vn{p-(W z1*VAj!avSD=e}E>E1uJT_~#$S$Btg{nKp?kr}!hDTR!Nhp3@PnGPTEDJUQ2>_DqKH z*%TAseABb3W@qaY&DWkPh+6y9Wc^E%{<mAK9&1*=&g6V{xuDup?R7@r{wH2<)p~l? ziAKcEoDn<ocI<qkXCFT<2+i^RHSI&s-0CwQ<x2}{?niv(UZ|IEW)_-zc=y-!twtf0 zYLmBC*?zzC=wJMu|J}dqKfb>4XTLymfa1zR!RPB;{;&7jZY=fl@BaEF7dO~H_!oct z@&BX8?!Pv5R6ibk!mn=PL4OVx-ma<7Tw-&Rv|de}X*tpFpy2L#Tqpg$v8!_W_4{9Z zUSfA(gBi<(*6dwQa+7wg_pAT)J2U=GgF$x2<71msbI){_Np~N;m0r4ReOSh_MR__o z6*J$yT-O_yc|6;!?&*g})x6Rb-t`Z=zG&XybPV8b{HFWhv!rnCy_HN$S>GK06xCSm zaZl{aPKDcNMIUzO)d&SJbMqQpzTVX~JNo=4*F3?OaTk0TJ5Pb8qn2FIDgVH*HB@xt z#K@%nBl8V5?iHHyXp_bC|2zMje_F5izxZc;{6F`mrj6QKf7MU^zw5Z(nB&y{y$?I; zPyfH~^oKofhojSsH!RW(H~ycR(0rF=3hR~QWtm%B;u+XIdzgP-_hoaJf7VmTam<7z zS+3wdzXwamOJ1S+k8WF2COlpjaQ#JYsqO8h99;+IruMfRY!4RpEbe()$rN>BUfVz8 zx<88-YW8wl<YwIn%lxw0@cP$d*QYtmFJty!zN!A=52^I@?YZa5zRT9L2faBx%cySk z`m2+fUK(@0=)0pl)5l1{VsB%zIg5Vq@8z=|-MCtxILmgO{hdAgc2?;-C~8$tJGA<D zc|J?9`zBkdyp>$?_4{`2cl2$!z1=A|tJMD$kBzJ5DLJ#9+c*C>{#Hk7*PogE4<*)B zB+mET^{d_QK)uYyf42Mnt-NNx|NDaUzx>lJEt9_fuK60gwyw_J>is)*c`Lo`GH!XE zA~E}%Kc=ix%xZB@@0}L0js1RqqKU?;71Q4CEfQ<`RzJt;u-X@)*ej>XcdkBlv+qHv zvUr@i&@NY&s}7$`Zsl?P7TmCX+G6+a{WUvw{;w{1J>^W7&+kaH`uPhxz9!ho^QG5T z8c5Cix@6*#vge;?TD^Aqr5-9f?`wOytZR_<-o*9h!MoBA|Ex^62x@zNci);hN6*YH zV6yV7zajtCI=E7!bobqZJFm?4TY7Md^&IcL_cBag^_=_t{PIBuS-xHA>9217Tw`uO z`&;_qe;;DP(l6JYu?VP>@$#8n->`c9lcg)w&Smb6^$le%Zk|!Mx3AG({paf)f=+kk zrUlg)%;64*<4@@qjI=9Q>&VaJz20nw;F6z5KQUDBhh-QD?f9F_n8&wLoQ?TL)|*<v z7YBa_2X+{L3Rn<7bLG2?H`~59^_gC{bRu~wcZ!b6CNGywT89+0x*Ie+wN^XmoUYfH zzO--eN)MyeJ|?GCW~U0BYq}(99d+i;?d2h#YDAJEMV%tKG{m(3zG;2YsJc<>$%Zc< z&S+K#PUQRbU(dJKnN3Q0U-+V19pTGW?izM5e>g8A!+j%>S?X77Qgd{?!0)Jz2MUIU zS7zoZY*?WGQTI!7b4~Q)PE#*d_f-r_C(N;^m)~!`Ez2mc^Vw#elV)!nPrg6#eZl2r z+(Dwd44ExvwJdQ@db&Y;rBblFnNdK`S+<3>1&iG+*8Fy7&1Tc7XnSzxPWZ~%Tz?#_ zCqI1Oa?tEwSrzMK*OaSUcy1g}kB<~oV`}TNkYlVYRZ*3lvwDf9<iWFjn|3T%-?Z-u zW6ggK#`*PqXFh0%$o)U~*nU;t{}=Q4*_~HbpL=Xy@rS+hzrlul@j^~50oF+(|L?lj zd;bkgzad%5F3b6<o@bZMzul*P@ZVJt6fsNR+N}15p;b)G`NIB=hiRQ`{as)B_-Y&$ zwWsE!Pq?S<HI>7|=p$cVHB*@^(^UOiZ(DO##y`2MS@kKhe)h_*)877Bwr*<gy0vRB z*yZ_Jm}cDC+P<<@%{BP8r^yygGo1@<%dBooZF}-R{z!1ZwzTt$7M)$QEN{`z+G{*3 zWInZD4*mP@*~7n2KD{d|`uy$JySs01f1mK^c;AU*i-cnJvVXJoDxES8-1chi1U}eU zG_&lPQrj(O?>;?TfB1O$_v;tZw4@j2%H^%IyE8fNK|tHKg;`-QiY~v8T4@-i(!8|4 z-9t-d!QR9V9GL-)`x+8empF3NOc3o7T)3clMv285r+iVyxz#&#wY7QE-M7Tfmi`dF zcuTJ9uYxvT{$Qi^B@VoIQ$2SbGhdff@N@p@|2F?-pZ>q_lYLpVrgi<lYKs>oRn;Hw z3$6cOKH*2c&aJ~I=jxt4ym4-&P2$7%jH+*)s(&08oz^TcecPG84242wbxZZPYp?kD zJl894Qc`u<2FtbYmajh;(Rt4;AakOkqT`CRs9R?$FYml8^o}Q2ReJaS71p<Y^=@-3 zpH>$9T)oc2`>SQ9v-gVg-^Cg)me(sQ&9GHT*{gczPhR7Vtu;4hPTTeA_{PWlC*+Rz zae6LE@$#!GxUOPb@WRr(b9?i|SDl)NJ*_XLhP+N`w`@_D5KuXvbGJ)wmskF!roJV= zrf-cp>cZ`}IYvL^?3^05<&Iap4z6R`IC+Loc_w3M_lKQ#R+&T^Dg?S1JKvAGRb}|I ze#xSTIZs8z7j6#}HFEAYv~AE=@tY?1-B*uSruv2An^c9jkB=|UVXW=YTX`#qck{V_ zpWZ~ytv&VcR@;SWo|W#?f0%uCz0g*5pXsSYb>_~wJMKI`b1ZFxWSUU2{Q8VbkGN+P zxCy(eP5(dJZ{DJ9D)Zz+><`qZG?*=%zy12xlC#D2E-vY<!3|roy-uw>8SOn^C&b0c zu(a!5T4MC&=B+Q|RRZQGloy1j2-ffVd-?6{?=O%0DRC>lU$g!6(zoFbHmmpMol-si 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 delta 39306 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%0DRr`l+LC&76d8W7b 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 I7O*k^0M%7GzyJUM diff --git a/dbrepo-auth-service/init/Dockerfile b/dbrepo-auth-service/init/Dockerfile new file mode 100644 index 0000000000..6ae8e16d77 --- /dev/null +++ b/dbrepo-auth-service/init/Dockerfile @@ -0,0 +1,19 @@ +FROM python:3.11-alpine +LABEL org.opencontainers.image.authors="martin.weise@tuwien.ac.at" + +RUN apk add --no-cache alpine-sdk gcc python3-dev mariadb-connector-c-dev + +WORKDIR /home/alpine + +COPY Pipfile Pipfile.lock ./ + +RUN pip install pipenv && \ + pipenv install --system --deploy + +USER 1001 + +WORKDIR /app + +COPY --chown=1001 ./app.py ./app.py + +ENTRYPOINT [ "python", "app.py" ] \ No newline at end of file diff --git a/dbrepo-auth-service/init/Pipfile b/dbrepo-auth-service/init/Pipfile new file mode 100644 index 0000000000..7c6799865c --- /dev/null +++ b/dbrepo-auth-service/init/Pipfile @@ -0,0 +1,11 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[packages] +python-keycloak = "*" +mariadb = "*" + +[requires] +python_version = "3.11" diff --git a/dbrepo-auth-service/init/Pipfile.lock b/dbrepo-auth-service/init/Pipfile.lock new file mode 100644 index 0000000000..cc139b4931 --- /dev/null +++ b/dbrepo-auth-service/init/Pipfile.lock @@ -0,0 +1,391 @@ +{ + "_meta": { + "hash": { + "sha256": "e7d1339d14c1425b18632357a83687250144a76d598d9e2ff66a4c758b41611a" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.11" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "anyio": { + "hashes": [ + "sha256:2f834749c602966b7d456a7567cafcb309f96482b5081d14ac93ccd457f9dd48", + "sha256:ea60c3723ab42ba6fff7e8ccb0488c898ec538ff4df1f1d5e642c3601d07e352" + ], + "markers": "python_version >= '3.9'", + "version": "==4.7.0" + }, + "async-property": { + "hashes": [ + "sha256:17d9bd6ca67e27915a75d92549df64b5c7174e9dc806b30a3934dc4ff0506380", + "sha256:8924d792b5843994537f8ed411165700b27b2bd966cefc4daeefc1253442a9d7" + ], + "version": "==0.2.2" + }, + "certifi": { + "hashes": [ + "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", + "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9" + ], + "markers": "python_version >= '3.6'", + "version": "==2024.8.30" + }, + "cffi": { + "hashes": [ + "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", + "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", + "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1", + "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", + "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", + "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", + "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8", + "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36", + "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", + "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", + "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc", + "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", + "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", + "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", + "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", + "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", + "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", + "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", + "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", + "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b", + "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", + "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", + "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c", + "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", + "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", + "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", + "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8", + "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1", + "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", + "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", + "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", + "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595", + "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0", + "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", + "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", + "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", + "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", + "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", + "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", + "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16", + "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", + "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e", + "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", + "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964", + "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", + "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576", + "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", + "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3", + "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662", + "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", + "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", + "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", + "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", + "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", + "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", + "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", + "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", + "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9", + "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7", + "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", + "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a", + "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", + "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", + "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", + "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", + "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87", + "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b" + ], + "markers": "platform_python_implementation != 'PyPy'", + "version": "==1.17.1" + }, + "charset-normalizer": { + "hashes": [ + "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621", + "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6", + "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8", + "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912", + "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", + "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b", + "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d", + "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d", + "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95", + "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e", + "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565", + "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64", + "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab", + "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be", + "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", + "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907", + "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0", + "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2", + "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62", + "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62", + "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23", + "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc", + "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284", + "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca", + "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455", + "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858", + "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b", + "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594", + "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc", + "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db", + "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b", + "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea", + "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6", + "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920", + "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749", + "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7", + "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd", + "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99", + "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242", + "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee", + "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129", + "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2", + "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51", + "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", + "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8", + "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b", + "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613", + "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742", + "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe", + "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3", + "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5", + "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631", + "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7", + "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15", + "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c", + "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea", + "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417", + "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250", + "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88", + "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca", + "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa", + "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99", + "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149", + "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41", + "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574", + "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0", + "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f", + "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d", + "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654", + "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3", + "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19", + "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90", + "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578", + "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9", + "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1", + "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51", + "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719", + "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236", + "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a", + "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c", + "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade", + "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", + "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc", + "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6", + "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6", + "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27", + "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6", + "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2", + "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12", + "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf", + "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114", + "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7", + "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf", + "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d", + "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b", + "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed", + "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03", + "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4", + "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67", + "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365", + "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a", + "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748", + "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b", + "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", + "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482" + ], + "markers": "python_full_version >= '3.7.0'", + "version": "==3.4.0" + }, + "cryptography": { + "hashes": [ + "sha256:1923cb251c04be85eec9fda837661c67c1049063305d6be5721643c22dd4e2b7", + "sha256:37d76e6863da3774cd9db5b409a9ecfd2c71c981c38788d3fcfaf177f447b731", + "sha256:3c672a53c0fb4725a29c303be906d3c1fa99c32f58abe008a82705f9ee96f40b", + "sha256:404fdc66ee5f83a1388be54300ae978b2efd538018de18556dde92575e05defc", + "sha256:4ac4c9f37eba52cb6fbeaf5b59c152ea976726b865bd4cf87883a7e7006cc543", + "sha256:60eb32934076fa07e4316b7b2742fa52cbb190b42c2df2863dbc4230a0a9b385", + "sha256:62901fb618f74d7d81bf408c8719e9ec14d863086efe4185afd07c352aee1d2c", + "sha256:660cb7312a08bc38be15b696462fa7cc7cd85c3ed9c576e81f4dc4d8b2b31591", + "sha256:708ee5f1bafe76d041b53a4f95eb28cdeb8d18da17e597d46d7833ee59b97ede", + "sha256:761817a3377ef15ac23cd7834715081791d4ec77f9297ee694ca1ee9c2c7e5eb", + "sha256:831c3c4d0774e488fdc83a1923b49b9957d33287de923d58ebd3cec47a0ae43f", + "sha256:84111ad4ff3f6253820e6d3e58be2cc2a00adb29335d4cacb5ab4d4d34f2a123", + "sha256:8b3e6eae66cf54701ee7d9c83c30ac0a1e3fa17be486033000f2a73a12ab507c", + "sha256:9abcc2e083cbe8dde89124a47e5e53ec38751f0d7dfd36801008f316a127d7ba", + "sha256:9e6fc8a08e116fb7c7dd1f040074c9d7b51d74a8ea40d4df2fc7aa08b76b9e6c", + "sha256:a01956ddfa0a6790d594f5b34fc1bfa6098aca434696a03cfdbe469b8ed79285", + "sha256:abc998e0c0eee3c8a1904221d3f67dcfa76422b23620173e28c11d3e626c21bd", + "sha256:b15492a11f9e1b62ba9d73c210e2416724633167de94607ec6069ef724fad092", + "sha256:be4ce505894d15d5c5037167ffb7f0ae90b7be6f2a98f9a5c3442395501c32fa", + "sha256:c5eb858beed7835e5ad1faba59e865109f3e52b3783b9ac21e7e47dc5554e289", + "sha256:cd4e834f340b4293430701e772ec543b0fbe6c2dea510a5286fe0acabe153a02", + "sha256:d2436114e46b36d00f8b72ff57e598978b37399d2786fd39793c36c6d5cb1c64", + "sha256:eb33480f1bad5b78233b0ad3e1b0be21e8ef1da745d8d2aecbb20671658b9053", + "sha256:eca27345e1214d1b9f9490d200f9db5a874479be914199194e746c893788d417", + "sha256:ed3534eb1090483c96178fcb0f8893719d96d5274dfde98aa6add34614e97c8e", + "sha256:f3f6fdfa89ee2d9d496e2c087cebef9d4fcbb0ad63c40e821b39f74bf48d9c5e", + "sha256:f53c2c87e0fb4b0c00fa9571082a057e37690a8f12233306161c8f4b819960b7", + "sha256:f5e7cb1e5e56ca0933b4873c0220a78b773b24d40d186b6738080b73d3d0a756", + "sha256:f677e1268c4e23420c3acade68fac427fffcb8d19d7df95ed7ad17cdef8404f4" + ], + "markers": "python_version >= '3.7' and python_full_version not in '3.9.0, 3.9.1'", + "version": "==44.0.0" + }, + "deprecation": { + "hashes": [ + "sha256:72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff", + "sha256:a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a" + ], + "version": "==2.1.0" + }, + "h11": { + "hashes": [ + "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d", + "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761" + ], + "markers": "python_version >= '3.7'", + "version": "==0.14.0" + }, + "httpcore": { + "hashes": [ + "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c", + "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd" + ], + "markers": "python_version >= '3.8'", + "version": "==1.0.7" + }, + "httpx": { + "hashes": [ + "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", + "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad" + ], + "markers": "python_version >= '3.8'", + "version": "==0.28.1" + }, + "idna": { + "hashes": [ + "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", + "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3" + ], + "markers": "python_version >= '3.6'", + "version": "==3.10" + }, + "jwcrypto": { + "hashes": [ + "sha256:150d2b0ebbdb8f40b77f543fb44ffd2baeff48788be71f67f03566692fd55789", + "sha256:771a87762a0c081ae6166958a954f80848820b2ab066937dc8b8379d65b1b039" + ], + "markers": "python_version >= '3.8'", + "version": "==1.5.6" + }, + "mariadb": { + "hashes": [ + "sha256:0f8de8d66ca71bd102f34a970a331b7d75bdf7f8050d80e37cdcc6ff3c85cf7a", + "sha256:2e72ea65f1d7d8563ee84e172f2a583193092bdb6ff83c470ca9722873273ecc", + "sha256:3f64b520089cb60c4f8302f365ed0ae057c4c859ab70fc8b1c4358192c3c8f27", + "sha256:579420293fa790d5ae0a6cb4bdb7e8be8facc2ceefb6123c2b0e8042b3fa725d", + "sha256:6f28d8ccc597a3a1368be14078110f743900dbb3b0c7f1cce3072d83bec59c8a", + "sha256:c1992ebf9c6f012ac158e33fef9f2c4ba899f721064c4ae3a3489233793296c0", + "sha256:cf6647cee081e21d0994b409ba8c8fa2077f3972f1de3627c5502fb31d14f806", + "sha256:d7302ccd15f0beee7b286885cbf6ac71ddc240374691d669784d99f89ba34d79", + "sha256:dbc4cf0e302ca82d46f9431a0b04f048e9c21ee56d6f3162c29605f84d63b40c", + "sha256:e94f1738bec09c97b601ddbb1908eb24524ba4630f507a775d82ffdb6c5794b3", + "sha256:f6dfdc954edf02b6519419a054798cda6034dc459d1d482e3329e37aa27d34f0" + ], + "index": "pypi", + "version": "==1.1.11" + }, + "packaging": { + "hashes": [ + "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", + "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f" + ], + "markers": "python_version >= '3.8'", + "version": "==24.2" + }, + "pycparser": { + "hashes": [ + "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", + "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc" + ], + "markers": "python_version >= '3.8'", + "version": "==2.22" + }, + "python-keycloak": { + "hashes": [ + "sha256:638a21a450a525989733299b6db1627a0656e770b6cadb2c1d21edb2244df3ce", + "sha256:bb819be1a0c2fca7f41fe045216c1aa03d612c1b62237fd9ccb98688156c4d2b" + ], + "index": "pypi", + "version": "==4.7.3" + }, + "requests": { + "hashes": [ + "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", + "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6" + ], + "markers": "python_version >= '3.8'", + "version": "==2.32.3" + }, + "requests-toolbelt": { + "hashes": [ + "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6", + "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.0.0" + }, + "sniffio": { + "hashes": [ + "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", + "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc" + ], + "markers": "python_version >= '3.7'", + "version": "==1.3.1" + }, + "typing-extensions": { + "hashes": [ + "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", + "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8" + ], + "markers": "python_version >= '3.8'", + "version": "==4.12.2" + }, + "urllib3": { + "hashes": [ + "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", + "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9" + ], + "markers": "python_version >= '3.8'", + "version": "==2.2.3" + } + }, + "develop": {} +} diff --git a/dbrepo-auth-service/init/app.py b/dbrepo-auth-service/init/app.py new file mode 100644 index 0000000000..d3a26a42fe --- /dev/null +++ b/dbrepo-auth-service/init/app.py @@ -0,0 +1,31 @@ +import os +import mariadb +from keycloak import KeycloakAdmin + +system_username = os.getenv('SYSTEM_USERNAME', 'admin') + +admin = KeycloakAdmin(server_url=os.getenv('AUTH_SERVICE_ENDPOINT', 'http://localhost:8080'), + username=os.getenv('AUTH_SERVICE_ADMIN', 'admin'), + password=os.getenv('AUTH_SERVICE_ADMIN_PASSWORD', 'admin'), + verify=True) +user_id = admin.get_user_id(username=system_username) +print(f'Successfully fetched user id: {user_id}') + +try: + conn = mariadb.connect(user="root", + password=os.getenv('METADATA_DB_PASSWORD', 'dbrepo'), + host="metadata-db", + port=3306, + database=os.getenv('METADATA_DB', 'dbrepo')) + cursor = conn.cursor() + cursor.execute( + "INSERT IGNORE INTO `mdb_users` (`id`, `username`, `email`, `mariadb_password`) VALUES (?, ?, ?, PASSWORD(?))", + (user_id, system_username, 'some@admin', '1234567890')) + conn.commit() + conn.close() +except mariadb.Error as e: + print(f"Error connecting to MariaDB Platform: {e}") + exit(1) + +print(f'Successfully inserted user') +exit(0) diff --git a/dbrepo-search-service/Pipfile.lock b/dbrepo-search-service/Pipfile.lock index f03f35f4a4..3ed83c47df 100644 --- a/dbrepo-search-service/Pipfile.lock +++ b/dbrepo-search-service/Pipfile.lock @@ -375,7 +375,7 @@ }, "dbrepo": { "hashes": [ - "sha256:e5331baeb427e2dfbb9d0085deba0b19c9b3e3505d9b49721cf86c0dff19c5d6" + "sha256:ab3cef49028a22f55e7411983e7f5040daf0e6b70d3794faeb7b49c6e04bc99e" ], "path": "./lib/dbrepo-1.6.0.tar.gz" }, 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 index d1262e2a6a79187d2692942785d6b9cf3e031765..bf639a7f68d8c4a647a8ea2feef12d4909c2a190 100644 GIT binary patch delta 39246 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%0DRC>lU$g!6(zoFbHmmpMol-si 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 delta 39306 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%0DRr`l+LC&76d8W7b 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 I7O*k^0M%7GzyJUM diff --git a/dbrepo-search-service/lib/dbrepo-1.6.0.tar.gz b/dbrepo-search-service/lib/dbrepo-1.6.0.tar.gz index d1262e2a6a79187d2692942785d6b9cf3e031765..bf639a7f68d8c4a647a8ea2feef12d4909c2a190 100644 GIT binary patch delta 39246 zcmZqN#x#8!6PtWD2gl0$6WKKDBZC$dTNGz__E~P6Cb+V~NUq+*#YD5mv4PRyWRL&6 zS9RZ6>-@`BuM#&2%M(z&{bYKC$_4Mz($d`6tFgD&<^DfE_2)}dW8G)<-!<mT{yX`5 z_vX$2m45Y|FE9UA_I;nRUG4Uk^BNq!^1J@OyZz_Q-vl0~>I1KKyZ`>}uFuC`URIxN z|K?A{kHhyK-YQ>xKK%d2yjrs_+sd-rx6Xb0UM~NyysXTF`*#;N%l=&-^?A2`-#0!! zzCJ$wZwY_j@4aFB>zqZzvtRNy2G$8bpQ`Qs?_|IA`GNo6`7ZyduRr>K`l0{dMgHIa z{qe(tf^vR|gI%BNXaD){`}xV6MWx>)UjP4av|FbB-~RF)yXzbN)ITqHp7H*u;D@HW zf5i_7^~_CO_dkEi|MilS?Rpp9+?#w%diUu&4Wd*3xBhH=yYpCF?((cZXG`3d*_(YU zD~o#)wu}4l!;jy-9X{-Qc1d2=y!-ddD#8zblM2h3A3J}0&#|K`3yUfXZ{?Wl>qi}1 zeLDN`veGcqb?4XBuhaL>_xn&d)oZR<^xN0ZPD|G~@xHm%6MSuRtToGnrdzWb(qelu z?sB~IIc~^yrleQEP0FZVKw??8WbFB^6}pR`|2(FV5XwBQ`+ekMJ-c;X%Qmb@WnY+o zzwg7&M7FlpSfkTBWTkblJ?(wt^n0KAtNW7nQgQrsHv-PR?qfT{JGs7~vW{!RI&+!d zW&ia|_OMU?$=1Lk`nDiv#^Mj>KEJ)c(*B}fSnr2(JiITqyq_I#@olhTBRem{HFMd= zJ+u564T}mJSZs~Y=xtS6$YA0Sd9jC`m8HRqyW)Dog$v*3tV;al^RIy8g;pQi{JxkA z&JXS;JlMHNHSj{khQrqP_}*_wtKajfrYYItQ@dP%PfMuj!=k=xuG+6nrW{ytWA>g^ z-w*uJ@|n-Sxy9jz-v2mLr}Hmn8N7_}+j1ygkgX;;VOQGxhffmsA6!wb&ahgFzr3f7 zf3yGJSy#68&19Ee$r-is1_P(Be?dC`#-;P_GUxEkynl3=HoNux{Gf8V1?|dlW+q(q zjn#~M4A>2P?YL9AFFesLX5@^OUS@P{7hAf?)BRP8OBXYhew@93-^%k=f7&f}ZeJ_7 z?Wwd?Z3o*8^@eMF0s;-y3G9r5HWwx1Sxj^_gR&j-V<Vb2>|yitlK!>kc#Zt3%eUnc z|0tIke$bI_OS`mcl5o!M*mRc_4XznG;xa70)gL%^FHw$py||r1CF>PMpDxxL)3f`f zgwB3o3f=jyx~%@m<?0z??U`>LfBJUcfh+TZZ~2+|2TOWnqU3GwOCLD>ZthE_D@BbA zp*t9-nW#Em6n6jfMsnG~i_T|5A2W;Os<d&QPRn@Q^ohg5@QhsmQxBuuake$Z`Vuc~ zpWkELcKCYzyN1YZnJteO+P&F6@4w+u5xED7jy^RUnz~U;+qBykiZQs)mAJ;h!+&^> zdG7H&rB8lc{}Cj*Q&TA6y2z3gt$hkRr57-AX@5Ir$l99gv|6%FBbvimDC(jME879P znazq{ctjhwGSB?n6|u=s#^}XQVI8&O)i-)J6r8I0Ew`cKd_9kg$A)=J7~UvLvnPF7 zq}s>K`D3l*gC{$;i0HmyUMat#{j=7au4UZU4;`L+ckksHj6Pu;Mhs!g&cDl@<+UWq zp*KREjhUx<-yc@rj?8P}lQVdh%5XOXar{;*d1kpqW5KMu+hbp-+CI;$)A<>qzwOUz zH=$alYLBx??^aYQn%0=r8{}@ayLsVDXOMutNe|=anZ|9U59(Bo+-2ITFn7nZhTK!0 z+ZzRc+HUrCTD0n<N9z@lfDYMbUl&E%JBI0{)I94^zupkFDXN~UG3lUZ<f;b;jwKa4 zndET#x@>z=cqc%&Vm^CKXtao8Q7!+jGL_qWZrcx7vwWUV#U3c`==Y#=X}yE2puGP| z(V}UdcSOCoV*?%6`P^0Bd*8?*jXz-G`aM4CZ+lBkmz7==oBq8^*ID)10j4ju3CBX` zv_@Z6w5s~Bah~_7<0nLKm=}n?@JJV2B;cPYpeuH$K0sH*wX6JP?SXnhp96xq?Aq1~ zf}FBvod{YLV8G{O#!({1XH<S9pryXV)2&OW=2zgS!d%yvQC62$OG$SIHn!y+k$$n` zZlFWZyeb)i{UTXUq90XE%t)HABJ?PE>K6`Y&bG4hC%sG&dzdf(?^tube~a?UqKyaM z?LP9mQKYbsW8=&z9cQxsGJVLE`W3Zy?eggbPW!_SPtz_~bZW7(z|Y4D7grXtAGl+* zpk6&dQnIj!A?m$)R14$pT$V476Sl|le>i*8RBO+zPmg;t)~Eex$r3HAUeu;<s=e6s z(V@@_S<4I;>l)A1Hl8r4txbVBlH-6+l*~)k1u};;91lxx5-?Cc$saL4+4jbY>>cxV zyBf<M==k_tEW@@=o>x6T$Le9l>gUEkQk#>?-<Q@;oVa|+&JF)JIA`WM@<t>(FL^Ao zy!*z_f)egh#%_ld&c|7t!u=W2^s<<%ltj4i=3Ty8bF|wt((mgG#dDq8KXBf<uJ+=T z%d+31XZ%=KZA|Ro=JDwZSmnWxaDaD_Z}N%btIo=;czxl<+{*JFrzbN^lzscPYQ^(L zfdsw{@&EJ-MC#A;|2(2$ry!ELP*iC4L}h1@50;bm&N{rX`Ps7Phn5IWn^?|yVOL)! z^S;W++=2$zESKZ!9?jNUb5Fsbc6M0$dG>e8x>9N0H<#=G@!G(dw&A&vqG03SMz=*< zs#Z-~qriSdH%2j+v1Z+qqm9C`HV;BPBEyYm+0Lm?<z_vwa>BB!^-EgH<~JvN^R4mq z@soHr)gwXk?yc`l3Ecv1hhJ1FUzz_Se@5lyf-~(2DeV>^?O%5aF!XpnP@b!BP_$b@ z<|GSWg@Vu96?5}UER!vDEajOmg)Ed@*L74gaFx#`2~llVDXEK6!b<*Gp)pnugpS^v zyd{Y(C~@<Hg(`Nfu^GH?UFy3xH;J1*p7nCxLa9<)gX4nf-bIQJnzvoaP5QIK;q+on z$E|`^(u|Xpt(<z<{#AJ?9Y33<cc|DR($uJxLs2l3SK{&JJD+7Xbnd8`zUOs?@6FKJ zHA|EiY_U7k{h+X#dD+!AMWxG^LgQ0qAE}!LOn%~gY0?jUp~aidN3ZpNx1%$pK6A_B z3w6)^WaT|M&amHhwR(6hc|mEvj^9L+ZJo=i=TA6TVf}I5?x^#2+=-2$OYg0j`5{G? z!R6$^Oxe|Z%1tXCadj_A4h<+5y}9UUK>n(%Q!EoRBy`OU&E7SgXiz^H^mvx^^Ld+i zna+LkSjei`eAuPrlj!sIi4P`8)f6o#ToPG7`^1(jf4C3xFR%LhXwzLA%jou_-!)Zg z9&Zw^U2tmc*Tw7gdRbG}Oc6=T+_z=fl9!o>WM+xooFRB|qt6zlV55uYSDPx&kSb)e z6OeK$mD-baHYM3Yc)d%`g|@?I7|v?m_10hIvRYI``Nfxrrc5sh<rsH~uE5X$j>GjY z&)B%7{Hov8XT5-DxA;d%k(qxzn3moC{wGW7^s*~oP4uU4;5FKC#e0oNkir3`CzDxu ze_a#fD_ZmHnCpKTi8CuA41{|we3RXNXhQwci)+rBYx3Wj66R;OK~d?ksOc07i=<q^ z<5I_KK6~ZNnAUo~c1w9l*OjP=3%GfFHw&$j`OWClVyCugdHsdGiIHcvx-qZZc1**~ zNG$LF$(KH#Oq@29Br!-Ci3?Y*K9KgPs=?mtlDxamy?w4~T}rE)u7nj`D`r)A_~X(t zCTYRP7aZND&*_cI_Bnm_!UN^&amS_!=DXe2{!}G-A!KptW##0;Imulw?pbb~vcmRF z)aPfe3`@#ZCj~`h-hJU+uNErxQsddQz-eBGggSgrFiKh{sW;qSHBn6BN{_Vok_?B* z$Lt*4W2Mi=X9eC?2>jPu7}R}bPUI|U?dzqYnZIr%Uz&J0bZ_+C-!|QuYFBiaf|Vui zv4qF!?)-h?b$o?lSkP{BmH0f{yeSViy`5ayp48&N?WVxTlxDb3u;sMF?0TV#g4gwS zG>dFl;j_r@Mv2Rh<c&@zl#=I1geQMIQX%S8bIrVV-})(AY>&hpP~70OvVrA<n5pfp zPaVZ=F;B0RwFrDna_(KNUnG54X2E@*Op_O1lm6NM`f}92!SjNFzD{SDQ%vt3ze7G> zZ{{mUzmZ$$z@Ok3u;lWTrU&2IcG&jTUtpN#`2NKqhNB@Gi<xb=YW`mn<6CsE#pHwl zqfD^7>EkPWCrS?a-k$eS?2G?_(-FE%tgqhAklv6|xwunwBjYSrqc|n~2-8^x8^1Mk zT;V#@<=4EVbJcXW@2NRO<`>tq>eTPOXf$hW>EqPJS93g{?91I2AAfI4@Alr;uaCLz zuDn)nq__TS?$6WVZjT>@KYsq~sOAc5v-^zyTJBv`km~fUIeO{Nl8anQ_A51iUXkdD zaT1kushf3_$>{dkZ?iXRCHzfVUHS3VuF8*>Z~naLx;tym{Mh+>*fgZ|XXnp)8{gRy zXL?&aU02TTf<SJJ>AJ*2dG}1#^{$@%diCjRlGC@<Y`-9Ta4u^@J;&TzTV6X@8{g6D znaq7=&U@Zk>8r(31^knBc%|yEhou>%ze<`vb<f6MZrQhHJl*o$nYYe+O43sEZI#*9 zTPp9loXl?c^|+0NJ)c?5^2r+(iG!D}#po8Pb8~21iDlD!ZEcnjAG<9wbobq>Gql4i z>(nk)w`y~}xLp1wI_L$*4!d8<SN65OF*?H0(olAM^L6&;^9(;W`bk=*_W8<k*Y`8{ zuC+AyT_|sNZJHuuV1a`{%8u>p-r5~*Vmdl4Uv&Y~;o4n06xF4s%1G7bF_`aKUAr&6 zFDT|@)*Vwnsa-8+Cq6P%{&%G8Xi8R1=y!<_uJ1=wLo9NRKW4f8-RAYdvXc7`-33nF zE67+hU7)l{km;UrZu*nr%oMA=6QwoHRaokcl^hGi89Kv{v%jCg>R{o~zG8v8Y~do_ zr#|Lut7n^eRx8yohc!4f@#G1d{Ve(+`D{i>pqhf1%JZZ1q$e)8CU*3;b;#Yvr%iW8 zM(nt&w)Mihxz7vrH7c!=XTN<?%({2&@s9ZntCcx?x1au@&~}GcYsdW=FZy_6cyv2u zl4REQ)wkUJkSF`FRcUXk^i963eKo6Dk2Sw`y%Am}aQhu2^W&}G8>R`EtBM}tm>+fc z;t!2QM@zTd6<Au_ohw-MsO$I%4`nm250jP&zg^@aWBW-YGex21P=@hM+jH{^4}SjY zx8tSeorpE;&$!kz&e}Njp_Tbx#zLi)G1@wArz@ZQzL+<&{(}s&Kig`V-q3e0YnS~! zwmo@ajtjGtGMmyIt<-;xi`{&4LpBsJ+3mJ)-8oB?&HcS}czD2)pZ&>moIZ&$xXX5b zV6`pbzb~l4pQX=v`1P_i0iuZ_h51b(t8F7p?Pfe&_$4bu*?V8Q@o_F50f7xSEHCdr z8tcV2W#_+lf2&fKET~U+^4PsmMeWh5L$5CDyqpzi`SlL3sQ!Yrfj58D=SZcjojg;j zp^9+|gVw$#=Lq&$H?Dn4D_qNx{NVZgD{dN+Uu75`2nSr`ENJeUE>;(G^5{yP<<bj` zu0-s->6-N{fGc_D)~eHsCWziroH~IeqENO$`MBw)2c=U)KhE_R{L_@cRR8d1mVI1; z-@Dyf-+i7uG5GsV_FY7AQiqxF{oaS4?^U=LFwg0Xz4kpMMxb-)O`pO~D_=1#bYtaS zG2`^v|A*9;*f#Yvbn8E~o1V4jEtm0>h{cOEmOjb|+h6W|&&c@MrpYZiZIkY(x6bJj zc%jQMbCu8Hh0kBgDLu>a{T_7egX+P<^#W{b9p<s^TkuO)G~X$@d!q!$q!XTN8D}*v z-1%2fKxPGtg4msul=&Z~x%{e{AQzr18n^${|H!BH>pt0s&(~M}|NPbS`4>8ic3$~2 zUwn7FJA3D!^M9NF-VObC-pKB`j)|_Z$@Z3YWjv>Dy}QM#QFoked9Uf$wvLpwrcw)@ zf4N~%Ut7t$zISzD#q&f4*%x>JRlMD5o)EoarQGCIq8zcO-?45j_>y3}J*_M|ZAb4y zX|=phC5HtyG;Z(N{PymxgWsZ>7rFHJ7GDT*TwK*XL!5uRf!Ga8vuj_=Ll@U3?`hq3 zz4yP|h0juFul;{v`!CgZh3fHRPnImdIeGpw|E5`Hl3vs5FH1*hSZb|4n6fD(Y-Z8q z<yZd2X?lhn{h&7|WU0IPnQ1Xoxg#`BhGm`Jwq=R-PfgXIUcK9<sI1ZWvbZH>jl{E4 z9;bqM_2$f(>TcAnmhD<-w^=p!>A~P6p>P|K^oJ>WqUTLDS8C^HaI05pwgozEnlAQW zW5K2A=StPp>z^)M-cz4q@KaM$Q|D1Mw|e`@^J_elDsO1%X8P2f@|FwMS$Iap=%=Rn zOdYYp(4e51kAzdzroY^ENW?R(GGueXrI~#0mM7C!9SxdvLFChEAGga%H@v*Pv;+P< z^YfcL|I?%^Nt1*9Hbor?KJ62A*)_oPWcH`vD4}R8m8y*?W=nTXn{>sjeqyT5oF~hs z1xB9CyOlKG?4@q@lvK5YuBUfRDbW^<j&Zvc8Z~>SwWZ(Dsne&bsM{B-pHB77$vjyc ze`w9LnIY=-OI5EQO?u+(v1#)Bqm$o0S-xb6we8{sJx_L@Xp1%B^k4h0Xwt_oJN_9> z`n2VnnBTd{^NS{Z*)pf`<)p8hA_5~%)>j+a?JN+QA0%<w<5~BX^M{t~ld(;{sIq_O zq`#jMH1&VxUsE|?)8XaKrDJNjVU5bcpvkQ2>b%bscg|5c<nE!SW4Us}lP8BJP3H0T zH`6hFx#7=~!$Fe;PW!v*m}+jk^W?~-$s*o<VLFzXg+-r|_>#4CX9jluD4HZ?dc9ck zWN%e{F}IrKt9#FaCdod2x3AN)KT<d{ODN@uzP6@h(B>0fo?U0mcBcFHO_~2`lFHYW zI?9noX-0lCO=h~vFI5ZFx)v2>v~=0ysnbFvKfZ3Ati9PF%5T%ssH|?a*kv)IpVi~F zj5keD@mV@=+Vq~4nX=sKsi*uiPtMG8JMDET<k7M@DfMS{qV#ktgD)F+dpru6cWlxm zOVRsUnk$3rPI<q(lC!gDl8tig(kUtDXS8R2T;hNB`re99={82W8&v{CH7)&(GOlrH z>sy*^y}93GQihJj@|Kjqvu;|dnI`+r?yC5-V%zBmFQJuconn4!y=6J#ep**=czB*% zdduOtztPz!30Keh<&jUH`#PQ7Sm*8O75dDV^W@4|g*z)ItvaVI<`;G~*;vdcD)d-| z<;m5j`uBMVt&TD_R@s~;c$Mem+Q_Tk9%WPK8%>Iv9Jk2x<a*1~Inz>ZtWopw>hrC< zFYY->_oPpk>giMdo}Qa0HbqUb*<JRudPnQ_(&E2tH(xarn&!M)GpjzLdU;{|k3GG7 znm^SqmI*iSY+7+~pRCoh+}w)vThsD|IvcrO<_F%JXnDxebo-jyx;dr?eq8=ocHU@v z%Vnh-_iiowutDLTxA&2f=~qwRI-kR1bd)P4E%>WQR#L#)!nLc`%vJC|qU$Q()p+i4 zg>%ww-2+cF4Ep+e#g9$<IH@&lO?}2~X{JgU<ts{MvFmxxSN;;2acyIk!GnGId~6;b z`6{`NnG=gy?|;kQy?dk9bmuLbH#l`Sz1VO;RYz!nK2Pv53&*`XR8qCB9*Ic1fB1#& z4_%2lO%ZC2v7evH<rHf4_3ppI*>%~&E@y7R_OoHtHYvwdu57#bJ%zD*YGy?A`iAHA zj0|&*yR4meNXcGp-k~OgAKta=x9y)@W4*<G*2?r`?zzHupA^rS_Ru0!V%j3fHEaK- z`-$DYmFmAFy+n5Q?qe@mb$^!cIrsZi&FW{ax%JXHvckzi9s8~+O?tw(V#&qD%T5QZ z_;}!*X~Vm@N4&0lEwI_rd9A%BH|Mm{jic6`lbb%(Z{nD$9wREU?ECH6*(><=9QM@6 zl8DQHJXQ1m&-o6uj1p%h<acfR_V6&fiLS%+_}}$B=j?mdGWxunpp<rDi+E>yKv8aQ z%_4_R`H5dxvzRPnJ<98!#r~;HDYsA3OW(2Wn=rR)fb_!|`M+nlors;<IHUG4v)+gB z4f}4iCpUFFZ?1PcYRR)T`@mC9bw)Y+R2Tni*H{X#Y;6~fNO9&bnfq&(3vYhb_G7yY zxgzhgd~y!(RhGE0LGT*GQvI$E^~rY}D%#6B-`lcehw=Y<D0}Uf&YKGvRuRjUI9Db| ze_gC4uU>cm?)pjlLhmy+X8%9;>cj0<S8xC8$Xz$lDQsgE2Wy>Oed#W_4fe4MS)94s z+t<lS|GSc9`uJXnTTi=N#k$<U7)`ZK2W9KFjnxs>H>~g28uf(ts1=uFhpanSUhc5_ z@BaVs_0=Eh|Ht3!*|?oMYf|EyH*(2l2Jb(9{TZE+R=zCl+viy~XRn-jcuv}ah2_6n z>K{+uxSQRh(2d!=;(X@jlbZES&v+-i^pxrjoU9=2SnN@I?UKftE~#bxv+`>9KCgUz z^^D3D#SZ2vHDA9*UuIvW;w2qry49xRz^nP@ES)(r+E>DQd0o{%R48}8=*`Nz^_opc z^qOGs#=xUHe<TO<>^wHnP<Q5Hrn?6l%WUR*l~-|8%D$Zaj4Q&WyO@7M-ufAy^*%R$ z2zR_vxU<VCT(*^QZLZ{Vk!-&i%nuGOIaXl3_|v&hyAJNL`JZrG=GN{1H(6iXrbOTP zGA*N`IJlH^?@2{A?(gPY3y$iBIKR*RwqVyZ*^IlZ{7%*~+<HHsLBQvqpxz=Qce&T| z^yLj-HB4<u_A`%O<ooJHi<Nt5OvRRKO3gy`^QK<be-%<2-dm8J5q;&S<bA6aJx7DZ zZQ*|939B9$X!gzP7jpGfd6!Yja@*qPK{I{P3tAR}Kl^iX*EViUPS{b%Z+6s3;$Fa8 zmF86bt=lHH)krVa+F^L=PWA2YF_&WAJEkw~JMv8R&+(SecNW$jxOd`UF8i%TM>7JF z-{vbP^wcN3j;T=G{dG@2W9#cjJcav33xbsF1g^?wUAWFJxPwWn{qf8v*S9&JOT51B zeAHXN$E$8y?zY&wD<^J?`sO1m&iTH6^J`II-Lc5zFMn2D%-XwmkKNNZ237a0tat8g zyQE=v{kqii`u&TJuh);hT(bI9d~BTa&*sC6ZQmv`O<PeQBUb<Q&-7=dzn6V<D>-K^ zy5L^S-kmvf{Q3ozmR}So-0d6K`+81d&=F-Hc8R-p=6wHEJ8=n9$ilJ{4>mqrpxeAk zd-d1sW9&9gDSo|PHiETlJNK`6zo&8ine{o>7JN3p5%0S1$UC#^4rM7^-W7754cQV; z4#+4?&!3p*E2SAPqS(=}wSMdWX0!11X?wDFi0z8%%@#;I(=V3Iu`NTU{zTXTwtN3S z7Cdji6>Cvo_FwwTmHi#cn*XY$>m7D4_ss~k-<s5A_Px%+>elVkxh19lf4};({L{Po z`}eCqK6>$>{qNPk@9)3*>3==F_wwh>w+=)-`{{4pUj69L^0|lS9&Y}tZ1evmN4?mS zSAUkP)`anGn97{<lp)&k0Cwg+4)z<TYU1bq-}mXi?V+FV+1u^k$gbVfaDUc+{}mDa z8~^q5@qPMJzvY?m^Zm_5ALbTr`1HS4`cM7V|DScf)tB*?f3Le?ANBTs&Er4&4S(dG z=xx7M@aM<xdV6+ueZGnR-^=Z>xN)<Zu_)<#LH*YMo9FazFyHI2Gt+QOR1N>JS0DE` zpO~!OdwE7Ew_8cC`i20zW{s}tWebX1m%p9!bKmpznv1_(<9Va^{a8pvS5WQa-(8X= z6BTpWj(r!kN~z2)=ifiM_pH3kqxXz*A~)KLq(k%Sua{O^+<sdx)sk?D@0G#2D1oSZ z8h2ux`Hh!Zy1JY{Zyg=~d}sWODWZFYEdy=OU*~V?m6biR{qlvtM3Z&1rhFHwJeke5 zYtDx=os7#?7WWI68-KjArao}__iZ!ZrmiaDXBM08S8&g?q`Ith<s3O1?|FA3?^GUr zlF4;vaoceL7l#jiR|PixjjsR0wl{fI+MQqb+@F=dv*B5$E^_kYqs6ldHRoiM%<ix( zT5x68<5FMt`1RL~W;uzd&N}2i(|6(f6|*j~HT0&Jr8TO?i8iR$co^Pz^2~9O;m?R{ zkM*kCg(n>r?4P_<W$DoZuFEM`dbumlgz<Qq?W_>s{I&bX1L3cW8&%?5He~5vOLjT5 z`r^w67q8CsQ%&&GPxef0*t2k1rSg8KBAK76o87h^T&}hH@0!9ik<(INmu>ti{!3_X zdB@^)naM4a;sS(EGuIYP?VTYmVlgqS%6PME5-aQ51?47L?B4EgZ|wb3wad9AS$Oh9 zS&{mEAA6P;{yDKyo5`iB(|l3wUY2Q3&xkFG_%X$NRhNL7@~q{xpC9y1-t(|}%G3Kl zPaJd62~B!jdiq$hlEb}=6DN2cI-{Vv^Tf*l;d{(-%e!`qZprOBp1y0<!4C1y&zZQG z7d%++^H}WKP4~ip<){6*!^(eY`H3{k&762GKsQpN@nQW^k08}}_vWKYTtVm9i*IBU zJ*n8@oU^XcNB_vey&qo+>pyz(baurouQtEHmuvSMz2p;dSY~lFYS{$Y%Rm1GvQAyM zOKxJH8u#lZj92|c!q#8e%_Wp;ds1YT%JNqyP2=YNn`HR!Vz`@azT(+CtG4Y9UEY|< zpB3Jhxm*2WvsX@0TK&81ZT>m?%op$McoBK-sJG**i*rI2abDJ9a@=+1pu)rq&yMz~ zA%^Q}%bsLS{}MAjKFNFkx?1*oZz3OCX&o`mHj!Z4qC4NRK}z+#^L_3A=TH6r{O7Oz z?`r#Z`z<UYe%9|R{D1yue&P<7|L42s9#;PJ|Gm6yqKD|u`fvPU|K_WItpD%x;pd8k zeb(#E7_3%yPGGiqAXZlwYqu~%aY?Py#oa4wou1d{Z{M#ve}dHeM|O%=L)Q6cd~cWk zw)*Ej>8l5P_RU^#yQtQj<4y7R(=HsfQT*KJ93|z%uKG=EPo1RhWV&gBx)Re;8UG{K zpXUD%l3~-j(3i5HV~h8`uz>P5e%XZj^PHcp5*gLCxoyHP{cD@D`k=)f&(Lz4{2L2P zCYZ!b+K?2M+vq5reNoyjySeOZ<jw!uzw7OO|Iet;uYcY?_3!`Q+y4VU{1AHc|F5{U zJG;Bmzx@3F8Sh!Q|1S^!_CNUcf6m$RH;>HvqqsR|=U)BdjHQv?$N!n?6mv{d(HH1r zT3LVXh>`rQ#SSWVAId8F7F4Xf^!`y?tF+hEj`V;R=Y#Y(v^Q=4e_rHYXLj8o6YGyU zZl{v2?hv%PeN%nU-3S|-!`l7H{(5^1zRkXUVZF`&X`9-QTrR%sSUNd!Q`n}5`}=3u z=QY~u?Y93dlJuX?{-WWvinhFH(HjExaTCQ^9kTB**YC;L9^RX6SG~xkTfR~9zi93@ zn{<BPBdadSN$H+Xi{j^f#=mf{{YBNuCC50#&$>+a(TdkLk{4!O(#YxCdY9)q@B57h z8jZVOyD^<SYuL&9)#7%!G9UlD*^1Q$$3H1t{aPd6lU1%J-?M7!^Jc-VOxI+8Ubr0X zwJo{CIE-Jd`(nLoU034DW}Xknn7bx2^qi7DJLREzp1=a;eYf+YZm+#I`-Du=K8sGN zV9CbjD-})h``uZ3H|zSeu-p#P-??((JLa?twH?(H7HLLkl(g@bw@}NoJwNki>6Dga z<?319eEUvnOp{=J`sTUCgey|syQ6}*`F`~2*zLWozE$ga(eEWf^*YIU^P3dryRbbw z@<Fa|ml8*abLoskm$%23tdP5^_J0wV$G6;#w*&VJt-gNSA!xJj@qcq4p7pCR)_#6m zsW&X;V|}0RBl)Ov|I&Z*%6&?`#mU63t-w>ClW}g-x#s@uO1}<8v-x~Dx4C6;&J*iL z(i^)T+^7gYIDhtg)t?8u4Nsk^xB6e|e$8Nt^ZO{f&L)SKoA``)U6-x5IQ~#c``?rm z;hPrDx?<G#wX<JpNy&Y$ZST9^MV&9I%hfyioApPF<5x2w;qQ|3{%@S<EV-B0Qg!~% z>GoSZHl+m4GPoC$llbA~>E-`Ytc!Npf7b83_Cv+@{;WAy&j0bg$e{B1*P69+UEVj< zA6xc5PVi~^$G825B5ZEf&F$E+De}g)*DF6MSWWg=zH}o03Y~!I_p_J-=Fa7_65d+Z zxyIBm^u_(NOFq7N$NJ#?wTYK(@Bf?oqD=OBS^i&D<JxE4l@oIRZj9^bS!bir5MTWK zW?1>}Y1^BVI}&ZP8HCP6vMEk5UfNy3wZhZa+#<ie>qq9ApY}>0gV*1g*tuyX@457c zC(4!kRQHAa__X%3{gIg0AL^(6TJ_j|QuuY#NAqQT+WtM?rJ!)M@%5wiPwtfdTfQoX z>DS^;#(Br}TNvhc8kq>P22A*&|L5#Im4{}+aVB2NbsywO-aRVpw)TXyQDtDJ#?o@f zEqS-g7iqqI6<Allw@aIk|HUl6{XTPYtoIuB)knOq2(a6~)+MH75C7)de>=W!?@)Uz z5PDQJs$!aF{*#pVYj}>yZtYyS<^z{sTG#sJd>%Kht!S}NUvXlkTK1<z*M*DL?OVFK z>ygyz7bgX;Z*|)D+3$bg=jv_Qp=JyckIx@_S9oo=eSXfq{*&Q1*KMosW%1YgWckwB zIx;B4cxB>R*GrSXOP$rW@k-F&yC@}J@am(&u>W-&o}ajHoef#`d3)&pZvslcPcM7x zy-SWQ^LKv!?KxK~wpX}CmM9w8PPyLF#eL%997XGCTptz}I=xqp?dtm#!ymHC`k%^P zjz`PpC-pCGc<dW&wB@e5Y?sgC;QFnL8U72*{3%}&Y_avO#C9!F_c#HCtLH=*Qgz<0 ze5Sm0-qyAW7R@c*FK=XY{r=FBP`6-q^v32FNkx_`LZS=HMYoDpoOp9G(dpK1`Q18q zuN=+WwU_5_@hP{(Q7^+b?+p=_y5`i)s@;D!KTiF!$=UpbN$H0&${SYB-py6*^;1T? z-XSpQzs<_1qdRA(eK}Uryn`uX%kg!Rdkk|^Cv82jl&fUBuS|;b<4H2&0iG}Aob?|Z z>NMdE67^X9caI)pT>lK`s}a*3*0^hb=|4LoOuKp|Ye}*Ha_$-K@AhxsEG{qaRxPZt z$fj)Gg=MVq;x-W(`@biAk2>I^b>l!t?EV`kMQrOo9+jPJr(iyzwZU`2ts}e3gr>RG z)&GwCdsNb)tbWCjSrvEXHZOaV{l0x=@8vaoPc=(!7=CbQKbIiI+uLQ}-`v4h>2W&V zd^z(Q1<U&~8*=_l;*IvVWr{M@+~SmOYSZ8r{qHi<ws?jcArBrX$B2~ZrkgSBxhV4c zWM1T2pO!%NdMn;9_Dgy<8wNgppL-z5SgUvP<jt$U-F%rQCaEpzxkB30)YDE)PH5%N z)>juy*B_p?T0m7{>5CP6r0!3uGnlR-{#(x2^YigZ8@W%IuUcp`{m_Ou`Mwtqf;8VQ z$^P`Ys;A{z|6`S}$FHm3d-5w{Sx5I*%gr-p$Im+QE7oC=&*2Nn^|iLD!Sy>npK0`6 z6H}Gm^Ix|s<*4%Pr%PYda2s}KzY<eV@6(xMx6kDGNzdi3->(VlZTWg;>7=z@r`7cK zc)Vph@h{o-sbWX|&4uL*+AM;L?%i<w!M9i_?w8r?z2}dK$*z5CaV2s>r$!E2tw%`G zCW)Et%}((QkM_P4G4?;IoBp7Fa>Mivf4`G|%bq>0i}LVRZTx$7R!W;}-JSF%b-&Fj z7vqmEe;63{q%UyipPd!DLQ{8^%~)hqVb*zI!>o@NkFMU(s?la?q<Jewjy=Yw{>B00 z1@<-*es?dlpELcF2Y>nlPfz`T>g_+aCPz;+>-S#Uz_hd1+4$UL@f~NAMNhRY4XnSN z{POI_1mmTbFW=DZ|EQT1k>qu5_uoi`fBnyQu}$C;3$RZQWfk?Gcl`dw&q}Me|5zgW z_1b5*bz2RW3skOZJ;T4#e_iU<-ibH%uaM$#)_DASj!V|Jr02_TEWY|~6MI(Wt6cVt z{>xrTKCjq$Lf3iU_uC!5yCWy$sFk{L$@9xjXsVA_|GrzGy((q%yy{JrFEWj^R1QCK z%i0thHRI(oW2Fq?V3##qYS$Yhw;l68W^c(E?X+x$;}(hKpP#5NZYs^1VRB@BO7LQx zzjAZ`%~DSJRA_Q3_>d&)q!`y$JC|<@x+*8cv&gTyy#Mk$p*MO;M><aGUYvNSGpeIa z)iNll_S|u|dO7ba#~iwKf80o#e>eSq((~hI9yFSKKHaV!lqS5U&`Y4Kf0Kj9rlpy` z(xauWSLOT<=V^Psaq%SPNfmo;%=23F);-`_S?{TnUn7$jvFDj=F)}gBtPOmzC+MEc z<+uH3_WilJ`LBXc`wEM+W0!qqoQ*qQmXpNtQO#z5_HyT#Piqg<OG~*J%vF_m*=gdn zve`j%<=TtqKb+&~eQ-|NQtV~+mDZ`3ez4Tt3N&@A<kfpQ=XKxR{mzox@@D>X|KrWS zt-zjB-+WU3BKDPhN=sJTJyDjkRTGuDs$RS@a$27EY{RUce$NG3+KS3-?qOHwS#Fs7 zamlWYo!3@p>u>qJf-6dB%EJ2Xg_X6JY|gIyJ7??brPBYqf0$ZqlD|B0!i_IoN)KOd zJ0>~B{v40T&&5Y0me(u43!NTs!WR~P|C#ld0KL9le}b-h?p{|berB!Tf4eG|Q%!u6 zBd_}Ssh$os-fCyMx|Z|btQ!fBPd)D0<*;Vy@;iN(r!@8*NnI8uQ2f|ObI#!w<)`(W zEv0u>E3<m^l!O^62dAw$r2Aa7@%E%mrzW>bE_&y+?%I^%$J)~jZ&m$kYw=z5c*z0H zvlj8*-IF{&*zj+z70P+^H|g8%dz~8?=LZ!%=3B)P<a4}p&I$3$EZr_^Mc&<TKRU1O zcHF^FN8j94Pg}Aj_D@FGydv#*N5vBNud_=meCqeOUkb6%xOFo;wA9uxJ-uG;(wW;V zL3i!i3~j}8^Xso&{E@T$#nm->3xv*S$r#$jDyILt``N|Ve|ufZiI7SC^Shp3-cWee z?O{;h(s}bby#w}1$jQy`y%e!y)}(aDM%h!lI$vCv#;&_G$ymcW-RSAZBCD5ARkiJt z4;^0e#Z}Y4euAhQ%W5m7n{&@)MgHI7x+DJnpG%z{8H}IOeK;p{ukc{+&`=F$@8A;& zvprGV`q42^XMxUUme_?V>Rk3e%PsS!c-HD>7v|MpQ~Q2X%YM?V=_`I8nf6<`nuY7v z++&~mFJF3m<KNDNLND_=>5UV`=J>rV*;#P*Ox}EpH%12wwr;3DJ%yF+j^2av_|jzc zHBa;F9e*yUKF*dFwpFvjvj1e)#^NsrQlcv^9@epw&vkyiac<xu$3+!2AKprw-gbF5 zi&WBvH+yAoY~QBL$1+9sYRB1+&TP&O4OIvGMfars`S5R@@iShFo6Fr_urnTW^mt$; zEfnW5u~;pj)9CZT?Hk_wVXFV`x@`LE&d*WH8(x^NVe}SWWixA*fWhVWdYRi(gW}Hz zwEMG6*Apl>U^)9qUCFQ9xyKn^%vrwf|Aia*v9+`R?>nlpe}%fdO;tcP=dAN{4A)M4 z6Pp*49rL{E$=mrM^974%1wKCA8Q{BN!=rP-3nxffJNF5k{v923=f#y(8aDmKtLxo+ zWpy29y?w@P<jnGN@vC{4-6nFen!NmR-6Wt?RCL3>#+&IAm85Qny`FU|HT0r#sca}? zw#=_@whNY=U*l(VU88EUhxMiPJ0A%ySGF!K4|kj&V0H6|Nwn1UHT<Wg{U=^A4G>>; z{B6<%^VgqFPdc+jtVd(DVtazkHP$0(0xwl#>sLmvmJ<B1ees14F*f?g_qflso?>J@ zbz!$lskUE+vnJ2e9~)n6ZMh`VQc_};9H#K9L!#<xX2tXB#s6gOb)GgqExmZ)le?b$ ziNcI;y}GZRC#J18v^e$2U!+HGW;fTP&1Vh?9#oxDUo$V2>4>M1VZ}ea{o5@*riCwy zeiL-jGjdA3%zAmzht}sWYI6L{J=#3))9o&$1(R}9d0O<mb}V(_T$rc!?uU14!Ogjg zERA)nC9Iy!SgE63m?x++ecsICZ*m!u%0~a~5{%_H{W{ZHJMW)e#2@LczZk8by*4^; z(-ro3d#-$}%IANx_HKFTFVpMcxa4@}p2@ew1^oiHnJ!f6%&YgiaQ4F=E{l_wUVS>v zG=1yqJL}f{@8Ev4>tAx?JEI#hwvQt%ZCxG~yiAYbU!iXybMVHiNBN;eb9ept{bE_T zr1iVvTXDDYeirqvKa%&qXpR2b%bU)w?>>35@#fy;KcCiw9eI4r_RNf)W!tKh`qR(J zC7tSxJ^L}(|KWmbkFQMilKEc0Gi%qTXKT*gOr4YFU*x&&dHTcne`<42WNn+i#r)4w z>)Pdfo8l{ycWkNITzr00_2YP@u&GaP>7IAp{hf7ZhU<h9HuKoBBXw#Vr@L>TfBVmK z@pt2eRdVkxzf|Z^`kDT1$-1-6vuB1ZuJ}?nan@s77ro0{+9q4^=JJ`gRYkP11y8A8 z+1{=osGuF1u$0SYm(~W~CEqwa%VX}vUz)Xb?XCqsrv8ZQe4ig(Go9g6xYGHZarX5$ zikER5Kl#M`)ZN<(9#i-Jm2k4vXN^-iv;Ig)XVNUSLQSV#JC-jOxHzd}d*=@C$yYzC zr93(PU?yAh>tf~2FI$frzn-xy#Bkp9SqE=EpS-eOV$*N+0R1oP=C@}lDpt*lYcwf2 zeL*2*y>S-5O`pATR@aR9bwB01AC<c?&)oO3FJEN)#!sAkE9O7m@}yj#Ddzz5z2vP| zieJoNjlD0YcK(raZmXBQd%km-QiIKf$scA-<rPSDcF8=!etDb1vc~Jn<S$?CQJl#p zZhImx@l#}3NPS+S@0ov1q8s0Q5L%~yULtDKrI!|eefPXx<smpLa;COrS=)`Na^{QI zZrb&&_S^#gjgMYG$`4IfD1G~TF?-zwi|O)T953&F)4+f6<)<dwEqv33?kWCy9FzUb zdA>N`eDS;fVV_IdKChVgS+nEIbFI?}3ole&JSxn#Ct;S2qo7D-cfH5m#aHdlo|NCS zS188r(*%Kg4^l)Q?|jMXKY6y@<{#C!f_+Rj%_?c}d}+>Ed?<=5{QB--mMte79XD-U zZXLJyM$VG$hI&B>M?V&une<wwu9)~Za>G5>wc9vMQuo&+>U135qr$%N(--}t3ufH8 z9lYu4+w+qu=Dn3v=+1gt92>OFrv9tN&AXrYq-RFC#@@12*6c`X?|IR^dP%XHoPXk6 zr)La~n>+8F+H&LM{xjdFNY%tOJ@+o1ru$c5mHy46u2c5x=+3rFJTm>_qutZ1Baff7 z?R(tbyeH+j|DMaL9@|RVy(i{=%$tAQE?Um#(a%Nd;zwrJpGw}`>NES@fk&Q`bTlm1 z*ISsE#y?V;r`O~8ds>D_JfraE<4uaI;x32h_@BA_{pNw)=@kzb&YQ9R`iHh-b0zQ8 zJ}CO$=c=O`drSVqrp%2tFHfw^_j+WvsYB~w%M1N*HC=mV)4Lx(r37=f$1IPodX>$+ zLr8VzO{MmuhYBvNmFMndVUy@-p1`~9-AwrdU6Z2gUqAYBa1BFiE0fy%h03owZOqPV z?aE)-`0caxVbPCzH?`-zC^uZc<Jt}3-N&sLWVg<<pLZ_4@p<f@b5B<K?Y6cKmJ5_! z>vB<6mX~?L&xhL{Y`-T^DXjDM!NeMgmChY?(<cTlKB(J&>{7xBtGjH+eurwL8CyP| zzq0+2;Gd_ro6P>#cP$D0-}C?6Tj&2mm7msdElWx-3e@*KeC9>v%uNdSUi;WhxVeW% z($=rIr=qAmE6z~#>#q_gu3%QR_PRezOFuQ+F?n%tO`FN_q$4--)er3*DVpuA$Am5C zRVuIxo^(=_Db8gT;ykn7<W;WCTcb0ff*(_Je3h1UKhn^!&!2Tw!YuW(?w+kn8=kQL zTr#UiH@@b7PLk$64!sS3BNcw!Y?D<8)U$rYP`GK&g60+5TP4m0f0Uf4Vq-elz*xNg z@6JSRy=@|T(+Z9qT|dvQ=#16-R~P*cM;PrE)@<-ju2}i+Sz_fzw|SRN>wl8rj+{U3 zna6g{6Pq8UTii38Z@y}GyT#<f`4)zP3q3*w7w4_Mow#h}mR+keUhVEGv8lWKa#H$y zC!55ZnHRT3?3u{;scxb82^R;)K7$mt)YxaeO;_t@hMqt6GN9~}if4&#`6RXde*dRc zWL~@+AF*WtlVSQhmFY)M`_7G-b!pP8{Aou{?mcrc^~0(^daR!}#m)-Q40!JJ?a<FD zGK<nnMFWLY_V6!T<J}?Wdwh=B#2}VWXP=#zt+pUPtG96GxjpOc)AFKJU5}kyJ7r30 z+y3)!eSQ=%^G=V{+L>Idr@yCQ<|ONDsZK@R<y)3a7peO{=SeA_$I=t8BX0Z4{`BNo zqVU4_rGWgSyM;<t+3J#Orlxm9*p>!=)xOO6qcf~w$wXnP|K5$N>ubJTdt!BUaj@C^ z{>k%9#Q8Njq`l2s-WM?)zr-H<b;sl*CdLwH7g*Ka)qGaCwav>lrk}&Q!R+4N>ofmN zn9Oe~E`9TWnwdrU?K?U;op19BjxC=$$F!_}d(`uKxx&egrXuyb9&cXvJlc_U*NTr{ z=f8Z^7~U@~b>h0xQ44)Toq*S+o{Ei~a^m*f*^`oHyby^L)2m#^e)jFTnYKoO&5r3| z!7n<5O_$zt<23A%s_7TMVBq`XQS!2PA5I)wuMqhB=5h8XbK>@%x_UCY+JC~T$yeX* znQ3)$+dQkl<rjE-QeK`(Wv`c7XzS2tD<R~Z{$sP+{uR{^ytjy5b!@#nv%A0M*vaDU z5?gO}Iw{;xzb0F_G3)r6!&CSEEKLilHC*0bYj{l2Vd1oEU-qujy0GBaJ|oNd*Pe)+ zF1%^B{NCH3&ljF;vU=|CRDEpQJiZ5)HL`w%iW<MnVp?5Rera0u<WEa2|1Dhh{Z759 zhMmDpiCzIy&I?gL0<CTS&o0|~WMAPMH>S2_llFKo;>*cea>(WAUBRcC0&cB+zblJ> z3jLC{6r0G_WFb+-@#vY?;fR344<`T3cy;tpU_+;Zy-1$un?-&9&q!u}pE3KL%zS^v zk49B-O&3nT+?uj8yy9~(8;9|!L#(W^Yz+Pq^#R8!AImVUXMg-M;Z4r*&nuIbKR<nk z?QUy;h=sJl6hp;La&@AYt4d{^3-?Y~ss2Bz-M#$GmJdAYcT)qeY)Ia{=5Wjb>4Hrw zG|Ouz6{zJr_*r()b|HiE_m=_DliBvHIASLC_S;R@-IbMsU;S&Qe&;qm!}?TA<KY>1 zJsAV@4bB<$U+pVO_Oo425NSCk>*hUy=Lic=rT65XRg0GJ<Z$g}`Zcp^;Y;n-Y|APa zy}esJw=MR0ylK)0A9W5Ut0gbYYz&nY#7xYdW__($;eC!TXHt~U?mQ)}$r?{8y6%bW zh+#2xD^DmaYwX{7;O#v}%L{H@QWL*$GliXJeRI>!M^R{XN&OserUf;#7GzZfoT+zM zHc2C&UFo^1wsXrhcdJ&_jas)#9w_}+o#>x?ID+la_Nh1jo!lB&nZ0}3cY&OBU$(Dz zt$%H0rhNa?S%K#-Tk67QWb@iSsQP;ESNf%sPnzvL&Pxa0%#GQ6u<DMqvD_xFbBpe~ zD4i%Un*8CA)(L)<+waz1uitj~V8LtSpKc%LpL!<$I{V}e^{X;rC*PR`E*GnkO<)s! z!^3^Aud4KFwP-==M*mX1tRqa%_Ag2_QlG)`mnGoC-qQ=82?spZSi54H(hM{4>sz<~ zjH;S+L|QLKyYITH*ZR{7!<Fq~!tb|81uU;m_unV@`RM-;%jcJGMA;tWGM^t`Z?Z0c zW8NVHkMDbU4lC@wo`2fF<M9Jc<#1ntUymE4Sx=mK`qQ^iEZkS)V`zY;8}rhYm-CVt zV<L74SM}Yw{$%&$IjpPPGTLL^!WA@lna=V(3wac%D!$k_N5yEqwnm&o<aU;j12f&0 zC?u-JGOA2j5}M9y-L0{$Saah^s~WXOKkJXz)IDMBbSrT064QwME6B}cV`Lp<8QX8) z`cVAEwu>T@{=K)nu;aGs{`srq-fv0z9(&$>dSZVZ$Hu4&?J6BlB1EDxt3=<0I+?DY zE+twovozLt{^!KU@rFU7?#=02q`OqIH&{pgp2%~ZgZuA7M~+A8!Od<jinqt<9#a+F zA{bbIE9iS{@s@-`Uz#Od)<kZ*BCvX8=(0^&U7_>VuDfOHDZ0^8JGgspy#47go>*V& zqn{*iui9uel{Yeb@hYhsYt&Ay__}}L$44QWG3nAZAJg|87S*};_<DxM`^{7R9G~6x zvdYmZy<Cz%(L*b?MaR%Qs%uV0;Q6&z&aR3}Exp@4U$S2HPPC_^$zs0AS1%R^B-w5H zxaF7kyiXsErR_J}GyL+FF>ejyhV#)If809qu|+x5q>*RUS@*NC%g)ZY*!r%ceND<& zudwr)tJOK8pCrY1%(=SbX>e!6k!zPdBJLIUHRN)(-TAeOMW@_2sl7pdxAd8+#C-3o zXT;VuWq-_GbYjMq-Sx|yZ>w#%(EMDYYmTySMI%RW{EjU@l=A=A_B>YWa!pwG(WLje zozgUSyJ_Y53vV|pHvPk*W509Fv~xc%GiY%7OCJB{<Zh$Fpz$T;xpT-o=iNsxT&XD# zZg*M{&MnVB@&41`Q$d9#pOg+R4_#R8BiM1uf7{f?74cOPTF3AH30%=x|IR{eqqWJ~ zE%zMyO5QI?`M8%|G<))^2NRW)Gk&c8(BaP6|G?!-%fq#cUoMLNd8yZZ`=_b#$Lr@k ztlMU>_$TML&Bj%6_YPk3-#LFS<DsJOn~fPN*vb{o>%}ggw&IV;QGM4%cE*C+h2s3{ z?mS%dDEraM_K7Tyy<1go6pKaw;(d3zUNl<LR{wp&k^HEf)CUhLV`P0VE?)3+_ru3> z3Wi?|g;e+!?&MtVB5)%9eWaj#ncbA)s3Yxnd#0t?=qHuVIy~i5O=-=8<dvMC=dw4- z{+F!&ryaJg{#gD0AHmOL_g$9#Y9KEmr6FD4Rs89T-Nv{d>!oiV4xDh!e)amzb5wc- z-*ngCTc=+0<-khqReb$D{8<WdTGIb-SUJk=-S{(NyVC@g3MO5xyC03-wV!zN<)god z&-dM1oLRX|cbUYT4t;Uyul-xzHJ3GtR$9xX1#O=9G?h>CR|ivN>9UVrnw3Y4d-tnq z?*7AE9sF0%_n6+_3->~{pZ7d;u6|O!CR3Rv`&Yk7>+8GJXQ<eA^}Wgs;M^0x@4=!( zt<5eAXDREm%1FH5zKg3OYT|*3-(vKQrn~<tGCIREW7WeN`+JS$T^}qKO)Gm9o3{V+ zy!W%S-gKVp-JN{5e{+HS8NHJ`kBHCa3R{zYwCdR<`@;FTcJmIt4%U08teNX^^QrFt zInU;Od2r&T1;ZJWjQXfA-9hIH3T3moPKNyI-18=Sjeow^y9QhRytmpvHZI6A+F9;+ z*vnvIk;GZ?n*6QLi(7mp3pZpW{QcDQYW~vrhTyB;(j7O{+uTc>T(dW9Lfz{h=bsq` z%{+Zs;rX7ImPhNRSHJum{9=P^?0FGQ!_%>SN59qcxlGpmf4u+Qe4c3YdbJZd*CURI zPP}~EnB#T)qO1dtn=9ANanM$qJv-*ZnvmA1t2P9Qo(dIB<GS<zm`Q8kl#DMTvz+3- zpFYi0;Wo=j&gHyg@C=^W8i8HQCS1R5>=8J_J$Qze>BGou7VU$3h3<HZ-w_TLo0sc% zD7f?To_Euy&;8JIBom}<j$fPalzI)<InTa+YYC6$m|kPBi#MWfiL7e?XL9wrn$F|< z^FQ|-`rEjFmfP$1`6*|@Ypg%?{ruC{@b1L-iDxJM*=f8mD8u3mkJAjU3A2(mZBDJ> zRo!&XM$pFQ;o9t7B}UTclM=+%^XEIIycS7co3#4iJdXEf*~hY_`{!-mtz<QEd&7p? z^)U(Ex3V>D^j5@naQ1Feop9*}LqGFxA!EBm0p&AJv|I147UxVddiZ7n69ePinYDkm zt8iSs5HI&NDzNmYOW_OkhTo>U^IWv9UFmvoe`3(b6oZxKFQ0JxFK%r6<oZm)F`D^= z)b|6^H`d?dd)~0fvh-rd>z&aDGc^3V|C~6+U-7yAvH1$SqAxmzjj6v>rbQgCKXpo# z(el;z7ePH=-`C&$Rkz{m-mCxqef{|T`SJVP|Lxqj^6RW~@iUp*_Uo}7K2x2i)UfSe zrEG2Z;ex+6BHE?;&c2^;!)^ZcU-HH=PKqg-Yqxhz;wg=iE{+rUo_qg>R$0ssrKoS; z=D#Ve++A1IzxhbL^n1C~uhSELyUM0<F;`iv{kdUw^W&B?8caz|A1aRgc+RvyO(I%F z>&L>trq}1UFW1;z?bOYtJjYVvDEo{KqwZ&o`YBstHtUMr)SYSOy>EV?Nc@$HD;_#t zZr(TL%KJ}IQ8D}DHGl2wvRi&t(sp0`GBe#Rh7Z{1|DWM}^xnTUVo&NXO+J=xs}rp? z@6mhZH0GMEvl8QP&hhqj_b%JLWKCPjbk+GYgRk68)^<4gZ=T*>@8CK$m4Ne0m_*Yf zrY|~qf&YBzF`H<;3r7k*<YroGmp+UR6yGOw_Q7fozW3RD2``>=F4_2^eC4Bv*TtHj zBEEc=V5-#3=eN50+viba*S#E1>-wb?sy{vVt@#s@#kXh&-|NU93`Hy#r?^kBDLy!H ztGLRnDbJZ)+B<&daJV?lZuxLey7llyFR`-{o?EUwDU8bIj@e|WExw$)XWEM#|F7nk zFUqwSTkJ}<b^BBOqWb%`qlY8gYP`dB#gtwgpQvGZ!KSZL{PmlcIo5JgK{HJLv#oeq zFMILd?<7a&w?3L#UMD8GuQ2eBFZuJv<@l)^CvLy2kMoiJyi;nLB@ZJ*?<Mo>Nr%hZ zk{M3dmbmG2R94QhyY^67>($3|(+-8Zn%ug)A#`G;#bmwsqrbzMXXxzvZtl4?|KU*| zFH_kW|J*CLuC?jEw_-+x<~rsHKSc63{p|V9`1C^k=DclB51g=0|LCSwd5>%VzVHIO zc^4iW%BW78{xbZoTkjuj)58W|J8UwH+N>)-AL6iJ`ChHiDDrK`ip0;nOJdK6<xbxt znvu#sb-vKa#~Y7)THU?Bf1dcx6_TduYD*??o<3VIGFMOkb>Qm{h0IGI{Y}+Nj(ZY# zS<Ll&|Jslv)z$T<Qd}p-F<#p!ealvQTHU*~B2(_%4`IDMWxM>Xg@;>ye(956xJdNi z^!MG5tlE{G^gg@3V{3f;vyyk-hwJZG?@{8Hf7>(jWw8Qx)uxCGUvqDrJC*&{MC()B zvl@{tH=3UwC~~ZI%@4I^b2y#Amh#d3&vTQ%7RzqSUtD%y`lGL@RCxWbE6IQFWPUX$ zTYW<0?kkCHXA1Wi{(X9&`0(z`=&zEiCQNfHC}fHI{9RD){_E>gT>88HFEe$n@sgUB z|LxGt6939srtz}Vu0<W3DgGmOT36E34_^fS*g2=>-c6|eTHL0#Xz8_Sq7B}xvo|{l zMz?TD{JU~sxv_~v{1Ow*i<6UXY^i@8EY!QI^p=|JoVqi&!?tv7H2j$T?%0(>%Z@#H zG;jGzo7*c^Y|Q?4`@}ax-Zy+bW>&`+m44n-dhOa;+1sj9S1owGM)`62n{U&f-MoF% z>g+zAjAMDXd#C50OM7j8RAe#>KmYSt2YA|M<;;>hf3-sG^3#V>ev78A%(Ogi)5}%Q z+?iPaXHV6}8`El{9R56eb9`&I`d8EbRPQUTwH#TeCvojumKS0X)UJB-O79Y_u!}CW zvA@ri-l|%mxvBKuaw*R%yMCFu)=gTtBrCSgbM>mPPnxrQ-d+7FAN*A_B`Wq$Z^_wR ze}Y0UE!EqfaVj~scJ?akgCAZ$%3l(B?dkNaN&eS__b;!1rG8ZC^-A@tI@iL^S8V&q z!S2?zzkf!a+q>S5zUeO>3*0mkWSc%$c-i+od-iNdS?^yZu!Qf7316qh^tvlc*5+Ke zFtbldS$u-zr!8OP<{5-@w@)eSbKzI|eqsvW<gI^ZTd7+IJu92O#`kctvbopGbCaI# z@S1ld@RLN|q~oQNE~M4Ze_8Zb<f`%6aHr$Vox7{Qb}u?(V6wZsruCNOxhY4wI-;2( zt4p-spFZ__)2DrF_UOZyH7oB;e|z5W;Q!;Nq&I&$HswvPq-~pV+WYRJV+Fgbey*Dl zvfsPlNXoaLCV4YNG|nI83}%?I;jUQep(RxnrvyX~ep+65*eCUWecZ=yLV-+Cf3m`s zyh>p%Upi@R$fooalXAPC21i|Z9<G_hI%%HMskG9)ERM6UzrB3omQKdJ?j5>qYgIaD zUp*Pj6?^9C<ZoP^w>3)re?9&@`Mb<SZ*}PjTViHZh)23}8d}yq*q!mH+mm<lj5$+e z%-(*qn^^zlrI15nYtp3LNg00iKOSp#xS1u?l<Z|!y?fQKWzHL?s7bkJ{Ja-E6L)qJ zTAw;`!jU_{lO{aVJkjYkKRsT*{<&%Leto5w+R1P03$K?Nv1Wg0{+41r!$|#0>3rUn zw3nRm>k@zc6`U7m^O`YebH4kF<CdK5H3>BrtbR6xG(;Ba%*k4uxR7nLxnNrMruqif zBWj709!^cZ`{6Uw5zQu-S7(mB<x;M!FkRF5!}<6xW4riMopRhyr!HOFo1j*#+%fm# zlCzghmRm(G5Wb##Gi&2D5!vV4r@k}({i68fzdGqgy_FX7y1p)gaVZO}KC9k*sjI!{ z_Kh=gXXe)(-k73#ld&i1qfWBSrq!12h5d^K>T{1ASGfM#h;8AoS;ZoXeNJXUhkh=c zZ~o)pSLx%&+=|}j|JhiwaQ(?8t>;8%Joi|4LvPvn=K}ZG9^MF4-#PKwwhNZ}oWXl9 zl=(P{rr&NB<X~AaUF7_^w423qR?T!cDLhZ`faku~mWvx_&p)yJwRLFo^lSB#*=|Vw zG;^KlJMjvucm4UT!KNPVRtv9n>sho-wJ>0;zdK_w?~zHGQ<(S^HnqNa%o_5C@t;7e zxLuBdyR~QQN0$?eE#|HG9^%NmdXI*!LEgIAtgB*L!gr+#)~RYg*)i8rC4TYgpMq01 zO=aK3v((`EAI5!#0-ld^{bt>sfAyB;M~9}D>nA)s)4q9m*EXxy^|!vSimEUD`ShZ{ z@dE+f{}#-4(x>gtH&n$wt7MC6?|=64-21Xmy^~HCWIR6@;`OI)&qqmr!>e~MUwB`B z(m!|iw!ik_&z4_5@@Iebl=FQ5pZvXh^QLvrzQ>>M&fR<W@B1GA`??RAcddEp{QZ9I z?D>0blN;Loua@_JD~BvGURD2gP3`tyHOlg@ucbTZXKycyxP9}P{kHrzjr0C8((l=1 z`@AFnx9i7258lzQ`_{-<v;Fs@jPDOvJzB-tH~i!0FYnuDTsCdzKX!heh{C#^p6~Zx z=(jzv`xMXd*WW*0iu`z)`-%DdllccNA{K9Uc05(mX~y%h?SE9XaPJj|`oOKb6%JLG z?LTz&&97tMMU7uv(kyTMSbNm;;puDd<m$?A*cSh2cK&0_aQf66=bgQ)9N)j%bobfO z)u(f6MSN1y_+Bw6bvT}uZcR9`zEswjgJ<rHoj%iFnMsxYif#@+Q2cDyy#$6|no*X! ztm=P#lDgJjSbHr?x>wskO1dw3LgdMMr#=7OW1e+aGcOaaIJP%e>dfBl2Q?1-<tW^9 zckj#FD|WGmHedZ^s&y_V`^CdF&abS0=fuXAozwGMuQyx#t(NOwg|4La`BCZD#d|*+ zXQ;io))T*1knzD?<NL=qR|+QGQ`T^4SQu#DvM}?(s=}8BS}$5Mwa=t+Dr|36WxMkD zOm)5PwfBb#D)#KX%l`H0L79BcukAjw1r_UdvwQh%kefYi#qtv$1$U-e$x6R%>-%t2 zg*)Hp=2NzvL66Rb81-LqxsoV&g(c}nD2v65b7!y4K7DNEtXaJrEi>M8R0}C2)z4kn zDJj69{B`#3=U11owq9SEpgTkQzVz3hGKF4KwKS}z?WphUX|GS5=IecH?aGpcE9$)@ z4z+z;{;+WO^^dy}=JTD=i`aOx`oQ`HT!HgfOngzaN;h$5n{Jsk)4C1k0#({xW`6!* zX~tW>#(kGj=JuMU*I3W5-0IF4zem(0Avtt$*B<@0FM?YGC;Mx2IhKCajSUyMu5*Sl za=z)hTj6H^zOH|Js@}SI_4dtQAOE(`|Mxn+p6ybH*6ZIlY&*~GGF<UBv8{dT+_UAo zk4Nu*AN<0}o>hXm=F`jr*V9>_%crDtyqvH*cFP)jBO6cuvZc~<4{1$XAGYhB`QON! z_1eGvZ`4=Y%gHsc{&;-q-|u5@?N=sGP5kYf`2XT8_TTyJJ^S`H&y9`vU(fE&zFYhE z``Hiw|JJ|sr#>HiR8)P(pL*z_RN3}#WMuwrDBm)P>AuE)_vD>#zSfr%7<B%BFDoM> zBP;jj;II0Rk62&Svupp`f9ZetpZcZ$*V}nN|DSq`Ve{+%3asD4e*N$Izy8O6p`Z4z z{_n1KU;X#L=>P58*Iv**{nxm@@xS~Y3!7Wwzy5bO|E<0ApWXIJ!qNZJKQ5I0>(?H? z<l4&<y0w=}ZR;jxZ#Y)|*N|zd*@;L6?yot|BL3(WyEFg%!L#r50>+*g=Wj|%?8ls~ zWGC-Ge58BTE%S9!yyZRr1CIM_v6hKenl$%%WhUDj8D`7XZ2SfmTX$bLF*W&CUU&V^ zZ7*-^f4oy+J;#=<W+l9zttF(su6SBrGe68BY;t_i+7OxIg6x^c{%$Oc=XToPzEn&4 z{{LNH|0cYyUj6s)>&NfU_wUcYy6=5%&OYmVx9ao%+`RGQxm#$?#?lvGbnkqQtzLgf z@ZUE9Gq;DauDmIe-?Pl#QhSSYZ~vL4y^l=yg<r4#99b~ECMWu&`kTuFldBvu7td*q zc)F&%q3fLP>q>*?&gVDoel;c3DTY-bf$b}=#@3_WxgUd)qzzwGRd}p;BjcfTKzX$R zQ((1^LfMbXML&ENEwD8Bt<%adQCCsnJ#+2@SHDfVcUJb)-F<AEG0&`qds$DZ^V`OJ z=Y@Qw61IQ0*O%UY`(a1=S`Gg27Yenm3JN=g-+Y>LBe<d=)49SxN3hN{?9EJx2*Y*B zn_i{WOwq5M{gtcTDltK`BlYtio*lu0V)I@p-OIUNZ1}_0>S}wlV9Afh<UelSKXqQ* z+t?^sFUorPLDtWsY5Xr8S#O3~EKnC};+$}=veB&D?2!T6XMy@>SIZ*iN6JbH3yWTl z<6HQe{rvT1l_}*Fk0(9c(`^1}N_=F~<pwRry~n&n_Vn?8S34n*DV5+8TW0bj+2MHM zyqifJ#!F4b=kC{<|0TzsqjLVv!)<<QqK4JB(iTo0OJ+u&`n=mBbmsf32?-KEyPeL4 zas>-B=)97;|KE(Mk8Sm}`d2;~9iJAeiN2c2d|Og{YS5Jl-rs)OH0bHHvRS)oE1z4F zF;}K|S}@nf<qzgho%m89@b038Kb6IWi%lXXG#@#z*SL9i=Z<3~-I0u{p36C#UGnZn zy|QRt)Y$PyTJMvEjfRm(M{Z7rQOit+Bh{DAUGQ13l*8`9MW;gs+ULG37iFp6azk!G z)$_7B3BeoEq!VA<-oAJO>*R>5OIWREK7R4{+zB5a)@OxGZ`2dTgnvXw@of>D?keFI zzEfzCYN&SfGZPPK*IR2ZtmRm7DgW5w^pAp{L$g+%`tzhKM>p)-uQi2Sha=f<W~@v& zzirP#$>y++yw9`)txeasAH5f6emi~c>FxF65x);^cfQ8>>U3UH+~*x0J<NBMjGktj zFL1eb$WAK%o=dI6!bf&1W<FY$9Fr;Lb1bOjWrJLh^J59y%DX$<Dt4DIJ3s%=r5)4w z-y13g+ST9OlM(a3t3N;Y`j_LYO1?0idj0;^+3xuGeLHJ9*E`*oy>E3d_sg={Z~fb9 znt$dz>aDL?HSdJjqFc|?m!F+o99eWgr`n|B)aUJ+#OkH5))rTOoV?~`MV|et_WTsx z8sV#!yLVU~U!F1hllt1tuhW{JSt@Az+vR?C7y6Vod$D$p+uc0@&1_u4PxbUy>ZbH8 zT3W229B3lJV7p>dP01rs`8ieU^W5H=)eH6Kz1>&!>($xRv}U<)GUr9k`|0P$?Xx`G zK8-zQR_F3`^|QrxKHa5`LfkL>q;uoMDxAJ7xoZ>dfAPT7WIOxpt<ulKYpxvX>brOH z_@9&O)8~Bnu;F>fm#0$|FAMDpi5FgSZ^25_qf5-BzMK}>A9r#6yvfx8vi0jTeeZN0 zy^wLyT5$2bAFXwFyW?Bff)y4ze)WlbKmW_?a>J!pey@G;SGD(HSkJ>ZZ5<^l_X1~c zUvzdl%gwb7Z=PoVDpfz(GP&c2Yr#D(i}*`F@>IEhbk==k)fAe;%=n!1;3d%we|!q+ zWIWUkNA~=1olwe}B7UVyJL;$U)IYJ)RF?>r9_{esNRMsYJpX<WKmVh<s(U{l(LZ;I z<;wb(*XRByb$a}oZL&?EO8v!*nG$ccwQdTl#{ccD`y2gdQRR!y$_m$j?<`l=ci2@o z+0`p4-Vj&%px(4u|3Qs&@skeAUo($=5A5sL4`4if{>pv#i}xkB9&*vPzr4Qx(RF{5 zTl*y5`kQFi8fvf4+)|#jW&O(i))((*zk2WY<@+py3Uz}Yv#RzB@7=Gq=MLwd`aR3! z-nsDm&N7TX6EWHA)}oZjZrR-z%{cY99q^u<u#r{Ax9O<Z29uTS(cc_i-xYiPSAEs> z>0d4UMIZl`-urud#dq^X)9byvRCH=ZB7V($_I~k<{qr+<<c~_!E&FHJ^>1D0q*}+5 z_QA8|Q)ip(>n}3Pd?SDKM!njrpBgKkr%PR|cQ;%#KQpve#{1&2)>%JXlM9YW+zY7h zd-0xEygn%6l8j|i-@OYzWDNJ2$Fz7o^xSK`=zFo$eTSa+bB-BIh-o%36qsS5ZY9lO zW&J$Jcgs&<$7|vf<_haDGoH3gELYf2?H7}*u;Z9%?=|tow(2X`nO<>A?bbe4=V-g5 zXs__s9raCBdK_8d4z-R~9vf-C*f~f1{R;c=FXfIBC9G`vE6T&a+*@LJBZ+6a`j6AE zyW&k|&zo`9TWY@gv2xElSA_3;nPl*SlP4~4w)4ejqP_VV$I4w*+ZR32uDU+?J;!I~ z#-G}U{sbiadv7v(f9K6T%kI@){B7EMLR@**vPu6uR_Vqh)(h_EXl^`^&|Ssv@?KY} zTH)BeMHktUw&=c66tLZr5yoVwtt*wQ;C5TdihIeNXIwKw7D5Eqd3An_4X9uD;(gBs zmCeVaOcpuxbzDnRxR%!K#kNT$&|hK2a^Jn}i@uw!-5;QJsHHO?VUh0)4py~WG4dg= z^uz0p>Mwd7aH{^L_c|4?r=6?)9*OVeernxhEK;zIbN<2u>9dc?b#2_v*}U*T!fZF` zu8a2st|&8p<((?iIm!IWDUU5h&U0#2EPm^ov{f6n#dDmiW_+&C@_cW@XWhg{jtP%i z3a*J-RJ-o4dUQQ{)pvzgf15vi@_g_#{8ge()sLxOeXb|#gZTG%*USC$EdKplBS?4Y z{n@uyW(LoYF_<X0`VYhLiOfb1H_qL*bVsIb_Sz$Vn^$&enTp=O)aje|X4fLIWVQ&q zC$|lC)_Wh1;nL?!vtv7c`}V<%j(K~fa&I*5jQafNpV<`NZBHlbR(^RcR{k;P?*596 zrVQ3%`X!S2ytVl!{#-~qSpP1+{$j0RVXMtEsl(SJ<uab0nh@r2=I%kkC8sVFJbmWX zW?d_EOHR7$jI~sEY{jnnJjWed?3N!26zn<OqFpJQs(9$fT|3VDr4=jYKbZSI-Fw<w zl>@$E3b)e#Xl$slf71LiT6RNlKDYJrqb!nQ)hmtjU->M27VX$>vEI7bWRank`?`7y z9{t%9E=w=YeAM24ye+l-FpKp35UKjQl*bBzKc`sgEH84)oOgS!R_Dv>AD>DX_}t;M z&3*AF!|W{k|Jx_Hxy`@kOfPlt<H;%4Qr}fq5-xP;hGX?lX|Go?dk@W9kht6Y-%-9d z(YH4q{&=MJiDuc-%GuNT^A7qs%(2N(PW!aXvcAT&(ea>9)>Xen&u=aB|6>&yC=l<{ zC9ZMr?8!9wsL#S|6K{1bQc^ztvg7bU6P@Ws=WD*7Oqy@SSN!{7?7_UMg#YKb;-XpK zUsx*r;t^M1f5H*#gv7#yK5JIp^v!>;+f44<D!ssKvu2wdcG!Ejf77x9*Oyp1-<O;5 zZ-?{BKbu32)HlfPeqUxGeCfm|(fW_Z(*CkXC++#UE1;v>nsIVc_Dn~P8z)o(-BXuM zTGTmd4)?~H+CGz3T|BXjS$p@PlowpDeGl#_&U5zn?h%!(xmq$|m+syP+IME3(@>oh z<g4-0Wqb6cC(BO7bcb^`&EYw>xH;fLd6@^N<AjT)CEYuZZ4cJ2?{lwQvR*qpvFKvy ztE@ARs=l2`JNcz{{uS3xUfFH;tIyu>IC(24I$f(Wv$9Nax`*VNOxB3FJHqXraRMg1 z0t#;&|J-uz@(_`l673TEd17?aFU_7fXNwpcPhRH9-H*~ht0{aFdS`A=Pd^*e^<(*= zS?8H*0tGfMo$57n(#i>^>z}Yb4W24u-Y0%+oA1fJY0>*6N`yWeeY*VeLrU1*n(lck zqKtK)u(Y3e$h+~W-CL*mwVmt5zE9u2WB<F<xw3QYqDz*}*nGp^ut@a4jI9?wAJ)69 z$7`@SSEG|fWb?t&bf!Mn3PGW`jbFOvUR(5djjgbEtH+GP`o+FSCcJ99e8TWq{qKx( zYZa;{?4I|<Qcty~Y#Qfj{*JRVPiwB!koD5eTc9lyb4JqYVA8C6dt3JTOv&ZdFyMQ$ zg<IvY`AQG5y>s7dT+{w!zIXm{>7T~Z&zS@)!z#l)<T?|)Mb<fdDl<RL^Mc2Kw=3zz zBKK$Ne=j!7%=@!F_4s_2g;zJ;*juw?QCfSwnf+edR?~$H9#cA%^Gao+IxoZ)xviYY zBI$QiX3c6V!Kl0jyZH?>&UwUa+^>8$eNoH9cd1D?ium(xEpU8$svxLxQ&XyR{;i6j zyxl)fM=rmc^SR?>o3pq5miLmST8BB}Rtc@Wm@Bb2Gu~V;DqrgD=F2O3x8?6*<P2Wh zdHUOH<N8}^`;S<MT>ISnEV51WNL9{`myPq{F3q$0Gx7Fck-H4_Pu_F?`|Z@`7*xXW zXX5_<7oQ0B{j+~lEt&S?)00W=3+~?9?y-XDz_Fw6?Ch56KZ@LZbg{#WZXVs;7Ef<f z<?fp167*R;PT>Ek0z<hs9raHqf8(sbWH+(VchO(-z~A{%HlZ~<|GO5<DE`Otze}A- zFkDb=-HOZ~%1ol)D(AM>@;INKYn1tSx^?c^u;)uUTfR<eQlE9OlXq&|DGuKX*G9!3 zCIO~V=HcP_=gytiyCo~<dWk1$@xu#~=S7Ouo9Nw^&AiZ|B%}1vtm)O4HKj#&YgTSO zpxb$S1#4tW)P#IyPo1^ren##ty!GIs+4{2&VvcC7(0lUxoVHx<)ezUXlLxeOo=xBU zI_&c&r!Akj{i_3eJGRd~9lnS2<G)SIy<+C<^_{vaf&XPw`1SPtCi?l8a^rr!x%bUY zGB@6I-R;17!^`|ntyyH^xmJ7(4SD%Yb;93lhuqIjS4562yxPN7R{QPMn_q7pxy)|N zzLspqJk`m!QOl)x!M*Iu6_rJk6=ntt<}UJGqH#n$Xb+!BlGXmKeVrFCC3KX}a#`ZS z%A$I4_lj@&y|2@lGo;mi+RRe5nSF=%<1v5U+0(B}7~HQA)~~OAnfzhTOBF72f5u18 zIHyco-M0SSx|bQ<Y|FpA$>nKZap$GP5hkYEA71fH*A+7Stk<ur{3EZ&c*bp8+)pDB zf$2}5p8a}qX4AH(y?^vBKiFgU`?v3BD>lZvw^ukiu(ELc@jK3;svkW)|J;|CyZ7+g z+*up;HB~UnVIS`nfz=fy$LnQ2MO+p!TKeg<*oiB`i@qMy&D&KPy2<7D*Qc6{WqvEq zJ5JeG$QE4DD9rn4&iXu`8|jY5yDoUQz1~~X{6lq_+R7<gR-Kmnw6-JccDnj{{SK84 zsanT&l~?@Q-@I1LyYy0Cnxnu>#>gKIO^*!A-zZM2J(6uRqp^UY!KU&3g7)@5^?vqi z1eO~A{rjvZ{cFHhO{quXYmQBt_Uv+CS8L3>4_mUz6zY3F&gpn^!NGF!PAitrSI)k0 z7OB+lo!&d`OtqqR;j3d;N?)$BR5F#5Sv9F(Sw@G~^9Qy?0_PfQ^YT)Bn<goWnCTpK zXFRfsXX(zH%?CZ2X9ZN=t#A!a`kA&q!;PW7Frq15GjkWilD8HW(QFan4xRme^}&9V z{zx5B&q!N!@wR91nUHSB{G@ZO3(O~OJh$1`_^#2JlH$xdkJ1BP(~dV+pA>CBQ+_IC zr`rYg<}TrTt*b3Vlk!gN$aej{(2aeC&+~qr!<&yauh>+m)i$YM!bxM-OVw><1|??- z59v<5QGe9u$p5U4#V<Cvw0(bjqD-gGdRJACpv4`<Ac-Z1WmS&4>Quh;E;KCsy(M(Y z>wI5^ld~B5O<4`Dl}vb`Xi#3F>$%RJrE|{;pF8HJhflKf7mGMHRvWA9_{^EGp}{%h zV1oX;{^0c|pHI^`AX~!f>XI`%%*`S)cw=sq;FsCH@@4gAnaoQyq;iAqYAU}{6H{oK z7r`|xJbl-shW@_ywk)pJDVLr{8Caj<j1F-78B=`fMK$x&HCxr=Bjb<G(rhkC_WS7i zy~ZeXmW#mpZO_H{nf;FZJ6Cp&YlWurG@IYYq#w!_+nm^3@L#jux%}ANJ1-^7*vo=g z?mqb%Z+6=7{qGy8_32ejmfK@(SQ5>4b#}kaoaNE|?2cP;f9~v=S&qLCC%>QctMdD~ zlHZ;|vlBN5%Sx2X$TEf+i53;7SZ+DvpXFKRdc-hP|H%XIFn34exgX?2+&6y^F23~P z=wzAYue{FI9NgtA^ze*(b?W4cCB`3j%+XD^U2?5&n;}<D-ltV|eTMauVj30ixl6AP z+_U%7Msf9nu8qHsM?Edsf4p#?O8;+>ynlXW3p2vKMdsu(2ZfyawD!T-8P|Q^onq~_ z{*wFhlx^k~KdGAU8?xDAF9)ss@%G%&v(klP{vJ}3d``bN@mrFA{i{`)`KOmjYcFpO z@11S_>4;qBtF`G5YJ@KPU7wLCs!?C#A#`HK>+h{1OU{PJ37&uZ;q?8jrGm5f{!r}D zOJLsnL)iOxawFF<`Q=5Wdt#)%h(xIfE_-G7ZN|EaYiE|+)QP)Z>7D-Tjl#L8d(WRf z&X{R&^QWVwq{GD*_of$n{C@T4|J9%WSO1O=d;VYj{D1a;uO6N~ntF%P;N`#R&4;i2 z)z_~Nd;VYlx$?QI|H~UReg7<|S89?Ha6HRpTlt}G%SGkXhfgQ$)ZO*xSI=cHR_T?0 z*Opc)%Bh%~nmxg2A8(v&%OXdYw%H3SR`0M%6?nfTZ<}7PJYRVk@4nUitPkX^4PuUc zka~05ur&X}KjqYry9e~HI2E$)F8}@h?2ALCyV-SbD%79wy>k3vtf|!8FrVGp(x<Mx zIq-NxNKkkt`(ni&yVicKxz4*HCvQ*?Ip4Q=-IM=b|JH+u<xl>rfBBM}cjJ-P0hXWp z_m_WBQvBcVz#MV%e`-z0vU38<X3cH5^GK5?z3AU$^~sG(zPV<4MLVp_xoK;3(z!YQ zb8-9fDZG*5%4g~inDtwCe>n2-#>=-aA}oKiT+21snO!-<+Ev7|;>|aS{>N>{R|wBo z*M6}wWYvPp#(T<=Z^_*hn`Y*7x+#&J`)jq~VTXmrT%4wIZ$9uDbnW8rn;rOfk>8$z zZ+2%G@>!Ttv!6t<=I;OWC;IlL8P+><-)&Q#$}6>O?|G#a=Y83?YS*Xv=FRMLX)j~n z<mI?oq~|i1?fj{?*Y#Mq*9*95?7aK&315T7ySMAMnLIJ9nOMfXLh8_(172G5SOc6B z=ShEen7KvO%6EJ0uFKrFzQ4<j*ruq?5a2U$!cYA#@rnrwtQI0q{^>?}KGHdKP2v^r zGIz)8(w1Vp+h6mtDfevU6<wKK?=Hi3C6AGzV!9ar{bO>=)w~7&FlSqa?O(81tX)R! zPU_v4za}-mohk9PFO2t=gouBqwdkU`Cu`4L7M4))IMP{Zs{XaYxWuNo%hX~~QCB{T z@~uU$dgnB4TW=|Gd4sB!2In`i<I{I4gx$Iwp7j6ievjMr)!M)FHNV~G-}pP8pTEAm zEE{&oK~`<;>~HbCUw=n$yZw2acg%lxcJ|5d{@=5<u&}VQxpDY+{P&ChtRrsLYyZFB z^<V$=|K&gapZdT3(f=d=*Vp~a<Stf{zxw}s()SN993KC#`Tss+>;LUj`oE;){8d^n zcW?FEb+G|!gw@+&2N))BoZ46jngfZG4uAZC&*zo-x3&EJ*W;?0x0x>KaIaK8c=)jM zS(GCTd0C##c6`yltKxHoLhbq8TbtjSZh7^wV`lMX{@m*o;1djw%-#9=*X~sp_Zi-E zy8ZfCJ^zc!-n7^CU*!I8QtM;4HcP6mX`O%U!kZ>ftt`J_|M~>(3p;{M|E29xcIev3 zo?^GrXpwiq=_PqDpRrY5ySZ)Edh;uGyY2ENd%J^eW<1=|Sy-&g%<r}%b8cww>&>fQ zpS~>3wS0BZ%FAkQulDXas6LbT9q4|9#lpQ8zR!<jdt1;ru~d1-;c9-v`wj0O8Py+n z@A9T<-O=cUd+!PQ30qC8x5;+N>&RN<xhDDH*83Hr>PZ)P3Z$=>{jAIH-tEnlEdJ}` z-oXFoeoS2F?Q(sEPwQ-!_0N|xysJ9AG5`B}CpopO3)@OMeqT`&lzArX^uP1lrYtZ0 zxckSoUmsn!?LaVN!kT=mW0Ivanev{T@>Xnp&lNTG!p@S%DT^%MwJ%ee@zt|lAu(jl zd&|(nUuOP!cwxaRi>Ml}^zRe(&lL;nc5z*@WPe-8koBTnWk;KG{R_rcx6KPVG%Sz5 zUbMATDk&l4jqkmd?+w47PJ4S;M>$~I>HXmsXI?eEc%JX6(AtkmEsFOgX6PBnsxY-E zOO(E6SrGd8VV_`BL)VJ>$-hn<y2ETJoKe3vi8;k&?ZLUWN5rbj_&3<4)QRt2A@inY zzvta5J7M7|IRzp~9gIiK4{TxTpRDVAdHWewmD1c9zasRd?)+5wyxKg<T<d~Z-RJA( zrK=8dCoec(eOoH=_P&Le!xt%j<8*6YC{QbN{Qw_RRD#R?nu`}p{8SR_Dvnwm%~H{< z@DN;BZ)f73Uu_aBzwtEVyj%J*>m4Tr<ZOT4!%=#G=fv?BH<-@|yH|1SiTlxzqP<PO zKzfywf4i^AaqckH_*XaoPUOga_i&~1Pv_lx{+dsSsLEJo{p|b>Zdt~qYu7U#W~i~T zQaWkyVTDGi3#*@x24BCB_8k)osg*agWEeZQ3B7pHRa_rx;KMqd-`!na<IM8I?MWRc zAMI)ooVZRTp?XexK+_DlH*;I(Z3kU`utn~HVsFO}^`NpXERIRtiOa+k+_y^nV^|Y- zc*<|-Ci~1kTe>bWa_-IM3Nj6@@h(bt5Vtz6TK#OsQRkT%QfCZYBE4r!xu8C4)qw*y z)Qb&DGVTYySrAcQbbpDVj8VfAVV$hw)i=%@7n{rMtllTtu_M9OGw?>a**caoA>E>w zlZ}Z+?C-V<WpDT~)7WL|oa0H;P44bslYjT-T`b$>Lx&}7_DEenaJaierQj+9*HJ4| zi8CF~Psd-Fq99&tsxB3J+tValt>m5M7Kw#c_Dj^8(=L5dJsDqZSpO}=bkYma8%M7y zJ)5&jFzBMYtI<*Q7ZuJ+ERIO?<{zke*7K3$aDU5<=ml0w%<uHxo#NtbX$ZRUV8g71 z+8R%mH@LhpTtD64bVh?}=^~#l&vm9pt&AQ7aENoqy%OWH%P}#VzQs*v;Yro#FBW<$ z&8D1|jtPyfsrbNm^rN+Bp-6pCUgL7kWolnd7lla)Hfm3kDfRfIxwK7n<&o#oUs!_z z!@mUV5|G%@mnW&Pn_Xkpnm@kFc`sJV*7UsYG}~#n<Oo+t8lO(ZedffVqc?Y%$}V!> z(<D={B6p5bTtR87FJHGnX9Z95jeGBGU#Yk*GCLal)$ZYb4makrMma2-H!cXR_chTL zo%H@0Tci?4Nxz`;#2c!29i}`<X`VDMyWA`Ns`~O-2ahFPS$vl3Zb&}+-9U#Ze*4R9 zKXwLOzc0k@*B$fCQ%SRr+4K4gRhuolmGeayHZw?nQQnkfe@ScdDsApJ`%a%{dvg8M zWtNm66Qi?VxqB8Fl*9!@&p%@%^sUdSJEs0+@aitBLlf)yg$_uRGd$5v-m&#ws!C;o zK~??BqjC@I)=OJ)xLt4l`S2B&l+-Pw^JzWRrjOM_f(7RYx9Y82DYaHGT<wU|2@@~l zX<PMtB{Eps+B}#eC3`xzBww2B@RLoa;h9Z}VuFF^wF9$cUmtXfJ@fUB?xF<@2F>={ z9lXEP|IQGoPQJ`}Jlb~tL49eFr`7AbnKZ&@3;ttZafrGcAbjnMz;(|q=H*8P&+lhh z)9swL>Y}iqX~5B&g;N$Sz5O&YZN?<ols!unP6Q-(98dLsv(Ic}xEfdY`id}Zn^Tkg z61i246&jfHZsbWh_c7;QJ6O}?_Wn$@TU3#d!>7#^67~J=hk7jiLjRmr{`s>-Yo7{_ z@WNQ(-`;%^fk&Q)IVJM7^X(G15$|YAW3F7yu=Vu}voqZKvkfy2n3*m+-}LCS-eCu! z%iBA(ztlYFx+IiZ7PRd(&kCU&sb!CM`gqhNT;Bd@OXkAIH|jPy6)iCO)4?Itc690! ziw%obv)2{KO@C@yzxbx}F3+1A7z=`8jI)HCcb|7O`mMH4O-)C}YO068@*K(g+)cVp zI(+M2_Xga5vcECO=dhuC(?nS%E}3i35A|$P`;l<TDzK?q+%TbziH%o9KyP|U_1z4k z<3&4){;@6jnLJ07*WB--=hPr8`6FIa+TypgwR%jCQlFmpDd(fgTKSocAq9qyLxeWY zV$BeJTdzG^bngnu>ptH-u5m1BwCtO_AyYI`&>(S<`;{LL)=$6W@#vlKx>HXIZe^ux z5_)uLiB&>Ru=n}H9=_|Id(5kvvphZIjBnpW!GI$9<IN9>s|8LRVGB_RzUtdE<*GmX zYgNIdNqfAbD*lTGD^J>RCu_1?mXg%@uniWAHtbF6*d^s+ci7ov)up<NF}8oEJujRb zm1VC|lKG6|vX+nGq_w^&`?~hEEbLd=Qdf90Z{D1>%*8)MF4ep|zHIW|EJgn1>r;GZ zC!9NS@&`j^#?{QpZ?j~WI#?!iXDf!*En!^p`{SRie>pRPreE8$?$ET;2a@#DT_-In z?SH<#?}T~!?`vXwb!(nYnqR=VN>C%=%$IBtz1yPglF$9y-PD()6i)9da%(;-ZmAov z_%xgUn$$-t9#3w}78OZr4gIOZYLFP2tZFTJH)+O#gkHAEtFonqG;^l7AD1b-{Ej<q zk;x{et6wE2U(Z(IN_7bL)juz1$$4xtYmO!(`(*tban<W?<s4rZ<a#Xollpkcw{@1G zrsi4eUYq1jRAljNR}5d9|Ml+l%E{R|((JDblcjIE&7a(xBd+?+IB8<$ZT8u7#jZuH zaoDuwY2(XCwZ%>|&i`6={(JRgv*dGfw-hIz%#mYcp8O(5M%w?Z>Mf>LwT7K8Q`<b4 zL=^a)n>nmzh}NmxSUXuhS4<+r*zawFPcqN57n1po_u2pSUQG&i-XU8&**90+R`~B4 zg+te*br;`^GLJKhIvZAGbkFSedj0%c$8I0{TKag=U7Kvl>DQ}%oPVmlxbWlZkHw!K ziCl4-?cP!&6*PHcu5kTX#uhK5g1<Ev89bItPg-RVEiPeSad*#;&b$RHrJko>S6|Qg z>e%W3`}gMO=1CtHx_kbYXw27ZUi-qAx!C5uUzL4#oAKM3Hh0R5W@@hY_U)W<rc-5= zr&gwKc-_@&f0=)u*5hNaJ8JIe<#%9~XS51O13UZk*3Ua?Yk&WHFCiL#w|-xJ^=F4W z)AX2Y9Sx`4Ud_K=|NX*_^LKZ*ODpA0xcpyr&Y6oDA-wZ%J)G>H#LMAsz2#BcK0}j$ z$p#M3IHDJ79!sAdTyc)MW9uE0iElU(I5tV2JtA}JO8Ts1JH<1dzrr5`v#)PHx-U>! zX8L)TFL&aYUOd^V=3mIi8@Pj&)5YOY{i9h+uBg{8iuTSq;$D2cH?~9byj|org_Z5c zpKJ*e_s(UE-0BzAH{IuSdCSK1OrJaczDf=UC2s`HPC6*zU&i=t&EC)U)m&l~Rx@wx zR;&3hnDsunIpGVp-q)bR!V9OV^hg;kN%}Ik(ouig>WQyQQu0DRoaOxJb?_wD%Rm{9 znkV%<%zS4upPQvKMjQO%v)E_Y(a-B)SiOmh?*Na4mBE$md}nV@vc5G-Z(sYr_Q)Bt zHtsY2ro$-XJvXPJb)9znmed(*e+vt_ec|0vylq3zmR9~IgTrebcdXenC;$4o5A8E+ zdeWul%saU3!=Y{;7gNDUjCRdUA|?Xtzl!)~r##)<RzFwn*_B?Nw+37)w`X?o3GX|6 z&XsXfcHW1&?Ut-(UR)9lv6=nuvGIz4IwQf-8}ijMdEVbQr^l*?)#hyEFFkiKoy+6j z+|@JoZ7tY$f!8n2*{;a>%&#d{?+xTuuQuJW@2zy!Nh6)N`9fb_PKt8g7;~M?h(n6a z^3suwXQxRw%T=AJ?-DsM|EvCjokGHm%mF<0=NaCWC-d+5YV>5v#fzmc3YG2FEZE-o zVD}Tb^YY$J?_NH!Q!mn;Bv-O1U17oNtl~rd4HpEgniI|MH_u&kZeo<@J(pP>LPb+l zq_uqnb5oBsezKFiDb-dz%h%sWfIpB|W|=o1d(`jeDwkzNcYU)jVXqe`N_?*o9B&ix zR&f8^ovryjv$tPYaBtZu-o9=Bp54yt@BDkq6u=lgSwQ_p;CGGn+@>~%gZ~OuZsX27 zt7)AP_+5AZRm~OmUSwRCl3sDdee1Vr*)I=jruv?6Y3&e5ObY(s6mXGmg}vR??^C@u zWCZH%-#qbZ^o`@mk%Fzyw(iTbsQ>4#xaE-Cn|ObZ55{J}GtOJs$#p%x@p;j$+3q!* zAI~=I&3Y$L|LbmH%>g%gBSn|}0qowwe0`qTRdNDPyne_wO;_`^ZoHb|Z>v8cV}<w8 zkkZ&!8{AzA($q=<+$SGnw?5$g>HzoOd3;wq`O{e^`{thSKkg^w^H)!1^Zaa;<}>xt z4=xJzg{+%=;4xpU{~_gndS7H2^ShT{xUTt0Q!e&K|1{n8kN00_Ve9MvbF#i-_olC2 z3NbCcmy<Q3&tAHAMW)enPxH#^MT?GmE%Dzd8vbqOw70y<(Sf&hG@m>$y|ne7-JLm$ z{JGvL^}30w9uAbh7d7MSUH0_f#s%{vw>wT+7E&MJyGc}8eusR>Rddzq$%%!650?e+ zmg@}ZkX_e2?<(W!IjiGm{=Tn$?H!M7-v>YYJNwx-?F#CYm}b4|*!BBc?~Bdbewml= zALo}^?sGBAZohQeJnd7+9h=j$l1@k*oxqVf=g|)3O73i}`C6BQUtDGRe>t{#-HGK_ zG7`7>-@ajc=1YD5Cx_Zyk-b5`yLUO;xEj7av25C0#n>I?aVujPeUC_<3^Z2xtn-yu zZTFId*#(7)Us{77s$ZQ{>wEvTbc>w0LH4WN?`nTOYHIUWyn5@q)UOAvitED~Jl5yl zaax;sM)cQeb+1Y9r<P04*($x)VbUgt#pM~375*@pr+yIrVzxa{vVQw6*7!7M_V>D9 zW(!%QA1f1>5}W&J%9%$_KMH%&AFh<B^wQRux9@o6i^i2(4}M#sAe7ynICtMA1!m)= zhI#9+@9-1zWlH*I@vh5O^GC_z+DYHvy%jO=JJa<2;-;Lk>fVcCQ_e=cZST<7c5AmK z@A(<Jrb$xA`9DmnS9xz^`uXjw`h7RDm1B>u<qj_noMf>esZ&lRc8=d9i?Zt%-pJ*y z*x{UCCe8c!SKFK3ZFgDPDz+pFUA~vsbUQiXsL8SOx7AGr*yR!hA6dEe-&R*@`pD1m z+h>VMbA86zZ?D(yZ^~*+`FU$UXG<N&a_uckq~91aud?N}ana2-%@KB;@q;s9epCIi zEz`L_y!$^%vF>KpW`BXxnOC#wgLGeAaoc3|Fj+q8e7}t5p;z4d53$v^ew+U5HS0X_ znZ5eFuWXy1iaIjR;=H<-d1mg1$s3=i3FmI=?Ms<kc$ba$rI*mvnf%VL)H(hptlE^Y z?nC<F7~co`4jlT=SjT+L_=Rdf($ZyTE?T5G6xJ_{Qu%D9H|x?D5h=<3C_mLn8?R(1 zR%YMHe3;~v{3Uv3|9$D`uS?okH!U-2k38`8cgiy5PtQd)CN5%~@80!?qe-J{37c$T z?}h8Ln*Mqzda#sU5@gBL;M?V#slu^7WY3J-D=+M+RxX`T@_YaP{EKma-~XSG*RrnV zh>GJ24{-tBdLOqxKhL^f>7BB2c3g=0U7x!=%DWt8ZNC}(X}!<7GF$yfz0!_KZ-b^3 zzUby_&Yw?JZ|q#ed(`rP-BKf-Y)j71$G+}dcRhNc<BADBoEG<Y*iGeanJRJFtm{P% ze^0_=dnplDDRI7xXs5#mg-dn|vXm?qmHc*#VM$Z@iy)Jz4Py22{x8(KStK$q%CKa_ zOiWoMy=2k_nKV1LKgY6LJ&rIhl<U~NHz?I-N^8CQnp<1^-X92QzuS<t{E+mU>^{Zt z!&f5@-1W<_)B1JhjQ3}Di<Qs#jbjQPitMsmDm#CUh4ZyLlN{3?e%z+^>Z8b!fE96% zd2;z5NM4hi61GV2-(EJ={CXL0snh!3dHuKX|IG?cWl3%_U%tiPMqp)eqWD9Vg+lXI z8Rr~hotd?<Y~P2H#hMi#q>D--lvBM-r(P`Z2yHyCk~-ys!vU|DGWRUGt%WZandxq8 zDL*LMTOX3W)%%02bC>kSgyeWO$NLuQCoMkDy2>VFRB+3EQO~N^=VvWkzwt@^FG;OU zhaJ9r5c=!C^w?)rJN7yG(+l1-^k*ED4q5THvYSKsQt7={)2yz3^;avq-YTk8rtRWs z_(?JB@9K_YzouHPQ<%s+>0F|4x2r}DFV}e=z4v+Q=K1U2-@Ci7cD|3$-EupdJ9qZ) zttoc)SX}-8-KU2SAMgI1?ZkKYH@|tf{JZ+V?1cGWZ#|tI|L()v`S)#?NM6gV|Nc&H zt2~c;?D?|?V(uLKx6|VL|ElW${|-ORwz80%;`jCN-Ph&QufJ4my4b1mB|CZjF)PIx zHy#V>vIp(zv|6t(X5zt`*jnt=mdEXVA+?~%xloa7ztgD+bA&|qIv-zk@qg2v&r*L^ zN}UxJ<gNcFbu9Z9f8vhGQjcU8o)NlRZh64=*NLfn7`6O^wkCH@$>CZd6T14Z{Dqy* z7JaDL8Ft``)*a=vWm50bwocG{)h<6lbP4nKbM14DKi-Ve_5UY)a;5#HDI))Gw#l!! z|2q20YV&N@F1y|7ivzby-_$(+|Hx<ikAM9CXlehye0Vqi_wagi{zYGRhsOO|-gjkc z)6e;CcmGXzUcc&5(V2Yn>DTk~j!X@@{bmKL`<5?PH?`e(Tc(^>W~$W?x32ECz_nL9 ze?BumeQWniqr~&RlM*Z5e@kI9yfnG9I@_K*QkTv4`@Eai&fUyoTKGFHL)n_Q<b|{M zeV+{pk1M-Um;T-P=yumq_ILF=Os8Z8P8H1(+jjNfe&Gx4>K@9`?|e+(Obni4`exzU zvKHIo(779yf7zn`Mo>d%_XhTWCxu4EVun8?Udtu&7c~8u@O!~h15MMT`g;EhfA*iQ z|C6Nnztu4C+b8)yUryJ@uDm~a$Di<{N4Hx&|3Bw{@xSvw?VtaDYw>r7&2RtZ#xLsG z-r6rtZ2$aUYhA;9(Xur~HY+<`i+r8>sJiuY{ki{^|DRtkKm5N|?Ss(I`gD;C|E-0t z)Ia{Sf7RFL((^zH_E-P2w|U*q=6vq|{_ubA?SG~3`k(xxKKvCA=l}P-?sN0xuh+jR z`WJult4H{sm2Hm`k2gK`$qMIi*ltjECHo#jeL{)3Nztmf-!6w=1Wa}h+C0-_$wBt7 z6ISf1db`q1Tf!p$ui_11uJvE83KggtWC%olTCG>(YU_N@_0r_WPlDFp{5kJfhQgcp z9=YIniHhuJEhj4XE1TUr|8L)yg>~PgUoQId=GsZdy0X)6HrBrIZ4l?3y7*uuhmp!5 zeuD-%jwb2)-OS>*+f@Eoh#lxk>E}PD@;pB)cvF4y<w>6fqGvF0XZ2rRyDh}elaZlZ z?_I(T`IDEvs><bQFeceuJrNz;u{2)WAbI=Dj`_Y}8(db@&pwpfyYy$s=EGSJr|x<8 z<LfN_8QVO<P3CNiQ&!w^Z(RiI#cSCn{%VK!y`Ixw^mBj1pY!#v_sjeJd;azQ&OiC5 z{~x(tZWh1c{{M~N_Wv^o_`mo5+s~i(XFaJe-8iFR<M)+mC%ZYPO`VX@Q2$^SXY#_} z$5R?U*XR9z{LQ|umjBQEN*Ony|MK5<G5(H^fAnpC);jrrTlbpwehZ1-e)Vhmtp4Th z%-c*a--^0*NhCes>8xXE$to-BC+^sw=BexC+g7%YKg&`kc=y8E+sSq^*Y#^9r`ouR zzBQ7uTf9&qr}wGF{?=pfS|ucp+f82ddBQA~i+45@@@%@t8aF3l@?(o*4>Gnd=j=Z7 zak2h?Pl2F)yBF=b_@-vEzq;tfgmwRm|IUB?f6o8pfBuJzyl?(rd{E)o|K-9L{#Q5G zFZ`l^sNr+{y8ng0;^+RmJ~iQa;otYam;FyX$#Lq+|0Qw#PyWB)t-33BqDd%;*>>Ik z(89o_eAA?_-Ss<=D*w_y?AM#gwZeVP8<Sa{c>2sgbm_LxN{dBID-U>X-oIkEcTcj^ ztBDq|98cPQF`j*4`)X;Xzi&%?_yp?@i^3L*O0x9SuNLuDpMPbprQ!C?GgoP)T@IQ4 zS$KPyZkSf>eARu9{~f#xgXZRcd%5VDe$`gNWA`M@7XJSz&&w;6P!{EsyiRf%tCWGt z5tscJzr3A)cm2Otm+T)fX8mK@m%+t-HOs6ZO5m4ZuEdgyLjMw#bR~TqV_tUcnxk?1 z>axm9hdRTzKVzx?)YY?lZeD@Fo|Z-?;{aXfug_hq1@|gsKe{th`ev1!`Lo669OQhb zp3Auv%9fR{;=lWHUHOHVyyutn-O1hZW>Tg{Z{C)qOVw_1Dp&9Pn7YTs`(?Fkn2$=R zL0;YMQ>WE_{hRigQ=P+k%T5EuNIUgI6*^bcg_lfNuRhr-(uzIwL4Drmmd%E+qT`h2 z|4L)Osp|iG+x|BExvu(q{^|Owr|UhL7H}O=YW^aw{3rJ2jjKX=;XAf;7C%>a4u1Z{ z?635lwuQ5f#P#RdnV$a;k+j1p=u&T@!`}7Vca?tL-L{YYe_4ue`T?FxYESN!o3&X6 zhD&E3_j~0dCNg(pu4etmkDA*hUi_by)@1SR$CJs&9xXT&!Bu}p*!b^?OD#GdIyY%p zuBl?yT)n<tXi1-jXVUt4Kcud#HJY%;M)Cdn2eqkI6Rm_jXDz9?e`DQ3ApyPJ6K>3S z;u(JITbS@$`&k_t-=dw?tCqCunpA$NUs7E1;s2atAI{r<-Kv$h_NM2j_Jj4`q;}8N zkrh!s;B_$Q{J(wGF*C|szpbm+xGY&wVgI_zdU6Vb&FN>Kci7p#o~M0kW=+|(>F0KN zxlcU*>u_bhML<aCtFom#m3Z4deop+g**LSx%zl3PdG^mcP2TkVdj4ub@b~=L%MbmQ zeE28%`N`!!L$@AnmI}Wk*KV{RRM=+!zuWcxEnTT^^uBFS5MPl|xXt$7ru(*2E_XD` zWIuW_;gHC0bAC=8m;aZ9_ov_8a;#LQXo81Z!`c3&dF$;v^3$`rtS0w%u74j~wSC^Z zSevl**F7ax86A4N@RlU!wuO2N8t(BqGA*9E;-zFpZk$nk!=A-|mGh@h+sty9XMNVE zpt%cOuh;js{@^*f{5r=qrM<eBWD9)j(q>LtxR8HV!pDgveu_#={6gzLKIZw`TC|Sm za-)}dK)vRR%t<9TAC&}OJaaba-o>+j3ySNjf9|@cR66fi=@ChRj-rATBkTN_DX;e> zJLfE0e{24-+|s-AvbbGRZ&e<@c;;k&v}~FDHmz+B*uJH-)!Q6da_4IBp><lWA}0>q zz7;g(;&k5U`Mch*cd!{7CTzO4_GHZcbyHtGW#lnl?{YyuRH=hiQI!8rRoaxC0++I! zy#G(X#e<0Z0l(KTU*S;s{C{&`z6$I4|L)3h{~y12yT8om|B=^n|H3O*YDPR*yev#? zS(0_Si}#O&ro9#SOX_*P>+43z-pR4dk9jnyO}FunxJul2$*ns7&7bYO;K;e`*|ZN{ z=F4_e$^HH77I&^Rd8yWy?@zB)wf&MY*1xc#_SU>ix6fOGT{l&|-ePN_{CLY}RoC3h zdLD}!1k*CVC3+S6&*Bc>zftXK!$jvh%3t(3vXAp^YGk`_A^q)K+T6PL^(6{l*_Z!a zSyiU>{fgbM?2@`VJ>QA@409^HcA9bMX0@y^F%CMu?g*pM85yB}@y9>!-(tqMf96U@ zo9bo8sw^EIdzGKg&D4BcdpTQl#@RbQv!!kdUo~DHlxMT)_KUa2-_)+@JCf1EYjyCs z(+si2b58Sx%Kz@H5x(gAB59@WytT*bJsFnX=?yz~q{#2|ZpVI}q^CK#M~vq`{pz&z z_N;=-2i^qd)&Aec->B`ul6+leUT55Gvyb*Cy{}GS^%PRwc-=!K_{ucVO9Hp&NMCs- z^U3DeikHUG=1gg?-AaB-1ebP}+)nQ2J9;uhd28~7JPWp$9DDqjwq3t)$07T==x)Ka zIfv^DlzS5`R`IVF+##6A(pPak`-AU~1yi2A4>3!4_U)cg&hE@NJF55os9gH{^%Abc z1uC1@-mMKzQsWHCU;g#riW1{okrPh5n?HDFy_y`&-gfJkamIGxB{SQc3-hlrTE1Q) zHY3a-nr~+Kr8(QOg=Vk$8*JOPbgEYTEn8WezpsSWov1&Ws;5_6IJ5h7Ow7M+N1i%& zbxF5$3$`s@vSM8dpO=>Y@5rUjA72>>J#W13DE6$dR_cT22ZN}n1C|F^X2*R~{c(Oz z^u%S`172Q{^KQ|LW_tNqrIEdPftLRCU(+u=o%zA^Q@8QnnnykpMYSrYuDJ5Ve%c9r zqtK<{OCs0&+rBHJvVQCI3wv9yv`*h07FflU-O)bh)Kd1}Ws83t_!nusb>+4zNqvuY zv>i0%S(jMA+ng;CbJ*i#%J!GN7jFu?ZwNJ9B$;&Cbe-4*{W;sCm@0Km?bij|zOih> zJh|Ro2h)x^mG&-D3Q3hZzHQIs9_9EAC3$aVev4p@I==1KWc6hM{1+{Y>Ko;}Z^c~R zpswaW_2r*8H6^R~&Yk!F{mQ{jcy_s;d-J=WHzVVxT2Fd1dq!WC`Hn>gMS0g{6u35P zOC{E9?ah4S9cca`rI|-^*Zd{V_%lrfZKkZy)K$#gpIPxUajQuB#`unPLfh{AWa?HF z+srU)LvVeJiN%y>!i_AoeJn30G&I(GJzdD!esS52M-EYQyIy)3MW5euYS#Hm|6_rf znxUpbhpw^s-`^;GPR%LsF-yf1b*6WYTWz*#Z(kQYQMq8YPTI<U2SgJ8%vM~Q@u;`) zh)3}xCgat@Hjf-nxqM1sdH5&Bmg`Xar_+5+`Tr#z%x+F(yDMu^Sv&KI>5=*)j@Qag z@z?W*`zY`Gx8YTm#Vxk4S7kaP+kOZij%T=KaC&md?V?onL*egxr%2BJ^JQc4lDf2~ z$$ZKWZ_a04$dPM5$NhF<fyUDR(WWyB3R1QBH2I!7#R%wE&Dj=`m)q^Qn0cp}xXU6t z_eIUouXlX<=rpxIcj>O<g>$FWX0LKTvTTjd*Bf=K>u0$??I^Z5tIX8SSEKgZ_rwf+ z(Qb)3FT!+_^Y(`deqQ=Wz*_M01ocDg4hy$DKX$*JlZA6e7TeZlNwW!skxDK%FX=B8 zf5@QyN_JXS;3^^Oo9oXWR5>3c-rHLvvGK;$lkKTG<?nw-ypw5)Ia3s_cw*|t8-L#? zZ!GqRDXiXI)A_o-<Jv9t%+PH~k}XPc(sQoYKl~bB@mIWV<Ldv5G#zT5M;&B(@bPQ> zlECsC+}HlUTX=lWztiRc|E<@pI=!|zPWSx%C2prh?XG>fb9GJXiMQH9tvTX_oRu4{ zw^l!nGEHx5<KFe=`<v<?QE~d)cAVppRKM{<bkgs_SgD%-aj}OcuK8a7`CHyY=^gL) zy0b9+o;!J=v(@)0>k9Mj6ISY{O3qI3ot1EQR)X*B9kWc|i5P{fU0BDYcQ7$l<@#Jv zy;-+B4SuF}n*Cg}GJZkq`q>vIv=}5$@GV=F)ANzDwyXS1`c(<@d-Vc#i)^o2@U=5+ zxhBT6pUFVC)*xrg*Y^S+*KaqM7p{NqvF+`Rd;1@qy}hKheEVL@Iv!Q_28X-TwyQ=- zxAZnG_kH|C^X23Qsh@2JzHnN--+ChWmhQg!cOJ@2=8W%eDRP*ep?RWMYR|t{k5@mD z<8{ii*=-a$^`<QstFXjPRW_*rHVG|r<*%jJGA24Qv`thA+Ow;+{_}*>Zv7wCrX1+H zUjIH%n9-p)=0}2;BzMi_1*zK?1niyEyE02+_p}e`cdtBoo+2Q8w?@Wo+tJ<p_Ivl$ z{`mRK>aI@Y)f%gluQoqhbbMm^j#Bkq^Vcc7nW7<jaO3yF6$dW)Z0|qZQ4^InvG17W z5yhCI%w<Y^3%@8hJ;`i)_busp&eBO;N-l@bn<S~6tWPUj_VCgIj+@(OdNg-k5x6OS zhEHJI!^H;2WxE93lesQRhHY7<u+QyVWJ}xBrsu8BzBU&16B?Q%*1RuV^E^Vn{p-(W z1*VAj!avSD=e}E>E1uJT_~#$S$Btg{nKp?kr}!hDTR!Nhp3@PnGPTEDJUQ2>_DqKH z*%TAseABb3W@qaY&DWkPh+6y9Wc^E%{<mAK9&1*=&g6V{xuDup?R7@r{wH2<)p~l? ziAKcEoDn<ocI<qkXCFT<2+i^RHSI&s-0CwQ<x2}{?niv(UZ|IEW)_-zc=y-!twtf0 zYLmBC*?zzC=wJMu|J}dqKfb>4XTLymfa1zR!RPB;{;&7jZY=fl@BaEF7dO~H_!oct z@&BX8?!Pv5R6ibk!mn=PL4OVx-ma<7Tw-&Rv|de}X*tpFpy2L#Tqpg$v8!_W_4{9Z zUSfA(gBi<(*6dwQa+7wg_pAT)J2U=GgF$x2<71msbI){_Np~N;m0r4ReOSh_MR__o z6*J$yT-O_yc|6;!?&*g})x6Rb-t`Z=zG&XybPV8b{HFWhv!rnCy_HN$S>GK06xCSm zaZl{aPKDcNMIUzO)d&SJbMqQpzTVX~JNo=4*F3?OaTk0TJ5Pb8qn2FIDgVH*HB@xt z#K@%nBl8V5?iHHyXp_bC|2zMje_F5izxZc;{6F`mrj6QKf7MU^zw5Z(nB&y{y$?I; zPyfH~^oKofhojSsH!RW(H~ycR(0rF=3hR~QWtm%B;u+XIdzgP-_hoaJf7VmTam<7z zS+3wdzXwamOJ1S+k8WF2COlpjaQ#JYsqO8h99;+IruMfRY!4RpEbe()$rN>BUfVz8 zx<88-YW8wl<YwIn%lxw0@cP$d*QYtmFJty!zN!A=52^I@?YZa5zRT9L2faBx%cySk z`m2+fUK(@0=)0pl)5l1{VsB%zIg5Vq@8z=|-MCtxILmgO{hdAgc2?;-C~8$tJGA<D zc|J?9`zBkdyp>$?_4{`2cl2$!z1=A|tJMD$kBzJ5DLJ#9+c*C>{#Hk7*PogE4<*)B zB+mET^{d_QK)uYyf42Mnt-NNx|NDaUzx>lJEt9_fuK60gwyw_J>is)*c`Lo`GH!XE zA~E}%Kc=ix%xZB@@0}L0js1RqqKU?;71Q4CEfQ<`RzJt;u-X@)*ej>XcdkBlv+qHv zvUr@i&@NY&s}7$`Zsl?P7TmCX+G6+a{WUvw{;w{1J>^W7&+kaH`uPhxz9!ho^QG5T z8c5Cix@6*#vge;?TD^Aqr5-9f?`wOytZR_<-o*9h!MoBA|Ex^62x@zNci);hN6*YH zV6yV7zajtCI=E7!bobqZJFm?4TY7Md^&IcL_cBag^_=_t{PIBuS-xHA>9217Tw`uO z`&;_qe;;DP(l6JYu?VP>@$#8n->`c9lcg)w&Smb6^$le%Zk|!Mx3AG({paf)f=+kk zrUlg)%;64*<4@@qjI=9Q>&VaJz20nw;F6z5KQUDBhh-QD?f9F_n8&wLoQ?TL)|*<v z7YBa_2X+{L3Rn<7bLG2?H`~59^_gC{bRu~wcZ!b6CNGywT89+0x*Ie+wN^XmoUYfH zzO--eN)MyeJ|?GCW~U0BYq}(99d+i;?d2h#YDAJEMV%tKG{m(3zG;2YsJc<>$%Zc< z&S+K#PUQRbU(dJKnN3Q0U-+V19pTGW?izM5e>g8A!+j%>S?X77Qgd{?!0)Jz2MUIU zS7zoZY*?WGQTI!7b4~Q)PE#*d_f-r_C(N;^m)~!`Ez2mc^Vw#elV)!nPrg6#eZl2r z+(Dwd44ExvwJdQ@db&Y;rBblFnNdK`S+<3>1&iG+*8Fy7&1Tc7XnSzxPWZ~%Tz?#_ zCqI1Oa?tEwSrzMK*OaSUcy1g}kB<~oV`}TNkYlVYRZ*3lvwDf9<iWFjn|3T%-?Z-u zW6ggK#`*PqXFh0%$o)U~*nU;t{}=Q4*_~HbpL=Xy@rS+hzrlul@j^~50oF+(|L?lj zd;bkgzad%5F3b6<o@bZMzul*P@ZVJt6fsNR+N}15p;b)G`NIB=hiRQ`{as)B_-Y&$ zwWsE!Pq?S<HI>7|=p$cVHB*@^(^UOiZ(DO##y`2MS@kKhe)h_*)877Bwr*<gy0vRB z*yZ_Jm}cDC+P<<@%{BP8r^yygGo1@<%dBooZF}-R{z!1ZwzTt$7M)$QEN{`z+G{*3 zWInZD4*mP@*~7n2KD{d|`uy$JySs01f1mK^c;AU*i-cnJvVXJoDxES8-1chi1U}eU zG_&lPQrj(O?>;?TfB1O$_v;tZw4@j2%H^%IyE8fNK|tHKg;`-QiY~v8T4@-i(!8|4 z-9t-d!QR9V9GL-)`x+8empF3NOc3o7T)3clMv285r+iVyxz#&#wY7QE-M7Tfmi`dF zcuTJ9uYxvT{$Qi^B@VoIQ$2SbGhdff@N@p@|2F?-pZ>q_lYLpVrgi<lYKs>oRn;Hw z3$6cOKH*2c&aJ~I=jxt4ym4-&P2$7%jH+*)s(&08oz^TcecPG84242wbxZZPYp?kD zJl894Qc`u<2FtbYmajh;(Rt4;AakOkqT`CRs9R?$FYml8^o}Q2ReJaS71p<Y^=@-3 zpH>$9T)oc2`>SQ9v-gVg-^Cg)me(sQ&9GHT*{gczPhR7Vtu;4hPTTeA_{PWlC*+Rz zae6LE@$#!GxUOPb@WRr(b9?i|SDl)NJ*_XLhP+N`w`@_D5KuXvbGJ)wmskF!roJV= zrf-cp>cZ`}IYvL^?3^05<&Iap4z6R`IC+Loc_w3M_lKQ#R+&T^Dg?S1JKvAGRb}|I ze#xSTIZs8z7j6#}HFEAYv~AE=@tY?1-B*uSruv2An^c9jkB=|UVXW=YTX`#qck{V_ zpWZ~ytv&VcR@;SWo|W#?f0%uCz0g*5pXsSYb>_~wJMKI`b1ZFxWSUU2{Q8VbkGN+P zxCy(eP5(dJZ{DJ9D)Zz+><`qZG?*=%zy12xlC#D2E-vY<!3|roy-uw>8SOn^C&b0c zu(a!5T4MC&=B+Q|RRZQGloy1j2-ffVd-?6{?=O%0DRC>lU$g!6(zoFbHmmpMol-si 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 delta 39306 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%0DRr`l+LC&76d8W7b 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 I7O*k^0M%7GzyJUM diff --git a/docker-compose.yml b/docker-compose.yml index 30f42b197e..6e2957b195 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -109,6 +109,26 @@ services: logging: driver: json-file + dbrepo-auth-service-init: + init: true + restart: "no" + image: dbrepo-auth-service-init:latest + build: + context: ./dbrepo-auth-service/init + network: host + environment: + AUTH_SERVICE_ADMIN: ${AUTH_SERVICE_ADMIN:-admin} + AUTH_SERVICE_ADMIN_PASSWORD: ${AUTH_SERVICE_ADMIN_PASSWORD:-admin} + AUTH_SERVICE_ENDPOINT: ${AUTH_SERVICE_ENDPOINT:-http://auth-service:8080} + SYSTEM_USERNAME: "${SYSTEM_USERNAME:-admin}" + depends_on: + dbrepo-auth-service: + condition: service_healthy + dbrepo-metadata-db: + condition: service_healthy + logging: + driver: json-file + dbrepo-metadata-service: restart: "no" container_name: dbrepo-metadata-service -- GitLab From 4d2a4aa80dacd0d16e8198ed872b9f162d9494a9 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Tue, 10 Dec 2024 11:40:48 +0100 Subject: [PATCH 05/12] WIP --- dbrepo-auth-service/dbrepo-realm.json | 268 +++++++++++------- .../at/tuwien/endpoints/TableEndpoint.java | 45 +++ .../java/at/tuwien/mapper/MariaDbMapper.java | 8 + .../java/at/tuwien/service/TableService.java | 3 + .../service/impl/TableServiceMariaDbImpl.java | 24 ++ dbrepo-gateway-service/dbrepo.conf | 2 +- dbrepo-metadata-db/1_setup-schema.sql | 1 + .../api/database/table/TableCreateDto.java | 10 + .../api/database/table/TableUpdateDto.java | 32 +++ .../table/internal/TableCreateDto.java | 11 + .../tuwien/entities/database/table/Table.java | 3 + .../java/at/tuwien/mapper/MetadataMapper.java | 8 +- .../at/tuwien/endpoints/TableEndpoint.java | 69 ++++- .../at/tuwien/endpoints/ViewEndpoint.java | 2 +- .../at/tuwien/gateway/DataServiceGateway.java | 4 + .../gateway/impl/DataServiceGatewayImpl.java | 25 ++ .../java/at/tuwien/service/TableService.java | 6 + .../tuwien/service/impl/TableServiceImpl.java | 32 ++- .../main/java/at/tuwien/test/BaseTest.java | 11 +- dbrepo-ui/components/dialogs/Semantics.vue | 2 +- dbrepo-ui/components/dialogs/UpdateTable.vue | 167 +++++++++++ .../components/dialogs/ViewVisibility.vue | 18 +- dbrepo-ui/components/table/TableImport.vue | 10 +- dbrepo-ui/components/table/TableToolbar.vue | 67 ++++- dbrepo-ui/components/view/ViewToolbar.vue | 15 +- dbrepo-ui/composables/table-service.ts | 18 +- dbrepo-ui/dto/index.ts | 6 + dbrepo-ui/locales/en-US.json | 10 +- .../[database_id]/table/[table_id]/data.vue | 65 ++--- .../[database_id]/table/[table_id]/info.vue | 52 +++- .../[database_id]/table/[table_id]/schema.vue | 3 + .../[database_id]/table/create/dataset.vue | 60 +++- .../[database_id]/view/[view_id]/data.vue | 5 +- lib/python/dbrepo/RestClient.py | 11 +- lib/python/dbrepo/api/dto.py | 3 + 35 files changed, 868 insertions(+), 208 deletions(-) create mode 100644 dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableUpdateDto.java create mode 100644 dbrepo-ui/components/dialogs/UpdateTable.vue diff --git a/dbrepo-auth-service/dbrepo-realm.json b/dbrepo-auth-service/dbrepo-realm.json index e057f778d4..18dc0c8984 100644 --- a/dbrepo-auth-service/dbrepo-realm.json +++ b/dbrepo-auth-service/dbrepo-realm.json @@ -73,7 +73,7 @@ "description" : "${default-system-roles}", "composite" : true, "composites" : { - "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-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", "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 +146,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 +211,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 +256,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 +296,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,13 +401,21 @@ "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", "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", @@ -417,6 +436,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", @@ -1211,12 +1238,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", @@ -1241,6 +1269,7 @@ "frontchannelLogout" : false, "protocol" : "openid-connect", "attributes" : { + "realm_client" : "false", "post.logout.redirect.uris" : "+", "pkce.code.challenge.method" : "S256" }, @@ -1255,7 +1284,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", @@ -1278,12 +1307,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", @@ -1306,6 +1337,7 @@ "frontchannelLogout" : false, "protocol" : "openid-connect", "attributes" : { + "realm_client" : "true", "post.logout.redirect.uris" : "+" }, "authenticationFlowBindingOverrides" : { }, @@ -1339,6 +1371,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", @@ -1369,11 +1402,11 @@ "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", + "claim.value" : "dbrepo", + "userinfo.token.claim" : "true", "access.tokenResponse.claim" : "false" } }, { @@ -1392,7 +1425,7 @@ "claim.name" : "uid" } } ], - "defaultClientScopes" : [ "roles", "attributes" ], + "defaultClientScopes" : [ "roles", "attributes", "basic" ], "optionalClientScopes" : [ "rabbitmq.read:*/*", "web-origins", "acr", "rabbitmq.write:*/*", "address", "phone", "offline_access", "profile", "microprofile-jwt", "email", "rabbitmq.configure:*/*" ] }, { "id" : "25741f6b-4867-4138-8238-6345c6ba8702", @@ -1420,6 +1453,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", @@ -1437,12 +1471,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", @@ -1451,15 +1485,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", @@ -1482,6 +1516,7 @@ "frontchannelLogout" : false, "protocol" : "openid-connect", "attributes" : { + "realm_client" : "true", "post.logout.redirect.uris" : "+" }, "authenticationFlowBindingOverrides" : { }, @@ -1512,11 +1547,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", @@ -1525,15 +1562,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" : [ { @@ -1554,8 +1591,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", @@ -1564,12 +1601,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", @@ -1578,12 +1615,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" } } ] }, { @@ -1593,8 +1630,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", @@ -1603,12 +1640,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", @@ -1617,12 +1654,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", @@ -1631,12 +1668,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", @@ -1656,12 +1693,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", @@ -1670,12 +1707,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", @@ -1684,12 +1721,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", @@ -1698,12 +1735,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", @@ -1712,12 +1749,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", @@ -1726,12 +1763,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", @@ -1740,12 +1777,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", @@ -1754,12 +1791,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", @@ -1768,12 +1805,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", @@ -1782,12 +1819,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" } } ] }, { @@ -1821,12 +1858,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" } } ] }, { @@ -1868,8 +1905,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", @@ -1878,12 +1915,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", @@ -1892,12 +1929,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" } } ] }, { @@ -1907,8 +1944,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", @@ -2004,8 +2041,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", @@ -2036,6 +2073,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", @@ -2043,8 +2115,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", @@ -2081,7 +2153,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" : "", @@ -2143,7 +2215,7 @@ "subType" : "anonymous", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "saml-user-attribute-mapper", "oidc-full-name-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-address-mapper", "saml-user-property-mapper", "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper", "saml-role-list-mapper" ] + "allowed-protocol-mapper-types" : [ "oidc-full-name-mapper", "saml-role-list-mapper", "saml-user-property-mapper", "oidc-address-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-usermodel-property-mapper", "saml-user-attribute-mapper", "oidc-usermodel-attribute-mapper" ] } }, { "id" : "1849e52a-b8c9-44a8-af3d-ee19376a1ed1", @@ -2169,7 +2241,15 @@ "subType" : "authenticated", "subComponents" : { }, "config" : { - "allowed-protocol-mapper-types" : [ "saml-role-list-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-full-name-mapper", "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper", "saml-user-property-mapper", "saml-user-attribute-mapper", "oidc-address-mapper" ] + "allowed-protocol-mapper-types" : [ "saml-user-property-mapper", "oidc-full-name-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-usermodel-property-mapper", "oidc-address-mapper", "saml-role-list-mapper", "oidc-usermodel-attribute-mapper", "saml-user-attribute-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" : [ { @@ -2231,19 +2311,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" ], "ignore.missing.groups" : [ "false" ], "membership.ldap.attribute" : [ "member" ], + "membership.user.ldap.attribute" : [ "uid" ], "memberof.ldap.attribute" : [ "memberOf" ], + "groups.dn" : [ "ou=users,dc=dbrepo,dc=at" ], "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", @@ -2253,8 +2333,8 @@ "config" : { "ldap.attribute" : [ "modifyTimestamp" ], "is.mandatory.in.ldap" : [ "false" ], - "read.only" : [ "true" ], "always.read.value.from.ldap" : [ "true" ], + "read.only" : [ "true" ], "user.model.attribute" : [ "modifyTimestamp" ] } }, { @@ -2267,15 +2347,15 @@ "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" : { - "fullSyncPeriod" : [ "-1" ], "pagination" : [ "false" ], + "fullSyncPeriod" : [ "-1" ], "startTls" : [ "false" ], "usersDn" : [ "ou=users,dc=dbrepo,dc=at" ], "connectionPooling" : [ "true" ], @@ -2303,14 +2383,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", @@ -2923,10 +2995,12 @@ "actionTokenGeneratedByUserLifespan-idp-verify-account-via-email" : "", "parRequestUriLifespan" : "60", "clientSessionMaxLifespan" : "0", + "organizationsEnabled" : "false", "shortVerificationUri" : "" }, - "keycloakVersion" : "24.0.5", + "keycloakVersion" : "26.0.0", "userManagedAccessAllowed" : false, + "organizationsEnabled" : false, "clientProfiles" : { "profiles" : [ ] }, 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 d427615138..36dabb474b 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 @@ -116,6 +116,51 @@ public class TableEndpoint { } } + @PutMapping("/{tableId}") + @PreAuthorize("hasAuthority('system')") + @Operation(summary = "Update table", + security = {@SecurityRequirement(name = "basicAuth")}, + hidden = true) + @ApiResponses(value = { + @ApiResponse(responseCode = "202", + description = "Updated table", + content = {@Content( + mediaType = "application/json", + schema = @Schema(implementation = TableDto.class))}), + @ApiResponse(responseCode = "400", + description = "Table schema or query is malformed", + content = {@Content( + mediaType = "application/json", + schema = @Schema(implementation = ApiErrorDto.class))}), + @ApiResponse(responseCode = "404", + description = "Failed to find database or table in metadata database", + content = {@Content( + mediaType = "application/json", + schema = @Schema(implementation = ApiErrorDto.class))}), + @ApiResponse(responseCode = "503", + description = "Failed to establish connection with the metadata service", + content = {@Content( + mediaType = "application/json", + schema = @Schema(implementation = ApiErrorDto.class))}), + }) + public ResponseEntity<TableDto> update(@NotNull @PathVariable("databaseId") Long databaseId, + @NotNull @PathVariable("tableId") Long tableId, + @Valid @RequestBody TableUpdateDto data) throws RemoteUnavailableException, + TableMalformedException, DatabaseUnavailableException, TableExistsException, TableNotFoundException, + MetadataServiceException { + log.debug("endpoint update table, databaseId={}, data.description={}", databaseId, data.getDescription()); + /* create */ + final PrivilegedTableDto table = metadataServiceGateway.getTableById(databaseId, tableId); + try { + tableService.updateTable(table, data); + return ResponseEntity.status(HttpStatus.ACCEPTED) + .build(); + } 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); + } + } + @DeleteMapping("/{tableId}") @PreAuthorize("hasAuthority('system')") @Operation(summary = "Delete table", 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 62a5fada07..56f51468b7 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 @@ -307,6 +307,14 @@ public interface MariaDbMapper { return statement.toString(); } + default String tableNameToUpdateTableRawQuery(String internalName) { + final StringBuilder stringBuilder = new StringBuilder("ALTER TABLE `") + .append(internalName) + .append("` COMMENT = ?;"); + log.trace("mapped update table statement: {}", stringBuilder); + return stringBuilder.toString(); + } + default String tableCreateDtoToCreateTableRawQuery(at.tuwien.api.database.table.internal.TableCreateDto data) { final StringBuilder stringBuilder = new StringBuilder("CREATE TABLE `") .append(nameToInternalName(data.getName())) 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 c70d1b703f..0f2167c49a 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 @@ -69,6 +69,9 @@ public interface TableService { TableDto createTable(PrivilegedDatabaseDto database, TableCreateDto data) throws SQLException, TableMalformedException, TableExistsException, TableNotFoundException; + void updateTable(PrivilegedTableDto table, TableUpdateDto data) throws SQLException, + TableMalformedException, TableExistsException, TableNotFoundException; + /** * Drops a table in given table object. * 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 0eea223f7e..db46aed12b 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 @@ -166,6 +166,30 @@ public class TableServiceMariaDbImpl extends HibernateConnector implements Table return table; } + @Override + public void updateTable(PrivilegedTableDto table, TableUpdateDto data) throws SQLException, + TableMalformedException { + final ComboPooledDataSource dataSource = getPrivilegedDataSource(table.getDatabase()); + final Connection connection = dataSource.getConnection(); + try { + /* create table if not exists */ + final long start = System.currentTimeMillis(); + final PreparedStatement statement = connection.prepareStatement(mariaDbMapper.tableNameToUpdateTableRawQuery(table.getInternalName())); + log.trace("prepare with arg 1={}", data.getDescription()); + statement.setString(1, data.getDescription()); + statement.executeUpdate(); + log.debug("executed statement in {} ms", System.currentTimeMillis() - start); + connection.commit(); + } catch (SQLException e) { + connection.rollback(); + log.error("Failed to update table: {}", e.getMessage()); + throw new TableMalformedException("Failed to update table: " + e.getMessage(), e); + } finally { + dataSource.close(); + } + log.info("Updated table with name {}", table.getInternalName()); + } + @Override public void delete(PrivilegedTableDto table) throws SQLException, QueryMalformedException { final ComboPooledDataSource dataSource = getPrivilegedDataSource(table.getDatabase()); diff --git a/dbrepo-gateway-service/dbrepo.conf b/dbrepo-gateway-service/dbrepo.conf index dfec5ea42b..15daf4381d 100644 --- a/dbrepo-gateway-service/dbrepo.conf +++ b/dbrepo-gateway-service/dbrepo.conf @@ -105,7 +105,7 @@ server { proxy_read_timeout 90; } - location ~ /api/database/([0-9]+)/table/([0-9]+)/(data|history|export|statistic) { + location ~ /api/database/([0-9]+)/table/([0-9]+)/(data|history|export) { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; diff --git a/dbrepo-metadata-db/1_setup-schema.sql b/dbrepo-metadata-db/1_setup-schema.sql index 351410d7d3..0a43ef6044 100644 --- a/dbrepo-metadata-db/1_setup-schema.sql +++ b/dbrepo-metadata-db/1_setup-schema.sql @@ -128,6 +128,7 @@ CREATE TABLE IF NOT EXISTS `mdb_tables` Version TEXT, created timestamp NOT NULL DEFAULT NOW(), versioned boolean not null default true, + is_public boolean not null default true, is_schema_public boolean not null default true, owned_by character varying(36) NOT NULL, last_modified timestamp, 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/TableCreateDto.java index e2ef252708..602eef4e5d 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/TableCreateDto.java @@ -31,6 +31,16 @@ public class TableCreateDto { @Schema(example = "Air Quality in Austria") private String description; + @NotNull + @JsonProperty("is_public") + @Schema(example = "true") + private Boolean isPublic; + + @NotNull + @JsonProperty("is_schema_public") + @Schema(example = "true") + private Boolean isSchemaPublic; + @NotNull private List<ColumnCreateDto> columns; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableUpdateDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableUpdateDto.java new file mode 100644 index 0000000000..d8db270053 --- /dev/null +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/database/table/TableUpdateDto.java @@ -0,0 +1,32 @@ +package at.tuwien.api.database.table; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.*; +import lombok.extern.jackson.Jacksonized; + +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Jacksonized +@ToString +public class TableUpdateDto { + + @Size(max = 180) + @Schema(example = "Air Quality in Austria") + private String description; + + @NotNull + @JsonProperty("is_public") + @Schema(example = "true") + private Boolean isPublic; + + @NotNull + @JsonProperty("is_schema_public") + @Schema(example = "true") + private Boolean isSchemaPublic; +} 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 0db45a9f1b..777a870bb9 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 @@ -2,6 +2,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 com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; @@ -29,6 +30,16 @@ public class TableCreateDto { @Schema(example = "Air Quality in Austria") private String description; + @NotNull + @JsonProperty("is_public") + @Schema(example = "true") + private Boolean isPublic; + + @NotNull + @JsonProperty("is_schema_public") + @Schema(example = "true") + private Boolean isSchemaPublic; + @NotNull private List<ColumnCreateDto> columns; diff --git a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java index f81b98f2e9..2fe81e2e37 100644 --- a/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java +++ b/dbrepo-metadata-service/entities/src/main/java/at/tuwien/entities/database/table/Table.java @@ -93,6 +93,9 @@ public class Table { @Column(name = "versioned", nullable = false, columnDefinition = "boolean default true") private Boolean isVersioned; + @Column(name = "is_public", nullable = false, columnDefinition = "boolean default true") + private Boolean isPublic; + @Column(name = "is_schema_public", nullable = false, columnDefinition = "boolean default true") private Boolean isSchemaPublic; 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 984f4425dd..de65b1240d 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 @@ -856,8 +856,8 @@ public interface MetadataMapper { LanguageType languageTypeDtoToLanguageType(LanguageTypeDto data); - default Boolean onlySchemaPublicOrOwner(Boolean schemaIsPublic, User caller, User owner, User databaseOwner) { - if (schemaIsPublic) { + default Boolean onlyIsPublicOrOwner(Boolean isPublic, User caller, User owner, User databaseOwner) { + if (isPublic) { return true; } /* private schema */ @@ -897,14 +897,14 @@ public interface MetadataMapper { if (data.getTables() != null) { database.setTables(new LinkedList<>(data.getTables() .stream() - .filter(t -> onlySchemaPublicOrOwner(t.getIsSchemaPublic(), caller, t.getOwner(), t.getDatabase().getOwner())) + .filter(t -> onlyIsPublicOrOwner(t.getIsSchemaPublic() || t.getIsPublic(), caller, t.getOwner(), t.getDatabase().getOwner())) .map(this::tableToTableBriefDto) .toList())); } if (data.getViews() != null) { database.setViews(new LinkedList<>(data.getViews() .stream() - .filter(v -> onlySchemaPublicOrOwner(v.getIsSchemaPublic(), caller, v.getOwner(), v.getDatabase().getOwner())) + .filter(v -> onlyIsPublicOrOwner(v.getIsSchemaPublic() || v.getIsPublic(), caller, v.getOwner(), v.getDatabase().getOwner())) .map(this::viewToViewBriefDto) .toList())); } 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 936e1e8e34..3dbc450735 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 @@ -3,6 +3,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.TableDto; +import at.tuwien.api.database.table.TableUpdateDto; import at.tuwien.api.database.table.columns.ColumnDto; import at.tuwien.api.database.table.columns.concepts.ColumnSemanticsUpdateDto; import at.tuwien.api.error.ApiErrorDto; @@ -15,7 +16,6 @@ import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.mapper.MetadataMapper; import at.tuwien.service.*; -import at.tuwien.service.impl.AccessServiceImpl; import at.tuwien.utils.UserUtil; import at.tuwien.validation.EndpointValidator; import io.micrometer.observation.annotation.Observed; @@ -151,12 +151,12 @@ public class TableEndpoint { .body(dtos); } - @PutMapping("/{tableId}") + @PutMapping("/{tableId}/statistic") @Transactional @PreAuthorize("hasAuthority('update-table-statistic')") @Observed(name = "dbrepo_statistic_table_update") @Operation(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`", + description = "Updates basic statistical properties (min, max, mean, median, std.dev) for numerical columns in a table with id. Requires role `update-table-statistic`.", security = {@SecurityRequirement(name = "bearerAuth"), @SecurityRequirement(name = "basicAuth")}) @ApiResponses(value = { @ApiResponse(responseCode = "202", @@ -358,6 +358,63 @@ public class TableEndpoint { .body(dto); } + @PutMapping("/{tableId}") + @Transactional(rollbackFor = {Exception.class}) + @PreAuthorize("hasAuthority('update-table')") + @Observed(name = "dbrepo_table_update") + @Operation(summary = "Update table", + description = "Updates a table in the database with id. Requires role `update-table`.", + security = {@SecurityRequirement(name = "bearerAuth"), @SecurityRequirement(name = "basicAuth")}) + @ApiResponses(value = { + @ApiResponse(responseCode = "202", + description = "Updated the table", + content = {@Content( + mediaType = "application/json", + schema = @Schema(implementation = TableBriefDto.class))}), + @ApiResponse(responseCode = "400", + description = "Update table visibility payload is malformed", + content = {@Content( + mediaType = "application/json", + schema = @Schema(implementation = ApiErrorDto.class))}), + @ApiResponse(responseCode = "403", + description = "Update table visibility not permitted", + content = {@Content( + mediaType = "application/json", + schema = @Schema(implementation = ApiErrorDto.class))}), + @ApiResponse(responseCode = "404", + description = "Table could not be found", + content = {@Content( + mediaType = "application/json", + schema = @Schema(implementation = ApiErrorDto.class))}), + @ApiResponse(responseCode = "502", + description = "Connection to search service failed", + content = {@Content( + mediaType = "application/json", + schema = @Schema(implementation = ApiErrorDto.class))}), + @ApiResponse(responseCode = "503", + description = "Failed to save in search service", + content = {@Content( + 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, + DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, TableNotFoundException, + SearchServiceException, SearchServiceConnectionException { + log.debug("endpoint update table, databaseId={}, data.is_public={}", databaseId, data.getIsPublic()); + final Table table = tableService.findById(databaseId, tableId); + if (!table.getOwner().equals(principal)) { + log.error("Failed to update table: not owner"); + throw new NotAllowedException("Failed to update table: not owner"); + } + final TableDto dto = metadataMapper.customTableToTableDto(tableService.updateTable(table, data)); + log.info("Updated table with id {}", dto.getId()); + return ResponseEntity.status(HttpStatus.ACCEPTED) + .body(dto); + } + @GetMapping("/{tableId}") @Transactional(readOnly = true) @Observed(name = "dbrepo_tables_find") @@ -406,16 +463,20 @@ public class TableEndpoint { log.debug("endpoint find table, databaseId={}, tableId={}", databaseId, tableId); final Table table = tableService.findById(databaseId, tableId); boolean hasAccess = UserUtil.isSystem(principal); + boolean isOwner = false; try { if (principal != null) { final User user = userService.findByUsername(principal.getName()); accessService.find(table.getDatabase(), user); hasAccess = true; + isOwner = table.getOwner().equals(user); } } catch (UserNotFoundException | AccessNotFoundException e) { /* ignore */ } - final boolean includeSchema = UserUtil.isSystem(principal) || table.getIsSchemaPublic(); + final boolean includeSchema = UserUtil.isSystem(principal) || isOwner || table.getIsSchemaPublic(); + log.trace("user has access: {}", hasAccess); + log.trace("include schema in mapping: {}", includeSchema); final TableDto dto = metadataMapper.customTableToTableDto(table, hasAccess, table.getDatabase().getIsPublic(), includeSchema); final HttpHeaders headers = new HttpHeaders(); 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 a186c0efc2..75958f5bde 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 @@ -268,7 +268,7 @@ public class ViewEndpoint { @PutMapping("/{viewId}") @Transactional - @PreAuthorize("hasAuthority('create-database-view')") + @PreAuthorize("hasAuthority('modify-view-visibility')") @Observed(name = "dbrepo_view_update") @Operation(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`.", 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 91fb96e5f9..621ee53dfe 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 @@ -10,6 +10,7 @@ import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.database.table.TableCreateDto; import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.TableStatisticDto; +import at.tuwien.api.database.table.TableUpdateDto; import at.tuwien.api.user.internal.UpdateUserPasswordDto; import at.tuwien.exception.*; @@ -75,6 +76,9 @@ public interface DataServiceGateway { void updateDatabase(Long databaseId, UpdateUserPasswordDto data) throws DataServiceConnectionException, DataServiceException, DatabaseNotFoundException; + void updateTable(Long databaseId, Long tableId, TableUpdateDto data) throws DataServiceConnectionException, + DataServiceException, DatabaseNotFoundException; + /** * Creates a table in a given database. * @param databaseId The database id. 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 709537862a..09ad1e55da 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 @@ -7,6 +7,7 @@ import at.tuwien.api.database.query.QueryDto; import at.tuwien.api.database.table.TableCreateDto; import at.tuwien.api.database.table.TableDto; import at.tuwien.api.database.table.TableStatisticDto; +import at.tuwien.api.database.table.TableUpdateDto; import at.tuwien.api.user.internal.UpdateUserPasswordDto; import at.tuwien.config.GatewayConfig; import at.tuwien.exception.*; @@ -159,6 +160,30 @@ public class DataServiceGatewayImpl implements DataServiceGateway { } } + @Override + public void updateTable(Long databaseId, Long tableId, TableUpdateDto data) throws DataServiceConnectionException, + DataServiceException, DatabaseNotFoundException { + final ResponseEntity<Void> response; + final String path = "/api/database/" + databaseId + "/table/" + tableId; + log.trace("update table at endpoint {} with path {}", gatewayConfig.getDataEndpoint(), path); + try { + response = restTemplate.exchange(path, HttpMethod.PUT, new HttpEntity<>(data), Void.class); + } catch (HttpServerErrorException e) { + log.error("Failed to update table in database: {}", e.getMessage()); + throw new DataServiceConnectionException("Failed to update table in database: " + e.getMessage(), e); + } catch (HttpClientErrorException.NotFound e) { + log.error("Failed to update table in database: not found: {}", e.getMessage()); + throw new DatabaseNotFoundException("Failed to update table in database: not found: " + e.getMessage(), e); + } catch (HttpClientErrorException.BadRequest | HttpClientErrorException.Unauthorized e) { + log.error("Failed to update table in database: {}", e.getMessage()); + throw new DataServiceException("Failed to update table in database: " + e.getMessage(), e); + } + if (!response.getStatusCode().equals(HttpStatus.ACCEPTED)) { + log.error("Failed to update table in database: wrong http code: {}", response.getStatusCode()); + throw new DataServiceException("Failed to update table in database: wrong http code: " + response.getStatusCode()); + } + } + @Override public void createTable(Long databaseId, TableCreateDto data) throws DataServiceConnectionException, DataServiceException, DatabaseNotFoundException, TableExistsException { 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 e476721906..9a5c395c72 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,11 +1,13 @@ package at.tuwien.service; import at.tuwien.api.database.table.TableCreateDto; +import at.tuwien.api.database.table.TableUpdateDto; import at.tuwien.api.database.table.columns.concepts.ColumnSemanticsUpdateDto; import at.tuwien.entities.database.Database; import at.tuwien.entities.database.table.Table; import at.tuwien.entities.database.table.columns.TableColumn; import at.tuwien.exception.*; +import org.springframework.transaction.annotation.Transactional; import java.security.Principal; @@ -49,6 +51,10 @@ public interface TableService { */ void deleteTable(Table table) throws DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, TableNotFoundException, SearchServiceException, SearchServiceConnectionException; + Table updateTable(Table table, TableUpdateDto data) throws DataServiceException, + DataServiceConnectionException, DatabaseNotFoundException, TableNotFoundException, SearchServiceException, + SearchServiceConnectionException; + TableColumn update(TableColumn column, ColumnSemanticsUpdateDto updateDto) throws DataServiceException, DataServiceConnectionException, DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException, MalformedException, OntologyNotFoundException, SemanticEntityNotFoundException; 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 d90351ae6c..4a4a9ccaca 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 @@ -2,6 +2,7 @@ package at.tuwien.service.impl; import at.tuwien.api.database.table.TableCreateDto; import at.tuwien.api.database.table.TableStatisticDto; +import at.tuwien.api.database.table.TableUpdateDto; import at.tuwien.api.database.table.columns.ColumnCreateDto; import at.tuwien.api.database.table.columns.ColumnStatisticDto; import at.tuwien.api.database.table.columns.concepts.ColumnSemanticsUpdateDto; @@ -113,7 +114,8 @@ public class TableServiceImpl implements TableService { .owner(owner) .numRows(0L) .dataLength(0L) - .isSchemaPublic(database.getIsSchemaPublic()) + .isPublic(data.getIsPublic()) + .isSchemaPublic(data.getIsSchemaPublic()) .identifiers(new LinkedList<>()) .columns(new LinkedList<>()) .build(); @@ -199,6 +201,34 @@ public class TableServiceImpl implements TableService { log.info("Deleted table with id {}", table.getId()); } + @Transactional + @Override + public Table updateTable(Table table, TableUpdateDto data) throws DataServiceException, + DataServiceConnectionException, DatabaseNotFoundException, TableNotFoundException, SearchServiceException, + SearchServiceConnectionException { + /* update at data service */ + dataServiceGateway.updateTable(table.getDatabase().getId(), table.getId(), data); + /* update in metadata database */ + final Optional<Table> optional = table.getDatabase() + .getTables() + .stream() + .filter(t -> t.getId().equals(table.getId())) + .findFirst(); + if (optional.isEmpty()) { + log.error("Failed to find table with id {}", table.getId()); + throw new TableNotFoundException("Failed to find table with id " + table.getId()); + } + final Table tableEntity = optional.get(); + tableEntity.setIsPublic(data.getIsPublic()); + tableEntity.setDescription(data.getDescription()); + tableEntity.setIsSchemaPublic(data.getIsSchemaPublic()); + final Database database = databaseRepository.save(table.getDatabase()); + /* update in search service */ + searchServiceGateway.update(database); + log.info("Updated table with id {}", table.getId()); + return tableEntity; + } + @Override @Transactional public TableColumn update(TableColumn column, ColumnSemanticsUpdateDto data) throws DataServiceException, 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 8158a206c9..0cde8e8761 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 @@ -160,6 +160,9 @@ public abstract class BaseTest { public final static String[] DEFAULT_SEMANTICS_HANDLING = new String[]{"default-semantics-handling", "create-semantic-unit", "execute-semantic-query", "table-semantic-analyse", "create-semantic-concept"}; + public final static String[] DEFAULT_VIEW_HANDLING = new String[]{"update-database-view", "create-database-view", + "delete-database-view", "list-database-views", "modify-view-visibility", "find-database-view"}; + public final static String[] ESCALATED_SEMANTICS_HANDLING = new String[]{"escalated-semantics-handling", "update-semantic-concept", "modify-foreign-table-column-semantics", "delete-ontology", "list-ontologies", "update-semantic-unit", "create-ontology", "update-ontology"}; @@ -193,7 +196,7 @@ public abstract class BaseTest { public final static String[] DEFAULT_TABLE_HANDLING = new String[]{"default-table-handling", "list-tables", "create-table", "modify-table-column-semantics", "find-table", "delete-table", - "update-table-statistic"}; + "update-table-statistic", "update-table"}; public final static String[] ESCALATED_TABLE_HANDLING = new String[]{"escalated-table-handling", "delete-foreign-table"}; @@ -205,16 +208,16 @@ public abstract class BaseTest { public final static String[] DEFAULT_RESEARCHER_ROLES = ArrayUtils.merge(List.of(new String[]{"default-researcher-roles"}, DEFAULT_CONTAINER_HANDLING, DEFAULT_DATABASE_HANDLING, DEFAULT_IDENTIFIER_HANDLING, DEFAULT_QUERY_HANDLING, - DEFAULT_TABLE_HANDLING, DEFAULT_USER_HANDLING, DEFAULT_SEMANTICS_HANDLING)); + DEFAULT_TABLE_HANDLING, DEFAULT_USER_HANDLING, DEFAULT_SEMANTICS_HANDLING, DEFAULT_VIEW_HANDLING)); public final static String[] DEFAULT_DEVELOPER_ROLES = ArrayUtils.merge(List.of(new String[]{"default-developer-roles"}, DEFAULT_CONTAINER_HANDLING, DEFAULT_DATABASE_HANDLING, DEFAULT_IDENTIFIER_HANDLING, DEFAULT_QUERY_HANDLING, DEFAULT_TABLE_HANDLING, DEFAULT_USER_HANDLING, ESCALATED_USER_HANDLING, ESCALATED_CONTAINER_HANDLING, ESCALATED_DATABASE_HANDLING, ESCALATED_IDENTIFIER_HANDLING, ESCALATED_QUERY_HANDLING, - ESCALATED_TABLE_HANDLING)); + ESCALATED_TABLE_HANDLING, DEFAULT_VIEW_HANDLING)); 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)); + ESCALATED_IDENTIFIER_HANDLING, DEFAULT_SEMANTICS_HANDLING, ESCALATED_SEMANTICS_HANDLING, DEFAULT_VIEW_HANDLING)); public final static String[] DEFAULT_LOCAL_ADMIN_ROLES = new String[]{"admin"}; diff --git a/dbrepo-ui/components/dialogs/Semantics.vue b/dbrepo-ui/components/dialogs/Semantics.vue index 8d3c573f7b..12fffce66c 100644 --- a/dbrepo-ui/components/dialogs/Semantics.vue +++ b/dbrepo-ui/components/dialogs/Semantics.vue @@ -234,7 +234,7 @@ export default { } this.loadingSave = true const tableService = useTableService() - tableService.update(this.database.id, this.tableId, this.column.id, payload) + tableService.updateSemantics(this.database.id, this.tableId, this.column.id, payload) .then(() => { this.recommendation = null this.$refs.form.reset() diff --git a/dbrepo-ui/components/dialogs/UpdateTable.vue b/dbrepo-ui/components/dialogs/UpdateTable.vue new file mode 100644 index 0000000000..6e4e07182c --- /dev/null +++ b/dbrepo-ui/components/dialogs/UpdateTable.vue @@ -0,0 +1,167 @@ +<template> + <div> + <v-form + ref="form" + v-model="valid" + autocomplete="off" + @submit.prevent="submit"> + <v-card + :title="$t('pages.view.visibility.title')"> + <v-card-text> + <v-row> + <v-col> + <v-textarea + v-model="modify.description" + rows="2" + :rules="[ + v => (!!v || v.length <= 180) || ($t('validation.max-length') + 180), + ]" + clearable + counter="180" + persistent-counter + persistent-hint + :variant="inputVariant" + :hint="$t('pages.table.subpages.import.description.hint')" + :label="$t('pages.table.subpages.import.description.label')"/> + </v-col> + </v-row> + <v-row + dense> + <v-col + md="6"> + <v-select + v-model="modify.is_public" + :items="visibilities" + persistent-hint + :variant="inputVariant" + required + :rules="[ + v => v !== null || $t('validation.required') + ]" + :label="$t('pages.database.subpages.create.data.label')" + :hint="$t('pages.database.subpages.create.data.hint')" /> + </v-col> + <v-col + md="6"> + <v-select + v-model="modify.is_schema_public" + :items="visibilities" + persistent-hint + :variant="inputVariant" + required + :rules="[ + v => v !== null || $t('validation.required') + ]" + :label="$t('pages.database.subpages.create.schema.label')" + :hint="$t('pages.database.subpages.create.schema.hint')" /> + </v-col> + </v-row> + </v-card-text> + <v-card-actions> + <v-spacer /> + <v-btn + :variant="buttonVariant" + :text="$t('navigation.cancel')" + @click="cancel" /> + <v-btn + id="database" + variant="flat" + :disabled="!valid || !isChange" + :color="buttonColor" + :loading="loading" + type="submit" + :text="$t('navigation.modify')" + @click="update" /> + </v-card-actions> + </v-card> + </v-form> + </div> +</template> + +<script> +import { useCacheStore } from '@/stores/cache' + +export default { + props: { + table: { + type: Object, + default () { + return { + is_public: true, + is_schema_public: true, + description: null + } + } + }, + }, + data () { + return { + valid: false, + loading: false, + visibilities: [ + { title: this.$t('toolbars.database.public'), value: true }, + { title: this.$t('toolbars.database.private'), value: false }, + ], + modify: { + description: this.table.description, + is_public: this.table.is_public, + is_schema_public: this.table.is_schema_public + }, + cacheStore: useCacheStore() + } + }, + computed: { + database () { + return this.cacheStore.getDatabase + }, + 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 + }, + isChange () { + if (this.table.description !== this.modify.description) { + return true + } + if (this.table.is_public !== this.modify.is_public) { + return true + } + return this.table.is_schema_public !== this.modify.is_schema_public + }, + buttonColor () { + return !this.isChange ? null : 'warning' + } + }, + methods: { + submit () { + this.$refs.form.validate() + }, + cancel () { + this.$emit('close', { success: false }) + }, + update () { + this.loading = true + const tableService = useTableService() + tableService.update(this.$route.params.database_id, this.$route.params.table_id, this.modify) + .then(() => { + this.loading = false + const toast = useToastInstance() + toast.success(this.$t('success.table.updated')) + this.$emit('close', { success: true }) + this.cacheStore.reloadTable() + }) + .catch(({code}) => { + this.loading = false + const toast = useToastInstance() + toast.error(this.$t(code)) + }) + .finally(() => { + this.loading = false + }) + } + } +} +</script> diff --git a/dbrepo-ui/components/dialogs/ViewVisibility.vue b/dbrepo-ui/components/dialogs/ViewVisibility.vue index 7ac381711e..226772edd9 100644 --- a/dbrepo-ui/components/dialogs/ViewVisibility.vue +++ b/dbrepo-ui/components/dialogs/ViewVisibility.vue @@ -8,13 +8,10 @@ <v-card :title="$t('pages.view.visibility.title')"> <v-card-text> - <v-row> - <v-col> - </v-col> - </v-row> <v-row dense> - <v-col> + <v-col + md="6"> <v-select v-model="modify.is_public" :items="visibilities" @@ -27,10 +24,8 @@ :label="$t('pages.database.subpages.create.data.label')" :hint="$t('pages.database.subpages.create.data.hint')" /> </v-col> - </v-row> - <v-row - dense> - <v-col> + <v-col + md="6"> <v-select v-model="modify.is_schema_public" :items="visibilities" @@ -111,7 +106,10 @@ export default { return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') ? runtimeConfig.public.variant.button.contrast : runtimeConfig.public.variant.button.normal }, isChange () { - return this.view.is_public !== this.modify.is_public || this.view.is_schema_public !== this.modify.is_schema_public + if (this.view.is_public !== this.modify.is_public) { + return true + } + return this.view.is_schema_public !== this.modify.is_schema_public }, buttonColor () { return !this.isChange ? null : 'warning' diff --git a/dbrepo-ui/components/table/TableImport.vue b/dbrepo-ui/components/table/TableImport.vue index 14d4dae70a..c0e4d6f934 100644 --- a/dbrepo-ui/components/table/TableImport.vue +++ b/dbrepo-ui/components/table/TableImport.vue @@ -98,13 +98,13 @@ v-if="$route.query.location" dense> <v-col> - <p> - {{ $t('pages.table.subpages.import.storage.text') }} - </p> <v-chip - prepend-icon="mdi-cloud-upload" + prepend-icon="mdi-database-check-outline" + size="large" + variant="flat" + color="tertiary" label> - {{ $route.query.location }} + {{ $t('pages.table.subpages.import.storage.text') }} </v-chip> </v-col> </v-row> diff --git a/dbrepo-ui/components/table/TableToolbar.vue b/dbrepo-ui/components/table/TableToolbar.vue index 595893b8f0..b7d358d249 100644 --- a/dbrepo-ui/components/table/TableToolbar.vue +++ b/dbrepo-ui/components/table/TableToolbar.vue @@ -57,6 +57,14 @@ :text="($vuetify.display.lgAndUp ? $t('toolbars.database.create-view.xl') + ' ' : '') + $t('toolbars.database.create-view.permanent')" class="mr-2" :to="`/database/${$route.params.database_id}/view/create?tid=${$route.params.table_id}`" /> + <v-btn + v-if="canUpdateTable" + class="mr-2" + variant="flat" + :prepend-icon="$vuetify.display.lgAndUp ? 'mdi-table-edit' : null" + color="warning" + :text="($vuetify.display.lgAndUp ? $t('toolbars.database.update-table.xl') + ' ' : '') + $t('toolbars.database.update-table.permanent')" + @click="updateTableDialog = true" /> <v-btn v-if="canDropTable" :prepend-icon="$vuetify.display.lgAndUp ? 'mdi-delete' : null" @@ -79,10 +87,11 @@ :text="$t('navigation.info')" :to="`/database/${$route.params.database_id}/table/${$route.params.table_id}/info`" /> <v-tab - v-if="canViewTableData" + v-if="canViewData" :text="$t('navigation.data')" :to="`/database/${$route.params.database_id}/table/${$route.params.table_id}/data`" /> <v-tab + v-if="canViewSchema" :text="$t('navigation.schema')" :to="`/database/${$route.params.database_id}/table/${$route.params.table_id}/schema`" /> </v-tabs> @@ -91,7 +100,15 @@ <v-dialog v-model="dropTableDialog" max-width="640"> - <DropTable @close="closed" /> + <DropTable + @close="closeDelete" /> + </v-dialog> + <v-dialog + v-model="updateTableDialog" + max-width="640"> + <UpdateTable + :table="table" + @close="closeUpdate" /> </v-dialog> </div> </template> @@ -99,13 +116,15 @@ <script> import EditTuple from '@/components/dialogs/EditTuple.vue' import DropTable from '@/components/dialogs/DropTable.vue' +import UpdateTable from '@/components/dialogs/UpdateTable.vue' import { useCacheStore } from '@/stores/cache' import { useUserStore } from '@/stores/user' export default { components: { EditTuple, - DropTable + DropTable, + UpdateTable }, data () { return { @@ -114,6 +133,7 @@ export default { error: false, edit: false, dropTableDialog: false, + updateTableDialog: false, cacheStore: useCacheStore(), userStore: useUserStore() } @@ -128,12 +148,24 @@ export default { access () { return this.userStore.getAccess }, + hasReadAccess () { + if (!this.access) { + return false + } + 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 + }, canExecuteQuery () { if (!this.roles || !this.table || !this.user) { return false @@ -158,18 +190,29 @@ export default { const databaseService = useDatabaseService() return databaseService.isOwner(this.database, this.user) && this.roles.includes('create-database-view') }, - canViewTableData () { - /* view when database is public or when private: 1) view-table-data role present 2) access is at least read */ - if (!this.database) { + canViewData () { + if (!this.table) { + return false + } + if (this.table.is_public) { + return true + } + if (!this.user) { + return false + } + return this.hasReadAccess || this.table.owned_by === this.user.id || this.database.owner.id === this.user.id + }, + canViewSchema () { + if (!this.table) { return false } - if (this.database.is_public) { + if (this.table.is_schema_public) { return true } - if (!this.roles || !this.table || !this.user || !this.roles.includes('view-table-data') || !this.access) { + if (!this.user) { return false } - return this.access.type === 'read' || this.access.type === 'write_own' || this.access.type === 'write_all' + return this.hasReadAccess || this.table.owned_by === this.user.id || this.database.owner.id === this.user.id }, canImportCsv () { if (!this.roles || !this.table || !this.user) { @@ -198,13 +241,15 @@ export default { }, }, methods: { - closed (event) { - const { success } = event + closeDelete ({success}) { this.dropTableDialog = false if (success) { this.cacheStore.reloadDatabase() this.$router.push(`/database/${this.$route.params.database_id}/table`) } + }, + closeUpdate () { + this.updateTableDialog = false } } } diff --git a/dbrepo-ui/components/view/ViewToolbar.vue b/dbrepo-ui/components/view/ViewToolbar.vue index 8bb39f0070..e3ba6807bc 100644 --- a/dbrepo-ui/components/view/ViewToolbar.vue +++ b/dbrepo-ui/components/view/ViewToolbar.vue @@ -120,12 +120,15 @@ export default { return this.database.views.filter(v => v.id === Number(this.$route.params.view_id))[0] }, canViewData () { - if (!this.cachedView || !this.user) { + if (!this.cachedView) { return false } if (this.cachedView.is_public) { return true } + if (!this.user) { + return false + } return this.hasReadAccess || this.cachedView.owned_by === this.user.id || this.database.owner.id === this.user.id }, canViewSchema () { @@ -141,16 +144,16 @@ export default { return this.hasReadAccess || this.cachedView.owned_by === this.user.id || this.database.owner.id === this.user.id }, canDeleteView () { - if (!this.roles || !this.user || !this.view) { + if (!this.roles || !this.user || !this.cachedView) { return false } return this.roles.includes('delete-database-view') && this.cachedView.owned_by === this.user.id }, canUpdateVisibility () { - if (!this.roles || !this.user || !this.view) { + if (!this.roles || !this.user || !this.cachedView) { return false } - return this.roles.includes('create-database-view') && this.cachedView.owned_by === this.user.id + return this.roles.includes('modify-view-visibility') && this.cachedView.owned_by === this.user.id }, isContrastTheme () { return this.$vuetify.theme.global.name.toLowerCase().endsWith('contrast') @@ -162,7 +165,7 @@ export default { return this.isContrastTheme ? '' : (this.isDarkTheme ? 'tertiary' : 'secondary') }, canCreatePid () { - if (!this.roles || !this.user || !this.view) { + if (!this.roles || !this.user || !this.cachedView) { return false } const userService = useUserService() @@ -184,7 +187,7 @@ export default { return this.userStore.getRoles }, identifiers () { - if (!this.view) { + if (!this.cachedView) { return [] } return this.cachedView.identifiers.filter(s => s.view_id === Number(this.$route.params.view_id)) diff --git a/dbrepo-ui/composables/table-service.ts b/dbrepo-ui/composables/table-service.ts index 3d87e68d4f..35c53edd03 100644 --- a/dbrepo-ui/composables/table-service.ts +++ b/dbrepo-ui/composables/table-service.ts @@ -35,7 +35,7 @@ export const useTableService = (): any => { }) } - async function update(databaseId: number, tableId: number, columnId: number, data: ColumnSemanticsUpdateDto): Promise<ColumnDto> { + async function updateSemantics(databaseId: number, tableId: number, columnId: number, data: ColumnSemanticsUpdateDto): Promise<ColumnDto> { const axios = useAxiosInstance() console.debug('update column with id', columnId, 'table with id', tableId, 'in database with id', databaseId); return new Promise<ColumnDto>((resolve, reject) => { @@ -51,6 +51,22 @@ export const useTableService = (): any => { }) } + async function update(databaseId: number, tableId: number, data: TableUpdateDto): Promise<TableDto> { + const axios = useAxiosInstance() + console.debug('update table with id', tableId, 'in database with id', databaseId); + return new Promise<TableDto>((resolve, reject) => { + axios.put<TableDto>(`/api/database/${databaseId}/table/${tableId}`, data) + .then((response) => { + console.info('Updated table with id', tableId, 'in database with id', databaseId); + resolve(response.data) + }) + .catch((error) => { + console.error('Failed to update table', error) + reject(axiosErrorToApiError(error)) + }) + }) + } + async function importCsv(databaseId: number, tableId: number, data: ImportCsv): Promise<ImportDto> { const axios = useAxiosInstance() console.debug('import csv to table with id', tableId, 'in database with id', databaseId); diff --git a/dbrepo-ui/dto/index.ts b/dbrepo-ui/dto/index.ts index 03c7173bec..b84c6c897d 100644 --- a/dbrepo-ui/dto/index.ts +++ b/dbrepo-ui/dto/index.ts @@ -100,6 +100,12 @@ interface TableBriefDto { owned_by: string; } +interface TableUpdateDto { + description: string; + is_public: boolean; + is_schema_public: boolean; +} + interface ColumnBriefDto { id: number; name: string; diff --git a/dbrepo-ui/locales/en-US.json b/dbrepo-ui/locales/en-US.json index 9e805bf636..185576248c 100644 --- a/dbrepo-ui/locales/en-US.json +++ b/dbrepo-ui/locales/en-US.json @@ -36,7 +36,8 @@ "view": "View", "modify": "Modify", "help": "Help", - "visibility": "Visibility" + "visibility": "Visibility", + "update": "Update" }, "pages": { "identifier": { @@ -1278,7 +1279,8 @@ }, "table": { "created": "Successfully created table", - "semantics": "Successfully assigned semantic instance" + "semantics": "Successfully assigned semantic instance", + "updated": "Successfully updated table" }, "schema": { "tables": "Successfully refreshed database tables metadata.", @@ -1362,6 +1364,10 @@ "permanent": "View", "xl": "Create" }, + "update-table": { + "permanent": "Table", + "xl": "Update" + }, "create-table": { "permanent": "Table", "xl": "Create" 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 1be05e4bf1..08049eabe6 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 @@ -1,8 +1,8 @@ <template> - <div> + <div + v-if="canViewTableData"> <TableToolbar /> <v-toolbar - v-if="canViewTableData" :color="versionColor" :title="title" flat> @@ -142,6 +142,7 @@ export default { loadingData: false, loadingCount: false, loadingDelete: false, + loadingTable: false, addTupleDialog: false, editTupleDialog: false, total: 0, @@ -153,6 +154,7 @@ export default { dateMenu: false, timeMenu: false, selection: [], + columns: [], pickVersionDialog: null, version: null, lastReload: new Date(), @@ -212,14 +214,20 @@ export default { access () { return this.userStore.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 }, blobColumns () { - if (!this.table || !this.table.columns) { + if (!this.columns) { return [] } - return this.table.columns.filter(c => this.isFileField(c)).map(c => 'item.' + c.internal_name) + return this.columns.filter(c => this.isFileField(c)).map(c => 'item.' + c.internal_name) }, versionColor () { return this.version ? 'primary' : 'secondary' @@ -247,16 +255,16 @@ export default { }, canViewTableData () { /* view when database is public or when private: 1) view-table-data role present 2) access is at least read */ - if (!this.database) { + if (!this.table) { return false } - if (this.database.is_public) { + if (this.table.is_public) { return true } - if (!this.roles || !this.roles.includes('view-table-data') || !this.access) { + if (!this.roles || !this.roles.includes('view-table-data')) { return false } - return this.access.type === 'read' || this.access.type === 'write_own' || this.access.type === 'write_all' + return this.hasReadAccess }, canAddTuple () { if (!this.roles) { @@ -284,21 +292,15 @@ export default { version () { this.loadCount() this.reload() - }, - table (newTable, oldTable) { - if (newTable !== oldTable && oldTable === null) { - this.loadProperties() - } } }, mounted () { - this.loadProperties() this.loadCount() }, methods: { addTuple () { this.tuple = {} - this.table.columns.forEach((c) => { + this.columns.forEach((c) => { this.tuple[c.internal_name] = null }) this.addTupleDialog = true @@ -313,14 +315,14 @@ export default { for (const select of this.selection) { /* remove in container */ const constraints = {} - this.table.columns + this.columns .filter(c => c.is_primary_key) .forEach((c) => { constraints[c.internal_name] = select[c.internal_name] }) if (Object.keys(constraints).length === 0) { console.warn(`Table with id ${this.$route.params.table_id} does not have primary key(s): attempt to delete by values`) - this.table.columns + this.columns .forEach((c) => { constraints[c.internal_name] = select[c.internal_name] }) @@ -402,27 +404,6 @@ export default { } this.pickVersionDialog = false }, - loadProperties () { - if (!this.table || this.headers.length > 0) { - return - } - try { - this.headers = [] - this.table.columns.map((c) => { - return { - value: c.internal_name, - title: c.internal_name, - sortable: false - } - }).forEach(header => this.headers.push(header)) - this.dateColumns = this.table.columns.filter(c => (c.column_type === 'date' || c.column_type === 'timestamp')) - console.debug('date columns are', this.dateColumns) - } catch ({code}) { - const toast = useToastInstance() - toast.error(this.$t(code)) - } - this.loading = false - }, reload () { this.lastReload = new Date() this.loadData({ page: this.options.page, itemsPerPage: this.options.itemsPerPage, sortBy: null}) @@ -450,7 +431,6 @@ export default { .then((data) => { this.rows = data.result.map((row) => { for (const col in row) { - const column = this.table.columns.filter(c => c.internal_name === col)[0] const columnDefinition = this.dateColumns.filter(c => c.internal_name === col) if (columnDefinition.length > 0) { if (columnDefinition[0].column_type === 'date') { @@ -462,6 +442,13 @@ export default { } return row }) + this.headers = data.headers.map(h => { + return { + value: Object.keys(h)[0], + title: Object.keys(h)[0], + sortable: false + } + }) this.loadingData = false }) .catch(({code, message}) => { 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 bdbf5f97d5..5baedc281c 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 @@ -22,39 +22,42 @@ :title="$t('pages.table.title')"> <v-card-text> <v-skeleton-loader - v-if="!table" + v-if="!cachedTable" type="list-item-three-line" width="50%" /> <v-list - v-if="table" + v-if="cachedTable" dense> <v-list-item :title="$t('pages.table.id.title')"> - {{ table.id }} + {{ cachedTable.id }} </v-list-item> <v-list-item :title="$t('pages.table.name.title')"> - {{ table.internal_name }} + {{ cachedTable.internal_name }} </v-list-item> <v-list-item :title="$t('pages.table.visibility.title')"> {{ databaseVisibility }} </v-list-item> <v-list-item + v-if="table" :title="$t('pages.table.size.title')"> {{ sizeToHumanLabel(table.data_length) }} </v-list-item> <v-list-item + v-if="table" :title="$t('pages.table.result-rows.title')"> {{ table.num_rows }} </v-list-item> <v-list-item :title="$t('pages.table.description.title')"> - {{ hasDescription ? table.description : $t('pages.table.description.empty') }} + {{ hasDescription ? cachedTable.description : $t('pages.table.description.empty') }} </v-list-item> <v-list-item :title="$t('pages.table.owner.title')"> <UserBadge + v-if="table" :user="table.owner" :other-user="user" /> </v-list-item> @@ -91,7 +94,7 @@ :title="$t('pages.database.name.title')"> <NuxtLink class="text-primary" - :to="`/database/${database.id}`"> + :to="`/database/${$route.params.database_id}`"> {{ database.internal_name }} </NuxtLink> </v-list-item> @@ -177,6 +180,7 @@ export default { return { selection: [], consumers: [], + table: null, items: [ { title: this.$t('navigation.databases'), @@ -202,9 +206,7 @@ export default { ], headers: [], dateColumns: [], - loadingConsumers: false, - loadingExchange: false, - loadingQueue: false, + loading: false, exchange: null, queue: null, userStore: useUserStore(), @@ -221,7 +223,7 @@ export default { database () { return this.cacheStore.getDatabase }, - table () { + cachedTable () { return this.cacheStore.getTable }, roles () { @@ -240,13 +242,13 @@ export default { if (!this.table || !this.user || !this.access) { return false } - return (this.access.type === 'write_own' && this.table.owner.id === this.user.id) || this.access.type === 'write_all' + return (this.access.type === 'write_own' && this.cachedTable.owned_by === this.user.id) || this.access.type === 'write_all' }, access () { return this.userStore.getAccess }, hasDescription () { - return this.table && this.table.description + return this.table && this.cachedTable.description }, canWriteQueues () { if (!this.roles) { @@ -315,14 +317,36 @@ export default { if (!this.database) { return null } - if (this.database.is_public && this.table.is_schema_public) { + if (this.database.is_public && this.cachedTable.is_schema_public) { return this.$t('pages.table.visibility.open') } - if (!this.database.is_public && !this.table.is_schema_public) { + if (!this.database.is_public && !this.cachedTable.is_schema_public) { return this.$t('pages.table.visibility.closed') } return this.database.is_public ? this.$t('pages.database.visibility.data') : this.$t('pages.database.visibility.schema') } + }, + mounted () { + this.fetchTable() + }, + methods: { + fetchTable () { + this.loading = true + const tableService = useTableService() + tableService.findOne(this.$route.params.database_id, this.$route.params.table_id) + .then((table) => { + this.loading = false + this.table = table + }) + .catch(({code}) => { + this.loading = false + const toast = useToastInstance() + toast.error(this.$t(code)) + }) + .finally(() => { + this.loading = false + }) + } } } </script> 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 ec8fce9b54..5364b6c899 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 @@ -201,6 +201,9 @@ export default { if (this.table.is_schema_public) { return true } + if (!this.user) { + return false + } return this.hasReadAccess || this.table.owned_by === this.user.id || this.database.owner.id === this.user.id }, primaryKeysColumns () { 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 d77ea94134..29773c24d9 100644 --- a/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue +++ b/dbrepo-ui/pages/database/[database_id]/table/create/dataset.vue @@ -47,7 +47,8 @@ :disabled="step > 4" @submit.prevent="submit"> <v-container> - <v-row dense> + <v-row + dense> <v-col md="4"> <v-text-field v-model="tableCreate.name" @@ -80,7 +81,8 @@ :label="$t('pages.table.subpages.import.generated.label')"/> </v-col> </v-row> - <v-row dense> + <v-row + dense> <v-col md="8"> <v-textarea v-model="tableCreate.description" @@ -97,6 +99,41 @@ :label="$t('pages.table.subpages.import.description.label')"/> </v-col> </v-row> + <v-row + dense> + <v-col + md="4"> + <v-select + v-model="tableCreate.is_public" + name="public" + :label="$t('pages.database.subpages.create.data.label')" + :hint="$t('pages.database.subpages.create.data.hint')" + persistent-hint + :variant="inputVariant" + :items="visibilityOptions" + item-title="name" + item-value="value" + :rules="[v => v !== null || $t('validation.required')]" + required> + </v-select> + </v-col> + <v-col + md="4"> + <v-select + v-model="tableCreate.is_schema_public" + name="schema-public" + :label="$t('pages.database.subpages.create.schema.label')" + :hint="$t('pages.database.subpages.create.schema.hint')" + persistent-hint + :variant="inputVariant" + :items="visibilityOptions" + item-title="name" + item-value="value" + :rules="[v => v !== null || $t('validation.required')]" + required> + </v-select> + </v-col> + </v-row> </v-container> </v-form> </v-stepper-window> @@ -198,6 +235,16 @@ export default { loadingImport: false, fileModel: null, rowCount: null, + visibilityOptions: [ + { + name: this.$t('toolbars.database.public'), + value: true + }, + { + name: this.$t('toolbars.database.private'), + value: false + } + ], file: { filename: null, path: null @@ -237,6 +284,8 @@ export default { tables: [], tableCreate: { name: null, + is_public: true, + is_schema_public: true, description: '', columns: [] }, @@ -254,6 +303,13 @@ export default { cacheStore: useCacheStore() } }, + mounted () { + if (!this.database) { + return + } + this.tableCreate.is_public = this.database.is_public + this.tableCreate.is_schema_public = this.database.is_schema_public + }, computed: { user() { return this.userStore.getUser 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 6f34086a2c..11e91baabc 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 @@ -109,12 +109,15 @@ export default { return this.access.type === 'read' || this.access.type === 'write_own' || this.access.type === 'write_all' }, canViewData () { - if (!this.cachedView || !this.user) { + if (!this.cachedView) { return false } if (this.cachedView.is_public) { return true } + if (!this.user) { + return false + } return this.hasReadAccess || this.cachedView.owned_by === this.user.id || this.database.owner.id === this.user.id }, }, diff --git a/lib/python/dbrepo/RestClient.py b/lib/python/dbrepo/RestClient.py index 2f5f161a3f..77a1d82d74 100644 --- a/lib/python/dbrepo/RestClient.py +++ b/lib/python/dbrepo/RestClient.py @@ -632,13 +632,16 @@ class RestClient: raise ResponseCodeError( f'Failed to update database schema: response code: {response.status_code} is not 200 (OK)') - def create_table(self, database_id: int, name: str, columns: List[CreateTableColumn], - constraints: CreateTableConstraints, description: str = None) -> Table: + 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: """ Updates the database owner of a database with given database id. :param database_id: The database id. :param name: The name of the created table. + :param is_public: The visibility of the data. If set to true the data will be publicly visible. + :param is_schema_public: The visibility of the schema metadata. If set to true the schema metadata will be publicly visible. :param constraints: The constraints of the created table. :param columns: The columns of the created table. :param description: The description of the created table. Optional. @@ -655,8 +658,8 @@ class RestClient: """ url = f'/api/database/{database_id}/table' response = self._wrapper(method="post", url=url, force_auth=True, - payload=CreateTable(name=name, description=description, - columns=columns, constraints=constraints)) + payload=CreateTable(name=name, is_public=is_public, is_schema_public=is_schema_public, + description=description, columns=columns, constraints=constraints)) if response.status_code == 201: body = response.json() return Table.model_validate(body) diff --git a/lib/python/dbrepo/api/dto.py b/lib/python/dbrepo/api/dto.py index 55e79d912c..a6fe8f18e3 100644 --- a/lib/python/dbrepo/api/dto.py +++ b/lib/python/dbrepo/api/dto.py @@ -499,6 +499,8 @@ class ModifyOwner(BaseModel): class CreateTable(BaseModel): name: str + is_public: bool + is_schema_public: bool constraints: CreateTableConstraints columns: List[CreateTableColumn] = field(default_factory=list) description: Optional[str] = None @@ -944,6 +946,7 @@ class Table(BaseModel): queue_name: str routing_key: str is_public: bool + is_schema_public: bool identifiers: Optional[List[Identifier]] = field(default_factory=list) description: Optional[str] = None queue_type: Optional[str] = None -- GitLab From a0f32a386b2b2f810824a74fc132df04b056f019 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 11 Dec 2024 06:20:52 +0100 Subject: [PATCH 06/12] Added stuff --- .../at/tuwien/endpoints/TableEndpoint.java | 3 +- .../AnalyseServiceGatewayUnitTest.java | 152 ------------------ .../MetadataServiceGatewayUnitTest.java | 5 +- .../service/SubsetServiceIntegrationTest.java | 8 - .../service/TableServiceIntegrationTest.java | 14 +- .../tuwien/gateway/AnalyseServiceGateway.java | 31 ---- .../impl/AnalyseServiceGatewayImpl.java | 85 ---------- .../at/tuwien/service/StorageService.java | 5 +- .../java/at/tuwien/service/SubsetService.java | 18 ++- .../java/at/tuwien/service/TableService.java | 21 ++- .../java/at/tuwien/service/ViewService.java | 1 - .../impl/SubsetServiceMariaDbImpl.java | 2 +- .../internal/PrivilegedContainerDto.java | 4 - dbrepo-metadata-service/metrics.md | 2 + .../java/at/tuwien/mapper/MetadataMapper.java | 3 + .../endpoints/DatabaseEndpointUnitTest.java | 50 +++--- ...nticationPrivilegedIntegrationMvcTest.java | 12 +- .../tuwien/mvc/MetadataEndpointMvcTest.java | 4 +- .../service/DatabaseServiceUnitTest.java | 13 +- .../src/test/resources/json/metadata0.json | 4 +- .../src/test/resources/json/metadata1.json | 6 +- .../java/at/tuwien/test/AbstractUnitTest.java | 2 + .../main/java/at/tuwien/test/BaseTest.java | 89 +++++++++- 23 files changed, 180 insertions(+), 354 deletions(-) delete mode 100644 dbrepo-data-service/rest-service/src/test/java/at/tuwien/gateway/AnalyseServiceGatewayUnitTest.java delete mode 100644 dbrepo-data-service/services/src/main/java/at/tuwien/gateway/AnalyseServiceGateway.java delete mode 100644 dbrepo-data-service/services/src/main/java/at/tuwien/gateway/impl/AnalyseServiceGatewayImpl.java 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 36dabb474b..08d287e153 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 @@ -146,8 +146,7 @@ public class TableEndpoint { public ResponseEntity<TableDto> update(@NotNull @PathVariable("databaseId") Long databaseId, @NotNull @PathVariable("tableId") Long tableId, @Valid @RequestBody TableUpdateDto data) throws RemoteUnavailableException, - TableMalformedException, DatabaseUnavailableException, TableExistsException, TableNotFoundException, - MetadataServiceException { + TableMalformedException, DatabaseUnavailableException, TableNotFoundException, MetadataServiceException { log.debug("endpoint update table, databaseId={}, data.description={}", databaseId, data.getDescription()); /* create */ final PrivilegedTableDto table = metadataServiceGateway.getTableById(databaseId, tableId); diff --git a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/gateway/AnalyseServiceGatewayUnitTest.java b/dbrepo-data-service/rest-service/src/test/java/at/tuwien/gateway/AnalyseServiceGatewayUnitTest.java deleted file mode 100644 index f0a7346ae7..0000000000 --- a/dbrepo-data-service/rest-service/src/test/java/at/tuwien/gateway/AnalyseServiceGatewayUnitTest.java +++ /dev/null @@ -1,152 +0,0 @@ -package at.tuwien.gateway; - -import at.tuwien.exception.*; -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.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.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.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.doThrow; -import static org.mockito.Mockito.when; - -@Log4j2 -@SpringBootTest -@ExtendWith(SpringExtension.class) -public class AnalyseServiceGatewayUnitTest extends AbstractUnitTest { - - @MockBean - @Qualifier("restTemplate") - private RestTemplate restTemplate; - - @Autowired - private AnalyseServiceGateway dataDatabaseSidecarGateway; - - @BeforeEach - public void beforeEach() { - genesis(); - } - - @Test - public void importDataset_succeeds() throws RemoteUnavailableException, StorageNotFoundException, - AnalyseServiceException { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), eq(HttpEntity.EMPTY), eq(Void.class))) - .thenReturn(ResponseEntity.accepted() - .build()); - - /* test */ - dataDatabaseSidecarGateway.importDataset(DATABASE_1_ID, TABLE_1_ID, "filename"); - } - - @Test - public void importDataset_unavailable_fails() { - - /* mock */ - doThrow(HttpServerErrorException.class) - .when(restTemplate) - .exchange(anyString(), eq(HttpMethod.POST), eq(HttpEntity.EMPTY), eq(Void.class)); - - /* test */ - assertThrows(RemoteUnavailableException.class, () -> { - dataDatabaseSidecarGateway.importDataset(DATABASE_1_ID, TABLE_1_ID, "filename"); - }); - } - - @Test - public void importDataset_statusCode_fails() { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), eq(HttpEntity.EMPTY), eq(Void.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .build()); - - /* test */ - assertThrows(AnalyseServiceException.class, () -> { - dataDatabaseSidecarGateway.importDataset(DATABASE_1_ID, TABLE_1_ID, "filename"); - }); - } - - @Test - public void importDataset_s3_fails() { - - /* mock */ - doThrow(HttpClientErrorException.BadRequest.class) - .when(restTemplate) - .exchange(anyString(), eq(HttpMethod.POST), eq(HttpEntity.EMPTY), eq(Void.class)); - - /* test */ - assertThrows(StorageNotFoundException.class, () -> { - dataDatabaseSidecarGateway.importDataset(DATABASE_1_ID, TABLE_1_ID, "filename"); - }); - } - - @Test - public void exportTable_succeeds() throws RemoteUnavailableException, StorageNotFoundException, - AnalyseServiceException { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), eq(HttpEntity.EMPTY), eq(Void.class))) - .thenReturn(ResponseEntity.accepted() - .build()); - - /* test */ - dataDatabaseSidecarGateway.exportTable(DATABASE_1_ID, TABLE_1_ID); - } - - @Test - public void exportTable_unavailable_fails() { - - /* mock */ - doThrow(HttpServerErrorException.class) - .when(restTemplate) - .exchange(anyString(), eq(HttpMethod.POST), eq(HttpEntity.EMPTY), eq(Void.class)); - - /* test */ - assertThrows(RemoteUnavailableException.class, () -> { - dataDatabaseSidecarGateway.exportTable(DATABASE_1_ID, TABLE_1_ID); - }); - } - - @Test - public void exportTable_statusCode_fails() { - - /* mock */ - when(restTemplate.exchange(anyString(), eq(HttpMethod.POST), eq(HttpEntity.EMPTY), eq(Void.class))) - .thenReturn(ResponseEntity.status(HttpStatus.OK) - .build()); - - /* test */ - assertThrows(AnalyseServiceException.class, () -> { - dataDatabaseSidecarGateway.exportTable(DATABASE_1_ID, TABLE_1_ID); - }); - } - - @Test - public void exportTable_s3_fails() { - - /* mock */ - doThrow(HttpClientErrorException.BadRequest.class) - .when(restTemplate) - .exchange(anyString(), eq(HttpMethod.POST), eq(HttpEntity.EMPTY), eq(Void.class)); - - /* test */ - assertThrows(StorageNotFoundException.class, () -> { - dataDatabaseSidecarGateway.exportTable(DATABASE_1_ID, TABLE_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 2730e94d9c..6edded0f57 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 @@ -31,7 +31,8 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.ArgumentMatchers.*; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.when; @@ -247,6 +248,8 @@ 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(restTemplate.exchange(anyString(), eq(HttpMethod.GET), eq(HttpEntity.EMPTY), eq(PrivilegedDatabaseDto.class))) 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 68a725b60e..dc4179f61d 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 @@ -8,7 +8,6 @@ import at.tuwien.config.MariaDbConfig; import at.tuwien.config.MariaDbContainerConfig; import at.tuwien.config.S3Config; import at.tuwien.exception.*; -import at.tuwien.gateway.AnalyseServiceGateway; import at.tuwien.gateway.MetadataServiceGateway; import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; @@ -34,7 +33,6 @@ import java.util.Map; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.when; @Log4j2 @@ -49,9 +47,6 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { @MockBean private MetadataServiceGateway metadataServiceGateway; - @MockBean - private AnalyseServiceGateway dataDatabaseSidecarGateway; - @MockBean private StorageService storageService; @@ -388,9 +383,6 @@ public class SubsetServiceIntegrationTest extends AbstractUnitTest { Thread.sleep(1000) /* wait for test container some more */; /* mock */ - doNothing() - .when(dataDatabaseSidecarGateway) - .exportTable(anyLong(), anyLong()); when(storageService.transformDataset(any(Dataset.class))) .thenReturn(EXPORT_RESOURCE_DTO); 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 3b59dac2c1..eea27bae21 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 @@ -18,7 +18,6 @@ import at.tuwien.api.database.table.internal.TableCreateDto; import at.tuwien.config.MariaDbConfig; import at.tuwien.config.MariaDbContainerConfig; import at.tuwien.exception.*; -import at.tuwien.gateway.AnalyseServiceGateway; import at.tuwien.gateway.MetadataServiceGateway; import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; @@ -42,8 +41,6 @@ import java.util.*; import static at.tuwien.service.SchemaServiceIntegrationTest.assertColumn; import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.anyLong; -import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.when; @Log4j2 @@ -58,9 +55,6 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { @MockBean private MetadataServiceGateway metadataServiceGateway; - @MockBean - private AnalyseServiceGateway dataDatabaseSidecarGateway; - @MockBean private StorageService storageService; @@ -742,18 +736,14 @@ public class TableServiceIntegrationTest extends AbstractUnitTest { } @Test - public void exportTable_succeeds() throws QueryMalformedException, RemoteUnavailableException, - StorageNotFoundException, StorageUnavailableException, AnalyseServiceException, TableNotFoundException, - MalformedException { + public void exportTable_succeeds() throws QueryMalformedException, StorageNotFoundException, + StorageUnavailableException, TableNotFoundException, MalformedException { final ExportResourceDto mock = ExportResourceDto.builder() .filename("weather_aus.csv") .resource(new InputStreamResource(InputStream.nullInputStream())) .build(); /* mock */ - doNothing() - .when(dataDatabaseSidecarGateway) - .exportTable(anyLong(), anyLong()); when(storageService.getResource("weather_aus.csv")) .thenReturn(mock); diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/AnalyseServiceGateway.java b/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/AnalyseServiceGateway.java deleted file mode 100644 index 0257f0b2c7..0000000000 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/AnalyseServiceGateway.java +++ /dev/null @@ -1,31 +0,0 @@ -package at.tuwien.gateway; - -import at.tuwien.exception.*; - -public interface AnalyseServiceGateway { - - /** - * Imports a given dataset name into the given database. - * - * @param databaseId The database id. - * @param tableId The table id. - * @param filename The dataset name. - * @throws StorageNotFoundException The dataset name was not found in the storage service. - * @throws RemoteUnavailableException Connection to the sidecar could not be established. - * @throws AnalyseServiceException The analyse service failed to import the dataset. - */ - void importDataset(Long databaseId, Long tableId, String filename) throws StorageNotFoundException, - RemoteUnavailableException, AnalyseServiceException; - - /** - * Exports a given dataset name from the given database. - * - * @param databaseId The database id. - * @param tableId The table id. - * @throws StorageNotFoundException The dataset name was not found in the storage service. - * @throws RemoteUnavailableException Connection to the sidecar could not be established. - * @throws AnalyseServiceException The analyse service failed to export the dataset. - */ - void exportTable(Long databaseId, Long tableId) throws StorageNotFoundException, - RemoteUnavailableException, AnalyseServiceException; -} diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/impl/AnalyseServiceGatewayImpl.java b/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/impl/AnalyseServiceGatewayImpl.java deleted file mode 100644 index 2ab9d0a018..0000000000 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/gateway/impl/AnalyseServiceGatewayImpl.java +++ /dev/null @@ -1,85 +0,0 @@ -package at.tuwien.gateway.impl; - -import at.tuwien.config.GatewayConfig; -import at.tuwien.exception.AnalyseServiceException; -import at.tuwien.exception.RemoteUnavailableException; -import at.tuwien.exception.StorageNotFoundException; -import at.tuwien.gateway.AnalyseServiceGateway; -import lombok.extern.log4j.Log4j2; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Service; -import org.springframework.web.client.HttpClientErrorException; -import org.springframework.web.client.HttpServerErrorException; -import org.springframework.web.client.RestTemplate; - -@Log4j2 -@Service -public class AnalyseServiceGatewayImpl implements AnalyseServiceGateway { - - private final RestTemplate restTemplate; - private final GatewayConfig gatewayConfig; - - @Autowired - public AnalyseServiceGatewayImpl(RestTemplate restTemplate, GatewayConfig gatewayConfig) { - this.restTemplate = restTemplate; - this.gatewayConfig = gatewayConfig; - } - - @Override - public void importDataset(Long databaseId, Long tableId, String filename) throws StorageNotFoundException, - RemoteUnavailableException, AnalyseServiceException { - final ResponseEntity<Void> response; - final String url = new StringBuilder(gatewayConfig.getAnalyseEndpoint()) - .append("/api/analyse/import?database_id=") - .append(databaseId) - .append("&table_id=") - .append(tableId) - .append("&filename=") - .append(filename) - .toString(); - log.debug("import file into data database: {}", url); - try { - response = restTemplate.exchange(url, HttpMethod.POST, HttpEntity.EMPTY, Void.class); - } catch (HttpServerErrorException e) { - log.error("Failed to import dataset with filename: {}: {}", filename, e.getMessage()); - throw new RemoteUnavailableException("Failed to import dataset: " + e.getMessage(), e); - } catch (HttpClientErrorException.BadRequest e) { - log.error("Failed to import dataset with filename: {}: not found: {}", filename, e.getMessage()); - throw new StorageNotFoundException("Failed to import dataset: not found: " + e.getMessage(), e); - } - if (!response.getStatusCode().equals(HttpStatus.ACCEPTED)) { - log.error("Failed to import dataset with filename: {}: service responded unsuccessful: {}", filename, response.getStatusCode()); - throw new AnalyseServiceException("Failed to import dataset: service responded unsuccessful: " + response.getStatusCode()); - } - } - - @Override - public void exportTable(Long databaseId, Long tableId) throws StorageNotFoundException, RemoteUnavailableException, - AnalyseServiceException { - final ResponseEntity<Void> response; - final String url = new StringBuilder(gatewayConfig.getAnalyseEndpoint()) - .append("/api/analyse/export?database_id=") - .append(databaseId) - .append("&table_id=") - .append(tableId) - .toString(); - log.debug("export file from data database: {}", url); - try { - response = restTemplate.exchange(url, HttpMethod.POST, HttpEntity.EMPTY, Void.class); - } catch (HttpServerErrorException e) { - log.error("Failed to export dataset: {}", e.getMessage()); - throw new RemoteUnavailableException("Failed to export dataset: " + e.getMessage(), e); - } catch (HttpClientErrorException.BadRequest e) { - log.error("Failed to export dataset: not found: {}", e.getMessage()); - throw new StorageNotFoundException("Failed to export dataset: not found: " + e.getMessage(), e); - } - if (!response.getStatusCode().equals(HttpStatus.ACCEPTED)) { - log.error("Failed to export dataset: service responded unsuccessful: {}", response.getStatusCode()); - throw new AnalyseServiceException("Failed to export dataset: service responded unsuccessful: " + response.getStatusCode()); - } - } -} diff --git a/dbrepo-data-service/services/src/main/java/at/tuwien/service/StorageService.java b/dbrepo-data-service/services/src/main/java/at/tuwien/service/StorageService.java index b346a187a5..77482805ee 100644 --- a/dbrepo-data-service/services/src/main/java/at/tuwien/service/StorageService.java +++ b/dbrepo-data-service/services/src/main/java/at/tuwien/service/StorageService.java @@ -1,14 +1,12 @@ package at.tuwien.service; import at.tuwien.ExportResourceDto; -import at.tuwien.api.database.table.columns.ColumnDto; import at.tuwien.exception.MalformedException; import at.tuwien.exception.StorageNotFoundException; import at.tuwien.exception.StorageUnavailableException; import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Row; -import java.io.IOException; import java.io.InputStream; import java.util.List; @@ -71,7 +69,7 @@ public interface StorageService { /** * Transforms the given dataset into a downloadable dataset. * - * @param data The dataset. + * @param data The dataset. * @throws StorageUnavailableException The object failed to be loaded from the Storage Service. */ ExportResourceDto transformDataset(Dataset<Row> data) throws StorageUnavailableException; @@ -85,6 +83,7 @@ public interface StorageService { * @return The dataset. * @throws StorageNotFoundException The key was not found in the Storage Service. * @throws StorageUnavailableException The object failed to be loaded from the Storage Service. + * @throws MalformedException The field lengths for the table and dataset are not the same. */ Dataset<Row> loadDataset(List<String> columns, String key, Boolean withHeader) throws StorageNotFoundException, StorageUnavailableException, MalformedException; 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 6072b04e7b..78b2fe8f89 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 @@ -82,6 +82,7 @@ public interface SubsetService { * @return The row count. * @throws TableMalformedException The table is malformed. * @throws SQLException The connection to the database could not be established. + * @throws QueryMalformedException The re-execute query is malformed. */ Long reExecuteCount(PrivilegedDatabaseDto database, QueryDto query) throws TableMalformedException, SQLException, QueryMalformedException; @@ -113,10 +114,11 @@ public interface SubsetService { * @throws StorageNotFoundException The exported subset was not found from the key provided by the sidecar in the Storage Service. * @throws StorageUnavailableException The communication to the Storage Service failed. * @throws RemoteUnavailableException The privileged database information could not be found in the Metadata Service. + * @throws ViewNotFoundException The source view was not found in the metadata database. */ ExportResourceDto export(PrivilegedDatabaseDto database, QueryDto query, Instant timestamp) throws SQLException, QueryMalformedException, StorageNotFoundException, StorageUnavailableException, RemoteUnavailableException, - ViewNotFoundException, MalformedException; + ViewNotFoundException; /** * Executes a subset query without saving it. @@ -181,6 +183,16 @@ public interface SubsetService { */ void deleteStaleQueries(PrivilegedDatabaseDto database) throws SQLException, QueryStoreGCException; - Dataset<Row> getData(@NotNull PrivilegedDatabaseDto database, String viewName, Instant timestamp) throws ViewNotFoundException, - QueryMalformedException; + /** + * Exports data as dataset from the database view with given name at a given timestamp. + * + * @param database The database. + * @param viewName The view name. + * @param timestamp The timestamp. + * @return The dataset. + * @throws ViewNotFoundException The view was not found in the metadata database. + * @throws QueryMalformedException The query to eis malformed. + */ + Dataset<Row> getData(@NotNull PrivilegedDatabaseDto database, String viewName, Instant timestamp) + throws ViewNotFoundException, QueryMalformedException; } 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 0f2167c49a..7bf4fb3f56 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 @@ -61,16 +61,25 @@ public interface TableService { * @param database The data database privileged object. * @param data The table definition. * @return The created table, 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 TableExistsException The table name already exists in the information_schema. - * @throws TableNotFoundException The table could not be inspected in the data database. + * @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. + * + * @param table The table. + * @param data The description. + * @throws SQLException Query statement is malformed. + * @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, - TableMalformedException, TableExistsException, TableNotFoundException; + TableMalformedException, TableNotFoundException; /** * Drops a table in given table object. @@ -125,8 +134,8 @@ public interface TableService { * @param table The table. * @param data The dataset metadata. * @throws MalformedException The dataset is malformed. - * @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. + * @throws StorageUnavailableException Failed to establish a connection with the Storage Service. * @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. */ 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 26c04e401b..48aa5ec3cf 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 @@ -6,7 +6,6 @@ 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.QueryResultDto; -import at.tuwien.api.database.table.internal.PrivilegedTableDto; import at.tuwien.exception.*; import jakarta.validation.constraints.NotNull; import org.apache.spark.sql.Dataset; 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 95fa159937..9a0f1fb279 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 @@ -180,7 +180,7 @@ public class SubsetServiceMariaDbImpl extends HibernateConnector implements Subs @Override public ExportResourceDto export(PrivilegedDatabaseDto database, QueryDto query, Instant timestamp) throws SQLException, QueryMalformedException, StorageNotFoundException, StorageUnavailableException, - RemoteUnavailableException, ViewNotFoundException, MalformedException { + RemoteUnavailableException, ViewNotFoundException { final String viewName = "ex_" + Hashing.sha512() .hashString(new String(RandomUtils.nextBytes(256), Charset.defaultCharset()), Charset.defaultCharset()) .toString() 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 index b9d6a403a7..545bd2a2d9 100644 --- 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 @@ -53,8 +53,4 @@ public class PrivilegedContainerDto { @ToString.Exclude private String password; - private Long defaultTimestampFormatId; - - private Long defaultDateFormatId; - } diff --git a/dbrepo-metadata-service/metrics.md b/dbrepo-metadata-service/metrics.md index 440f20b8e0..56a69c68f6 100644 --- a/dbrepo-metadata-service/metrics.md +++ b/dbrepo-metadata-service/metrics.md @@ -51,6 +51,7 @@ | `dbrepo_statistic_table_update` | Update statistics | | `dbrepo_table_create` | Create table | | `dbrepo_table_delete` | Delete table | +| `dbrepo_table_update` | Update table | | `dbrepo_tables_find` | Find table | | `dbrepo_tables_findall` | List tables | | `dbrepo_tables_refresh` | Update database table schemas | @@ -64,5 +65,6 @@ | `dbrepo_view_create` | Create view | | `dbrepo_view_delete` | Delete view | | `dbrepo_view_find` | Get view | +| `dbrepo_view_update` | Update view | | `dbrepo_views_findall` | List views | | `dbrepo_views_refresh` | Update database view schemas | 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 de65b1240d..98c77c7b0d 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 @@ -301,6 +301,9 @@ public interface MetadataMapper { }) IdentifierDto identifierToIdentifierDto(Identifier data); + @Mappings({ + @Mapping(target = "databaseId", source = "database.id") + }) IdentifierBriefDto identifierToIdentifierBriefDto(Identifier data); default IdentifierTitle identifierToIdentifierTitle(Identifier data, String lang) { 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 5ad07a1175..9852cde936 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 @@ -6,10 +6,7 @@ import at.tuwien.entities.user.User; import at.tuwien.exception.*; import at.tuwien.gateway.KeycloakGateway; import at.tuwien.repository.UserRepository; -import at.tuwien.service.AccessService; -import at.tuwien.service.BrokerService; -import at.tuwien.service.ContainerService; -import at.tuwien.service.StorageService; +import at.tuwien.service.*; import at.tuwien.service.impl.DatabaseServiceImpl; import at.tuwien.test.AbstractUnitTest; import lombok.extern.log4j.Log4j2; @@ -56,7 +53,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { private DatabaseServiceImpl databaseService; @MockBean - private UserRepository userRepository; + private UserService userService; @MockBean private StorageService storageService; @@ -121,8 +118,8 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { .setVirtualHostPermissions(USER_1); when(keycloakGateway.findByUsername(USER_1_USERNAME)) .thenReturn(USER_1_KEYCLOAK_DTO); - when(userRepository.findByUsername(USER_1_USERNAME)) - .thenReturn(Optional.of(USER_1)); + when(userService.findByUsername(USER_1_USERNAME)) + .thenReturn(USER_1); /* test */ create_generic(request, USER_1_PRINCIPAL, USER_1); @@ -202,8 +199,8 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { /* mock */ when(keycloakGateway.findByUsername(USER_1_USERNAME)) .thenReturn(USER_1_KEYCLOAK_DTO); - when(userRepository.findByUsername(USER_1_USERNAME)) - .thenReturn(Optional.of(USER_1)); + when(userService.findByUsername(USER_1_USERNAME)) + .thenReturn(USER_1); /* test */ visibility_generic(DATABASE_1_ID, DATABASE_1, request, USER_1_PRINCIPAL); @@ -224,14 +221,14 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_2_USERNAME, authorities = {"modify-database-visibility"}) - public void visibility_hasRoleForeign_fails() { + public void visibility_hasRoleForeign_fails() throws UserNotFoundException { final DatabaseModifyVisibilityDto request = DatabaseModifyVisibilityDto.builder() .isPublic(true) .build(); /* mock */ - when(userRepository.findByUsername(USER_2_USERNAME)) - .thenReturn(Optional.of(USER_2)); + when(userService.findByUsername(USER_2_USERNAME)) + .thenReturn(USER_2); /* test */ assertThrows(NotAllowedException.class, () -> { @@ -264,8 +261,8 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { /* mock */ when(databaseService.findById(DATABASE_1_ID)) .thenReturn(DATABASE_1); - when(userRepository.findByUsername(USER_1_USERNAME)) - .thenReturn(Optional.of(USER_1)); + when(userService.findByUsername(USER_1_USERNAME)) + .thenReturn(USER_1); when(storageService.getBytes(request.getKey())) .thenReturn(new byte[]{}); @@ -288,7 +285,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_2_USERNAME, authorities = {"modify-database-owner"}) - public void transfer_hasRoleForeign_fails() throws DatabaseNotFoundException { + public void transfer_hasRoleForeign_fails() throws DatabaseNotFoundException, UserNotFoundException { final DatabaseTransferDto request = DatabaseTransferDto.builder() .id(USER_4_ID) .build(); @@ -296,10 +293,10 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { /* mock */ when(databaseService.findById(DATABASE_1_ID)) .thenReturn(DATABASE_1); - when(userRepository.findByUsername(USER_2_USERNAME)) - .thenReturn(Optional.of(USER_2)); - when(userRepository.findById(USER_4_ID)) - .thenReturn(Optional.of(USER_4)); + when(userService.findByUsername(USER_2_USERNAME)) + .thenReturn(USER_2); + when(userService.findById(USER_4_ID)) + .thenReturn(USER_4); /* test */ assertThrows(NotAllowedException.class, () -> { @@ -321,10 +318,10 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { .thenReturn(DATABASE_1); when(keycloakGateway.findByUsername(USER_1_USERNAME)) .thenReturn(USER_1_KEYCLOAK_DTO); - when(userRepository.findByUsername(USER_1_USERNAME)) - .thenReturn(Optional.of(USER_1)); - when(userRepository.findById(USER_4_ID)) - .thenReturn(Optional.of(USER_4)); + when(userService.findByUsername(USER_1_USERNAME)) + .thenReturn(USER_1); + when(userService.findById(USER_4_ID)) + .thenReturn(USER_4); /* test */ databaseEndpoint.transfer(DATABASE_1_ID, request, USER_1_PRINCIPAL); @@ -332,7 +329,7 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { @Test @WithMockUser(username = USER_1_USERNAME, authorities = {"modify-database-owner"}) - public void transfer_hasRoleUserNotExists_succeeds() throws DatabaseNotFoundException { + public void transfer_hasRoleUserNotExists_succeeds() throws DatabaseNotFoundException, UserNotFoundException { final DatabaseTransferDto request = DatabaseTransferDto.builder() .id(UUID.randomUUID()) .build(); @@ -340,8 +337,9 @@ public class DatabaseEndpointUnitTest extends AbstractUnitTest { /* mock */ when(databaseService.findById(DATABASE_1_ID)) .thenReturn(DATABASE_1); - when(userRepository.findById(any(UUID.class))) - .thenReturn(Optional.empty()); + doThrow(UserNotFoundException.class) + .when(userService) + .findById(any(UUID.class)); /* test */ assertThrows(UserNotFoundException.class, () -> { 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 6a01ae6fec..1b8419612e 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 @@ -28,7 +28,9 @@ import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; import java.util.List; +import java.util.Optional; +import static org.mockito.Mockito.when; 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; @@ -81,7 +83,7 @@ public class AuthenticationPrivilegedIntegrationMvcTest extends AbstractUnitTest genesis(); /* metadata database */ licenseRepository.save(LICENSE_1); - userRepository.saveAll(List.of(USER_1, USER_2, USER_3, USER_4)); + userRepository.saveAll(List.of(USER_1, USER_2, USER_3, USER_4, USER_LOCAL)); containerRepository.save(CONTAINER_1); databaseRepository.save(DATABASE_1); /* keycloak */ @@ -114,7 +116,9 @@ 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("Access-Control-Expose-Headers", "X-Username X-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(status().isOk()); } @@ -127,7 +131,9 @@ 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("Access-Control-Expose-Headers", "X-Username X-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(status().isOk()); } diff --git a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/MetadataEndpointMvcTest.java b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/MetadataEndpointMvcTest.java index 9c79f01d66..96af6cfa8d 100644 --- a/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/MetadataEndpointMvcTest.java +++ b/dbrepo-metadata-service/rest-service/src/test/java/at/tuwien/mvc/MetadataEndpointMvcTest.java @@ -96,7 +96,7 @@ public class MetadataEndpointMvcTest extends AbstractUnitTest { .andDo(print()) .andExpect(content().contentType("text/xml;charset=UTF-8")) .andExpect(xpath("//request[@verb='ListIdentifiers']").exists()) - .andExpect(xpath("//header[1]/identifier").string("oai:" + IDENTIFIER_1_ID)) + .andExpect(xpath("//header[1]/identifier").string("doi:" + IDENTIFIER_1_DOI)) .andExpect(xpath("//header[2]/identifier").string("oai:" + IDENTIFIER_2_ID)) .andExpect(xpath("//header[3]/identifier").string("oai:" + IDENTIFIER_3_ID)) .andExpect(xpath("//header[4]/identifier").string("oai:" + IDENTIFIER_4_ID)) @@ -127,7 +127,7 @@ public class MetadataEndpointMvcTest extends AbstractUnitTest { .andExpect(content().contentType("text/xml;charset=UTF-8")) .andExpect(xpath("//request[@verb='GetRecord']").exists()) .andExpect(xpath("//request[@identifier='oai:" + IDENTIFIER_1_ID + "']").exists()) - .andExpect(xpath("//identifier").string("oai:" + IDENTIFIER_1_ID)) + .andExpect(xpath("//identifier").string("doi:" + IDENTIFIER_1_DOI)) .andExpect(status().isOk()); } 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 b127f1b89f..b0919f816a 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 @@ -158,7 +158,7 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { SearchServiceConnectionException { /* test */ - generic_modifyVisibility(DATABASE_1, true); + generic_modifyVisibility(DATABASE_1, true, true); } @Test @@ -172,7 +172,7 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { /* test */ assertThrows(SearchServiceException.class, () -> { - generic_modifyVisibility(DATABASE_1, true); + generic_modifyVisibility(DATABASE_1, true, true); }); } @@ -187,7 +187,7 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { /* test */ assertThrows(DatabaseNotFoundException.class, () -> { - generic_modifyVisibility(DATABASE_1, true); + generic_modifyVisibility(DATABASE_1, true, true); }); } @@ -202,7 +202,7 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { /* test */ assertThrows(SearchServiceConnectionException.class, () -> { - generic_modifyVisibility(DATABASE_1, true); + generic_modifyVisibility(DATABASE_1, true, true); }); } @@ -307,8 +307,8 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { return response; } - protected Database generic_modifyVisibility(Database database, Boolean isPublic) throws DatabaseNotFoundException, - SearchServiceException, SearchServiceConnectionException { + protected Database generic_modifyVisibility(Database database, Boolean isPublic, Boolean isSchemaPublic) + throws DatabaseNotFoundException, SearchServiceException, SearchServiceConnectionException { /* mock */ when(databaseRepository.save(any(Database.class))) @@ -317,6 +317,7 @@ public class DatabaseServiceUnitTest extends AbstractUnitTest { /* test */ final Database response = databaseService.modifyVisibility(database, DatabaseModifyVisibilityDto.builder() .isPublic(isPublic) + .isSchemaPublic(isSchemaPublic) .build()); assertNotNull(response); return response; diff --git a/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata0.json b/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata0.json index 3d557e3201..250db21b8f 100644 --- a/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata0.json +++ b/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata0.json @@ -22,7 +22,5 @@ "name_identifier": "00000-00000-00000", "name_identifier_scheme": "ORCID" } - ], - "created": "2022-01-07T20:45:52.000+00:00", - "last_modified": "2018-11-07T10:59:12.000+00:00" + ] } \ No newline at end of file diff --git a/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata1.json b/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata1.json index 63b43d09f5..2a0da11e13 100644 --- a/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata1.json +++ b/dbrepo-metadata-service/rest-service/src/test/resources/json/metadata1.json @@ -2,6 +2,7 @@ "id": 1, "query_id": 1, "type": "subset", + "doi": "10.12345/183", "titles": [ { "id": 1, @@ -24,7 +25,6 @@ ], "query": "SELECT `id` FROM `foobar`", "query_normalized": "SELECT `id` FROM `foobar`", - "doi": null, "query_hash": "abc", "execution": "2018-11-07T10:59:12.000+00:00", "result_hash": "def", @@ -51,7 +51,5 @@ } ], "publication_month": 5, - "publication_year": 2022, - "created": "2022-01-07T20:45:52.000+00:00", - "last_modified": "2018-11-07T10:59:12.000+00:00" + "publication_year": 2022 } \ No newline at end of file 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 8e613cfa7c..b8c66fa6b7 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 @@ -9,11 +9,13 @@ import java.util.List; public abstract class AbstractUnitTest extends BaseTest { public void genesis() { + CONTAINER_1_PRIVILEGED_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))); /* USER_1 */ USER_1.setAccesses(new LinkedList<>()); + USER_1.setTheme(USER_1_THEME); /* USER_2 */ USER_2.setAccesses(new LinkedList<>()); /* USER_3 */ 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 0cde8e8761..b0fcead7ed 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 @@ -396,6 +396,9 @@ public abstract class BaseTest { public final static UUID USER_LOCAL_ADMIN_ID = UUID.fromString("a54dcb2e-a644-4e82-87e7-05a96413983d"); public final static String USER_LOCAL_ADMIN_USERNAME = "admin"; public final static String USER_LOCAL_ADMIN_PASSWORD = "admin"; + public final static String USER_LOCAL_ADMIN_THEME = "dark"; + public final static String USER_LOCAL_ADMIN_EMAIL = "admin@local"; + public final static String USER_LOCAL_ADMIN_MARIADB_PASSWORD = "*440BA4FD1A87A0999647DB67C0EE258198B247BA"; public final static UserDetails USER_LOCAL_ADMIN_DETAILS = UserDetailsDto.builder() .username(USER_LOCAL_ADMIN_USERNAME) @@ -403,6 +406,14 @@ public abstract class BaseTest { .authorities(AUTHORITY_DEFAULT_LOCAL_ADMIN_AUTHORITIES) .build(); + 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) + .build(); + public final static Principal USER_LOCAL_ADMIN_PRINCIPAL = new UsernamePasswordAuthenticationToken(USER_LOCAL_ADMIN_DETAILS, USER_LOCAL_ADMIN_PASSWORD, USER_LOCAL_ADMIN_DETAILS.getAuthorities()); @@ -532,6 +543,7 @@ public abstract class BaseTest { .firstname(USER_1_FIRSTNAME) .lastname(USER_1_LASTNAME) .name(USER_1_NAME) + .qualifiedName(USER_1_QUALIFIED_NAME) .build(); public final static UserDetails USER_1_DETAILS = UserDetailsDto.builder() @@ -614,6 +626,7 @@ public abstract class BaseTest { .firstname(USER_2_FIRSTNAME) .lastname(USER_2_LASTNAME) .name(USER_2_NAME) + .qualifiedName(USER_2_QUALIFIED_NAME) .build(); public final static SignupRequestDto USER_2_SIGNUP_REQUEST_DTO = SignupRequestDto.builder() @@ -962,6 +975,7 @@ public abstract class BaseTest { .name(IMAGE_1_NAME) .version(IMAGE_1_VERSION) .isDefault(IMAGE_1_IS_DEFAULT) + .jdbcMethod(IMAGE_1_JDBC) .build(); public final static List<Operator> IMAGE_1_OPERATORS = List.of( @@ -1021,6 +1035,7 @@ public abstract class BaseTest { .internalName(CONTAINER_1_INTERNALNAME) .quota(CONTAINER_1_QUOTA) .count(CONTAINER_1_COUNT) + .image(IMAGE_1_BRIEF_DTO) .build(); public final static PrivilegedContainerDto CONTAINER_1_PRIVILEGED_DTO = PrivilegedContainerDto.builder() @@ -1425,6 +1440,7 @@ public abstract class BaseTest { public final static String TABLE_1_NAME = "Weather AUS"; public final static String TABLE_1_INTERNALNAME = "weather_aus"; public final static Boolean TABLE_1_VERSIONED = true; + public final static Boolean TABLE_1_IS_PUBLIC = false; public final static Boolean TABLE_1_SCHEMA_PUBLIC = false; public final static Boolean TABLE_1_PROCESSED_CONSTRAINTS = true; public final static String TABLE_1_DESCRIPTION = "Weather in Australia"; @@ -1467,6 +1483,8 @@ public abstract class BaseTest { .created(TABLE_1_CREATED) .internalName(TABLE_1_INTERNALNAME) .isVersioned(TABLE_1_VERSIONED) + .isPublic(TABLE_1_IS_PUBLIC) + .isSchemaPublic(TABLE_1_SCHEMA_PUBLIC) .description(TABLE_1_DESCRIPTION) .name(TABLE_1_NAME) .queueName(TABLE_1_QUEUE_NAME) @@ -1487,6 +1505,7 @@ public abstract class BaseTest { .tdbid(DATABASE_1_ID) .internalName(TABLE_1_INTERNALNAME) .isVersioned(TABLE_1_VERSIONED) + .isPublic(TABLE_1_IS_PUBLIC) .isSchemaPublic(TABLE_1_SCHEMA_PUBLIC) .description(TABLE_1_DESCRIPTION) .name(TABLE_1_NAME) @@ -1579,6 +1598,7 @@ public abstract class BaseTest { .id(TABLE_1_ID) .internalName(TABLE_1_INTERNALNAME) .isVersioned(TABLE_1_VERSIONED) + .isPublic(TABLE_1_IS_PUBLIC) .isSchemaPublic(TABLE_1_SCHEMA_PUBLIC) .description(TABLE_1_DESCRIPTION) .name(TABLE_1_NAME) @@ -1623,6 +1643,7 @@ public abstract class BaseTest { public final static String TABLE_2_NAME = "Weather Location"; public final static String TABLE_2_INTERNALNAME = "weather_location"; public final static Boolean TABLE_2_VERSIONED = true; + public final static Boolean TABLE_2_IS_PUBLIC = false; public final static Boolean TABLE_2_SCHEMA_PUBLIC = false; public final static Boolean TABLE_2_PROCESSED_CONSTRAINTS = true; public final static String TABLE_2_DESCRIPTION = "Weather location"; @@ -1642,6 +1663,7 @@ public abstract class BaseTest { .created(TABLE_2_CREATED) .internalName(TABLE_2_INTERNALNAME) .isVersioned(TABLE_2_VERSIONED) + .isPublic(TABLE_2_IS_PUBLIC) .isSchemaPublic(TABLE_2_SCHEMA_PUBLIC) .description(TABLE_2_DESCRIPTION) .name(TABLE_2_NAME) @@ -1663,6 +1685,8 @@ public abstract class BaseTest { .database(null) /* DATABASE_1_PRIVILEGED_DTO */ .internalName(TABLE_2_INTERNALNAME) .isVersioned(TABLE_2_VERSIONED) + .isPublic(TABLE_2_IS_PUBLIC) + .isSchemaPublic(TABLE_2_SCHEMA_PUBLIC) .description(TABLE_2_DESCRIPTION) .name(TABLE_2_NAME) .queueName(TABLE_2_QUEUE_NAME) @@ -1682,6 +1706,7 @@ public abstract class BaseTest { .tdbid(DATABASE_1_ID) .internalName(TABLE_2_INTERNALNAME) .isVersioned(TABLE_2_VERSIONED) + .isPublic(TABLE_2_IS_PUBLIC) .isSchemaPublic(TABLE_2_SCHEMA_PUBLIC) .description(TABLE_2_DESCRIPTION) .name(TABLE_2_NAME) @@ -1700,6 +1725,7 @@ public abstract class BaseTest { .id(TABLE_2_ID) .internalName(TABLE_2_INTERNALNAME) .isVersioned(TABLE_2_VERSIONED) + .isPublic(TABLE_2_IS_PUBLIC) .isSchemaPublic(TABLE_2_SCHEMA_PUBLIC) .description(TABLE_2_DESCRIPTION) .name(TABLE_2_NAME) @@ -1710,6 +1736,7 @@ public abstract class BaseTest { public final static String TABLE_3_NAME = "Sensor"; public final static String TABLE_3_INTERNALNAME = "sensor"; public final static Boolean TABLE_3_VERSIONED = true; + public final static Boolean TABLE_3_IS_PUBLIC = false; public final static Boolean TABLE_3_SCHEMA_PUBLIC = false; public final static Boolean TABLE_3_PROCESSED_CONSTRAINTS = true; public final static String TABLE_3_DESCRIPTION = "Some sensor data"; @@ -1729,6 +1756,7 @@ public abstract class BaseTest { .created(TABLE_3_CREATED) .internalName(TABLE_3_INTERNALNAME) .isVersioned(TABLE_3_VERSIONED) + .isPublic(TABLE_3_IS_PUBLIC) .isSchemaPublic(TABLE_3_SCHEMA_PUBLIC) .description(TABLE_3_DESCRIPTION) .name(TABLE_3_NAME) @@ -1749,6 +1777,8 @@ public abstract class BaseTest { .tdbid(DATABASE_1_ID) .internalName(TABLE_3_INTERNALNAME) .isVersioned(TABLE_3_VERSIONED) + .isPublic(TABLE_3_IS_PUBLIC) + .isSchemaPublic(TABLE_3_SCHEMA_PUBLIC) .description(TABLE_3_DESCRIPTION) .name(TABLE_3_NAME) .queueName(TABLE_3_QUEUE_NAME) @@ -1766,6 +1796,8 @@ public abstract class BaseTest { .id(TABLE_3_ID) .internalName(TABLE_3_INTERNALNAME) .isVersioned(TABLE_3_VERSIONED) + .isPublic(TABLE_3_IS_PUBLIC) + .isSchemaPublic(TABLE_3_SCHEMA_PUBLIC) .description(TABLE_3_DESCRIPTION) .name(TABLE_3_NAME) .ownedBy(USER_3_ID) @@ -1806,6 +1838,7 @@ public abstract class BaseTest { public final static String TABLE_5_NAME = "zoo"; public final static String TABLE_5_INTERNALNAME = "zoo"; public final static Boolean TABLE_5_VERSIONED = true; + public final static Boolean TABLE_5_IS_PUBLIC = true; public final static Boolean TABLE_5_SCHEMA_PUBLIC = true; public final static Boolean TABLE_5_PROCESSED_CONSTRAINTS = true; public final static String TABLE_5_DESCRIPTION = "Some Kaggle dataset"; @@ -1824,6 +1857,7 @@ public abstract class BaseTest { .created(Instant.now()) .internalName(TABLE_5_INTERNALNAME) .isVersioned(TABLE_5_VERSIONED) + .isPublic(TABLE_5_IS_PUBLIC) .isSchemaPublic(TABLE_5_SCHEMA_PUBLIC) .description(TABLE_5_DESCRIPTION) .name(TABLE_5_NAME) @@ -1840,6 +1874,7 @@ public abstract class BaseTest { .tdbid(DATABASE_2_ID) .internalName(TABLE_5_INTERNALNAME) .isVersioned(TABLE_5_VERSIONED) + .isPublic(TABLE_5_IS_PUBLIC) .isSchemaPublic(TABLE_5_SCHEMA_PUBLIC) .description(TABLE_5_DESCRIPTION) .name(TABLE_5_NAME) @@ -1856,6 +1891,7 @@ public abstract class BaseTest { .database(null) /* DATABASE_2_PRIVILEGED_DTO */ .internalName(TABLE_5_INTERNALNAME) .isVersioned(TABLE_5_VERSIONED) + .isPublic(TABLE_5_IS_PUBLIC) .isSchemaPublic(TABLE_5_SCHEMA_PUBLIC) .description(TABLE_5_DESCRIPTION) .name(TABLE_5_NAME) @@ -1876,6 +1912,7 @@ public abstract class BaseTest { .id(TABLE_5_ID) .internalName(TABLE_5_INTERNALNAME) .isVersioned(TABLE_5_VERSIONED) + .isPublic(TABLE_5_IS_PUBLIC) .isSchemaPublic(TABLE_5_SCHEMA_PUBLIC) .description(TABLE_5_DESCRIPTION) .name(TABLE_5_NAME) @@ -1886,6 +1923,7 @@ public abstract class BaseTest { public final static String TABLE_6_NAME = "names"; 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_PROCESSED_CONSTRAINTS = true; public final static String TABLE_6_DESCRIPTION = "Some names dataset"; @@ -1900,6 +1938,7 @@ public abstract class BaseTest { .created(TABLE_6_CREATED) .internalName(TABLE_6_INTERNALNAME) .isVersioned(TABLE_6_VERSIONED) + .isPublic(TABLE_6_IS_PUBLIC) .isSchemaPublic(TABLE_6_SCHEMA_PUBLIC) .description(TABLE_6_DESCRIPTION) .name(TABLE_6_NAME) @@ -1917,6 +1956,7 @@ public abstract class BaseTest { .tdbid(DATABASE_2_ID) .internalName(TABLE_6_INTERNALNAME) .isVersioned(TABLE_6_VERSIONED) + .isPublic(TABLE_6_IS_PUBLIC) .isSchemaPublic(TABLE_6_SCHEMA_PUBLIC) .description(TABLE_6_DESCRIPTION) .name(TABLE_6_NAME) @@ -1931,6 +1971,7 @@ public abstract class BaseTest { .id(TABLE_6_ID) .internalName(TABLE_6_INTERNALNAME) .isVersioned(TABLE_6_VERSIONED) + .isPublic(TABLE_6_IS_PUBLIC) .isSchemaPublic(TABLE_6_SCHEMA_PUBLIC) .description(TABLE_6_DESCRIPTION) .name(TABLE_6_NAME) @@ -1941,6 +1982,7 @@ public abstract class BaseTest { public final static String TABLE_7_NAME = "likes"; public final static String TABLE_7_INTERNAL_NAME = "likes"; public final static Boolean TABLE_7_VERSIONED = true; + public final static Boolean TABLE_7_IS_PUBLIC = true; public final static Boolean TABLE_7_SCHEMA_PUBLIC = true; public final static Boolean TABLE_7_PROCESSED_CONSTRAINTS = true; public final static String TABLE_7_DESCRIPTION = "Some likes dataset"; @@ -1955,6 +1997,7 @@ public abstract class BaseTest { .created(TABLE_7_CREATED) .internalName(TABLE_7_INTERNAL_NAME) .isVersioned(TABLE_7_VERSIONED) + .isPublic(TABLE_7_IS_PUBLIC) .isSchemaPublic(TABLE_7_SCHEMA_PUBLIC) .description(TABLE_7_DESCRIPTION) .name(TABLE_7_NAME) @@ -1972,6 +2015,7 @@ public abstract class BaseTest { .tdbid(DATABASE_2_ID) .internalName(TABLE_7_INTERNAL_NAME) .isVersioned(TABLE_7_VERSIONED) + .isPublic(TABLE_7_IS_PUBLIC) .isSchemaPublic(TABLE_7_SCHEMA_PUBLIC) .description(TABLE_7_DESCRIPTION) .name(TABLE_7_NAME) @@ -1986,6 +2030,7 @@ public abstract class BaseTest { .id(TABLE_7_ID) .internalName(TABLE_7_INTERNAL_NAME) .isVersioned(TABLE_7_VERSIONED) + .isPublic(TABLE_7_IS_PUBLIC) .isSchemaPublic(TABLE_7_SCHEMA_PUBLIC) .description(TABLE_7_DESCRIPTION) .name(TABLE_7_NAME) @@ -1996,6 +2041,7 @@ 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_SCHEMA_PUBLIC = false; public final static Boolean TABLE_4_PROCESSED_CONSTRAINTS = true; public final static String TABLE_4_DESCRIPTION = "Hello sensor"; @@ -2019,6 +2065,7 @@ public abstract class BaseTest { .columns(new LinkedList<>()) /* TABLE_4_COLUMNS */ .constraints(null) /* TABLE_4_CONSTRAINTS */ .isVersioned(TABLE_4_VERSIONED) + .isPublic(TABLE_4_IS_PUBLIC) .isSchemaPublic(TABLE_4_SCHEMA_PUBLIC) .owner(USER_1) .ownedBy(USER_1_ID) @@ -2041,6 +2088,7 @@ public abstract class BaseTest { .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) @@ -2055,6 +2103,7 @@ public abstract class BaseTest { .description(TABLE_4_DESCRIPTION) .name(TABLE_4_NAME) .isVersioned(TABLE_4_VERSIONED) + .isPublic(TABLE_4_IS_PUBLIC) .isSchemaPublic(TABLE_4_SCHEMA_PUBLIC) .ownedBy(USER_1_ID) .build(); @@ -2147,6 +2196,7 @@ public abstract class BaseTest { public final static String TABLE_8_NAME = "mfcc"; public final static String TABLE_8_INTERNAL_NAME = "mfcc"; 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"; @@ -2161,6 +2211,7 @@ public abstract class BaseTest { .internalName(TABLE_8_INTERNAL_NAME) .description(TABLE_8_DESCRIPTION) .isVersioned(TABLE_8_VERSIONED) + .isPublic(TABLE_8_IS_PUBLIC) .isSchemaPublic(TABLE_8_SCHEMA_PUBLIC) .database(null /* DATABASE_1 */) .name(TABLE_8_NAME) @@ -2179,6 +2230,7 @@ public abstract class BaseTest { .internalName(TABLE_8_INTERNAL_NAME) .description(TABLE_8_DESCRIPTION) .isVersioned(TABLE_8_VERSIONED) + .isPublic(TABLE_8_IS_PUBLIC) .isSchemaPublic(TABLE_8_SCHEMA_PUBLIC) .name(TABLE_8_NAME) .queueName(TABLE_8_QUEUE_NAME) @@ -2192,6 +2244,7 @@ public abstract class BaseTest { .internalName(TABLE_8_INTERNAL_NAME) .description(TABLE_8_DESCRIPTION) .isVersioned(TABLE_8_VERSIONED) + .isPublic(TABLE_8_IS_PUBLIC) .isSchemaPublic(TABLE_8_SCHEMA_PUBLIC) .name(TABLE_8_NAME) .ownedBy(USER_1_ID) @@ -2203,6 +2256,7 @@ public abstract class BaseTest { .internalName(TABLE_8_INTERNAL_NAME) .description(TABLE_8_DESCRIPTION) .isVersioned(TABLE_8_VERSIONED) + .isPublic(TABLE_8_IS_PUBLIC) .isSchemaPublic(TABLE_8_SCHEMA_PUBLIC) .name(TABLE_8_NAME) .queueName(TABLE_8_QUEUE_NAME) @@ -4634,6 +4688,7 @@ public abstract class BaseTest { 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 String VIEW_1_QUERY = "select `location`, `lat`, `lng` from `weather_location`"; public final static String VIEW_1_QUERY_HASH = "dc81a6877c7c51a6a6f406e1fc2a255e44a0d49a20548596e0d583c3eb849c23"; @@ -4676,6 +4731,7 @@ public abstract class BaseTest { .internalName(VIEW_1_INTERNAL_NAME) .vdbid(VIEW_1_DATABASE_ID) .isPublic(VIEW_1_PUBLIC) + .isSchemaPublic(VIEW_1_SCHEMA_PUBLIC) .query(VIEW_1_QUERY) .queryHash(VIEW_1_QUERY_HASH) .ownedBy(USER_1_ID) @@ -4754,6 +4810,7 @@ public abstract class BaseTest { .internalName(VIEW_1_INTERNAL_NAME) .vdbid(VIEW_1_DATABASE_ID) .isPublic(VIEW_1_PUBLIC) + .isSchemaPublic(VIEW_1_SCHEMA_PUBLIC) .owner(USER_1_BRIEF_DTO) .query(VIEW_1_QUERY) .queryHash(VIEW_1_QUERY_HASH) @@ -4782,6 +4839,7 @@ public abstract class BaseTest { .internalName(VIEW_1_INTERNAL_NAME) .vdbid(VIEW_1_DATABASE_ID) .isPublic(VIEW_1_PUBLIC) + .isSchemaPublic(VIEW_1_SCHEMA_PUBLIC) .ownedBy(USER_1_ID) .query(VIEW_1_QUERY) .queryHash(VIEW_1_QUERY_HASH) @@ -4800,6 +4858,7 @@ public abstract class BaseTest { public final static Long VIEW_2_CONTAINER_ID = CONTAINER_1_ID; public final static Long VIEW_2_DATABASE_ID = DATABASE_1_ID; public final static Boolean VIEW_2_PUBLIC = true; + public final static Boolean VIEW_2_SCHEMA_PUBLIC = true; public final static String VIEW_2_QUERY = "select `date`, `location` as loc, `mintemp`, `rainfall` from `weather_aus` where `location` = 'Albury'"; public final static String VIEW_2_QUERY_HASH = "987fc946772ffb6d85060262dcb5df419692a1f6772ea995e3dedb53c191e984"; @@ -4850,6 +4909,7 @@ public abstract class BaseTest { .internalName(VIEW_2_INTERNAL_NAME) .vdbid(VIEW_2_DATABASE_ID) .isPublic(VIEW_2_PUBLIC) + .isSchemaPublic(VIEW_2_SCHEMA_PUBLIC) .columns(null) /* VIEW_2_COLUMNS */ .query(VIEW_2_QUERY) .queryHash(VIEW_2_QUERY_HASH) @@ -4908,6 +4968,7 @@ public abstract class BaseTest { .internalName(VIEW_2_INTERNAL_NAME) .vdbid(VIEW_2_DATABASE_ID) .isPublic(VIEW_2_PUBLIC) + .isSchemaPublic(VIEW_2_SCHEMA_PUBLIC) .columns(VIEW_2_COLUMNS_DTO) .query(VIEW_2_QUERY) .queryHash(VIEW_2_QUERY_HASH) @@ -4922,6 +4983,7 @@ public abstract class BaseTest { .internalName(VIEW_2_INTERNAL_NAME) .vdbid(VIEW_2_DATABASE_ID) .isPublic(VIEW_2_PUBLIC) + .isSchemaPublic(VIEW_2_SCHEMA_PUBLIC) .owner(USER_2_BRIEF_DTO) .query(VIEW_2_QUERY) .queryHash(VIEW_2_QUERY_HASH) @@ -4935,6 +4997,7 @@ public abstract class BaseTest { .internalName(VIEW_2_INTERNAL_NAME) .vdbid(VIEW_2_DATABASE_ID) .isPublic(VIEW_2_PUBLIC) + .isSchemaPublic(VIEW_2_SCHEMA_PUBLIC) .query(VIEW_2_QUERY) .queryHash(VIEW_2_QUERY_HASH) .ownedBy(USER_1_ID) @@ -4947,6 +5010,7 @@ public abstract class BaseTest { 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_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"; @@ -5001,10 +5065,12 @@ public abstract class BaseTest { .internalName(VIEW_3_INTERNAL_NAME) .vdbid(VIEW_3_DATABASE_ID) .isPublic(VIEW_3_PUBLIC) + .isSchemaPublic(VIEW_3_SCHEMA_PUBLIC) .columns(null) /* VIEW_3_COLUMNS */ .query(VIEW_3_QUERY) .queryHash(VIEW_3_QUERY_HASH) .ownedBy(USER_1_ID) + .owner(USER_1) .build(); public final static PrivilegedViewDto VIEW_3_PRIVILEGED_DTO = PrivilegedViewDto.builder() @@ -5015,6 +5081,7 @@ public abstract class BaseTest { .internalName(VIEW_3_INTERNAL_NAME) .vdbid(VIEW_3_DATABASE_ID) .isPublic(VIEW_3_PUBLIC) + .isSchemaPublic(VIEW_3_SCHEMA_PUBLIC) .owner(USER_1_BRIEF_DTO) .query(VIEW_3_QUERY) .queryHash(VIEW_3_QUERY_HASH) @@ -5072,6 +5139,7 @@ public abstract class BaseTest { .internalName(VIEW_3_INTERNAL_NAME) .vdbid(VIEW_3_DATABASE_ID) .isPublic(VIEW_3_PUBLIC) + .isSchemaPublic(VIEW_3_SCHEMA_PUBLIC) .columns(VIEW_3_COLUMNS_DTO) .query(VIEW_3_QUERY) .queryHash(VIEW_3_QUERY_HASH) @@ -5085,6 +5153,7 @@ public abstract class BaseTest { .internalName(VIEW_3_INTERNAL_NAME) .vdbid(VIEW_3_DATABASE_ID) .isPublic(VIEW_3_PUBLIC) + .isSchemaPublic(VIEW_3_SCHEMA_PUBLIC) .query(VIEW_3_QUERY) .queryHash(VIEW_3_QUERY_HASH) .ownedBy(USER_1_ID) @@ -5099,6 +5168,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 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"; @@ -5247,9 +5317,11 @@ public abstract class BaseTest { .internalName(VIEW_4_INTERNAL_NAME) .vdbid(VIEW_4_DATABASE_ID) .isPublic(VIEW_4_PUBLIC) + .isSchemaPublic(VIEW_4_SCHEMA_PUBLIC) .query(VIEW_4_QUERY) .queryHash(VIEW_4_QUERY_HASH) .ownedBy(USER_1_ID) + .owner(USER_1) .columns(null) /* VIEW_4_COLUMNS */ .build(); @@ -5260,6 +5332,7 @@ public abstract class BaseTest { .internalName(VIEW_4_INTERNAL_NAME) .vdbid(VIEW_4_DATABASE_ID) .isPublic(VIEW_4_PUBLIC) + .isSchemaPublic(VIEW_4_SCHEMA_PUBLIC) .query(VIEW_4_QUERY) .queryHash(VIEW_4_QUERY_HASH) .owner(USER_1_BRIEF_DTO) @@ -5273,6 +5346,7 @@ public abstract class BaseTest { .internalName(VIEW_4_INTERNAL_NAME) .vdbid(VIEW_4_DATABASE_ID) .isPublic(VIEW_4_PUBLIC) + .isSchemaPublic(VIEW_4_SCHEMA_PUBLIC) .query(VIEW_4_QUERY) .queryHash(VIEW_4_QUERY_HASH) .ownedBy(USER_1_ID) @@ -5440,6 +5514,7 @@ public abstract class BaseTest { public final static Long VIEW_5_CONTAINER_ID = CONTAINER_2_ID; public final static Long VIEW_5_DATABASE_ID = DATABASE_3_ID; public final static Boolean VIEW_5_PUBLIC = true; + public final static Boolean VIEW_5_SCHEMA_PUBLIC = true; public final static String VIEW_5_QUERY = "SELECT `location`, `lat`, `lng` FROM `weather_location` WHERE `location` = 'Albury'"; public final static String VIEW_5_QUERY_HASH = "120f32478aaff874c25ab32eceb9f00b64cc9d422831046f2f5d43953aca01e7"; @@ -5450,9 +5525,11 @@ public abstract class BaseTest { .internalName(VIEW_5_INTERNAL_NAME) .vdbid(VIEW_5_DATABASE_ID) .isPublic(VIEW_5_PUBLIC) + .isSchemaPublic(VIEW_5_SCHEMA_PUBLIC) .query(VIEW_5_QUERY) .queryHash(VIEW_5_QUERY_HASH) .ownedBy(USER_1_ID) + .owner(USER_1) .columns(null) .build(); @@ -5463,6 +5540,7 @@ public abstract class BaseTest { .internalName(VIEW_5_INTERNAL_NAME) .vdbid(VIEW_5_DATABASE_ID) .isPublic(VIEW_5_PUBLIC) + .isSchemaPublic(VIEW_5_SCHEMA_PUBLIC) .query(VIEW_5_QUERY) .queryHash(VIEW_5_QUERY_HASH) .owner(USER_1_BRIEF_DTO) @@ -5476,6 +5554,7 @@ public abstract class BaseTest { .internalName(VIEW_5_INTERNAL_NAME) .vdbid(VIEW_5_DATABASE_ID) .isPublic(VIEW_5_PUBLIC) + .isSchemaPublic(VIEW_5_SCHEMA_PUBLIC) .query(VIEW_5_QUERY) .queryHash(VIEW_5_QUERY_HASH) .build(); @@ -5646,7 +5725,6 @@ public abstract class BaseTest { public final static String IDENTIFIER_1_PUBLISHER = "Austrian Government"; public final static IdentifierType IDENTIFIER_1_TYPE = IdentifierType.DATABASE; public final static IdentifierTypeDto IDENTIFIER_1_TYPE_DTO = IdentifierTypeDto.DATABASE; - public final static UUID IDENTIFIER_1_CREATED_BY = USER_1_ID; public final static IdentifierStatusType IDENTIFIER_1_STATUS_TYPE = IdentifierStatusType.PUBLISHED; public final static IdentifierStatusTypeDto IDENTIFIER_1_STATUS_TYPE_DTO = IdentifierStatusTypeDto.PUBLISHED; @@ -5882,6 +5960,7 @@ public abstract class BaseTest { .publisher(IDENTIFIER_1_PUBLISHER) .type(IDENTIFIER_1_TYPE) .owner(USER_1) + .ownedBy(USER_1_ID) .licenses(new LinkedList<>(List.of(LICENSE_1))) .creators(new LinkedList<>(List.of(IDENTIFIER_1_CREATOR_1))) .funders(new LinkedList<>(List.of(IDENTIFIER_1_FUNDER_1))) @@ -6197,6 +6276,7 @@ public abstract class BaseTest { .publisher(IDENTIFIER_5_PUBLISHER) .type(IDENTIFIER_5_TYPE) .owner(USER_2) + .ownedBy(USER_2_ID) .creators(new LinkedList<>(List.of(IDENTIFIER_5_CREATOR_1, IDENTIFIER_5_CREATOR_2))) .status(IDENTIFIER_5_STATUS_TYPE) .build(); @@ -6475,6 +6555,7 @@ public abstract class BaseTest { .publisher(IDENTIFIER_6_PUBLISHER) .type(IDENTIFIER_6_TYPE) .owner(USER_3) + .ownedBy(USER_3_ID) .licenses(new LinkedList<>(List.of(LICENSE_1))) .creators(new LinkedList<>(List.of(IDENTIFIER_6_CREATOR_1, IDENTIFIER_6_CREATOR_2, IDENTIFIER_6_CREATOR_3))) .status(IDENTIFIER_6_STATUS_TYPE) @@ -6693,6 +6774,7 @@ public abstract class BaseTest { .publisher(IDENTIFIER_2_PUBLISHER) .type(IDENTIFIER_2_TYPE) .owner(USER_1) + .ownedBy(USER_1_ID) .licenses(new LinkedList<>(List.of(LICENSE_1))) .creators(new LinkedList<>()) .status(IDENTIFIER_2_STATUS_TYPE) @@ -6793,6 +6875,7 @@ public abstract class BaseTest { .publisher(IDENTIFIER_3_PUBLISHER) .type(IDENTIFIER_3_TYPE) .owner(USER_1) + .ownedBy(USER_1_ID) .licenses(new LinkedList<>(List.of(LICENSE_1))) .creators(new LinkedList<>()) .status(IDENTIFIER_3_STATUS_TYPE) @@ -6894,6 +6977,7 @@ public abstract class BaseTest { .publisher(IDENTIFIER_4_PUBLISHER) .type(IDENTIFIER_4_TYPE) .owner(USER_1) + .ownedBy(USER_1_ID) .licenses(new LinkedList<>(List.of(LICENSE_1))) .creators(new LinkedList<>()) .status(IDENTIFIER_4_STATUS_TYPE) @@ -7235,6 +7319,7 @@ public abstract class BaseTest { .tables(List.of(TABLE_5_BRIEF_DTO, TABLE_6_BRIEF_DTO, TABLE_7_BRIEF_DTO)) .views(List.of(VIEW_4_BRIEF_DTO)) .identifiers(new LinkedList<>()) + .owner(USER_2_BRIEF_DTO) .build(); public final static DatabaseAccess DATABASE_2_USER_1_READ_ACCESS = DatabaseAccess.builder() @@ -7482,6 +7567,7 @@ public abstract class BaseTest { .publisher(IDENTIFIER_7_PUBLISHER) .type(IDENTIFIER_7_TYPE) .owner(USER_4) + .ownedBy(USER_4_ID) .licenses(new LinkedList<>()) .creators(new LinkedList<>(List.of(IDENTIFIER_7_CREATOR_1))) .relatedIdentifiers(new LinkedList<>()) @@ -7494,6 +7580,7 @@ public abstract class BaseTest { .created(Instant.now().minus(4, HOURS)) .lastModified(Instant.now()) .isPublic(DATABASE_4_PUBLIC) + .isSchemaPublic(DATABASE_4_SCHEMA_PUBLIC) .name(DATABASE_4_NAME) .description(DATABASE_4_DESCRIPTION) .cid(CONTAINER_4_ID) -- GitLab From 1d03b7ebe140f9ed5e5a0ac44d5ef0177afd89b4 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 11 Dec 2024 07:20:34 +0100 Subject: [PATCH 07/12] WIP --- Pipfile | 1 + Pipfile.lock | 17 ++++-- dbrepo-analyse-service/Pipfile.lock | 14 ++--- .../lib/dbrepo-1.6.0.tar.gz | Bin 39703 -> 39704 bytes dbrepo-search-service/Pipfile.lock | 2 +- .../init/lib/dbrepo-1.6.0.tar.gz | Bin 39703 -> 39704 bytes dbrepo-search-service/lib/dbrepo-1.6.0.tar.gz | Bin 39703 -> 39704 bytes dbrepo-search-service/test.sh | 7 +++ lib/python/tests/test_unit_database.py | 49 ++++++------------ lib/python/tests/test_unit_identifier.py | 4 +- lib/python/tests/test_unit_query.py | 12 ++--- lib/python/tests/test_unit_table.py | 32 ++++++------ lib/python/tests/test_unit_view.py | 35 +++++-------- 13 files changed, 78 insertions(+), 95 deletions(-) create mode 100644 dbrepo-search-service/test.sh diff --git a/Pipfile b/Pipfile index f0721bfdca..8a4fa77172 100644 --- a/Pipfile +++ b/Pipfile @@ -19,6 +19,7 @@ pydantic = "==2.6.4" tuspy = "==1.0.3" mike = "==2.0.0" anybadge = "==1.14.0" +gunicorn = "*" [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index bf3eb9a4ce..a3746e32d2 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "c0f798e1103d6c20c3417ca7db612e28963f1b67de21172dd52ece1bb87f6816" + "sha256": "77395c7261196e0c46c146434bd370d1817840e4ebd695b0215311aa4a78e5ff" }, "pipfile-spec": 6, "requires": { @@ -738,6 +738,15 @@ ], "version": "==2.1.0" }, + "gunicorn": { + "hashes": [ + "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d", + "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec" + ], + "index": "pypi", + "markers": "python_version >= '3.7'", + "version": "==23.0.0" + }, "html5lib": { "hashes": [ "sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d", @@ -1110,11 +1119,11 @@ }, "packaging": { "hashes": [ - "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", - "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124" + "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", + "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f" ], "markers": "python_version >= '3.8'", - "version": "==24.1" + "version": "==24.2" }, "paginate": { "hashes": [ diff --git a/dbrepo-analyse-service/Pipfile.lock b/dbrepo-analyse-service/Pipfile.lock index 09eee0a9c5..6622e54a2c 100644 --- a/dbrepo-analyse-service/Pipfile.lock +++ b/dbrepo-analyse-service/Pipfile.lock @@ -175,20 +175,20 @@ }, "boto3": { "hashes": [ - "sha256:31ddcdb6f15dace2b68f6a0f11bdb58dd3ae79b8a3ccb174ff811ef0bbf938e0", - "sha256:69458399f41f57a50770c8974796d96978bcca44915c260319696bb43e47dffd" + "sha256:5ef7166fe5060637b92af8dc152cd7acecf96b3fc9c5456706a886cadb534391", + "sha256:fc8001519c8842e766ad3793bde3fbd0bb39e821a582fc12cf67876b8f3cf7f1" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.35.76" + "version": "==1.35.78" }, "botocore": { "hashes": [ - "sha256:a75a42ae53395796b8300c5fefb2d65a8696dc40dc85e49cf3a769e0c0202b13", - "sha256:b4729d12d00267b3185628f83543917b6caae292385230ab464067621aa086af" + "sha256:41c37bd7c0326f25122f33ec84fb80fc0a14d7fcc9961431b0e57568e88c9cb5", + "sha256:6905036c25449ae8dba5e950e4b908e4b8a6fe6b516bf61e007ecb62fa21f323" ], "markers": "python_version >= '3.8'", - "version": "==1.35.76" + "version": "==1.35.78" }, "certifi": { "hashes": [ @@ -427,7 +427,7 @@ }, "dbrepo": { "hashes": [ - "sha256:ab3cef49028a22f55e7411983e7f5040daf0e6b70d3794faeb7b49c6e04bc99e" + "sha256:5bd5cc35afbd540390e4d96534c87b02bad1a0a48209750d7b947aab1bed8027" ], "path": "./lib/dbrepo-1.6.0.tar.gz" }, diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.0.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.6.0.tar.gz index bf639a7f68d8c4a647a8ea2feef12d4909c2a190..1b18ac1f52f1a702283e5ea247cb41c8131a477b 100644 GIT binary patch literal 39704 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�ODHtV*> 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 MwylMQVF4=x0CU$b4FCWD literal 39703 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 diff --git a/dbrepo-search-service/Pipfile.lock b/dbrepo-search-service/Pipfile.lock index 3ed83c47df..8c1093cbf0 100644 --- a/dbrepo-search-service/Pipfile.lock +++ b/dbrepo-search-service/Pipfile.lock @@ -375,7 +375,7 @@ }, "dbrepo": { "hashes": [ - "sha256:ab3cef49028a22f55e7411983e7f5040daf0e6b70d3794faeb7b49c6e04bc99e" + "sha256:5bd5cc35afbd540390e4d96534c87b02bad1a0a48209750d7b947aab1bed8027" ], "path": "./lib/dbrepo-1.6.0.tar.gz" }, 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 index bf639a7f68d8c4a647a8ea2feef12d4909c2a190..1b18ac1f52f1a702283e5ea247cb41c8131a477b 100644 GIT binary patch literal 39704 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�ODHtV*> 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 MwylMQVF4=x0CU$b4FCWD literal 39703 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 diff --git a/dbrepo-search-service/lib/dbrepo-1.6.0.tar.gz b/dbrepo-search-service/lib/dbrepo-1.6.0.tar.gz index bf639a7f68d8c4a647a8ea2feef12d4909c2a190..1b18ac1f52f1a702283e5ea247cb41c8131a477b 100644 GIT binary patch literal 39704 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�ODHtV*> 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 MwylMQVF4=x0CU$b4FCWD literal 39703 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 diff --git a/dbrepo-search-service/test.sh b/dbrepo-search-service/test.sh new file mode 100644 index 0000000000..40328cd5dd --- /dev/null +++ b/dbrepo-search-service/test.sh @@ -0,0 +1,7 @@ +#!/bin/bash +PIPENV_PIPFILE=./dbrepo-search-service/Pipfile +source ./dbrepo-search-service/venv/bin/activate +pip install pipenv +pipenv install gunicorn && pipenv install --dev --system --deploy +cd ./dbrepo-search-service/ && coverage run -m pytest test/test_app.py test/test_jwt.py test/test_opensearch_client.py test/test_keycloak_client.py --junitxml=report.xml && coverage html && coverage report > ./coverage.txt +cat ./coverage.txt | grep -o 'TOTAL[^%]*%' \ No newline at end of file diff --git a/lib/python/tests/test_unit_database.py b/lib/python/tests/test_unit_database.py index f72c80c93c..0109416479 100644 --- a/lib/python/tests/test_unit_database.py +++ b/lib/python/tests/test_unit_database.py @@ -43,12 +43,8 @@ class DatabaseUnitTest(unittest.TestCase): exp = Database( id=1, name='test', - creator=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), - owner=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), - contact=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), + owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), + contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), exchange_name='dbrepo', internal_name='test_abcd', @@ -115,12 +111,8 @@ class DatabaseUnitTest(unittest.TestCase): exp = Database( id=1, name='test', - creator=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), - owner=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), - contact=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), + owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), + contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), exchange_name='dbrepo', internal_name='test_abcd', @@ -190,12 +182,8 @@ class DatabaseUnitTest(unittest.TestCase): exp = Database( id=1, name='test', - creator=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), - owner=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), - contact=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), + owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), + contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), exchange_name='dbrepo', internal_name='test_abcd', @@ -226,7 +214,7 @@ class DatabaseUnitTest(unittest.TestCase): mock.put('/api/database/1', json=exp.model_dump(), status_code=202) # test client = RestClient(username="a", password="b") - response = client.update_database_visibility(database_id=1, is_public=True) + response = client.update_database_visibility(database_id=1, is_public=True, is_schema_public=True) self.assertEqual(response.is_public, True) def test_update_database_visibility_not_allowed_fails(self): @@ -236,7 +224,7 @@ class DatabaseUnitTest(unittest.TestCase): # test try: client = RestClient(username="a", password="b") - response = client.update_database_visibility(database_id=1, is_public=True) + response = client.update_database_visibility(database_id=1, is_public=True, is_schema_public=True) except ForbiddenError: pass @@ -247,7 +235,7 @@ class DatabaseUnitTest(unittest.TestCase): # test try: client = RestClient(username="a", password="b") - response = client.update_database_visibility(database_id=1, is_public=True) + response = client.update_database_visibility(database_id=1, is_public=True, is_schema_public=True) except NotExistsError: pass @@ -257,7 +245,7 @@ class DatabaseUnitTest(unittest.TestCase): mock.put('/api/database/1', status_code=404) # test try: - response = RestClient().update_database_visibility(database_id=1, is_public=True) + response = RestClient().update_database_visibility(database_id=1, is_public=True, is_schema_public=True) except AuthenticationError: pass @@ -265,12 +253,8 @@ class DatabaseUnitTest(unittest.TestCase): exp = Database( id=1, name='test', - creator=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), - owner=User(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='other', - attributes=UserAttributes(theme='light')), - contact=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), + owner=UserBrief(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='other'), + contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), exchange_name='dbrepo', internal_name='test_abcd', @@ -342,8 +326,7 @@ class DatabaseUnitTest(unittest.TestCase): def test_get_database_access_succeeds(self): exp = DatabaseAccess(type=AccessType.READ, created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), - user=User(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='other', - attributes=UserAttributes(theme='light'))) + user=UserBrief(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='other')) with requests_mock.Mocker() as mock: # mock mock.get('/api/database/1/access', json=exp.model_dump()) @@ -374,8 +357,7 @@ class DatabaseUnitTest(unittest.TestCase): def test_create_database_access_succeeds(self): exp = DatabaseAccess(type=AccessType.READ, created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), - user=User(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='other', - attributes=UserAttributes(theme='light'))) + user=UserBrief(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='other')) with requests_mock.Mocker() as mock: # mock mock.post('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', json=exp.model_dump(), @@ -436,8 +418,7 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_access_succeeds(self): exp = DatabaseAccess(type=AccessType.READ, created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), - user=User(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='other', - attributes=UserAttributes(theme='light'))) + user=UserBrief(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='other')) with requests_mock.Mocker() as mock: # mock mock.put('/api/database/1/access/abdbf897-e599-4e5a-a3f0-7529884ea011', json=exp.model_dump(), diff --git a/lib/python/tests/test_unit_identifier.py b/lib/python/tests/test_unit_identifier.py index 2832f0e799..bc9f8a5314 100644 --- a/lib/python/tests/test_unit_identifier.py +++ b/lib/python/tests/test_unit_identifier.py @@ -33,7 +33,7 @@ class IdentifierUnitTest(unittest.TestCase): type=RelatedIdentifierType.DOI)], creators=[IdentifierCreator(id=5, creator_name='Carberry, Josiah')], status=IdentifierStatusType.PUBLISHED, - creator=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise')) + owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise')) # mock mock.post('/api/identifier', json=exp.model_dump(), status_code=201) # test @@ -133,7 +133,7 @@ class IdentifierUnitTest(unittest.TestCase): type=RelatedIdentifierType.DOI)], creators=[IdentifierCreator(id=5, creator_name='Carberry, Josiah')], status=IdentifierStatusType.PUBLISHED, - creator=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'))] + owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'))] # mock mock.get('/api/identifiers', json=[exp[0].model_dump()], headers={"Accept": "application/json"}) # test diff --git a/lib/python/tests/test_unit_query.py b/lib/python/tests/test_unit_query.py index e1b326fa57..bc1f7e4814 100644 --- a/lib/python/tests/test_unit_query.py +++ b/lib/python/tests/test_unit_query.py @@ -6,7 +6,7 @@ import datetime from dbrepo.RestClient import RestClient from pandas import DataFrame -from dbrepo.api.dto import Result, Query, User, UserAttributes, QueryType +from dbrepo.api.dto import Result, Query, User, UserAttributes, QueryType, UserBrief from dbrepo.api.exceptions import MalformedError, NotExistsError, ForbiddenError, QueryStoreError, \ MetadataConsistencyError, AuthenticationError @@ -79,11 +79,8 @@ class QueryUnitTest(unittest.TestCase): def test_find_query_succeeds(self): with requests_mock.Mocker() as mock: exp = Query(id=6, - creator=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), + owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), execution=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), - last_modified=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), query='SELECT id, username FROM some_table WHERE id IN (1,2)', query_normalized='SELECT id, username FROM some_table WHERE id IN (1,2)', type=QueryType.QUERY, @@ -131,11 +128,8 @@ class QueryUnitTest(unittest.TestCase): def test_get_queries_succeeds(self): with requests_mock.Mocker() as mock: exp = [Query(id=6, - creator=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), + owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), execution=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), - last_modified=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), query='SELECT id, username FROM some_table WHERE id IN (1,2)', query_normalized='SELECT id, username FROM some_table WHERE id IN (1,2)', type=QueryType.QUERY, diff --git a/lib/python/tests/test_unit_table.py b/lib/python/tests/test_unit_table.py index 0be3a4a9fb..0b5721ae5b 100644 --- a/lib/python/tests/test_unit_table.py +++ b/lib/python/tests/test_unit_table.py @@ -1,5 +1,4 @@ import unittest -from json import dumps import requests_mock import datetime @@ -7,9 +6,9 @@ import datetime from dbrepo.RestClient import RestClient from pandas import DataFrame -from dbrepo.api.dto import Table, CreateTableConstraints, UserAttributes, User, Column, Constraints, ColumnType, Result, \ - Concept, Unit, TableStatistics, ColumnStatistic, PrimaryKey, TableMinimal, ColumnMinimal, TableBrief, UserBrief -from dbrepo.api.exceptions import MalformedError, ForbiddenError, NotExistsError, NameExistsError, QueryStoreError, \ +from dbrepo.api.dto import Table, CreateTableConstraints, Column, Constraints, ColumnType, Result, Concept, Unit, \ + TableStatistics, ColumnStatistic, PrimaryKey, TableMinimal, ColumnMinimal, TableBrief, UserBrief +from dbrepo.api.exceptions import MalformedError, ForbiddenError, NotExistsError, NameExistsError, \ AuthenticationError, ExternalSystemError @@ -21,16 +20,13 @@ class TableUnitTest(unittest.TestCase): description="Test Table", database_id=1, internal_name="test", - creator=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), - owner=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), + owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), is_versioned=True, created_by='8638c043-5145-4be8-a3e4-4b79991b0a16', queue_name='test', routing_key='dbrepo.test_database_1234.test', is_public=True, + is_schema_public=True, constraints=Constraints(uniques=[], foreign_keys=[], checks=[], @@ -54,6 +50,7 @@ class TableUnitTest(unittest.TestCase): # test client = RestClient(username="a", password="b") response = client.create_table(database_id=1, name="Test", description="Test Table", columns=[], + is_public=True, is_schema_public=True, constraints=CreateTableConstraints()) self.assertEqual(exp, response) @@ -65,6 +62,7 @@ class TableUnitTest(unittest.TestCase): try: client = RestClient(username="a", password="b") response = client.create_table(database_id=1, name="Test", description="Test Table", columns=[], + is_public=True, is_schema_public=True, constraints=CreateTableConstraints()) except MalformedError: pass @@ -77,6 +75,7 @@ class TableUnitTest(unittest.TestCase): try: client = RestClient(username="a", password="b") response = client.create_table(database_id=1, name="Test", description="Test Table", columns=[], + is_public=True, is_schema_public=True, constraints=CreateTableConstraints()) except ForbiddenError: pass @@ -89,6 +88,7 @@ class TableUnitTest(unittest.TestCase): try: client = RestClient(username="a", password="b") response = client.create_table(database_id=1, name="Test", description="Test Table", columns=[], + is_public=True, is_schema_public=True, constraints=CreateTableConstraints()) except NotExistsError: pass @@ -101,6 +101,7 @@ class TableUnitTest(unittest.TestCase): try: client = RestClient(username="a", password="b") response = client.create_table(database_id=1, name="Test", description="Test Table", columns=[], + is_public=True, is_schema_public=True, constraints=CreateTableConstraints()) except NameExistsError: pass @@ -112,6 +113,7 @@ class TableUnitTest(unittest.TestCase): # test try: response = RestClient().create_table(database_id=1, name="Test", description="Test Table", columns=[], + is_public=True, is_schema_public=True, constraints=CreateTableConstraints()) except AuthenticationError: pass @@ -131,8 +133,9 @@ class TableUnitTest(unittest.TestCase): description="Test Table", database_id=1, internal_name="test", - owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), + is_public=True, + is_schema_public=True, + owned_by='8638c043-5145-4be8-a3e4-4b79991b0a16', is_versioned=True)] # mock mock.get('/api/database/1/table', json=[exp[0].model_dump()]) @@ -147,16 +150,13 @@ class TableUnitTest(unittest.TestCase): description="Test Table", database_id=1, internal_name="test", - creator=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), - owner=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), + owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), is_versioned=True, created_by='8638c043-5145-4be8-a3e4-4b79991b0a16', queue_name='test', routing_key='dbrepo.test_database_1234.test', is_public=True, + is_schema_public=True, constraints=Constraints(uniques=[], foreign_keys=[], checks=[], diff --git a/lib/python/tests/test_unit_view.py b/lib/python/tests/test_unit_view.py index 19a88be85a..1bb46bc37c 100644 --- a/lib/python/tests/test_unit_view.py +++ b/lib/python/tests/test_unit_view.py @@ -1,13 +1,10 @@ import unittest -from json import dumps import requests_mock -import datetime - -from dbrepo.RestClient import RestClient from pandas import DataFrame -from dbrepo.api.dto import UserAttributes, User, View, Result, ViewColumn, ColumnType +from dbrepo.RestClient import RestClient +from dbrepo.api.dto import View, Result, ViewColumn, ColumnType, UserBrief from dbrepo.api.exceptions import ForbiddenError, NotExistsError, MalformedError, AuthenticationError @@ -30,13 +27,11 @@ class ViewUnitTest(unittest.TestCase): initial_view=False, query="SELECT id FROM mytable WHERE deg > 0", query_hash="94c74728b11a690e51d64719868824735f0817b7", - creator=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), + owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), is_public=True, + is_schema_public=True, columns=[ViewColumn(id=1, name="id", internal_name="id", database_id=1, auto_generated=False, column_type=ColumnType.BIGINT, is_public=True, is_null_allowed=False)], - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), - last_modified=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), identifiers=[])] # mock mock.get('/api/database/1/view', json=[exp[0].model_dump()]) @@ -63,13 +58,11 @@ class ViewUnitTest(unittest.TestCase): initial_view=False, query="SELECT id FROM mytable WHERE deg > 0", query_hash="94c74728b11a690e51d64719868824735f0817b7", - creator=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), + owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), is_public=True, + is_schema_public=True, columns=[ViewColumn(id=1, name="id", internal_name="id", database_id=1, auto_generated=False, column_type=ColumnType.BIGINT, is_public=True, is_null_allowed=False)], - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), - last_modified=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), identifiers=[]) # mock mock.get('/api/database/1/view/3', json=exp.model_dump()) @@ -106,19 +99,17 @@ class ViewUnitTest(unittest.TestCase): initial_view=False, query="SELECT id FROM mytable WHERE deg > 0", query_hash="94c74728b11a690e51d64719868824735f0817b7", - creator=User(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise', - attributes=UserAttributes(theme='light')), + owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), is_public=True, + is_schema_public=True, columns=[ViewColumn(id=1, name="id", internal_name="id", database_id=1, auto_generated=False, column_type=ColumnType.BIGINT, is_public=True, is_null_allowed=False)], - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), - last_modified=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), identifiers=[]) # mock mock.post('/api/database/1/view', json=exp.model_dump(), status_code=201) # test client = RestClient(username="a", password="b") - response = client.create_view(database_id=1, name="Data", is_public=True, + response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True, query="SELECT id FROM mytable WHERE deg > 0") self.assertEqual(exp, response) @@ -129,7 +120,7 @@ class ViewUnitTest(unittest.TestCase): # test try: client = RestClient(username="a", password="b") - response = client.create_view(database_id=1, name="Data", is_public=True, + response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True, query="SELECT id FROM mytable WHERE deg > 0") except MalformedError: pass @@ -141,7 +132,7 @@ class ViewUnitTest(unittest.TestCase): # test try: client = RestClient(username="a", password="b") - response = client.create_view(database_id=1, name="Data", is_public=True, + response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True, query="SELECT id FROM mytable WHERE deg > 0") except ForbiddenError: pass @@ -153,7 +144,7 @@ class ViewUnitTest(unittest.TestCase): # test try: client = RestClient(username="a", password="b") - response = client.create_view(database_id=1, name="Data", is_public=True, + response = client.create_view(database_id=1, name="Data", is_public=True, is_schema_public=True, query="SELECT id FROM mytable WHERE deg > 0") except NotExistsError: pass @@ -164,7 +155,7 @@ class ViewUnitTest(unittest.TestCase): mock.post('/api/database/1/view', status_code=404) # test try: - response = RestClient().create_view(database_id=1, name="Data", is_public=True, + response = RestClient().create_view(database_id=1, name="Data", is_public=True, is_schema_public=True, query="SELECT id FROM mytable WHERE deg > 0") except AuthenticationError: pass -- GitLab From c1c6b7207d74bc01ad51e0a5df6a42171af7156a Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 11 Dec 2024 07:50:34 +0100 Subject: [PATCH 08/12] WIP --- dbrepo-analyse-service/Pipfile.lock | 2 +- .../lib/dbrepo-1.6.0.tar.gz | Bin 39704 -> 39550 bytes .../internal/PrivilegedDatabaseDto.java | 3 - dbrepo-search-service/Pipfile.lock | 2 +- .../init/lib/dbrepo-1.6.0.tar.gz | Bin 39704 -> 39550 bytes dbrepo-search-service/lib/dbrepo-1.6.0.tar.gz | Bin 39704 -> 39550 bytes dbrepo-search-service/test/test_app.py | 37 +++--------- .../test/test_opensearch_client.py | 56 +++++------------- lib/python/tests/test_unit_container.py | 2 - lib/python/tests/test_unit_database.py | 12 ---- lib/python/tests/test_unit_identifier.py | 4 -- lib/python/tests/test_unit_table.py | 4 -- 12 files changed, 26 insertions(+), 96 deletions(-) diff --git a/dbrepo-analyse-service/Pipfile.lock b/dbrepo-analyse-service/Pipfile.lock index 6622e54a2c..77b72d8cd6 100644 --- a/dbrepo-analyse-service/Pipfile.lock +++ b/dbrepo-analyse-service/Pipfile.lock @@ -427,7 +427,7 @@ }, "dbrepo": { "hashes": [ - "sha256:5bd5cc35afbd540390e4d96534c87b02bad1a0a48209750d7b947aab1bed8027" + "sha256:7164b09a9f578998b3adc1d51d16e4d77404c84ed9a6194ea4b6f07a6b69c27b" ], "path": "./lib/dbrepo-1.6.0.tar.gz" }, diff --git a/dbrepo-analyse-service/lib/dbrepo-1.6.0.tar.gz b/dbrepo-analyse-service/lib/dbrepo-1.6.0.tar.gz index 1b18ac1f52f1a702283e5ea247cb41c8131a477b..db73c1e06cf41cf64b5e409a536527ecebe1694f 100644 GIT binary patch delta 37791 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�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/oF&Mw-dQ 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 JouPu20RR#eb7uem delta 37918 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 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 index c5ead1721e..a9eaba6a85 100644 --- 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 @@ -6,8 +6,6 @@ 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 at.tuwien.api.user.UserDto; -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; @@ -15,7 +13,6 @@ import jakarta.validation.constraints.NotNull; import lombok.*; import lombok.extern.jackson.Jacksonized; -import java.time.Instant; import java.util.List; @Getter diff --git a/dbrepo-search-service/Pipfile.lock b/dbrepo-search-service/Pipfile.lock index 8c1093cbf0..a9fc61d4e8 100644 --- a/dbrepo-search-service/Pipfile.lock +++ b/dbrepo-search-service/Pipfile.lock @@ -375,7 +375,7 @@ }, "dbrepo": { "hashes": [ - "sha256:5bd5cc35afbd540390e4d96534c87b02bad1a0a48209750d7b947aab1bed8027" + "sha256:7164b09a9f578998b3adc1d51d16e4d77404c84ed9a6194ea4b6f07a6b69c27b" ], "path": "./lib/dbrepo-1.6.0.tar.gz" }, 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 index 1b18ac1f52f1a702283e5ea247cb41c8131a477b..db73c1e06cf41cf64b5e409a536527ecebe1694f 100644 GIT binary patch delta 37791 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�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/oF&Mw-dQ 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 JouPu20RR#eb7uem delta 37918 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 diff --git a/dbrepo-search-service/lib/dbrepo-1.6.0.tar.gz b/dbrepo-search-service/lib/dbrepo-1.6.0.tar.gz index 1b18ac1f52f1a702283e5ea247cb41c8131a477b..db73c1e06cf41cf64b5e409a536527ecebe1694f 100644 GIT binary patch delta 37791 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�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/oF&Mw-dQ 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 JouPu20RR#eb7uem delta 37918 zcmeyjg=xk%CN}wQ4vtLSiENtnkwJ@!Es8Td`z$w36I@wgBv)_ZVxrmO*udy;vd4ek ztGe&3b^c|mSBaa1<q4?Xelk5m<$`x<X=!fk)!5tXa{r&7`tzl!vF@|_?;7)E|DF83 zd-LZ1O27KfmzRGl`@YZEu6BFNc?}L<`Cb3t-Tw3DZvu}~^?_Hr-GBeK|5H&?P*NXq zySA{Tpx{H&+uc{6ul^sg-A=kHdiU1Dx6XYl@8ABfanXnO?=Bwf`xm~pa>35MhxhJ1 z+}s=+@xNNXtZ$z&-?W|o*!j=!Mbz!|e82yK|69us|Mwm?`F}tD<Nu`}{@Wh?|Gmz} z#^TOhX15KG{@hplUw_%ga(BjD+hf1%Yd$Kq|9@XE`|h2*!vFi0cPwvJ7qaY0DF4s8 zfh9S8=Ij5`Pyc5hTjHObQTBeu$7An|%oALn)+g2_RIl3@etV@<z46_NFZ+A<&Ydg1 zbLzW81r>Yt{{8SFz<A~CS<k<3m%SIdVQ-u0?ey!<br%;FX3dF-n`3tS?CI`lA76dC zwIg$GXz%OIt6!h4zdT#GCT3~S^0Q&Tcm4dtHa~!Qx9Q_4UvsYWG45EfO>IG>xN?+v zllA4o9!BF><(7$UXXIJhUPifHFV>Aa{i1T8Ay>rJhNq9JudV3rU%g0EC;O)3i`(0k zYw~6^CMHflW0ZH?t-G{RdH02V?|XlhAM0<s-Yjo6<@2t^jKzmlV&>J)XIk@`_xQfM z`?-1FA57iHsNm>oEhGI*W6$TB-{r6Tw@eOI-ec^{Z1wiHT1d(75RV6r%ne_Ck6SEW z7VOXyBctGWo@cZ7S`Q5d-heQZ$BvAQ3(hj#GgUD8V!J$RhTUX)8Kzxbiw`bW7XKnp zVJ=azF2hsAMDERpzU_yt*GR6nsh|HqqVLZ_b`jykP~RPM7MET;WyPy%p!H2{{VQ98 z{alxyAJ$P6*min<c<%+{U1~m7(}dT42ybD$FEL}?&2)>(8~FyW?r|Pib?mV0;)jRd z1n*bdx;FXQLAR`?FfB6&r^~{3ZaU|zO#jX>+xc1f#+RoKp8G!g%3Ssr4?Cvw_BuU? zt7p(Z!{{^lJkw1jlgiUE4o=tGR`zUNcTm#z=lXjYcUL&X{&}`O|J7!`|B8O^a<f}< zf42F_FJk=0xnL_Z3(Et!8;%Yv{w2r68GXIGu0&mk7N4e|v)*yir8c|QhWFcFec9$N z@xLRM$L4g~!kJrEJz=?>cU@9YD?w0dow!t=?S_r@<ui^Sc-_kH5yx1{F*%9x+tXW% z+gyzIIE1eIKku&m&o6SzjwVX|-m&Me`2;7alFPE6(+y;m+poEw|IYSdQ+4_-hOIFQ z4x)Jts=l59UycacSGQ#rd<iJN`h&q$x-;?6Cdpen7T7TP@oeUw!jRl>d?VxQJKSzn z=XaJjy#27%I-!1AuGGVd75u-~KCkyNY-O+T5D=Dk^6H+}@b*;V3f2RG>TRYBhYuUP z_q}bHFT3-f>An!xye^g-rmUJXyYxNYv1K$I>e^fA<Cr-6LROpNDX~KnTEa{M8yPqF zKTF`Sb#_g7>+o!k(zG0&cAlz#EZrwR%9$za%rUyZk6q`UF|%O3&>D43hTkWSHA?Kw z=zQ$JRF}<WQK_fv%Kh8n75l4)d$@KldU<H;hl2F-_a<o!lSP|&8m7M7Ts?c4&`OB_ z<!hY>84l0WuXhwqn)UUnij=eFai#?#hxT#Kt>n|?T9NiWSG>yeeB~^8Z@a7Ay8l;A zbeVrZE@<-%>#R5r-ub*f(e-Qn%}i<+i5%hPO+HZbtS3=+hdgKDb_ZP#^>vmBvx_d} zCb-m{e=}*qiY%ibMN?Lhr1r|a8Q1(LOy!oGZ~6G7>4Ir%uFZE^5K#~`P0M1##v5}4 zc%z+!C+b$pn1^uRd(IetRm`;`=6>@!*^}FvFY12aJ7}}yp5qnQ3BnagngQ<hM~(+) zwa!TuDsR2y6dp1`JNUcD`|UgvZZd~F(bm80S)Cl)n;E<1=+nJPrvo}IH!#%l&nOg4 ze|W8=qff48&GSj042xL5@y4)PU5aecI1()3(%t$&K7`wK;-lCq`490d!UZn351!&% zG3CN6wM|pBM0%Ph@G{M9Z9XGwD54lUsea-jmicv4YGR@TcTMa2vg(*yQpkct>5pty zdF3J#rYx6ZKce3%^>dm<oXV^l>YXh=B2;Y;1vD+ZD_gmkLG1m3FZN2WKP$iWSQVqQ z;kVw$ItAA`%1$|Is!E%q_A}JXZrc}@{raWqoD1u(Zg|QyXT_%%94`MXJW8_eFdA&< zdBGV{@8&i~rs3M}PO-!Tb<&J~EpFsqXRawO?B!a&?T>}>t<{qD3!_@^&Rg-&`|PQV z-W>&^TV`dR$vExv{1nfUB?}c#IEXPBOcrymV$^6i@VfA!O^4--$0z1%&m;KFUP-Nc zo_FyKyFt>Qovcy)_uUVll%DNpaqrbnp1PY0ZrrVoO?gtUnW^{2{!KtsbO7_U8v-va zj=oeXvy-{&6nj8P;ME1g#tT=48)kOjYM94y)M@+e64UsPNkP+sZPPl6AL-UKecQ^p z%V^@uI@Zm>jafMokC>PzD^Jl9Vvs0k&bTb`X=B!A_E%OWW$E{fFMU#RNO7;;EBC5W zfn^5so9X|#WsZJ!uD3Jn;^%OU%xFE5_T+>BYfWFu`ey|%7VLbv)8J)G>XTTeE$fnR zHRQ*INy{Wml)AWa^^axTtIaul?k~G~^K;{GkM6dcLEm0-?-$Bxl6<q%$HOI|e!)bI zwewb~YM)>%<PP_UW|*&CS@^(3oZmt;=-SnuH2&xDH=P&@w3cL=YA&q5`&?m0t#G{X zWZ|}IRiOy4?ceq)+)!$HXt3)Z$5-`#(rNchWIiiO+*IVdnpmsH!jLTV!$aMp;HVOt zyHO*v97nKq)^cgza}j*r=Z-g+gl4p@PAc@8qBYsX?WotpHn%OuT24%k5}nSs!=><> z%Gw!?Avbg?G&=ng#iN|9FFsmR|G@R^j<j9rE8JrF&lDcHIVpzY#{%8b*%J0z7d~Zp z1?0Azb35>)qc31_<NkS*P84pQ+5JJrFRa%`(aFOliuu?No$og6IZAr>Ro`311(#h_ zlYhyfv9|w%QpKHn4VhaLJ5FpVxf&kX{=<{^iptLkTU7paA6fC{bJ*+2)_F>yQg7=u zw%p$teB51#>GQ#|iGDl2N@Uzs?haPz&0X~Jo_dPGJ-<EA*InCu-YFs>bftN=noT4- zLts%s)bUk^I}}#!IHdG4Li9?k>$VKTE3;S4GICUray#wY)4N;2=z-^^D?6SY+qpca zxnZ+SP=@2F2L^(3YmWX*RN1kFZN5x~Oy)H;qk3J_|A#&tUKzK4M~=Dwxoe3ZYq>b@ z?|9=PzoIDn?~B#m$&8ZPs;!Z;^w(-;R?RYKU*>9-=2D^~y!ONtpD&-Y&T=eso72eO z(iSk6ZGDvSO^I_yv<0QNJTx$NDE9h(saxw}7VA+CE8A%avxJUuTo-Ih3K11K^da8L zxL<JQzIBi5`7{o{bFE=>O|zfW@ba7O{#nO1X_nfaJ*}G4%%k&FNV`>pV*|s_6vyU$ zTU(oDR_`plXwS}OtR;4aMR`l@@wEm|;xkRMKl`3yHeWh*GJj6Ti3(R<RldH6=p!4C z8Q$L`B)u&4VY&QU*||zv!&F`{IbUAWqIJBEL3m+*=NrwE{Q3y7;<XnYR;@Mcn%L8N zyS~V3vQ4jm&RmIxwlhav?rCk9xkK(j|D-R+1t)LMpV+zR#43fYQ|Ek*Vf3)rw`Ju4 zw<8uM6E3QzFTN&qxyab$$BC`eH>Mt$eeqk@o;Ws>s~I=HoQRNlK0|3&xu33T7XR*R zdnyGPR^DATLnJK9{MRJUsr7DFT{}~!ES<E0B}ur*;aJ}d&IjAFmawv!K0d~(DRp7V zM*j<e*WEr(kGf*!F{M6v&J`uo^l8tIohprWon`lJM#+<c(Dz~A?an97;xz3(aD}7I z{9tIf_dB~!zr^D@re1l+dvbbozjW%3oZl(;7D^~yXcFvbZiwv3XL)FJVVO%w{gJKQ z?-W>dv?j0MH<K0o7qLcQ(}^4E*RDp`7{;{<%>U{;|Gl<qF8@aH0**BSS_+JtTz&hu z**uz~7`}6>tfI@F8v&1Bb>BH=!2ZHKSc<o5?~M9>yV{S!2|^}kxV;xm6$n>eKiMF- z_S@|fV!PcnE-=p!7I|s1RN=>7#yo#zlZN`#3)Z^~91KNIy>Rf)J!P*QK6#G0BCnAP z!|^MDXDzle8_g}aye)kX>tEpyMq%9!jaAmq*mNTAWhA-gG^9=JnSO#htXIuv&0htk ztxX#iT~^3k^lItFTFKdWe7|Hfo{rDo(vy~bx8i1oX|&MJ{Mm1>PdCqfocs9KuEL9X z^S1V!uFtNG{`YC>#T`Gc{@7Vr$n~o4Y<YwI!g7-iw<O{CjV9)qTbfSzXL;F~vMEmw zaAlh~KW$^fnX=7)pRM7F*ncA{ZqKf~xIZOjb!8XVNj*=$uD+h})UnggW~coQS6Uc; z_S@0O?sk3?7wPcc>=_$ooA+ive)a6vt4*cHmg?TuEh$K^XM7;<wA}2i)rE6B+qoV; zVKRPR?R?+u>m0T_%&!h9xzr0DzxrqCo!b&D3xppQsP5jz{OC>N^{rE9o|(DpM!IVL zntc~%nWb62{TtAHUubE>%ii33xA=1BnFoH7TJUd&;=zNr8{GLUtr^`mY%vY*zH^d^ ziK}#a<LO_0ytl%q=Z0Oa&nq{5b}Dq<{LU|N54)IteUbe=O~i_6UH?Cht@(<(c?_8p z7u@~$=Ig<o={_|Jg5CUPCI=rsr0fu!&3C5mPJ92>R1XIc837*2cWbkEpWm>+VdK+i z&J_m==IiC1=yX$UcbhMLp!Z$Y{P!~#i-d2ID({`#rk7Z}q~c76{l-|snNs!fS8ds* z9<nXu6y>}9(c<7Y+w)Z$Wbc;$5Nz3GE;H+es>|GjmWJ;>w<UkZNX_)if8utEm-Aqc zhrk_HheuaG9<)wl6yUq0sP)3reNKk6<z?U3_m=ryn#Xa!K~!OaLbJ5X=Ni^O5yn!n zQ#d<VPgZVx?xwP0tLw*ae4*ce6#3?f)r;kA_tf1|{k-xHx7WOLH`1(s#yIA`HhiRh z;1!3{<+nz59g5}6T<^@)b|o{5J9{g&OSrFAPBh;W?Ow6aBmbt`w&q#-_p=&5KByA> zHdXe>w(0{1D&E>IP(9-7*=lfT`LzNQyRM8v*<5p%mv@q)TjuO|WN37$qgQCpl9w*K zH3aM3`)ypMBsu0A-0~^w|C}E4p=PgeUKN+Q*z3lfhq4>ea#DAk^R0K7<Dqq(tNUV+ z+|Rl#(P}ow4@^F&<(@p%I&gL7{*P}XG^8&!9P4Q0Snf5m{=$mDU};gEISuFa`~ugd zwI00q``A@ck<5ROC6-Uv!+Id_xKfQH|J}poET@`p)q5ZMuuD@r#8txe&TNINS^QzW z{Am>$d!??PnDqYUnT<@$EG#-@=f30@PM^e>x^92<emP0a7c&Je<>_>G?pU?qmx=eT zv=Bera_6Jm8QCFb|Kw-0MZQj1#<n1iLA9Z4{R4q(jcVJr?v0GmJ}B|yr}|bwFE?9u zh94{;B}{h~JX%`cIzObSQ0w$dwiP_4VR>Z}XIV};6p^>~-X@Kd)-n%O6~?d__6H{l zdu=LYQ(bGG2ea%~nBh>d?N-0|jLE;(ow60SwDj3u-EMttj>Mv~N6M3b>@mM5c!wc9 zY5G@NQE``~OtauQHLI!|Rs<eo(t1|(dH)8^%zg#s2amjWoL?%HU%&ehkLtA*8eS_c zW?g-MchdGVJv-m1D9&D}^4(K$xe`kix5F~6%NZ{!ceQs|Mql1L#jwWngF%a<_Jrk) z`YY<ZkIueuElG#1Nu?+#yCE$hBd?x?g<XrWgVkK}rurV$iTmW191o3dy}tfaeb~?W ztN)z8`uy~X|2u#ER4-W+qi6cR{`t{&4=*|@{V)EXkY7Ia|K^_amfXIldCuxCTrJzY zY1{5H#;*Gt4`wF&?p0KZ%<g4-VQFjT7aw;x`*D`cy-EoO_Nwjnan)~mZ-`~BI=&=} z)#>`CYDZle+Z$)r&b&KIGB5c>Tjy+>y9F#<r_A2xRBtcau=m;mjf=^TWwwM|SaGjj z>Dkf4x;?CAeZ8fBW3Oi1m&jlEw)F9S_Ah(fHh;CR>aUL!&N{i#(DG&Gw<pVgPF}Fg zw{6nXFKuF8eW$VvX6j50U3TY*=GOh;UP7UUd$`p@UtZ+htQ!85Da>or)LWZ$bzgeb zd3o*&TCA(esm=9QLs3$@ZKu(sO(D(P>gi7>o~d7SGAeM+`5e#a$`4a!91-O|8fh`p z`)IMR*Q-;~w+?y6btO)j@MbA%h0dHWON;NGJQ-j4LQ`4Nr_RfZtNX{bLnjkI8D~$5 zklW_vEj4-mr%A^}yfutFed<p6s&%`@Oq~+4?1#(Dlc~Gb8Msc0l)I`kr)1gTK)+8j zvo=mqF=_o{R6qIR7Kv?_CSBs1vVZ5~%TJc?QQ3Oq$&|@!#6DgzntZK9FeK>HtUptx z9ht`08K*PTcjdaJDqDS1B)Qdhu1pOH+cbOIjpe>or=?P7dKO&Vq^Ek<>!{fDiDgr- zr9JcO3od+`s(SL|`8y|zB88))KHZsausT)k>Pi31lcgIaehN)`^Q1ogV~X`pP0g2n z=QT8xf9h>Y6!$$8yn6qf6dT)h`+Jtytlir>`SX+Ib5v|~(-U^3?9~Yi3Hub+<F7a8 z$a0ZmMw5Ojz1?iEQs4c2gvrVLbt(I8B2Ib#n{CQzz`y9yBqncPJ{@h(4OdbQp7d<4 z^w3l9{2(}q)7wu=$8zU}Cn|?8)lcU2_O;Tn|GD9c%8^f#1-*T}bj&R`eo;9(X|kxd zU(}pAduANI;pLqcqO@<$61THoW88`s-@DV~*|%%^&M7I!ckIqjx|Dp)W!fwj$)Bga zyxOklYzmsBwAuIF&B@A7m+w*WtkpX0F|B82Pq3PA+C}%3o>RKEPMhYl@@2(R)lj!T z^;Hj_oYLu;HaTbIv|Ecjr)!2E{d02qsU96w&ft~HpQ<KjMIArnIrCF+RME0o7dK5Z znYu$$J<_;)nz#48D<)@zCRt2fzHv#4-_h+}UazLi|1`<kG<w|}mGd6qnyNRApCv}w zybS(asz2|KWWP_e4rhp~*SX0&v$h^O<;~}t`%QmRy^0j~IZegLkj)dlJf(W`H|x!_ zS@qUv+9a1%o{L&1doGr}-8$LJ)GR2dXr<YOpObwyi@60}$_)EiIXR$s&HbQBK~pP( zor+ea#pumjvg&hJ>*Ua{H+onnhfOt%^ZT^w(_;NeM^;@s!*g;?q>HI@QFho@p-Hh% zm-j5WzGQkv(5LMBb4IgOCCyfMPMVY)eDAyKq!e$X$w?<SeF_e`l(S@knCkg;u|MVV z9_HSS+3&c`Dj|k<w)JYYYxgqmh}-2acJ}(`x#jMWgmns8Tk_lcDx;<E&D{2MwoB3i zr(e-i%2WCZ{LbpWF5`~oHTYMu=kDe+x(~N-Y}>v~(?+M``z0a6yQ%eGH+?gfZuZ&8 zH1lSNZR;$FknEV%TG{F+gbTedwkIw4Y;kYGjXZ7xORk>B$&Xt%rtV2uD5-txTbqO2 zagMDWvDdW^7tga}T~@kAif70B+0BeXm!v(T1EQY99Nhl**1Nnlr=AMD)md|4k%E;@ z31>IU3+}^H4E+N1^*m>KnHo;JS^wRjio1@RZMniU&w%SSJK3XUx{@F3mo_~znZzHh zekXVHRXP5fhMZe-zt~0|NJ^Euc1`<1B?H5A!@$+cH=OA2T)shp=U>qM)o<Uc-RFDT zpZ4nJ4X5WW=09bYrCRujwk^$I%g+8kbMnz`WjBRiO2!_4wyv<s(fgn5`p^4}?yst> z54?S!E&BM887zy|Z|zX2WYEg|vf`zYNS4ipYTgCa>KlbhZDsg#7kyQXm%hD;qwJ&K zqa_RW=r}#)3}<b9`S;s1sa4GH3xv9)+OFTONIg~mPdy->!Oi$s`?|HYKRz(}a$k6Q z{hxgEXa3}DhG45D9g-$*T^}h<iHTO8uMzObU8TOZah8Lh_@%q^E5+;OZ{F>naawZS z+P_Df1h2SRJiBeTOt2_CRUz&Ej|T2PqHFZOJ)H62(S<dEg?!F$r3xw!c{UvPm%KQ6 ztEr<*>DxqBv6~l|W0&vK3p_mg*4mAEJx<rm8~+G|T;^ai$!Rflc-gJ==e~rwz`cdB zkE;0(&br!MS6|V-)sEZRWES7Gl^#y7ZiM|^aq4*I{qpatm*ih9cX)7X|7NQ{+p4~9 zvrn3xy<|e@8ab!N`Tld)vA^*T*Eo3L(8GnRkGI)xjXJx-e6HZ*g@W_4qea5IJe4k- z=u3Pfca85GUwJ>zW6{MYW$sE%UH$p4?1jAl@Bd%FFZbvE|LNw*Z|dJR%}SB5-hF%q z@0seF+J9oRZq8jf^Y5OtZ)sW243<k~ytr%k@cxgKH}4pO=3G3$d$0IbPEpr_O6HWR zNyn0|sGM-SAQLoys|nZYMQtw^FN=<UUwN;})R?oB;}L^ueC^+BUmCSKFSUjF>hddX z`1PFEQAzqZ*VfQv=Zl;+_dJxU>KD(N{cTsHOKa(okerZ0y?-}EoYxhm_;^2C;ZR<% zK=%CdOLOI%;@p2N+sPz$@zEXTCAYQHgo4ffu`IIU*uL&UsC%MAcJwjJqqBscF;p0= zG`w?e#h%T3@(lFP+uty2|MsoE>|hoDO);~*s#5pvgv2`K7j+yw^tYEOqmcXRh3eV$ zwky`9vPW%S6<j3W@a?xc1Iy(4mhKg2CLZ7Q{Iq+IRf6in8JEva%b09sweVb^sJPtP zttS?=q(A-AZ54VyRQZn7EwR$NW83)_dJCLc@o?&8*%?|EK3$8SFLntO>a>oMJ!s}v zx8bZe>lQ9Qmw(F9(b)-aBqZ|gH2ZGkX)_P8K3Sh|(|K*~62<$+R&eF@7=6F@&33xU z_38_eE0s4^a{f1bXj7gczrnny;CAD-3`40a5x;M9NGRX15|2BPXZt?c;o&X|=R5hV zbEb6gyL@ez`tsG0WnIImhZSl+x4xZFd}HhD&0)JQ@5m}Ur{}j`Z?^c`lRAd0iZ5I3 z-j^|Fe&IC<+xq=kTcYyy*ZW&q_srXV&M$A>LX)oZU$-9nd4K(jkFQT(Gr7C!Q~31j z0skI+$ndY8(V(g&)9z~fe`)32eVKa%=YIBMU11)cuP43ya&pUwOcR$odBGu%t<q<R zeB`*y=w@#Id~aR6%1VaN6|zPZITjhG7rZ)^^>@}s#(sgB!Hb3bCs#`;)l0Ei8nmBy z8oeZXvfC+fR}Q6w+_(Q1oV~hQ^1al$)^%ZzrCKCEFFq>Oq$_n?ev{~i#_#nucYZD` z6X%<A_CK5LSN%sGUH|VLlfUpTQ#k6X|JoUg&hC}(>-+YtNILfJ|9w{fSMK?J|NHm2 zJr-6!66;I<|K48p@AB8k$6x-eG21Y$vi{%Ya}VcP{Lg$|@ccu<e~$C@R!yust^Q|n z&Y#Mh^OPal@<15h2JB4zLyX&u?uS3$zy42sf5E@s|6cw1o`3PbddQmN5&zxU*(?9q zM}6-6e4n2`@vr=vKlS(7{>Q)lZ`1vE{@ufO_sW0k5BqIjf8XMNK2M!=(c^_?GWP%e z@vo3-Kk>huKThV&o4pK{8>@Hhzx6-zocoR0aSQHjk%-dW$DaK4$9=~qC#N3EJhO^b zdDk)F2#xuUB1gTgFYG*Yx$Ioc{m<8@1XgFWl})cs*0OP3x$k4`QJ!5VCYUil{>>%3 zY0uW(?e|X}d&bZA@jC;5J=YuOoxNJy_rKm{JLhc~uaiM0d#OaYE{ATuNZz`I?UI-0 zC@p&aeD2!ypYQ1Voa(yQIcLSZ=dalh9_!<KbUX9K3InNd-&56{d!Cpw$NE(~JHl}J z%Fg4RyJuEpUE9Cna`o*q-;6?cwlj8nt6RL6+GV?YSBM|~JXQa9I`8%*eKKLKe;0T- znL|mTVtE$F&40Re&G!sLjq_^XD}S~wmt(su-1Vg5W8m2xB7P>je2>Uj24vm+xNBMS z`s>+}zKUH!z7H3lS$3g3<ZK4>fn&zjn-2)B=Q<#4w?rbR=(EDb88vH6mt3E8oAczu zj^ihzCS6LhXw5Wwb*$AUO}kBHc8pC2%isFgnh%}7E;<P5D@AM-&sKVP^+m~t7q9%5 z3mGh*zHy0>!@YpZdnU#!TK4^!6uJ1;gW#!G>#kWCccu1LUB2;)ySDS3^^w5qTMV5% z^;dL0ZM55Y%Iyp{*BlS+y)$p}ZER{PyI?J~wR!2{vNv&cws#eGZS1Ve@G<D=SLf{R zyQ4JYQGM>}XETI-?pGYUY*F{*iYTMf-Xqc%_r)=tE=uDL)Tuco9qP(4Tk!1VeU$~r zJ@0+6J@x5*O-i!TG_8#vccnfy6jXTs!sCQWV%mgBF;7ZXaK2~k4?cRA>z3Kk$HuW& z6OMHMEM{zF4EPYftdRTlo5dC@E<at)y4t!{RK3fw|BOd={fcQiJqJDnsjQr|e(}L1 zK~~M@&6YVPmPIzV6wR(XEE9ip;ogrgo#KU`KKa`CsyZ)U@#R|l%o27kh2S|!y1^&< zUe^3y(c~2#+wb8%xwZ6CLzX(%>hM>wtexBDrErB#3jX>;YQ10mNs0e2v=`6YJ|QhH z^!D9Vmk(@V->Q9l%iYQKFC10PERDaL-c~oeKl@^g%NL#JkCrNY&G6H@*peyQs1W-s zVS>jNl_Q6}R!Lm9vo6}|UA6AC{>G*8*Y`2!e_K;1EBa`bsT2?Mt!d|F9C{~xU-*9N z|MaK-EC2nQ|97wa_jnnZHGk~y@A&`x&vt{DMgN~4J@-)X=l}2heFjUq{@DMnXV?CJ ze)5lcwI4Mh2KVQNOEb*9;&Osfu7KNqzux?SEdrP97QVQ9#ctu}{o8NfpXBe+TV6PS zLYCHb^)0^-^Z&kDbH6t$LG8ZpmE4{Cq*=c0{GF=QVz;)P_4xuG{_d>hCk`8(6kaG5 zc|usQF{n@d(d$p<HJp6Rq8aW+0WP;x<F)HoSRZcZ+wi=la_)wP$x~V9X=m0upSqeL z^KQv1>v`sH0<1iw^gJUBS8qG8pm*yF-uYV{cmG=R=Ks{c_VfSNmu%Qw|KsqffB%oY z{jX6`!};z1zwW!udu=!U=jZDyD=#lU@$Y`@(R!Pmf9G%bInj5`NqM8w({BGZY7d*W zwc<_uVWal?1kX=Q4>cxa`RaULXv^jDh&jLgIY-xYt-pHjLU$|->8)UE{ipM^X@gSr z@Bcmz=kIu??z36=e9{t~uwLnfo9EUZy4`#9u<@Qx7T=y6;!fVbllSkb&-t3w9yYe- zvLWU(RkKy4|NZXx`B?16<4wOe`zwBX|3O$bxi|gAw$Mi2kB{p`D+3v}9J4*pT~>W{ z$Ft4qUR!<$&iELAG3|8mw+k+7wB9bf_$g=E*9!^%1aAEnjy3X3?<u(GQ*v_2r>#n# z4FesdW?Trlakk*@2RUvTi_JUoR3_Y!nH&+&zq!`@(T4~7BsZ}a>+lD~p8tMuMOpf% zgDavc?IZ%V6Yfsrx81um#k$_jJo#(FCW+W5%O$2+onXkfSs=lAV8xz`K9Y5h*ch!I z?EbrK>)ouqoo5uEbx&SlI91TXqgVaM$7+`g7Pk+%cx=%9I%&4lE4u`?yX`yJHD@)o zI+gGE-I)C7+UGelW8FP1%r-6G`Q*Xuo}|vefOB<y%${pEZdt9m^+Ch?6OS(MuB{JR zU8J|&U+bXJvu~OlpFC3%{CM6!T%q0MU>edc>2@X0r|VT<?kD|K4Jr4<cFTU%-dMGl zSH<*p$(#F<_ujOaZ!W6Sxs>55_W$_}m46GLzNw#f|AAusvbhQc8<-A#INtV5=e5m` z3hhPudr}XuytnbTIOVoad7t2Fj=tV<(LXzX*2hhf-y^a3%$m>f<te<*mS5IAovgtz zMenu3<$#o5UBxnbn;!XhR;fy_^3;7CG5^O3N3ZW|Q-1GzvF@wR^Xtzh?TK&jmk7yM zHY}X~@Ta`A<&=xJCj@_*S^v|yTg6*!Dd*#}N5$CY@2h#`zfF1hZ{z=yGJ5?leOY_b z^Y5AcBD@Yp_3O{yy5;#rFC*vIJJG;8vHSltdX7$hd%d$mdv<H??s;1Li;O!<qNIK{ zoMI~dxz>!~>dlu6j00a!KM^Gy-1_gXkJR~haSZ?RWHs-8etW+&?|NbG_iOP+m(%yn zV83}y{&nk#7pIt+ewdce%PrlWUukX8CUI>uo5I04sRB%v!Mi$ymp9D1Qquf+S;zci zv;Hd!*?&DHJ6TRSr@mHw)}?iFPp_}u@#sUtx|bhLA33@0vh?F0?O*%YpMJjWb;R}f zZ-d=;`zz|ZGmQ8GLt_@UrqBH1=J)N~sf0U$vn5V(t$&cR>_^qBhL+r3uOG#2U30QF zsmX_lXuWzBy=#@mx{Y1)WC~-opIE>DB5%4seRo(YbA#c(oHugmdw+jER{!kxjGC!$ zvu=BQSfVt4vfY-+s;;J!rLIM(*jBE;xaZJfmT#A|y}pSB>dK{mecwJoW&eV^KB-pq z(O>iV6*ukAxwUV}>%<A${(swcHnO+8JAI0)xYA|kO5YVb8f4B&Zc1LsU@xWq#qQG5 z7c0(xby&LlvHzuRg}h&y-z>N+?wP1M*Wa$avhak7Rj4)B2mXmO|2vwu2H);2Tpd*S zgq1Pqtq)_su}kx^?1ElLW^;5Jd+eCf*Sl;7zdy$__FX$gtvmG8rZ;<S6)g`BjBac{ zGfzfs$==@^PhawleY5QL=?nJDb4*rE%`?62ZMrZ~cT2>EPdENND>d@H{D)1gQmv<q zea5c(ovSx2pK`vCQAG9I`N^w7=j_gO%l9$w&~9+8elzQ!^yM(MNbZ<b4&}FxIGUO0 zoh)RWI^~_=7bd+q9+wqD8@Jp#|61t5*AB~&-crsZRa>0?-{{HQx@mfpgZcN8T@95_ z{#9F7fBcxZ#k^7JRPuAq+^7$w2b){JRr8mvXFao|iMQV8>eueMJ{N`K?-;&hE@F=4 zn8C8jcTcu@V&;?Y+vi`6pTn5)z1?d~=k>RS*{Ak>tDAAl;_Rz{c~0%J%={%Uc$Qtf zu!7^WNym!`?OXno7F!+QoAmiC<LPJmH#dB}qP!q<vXgd6*kR_3El=%r6MnNc__FfZ z9ddQNUX;dsK-zcX{Q5W3uAXv{C|z{f;lJ}O3u$4~fA`pQ%obm=u(aHrHGghi+Qf}P z6I*so44M2S`H|wpS@A3QVn18u?Boh$3hL@Rwfdv(OZH;VqK)qjC!5skNbYW^SuAy` zSd-`V*M}W^dQ&g??NYN}f7~PEuZ3SweNF8n-*x?|T{|M?8+Y&gxzuw_{e4!IQzksN z*RBT}eQmcsFLUF_sioz|e%xQ=5oWU~GOp{~c7e@1mgN-|Jv(ve<zw&SIde*)O7d+V zIz^w4(Ym>6OU|Q1-B<D&-q>FYmTUSkO}2`CgOh;bt6tfb_Xb)Im*#K2_d6%&;>BBi z&U0C3b{tB((C(tD);+P(LgNdo!oAt`eukez?i8`vaaMHxcrxWqetO)y<*i#ngl^nl z<C%8j;qh9vibp2iLVrVRq~uav-$_h8J-_?9QsB(&c1^A3^vN7Nt0m=Q_i#mbB+XEs zyy)!H!UIRYwDa09|2oXPbHBu|!<Cx-UkcdfP5HvKwY)ptdYfqG=N(tLG$!1(FnMfK z+gN|wCTw9&gw$5sY4>FK&4R6Ld+&adn6K2Py6nlG+w)l;{jXS;&G0gT@oRBdXu!uO zm49Td^*2>@`$q-l+vY!sk}l?&xIF5_p9#O8M1|d!==|Hg>Yzc3(Y|w@OVaeq>bh*B z-s)8^n6~_0nZWOqRr3n_rgz^ldQ!c=_r{jltS8fg>eH8e_;`U)^G9jXe(u5*?q;ud zs?Tnpr?%M1NGETJ+U=#SGxO|}o6HPdkE}{4lAV#7{U_zm<jEUUQ@SKwx(luR>x{G_ zmbZC2|M4<2J$32*#h2?Xoz&#rm2Fk$1S*^i4SC_5!oO+;`%l*o3$6ZIztubVPRXff z#vLJ9%{ePtGa~9IDXU(4UX$}=qf0K&mK#m|y5DZre$y|jJHsRAVZ6VlLMhekpwx1f z#P1s1Eh^Eomep@tTDbQ3xB8<A6>`>EmI|H6yWg%na;uIdHTU|8IWhB1)v6x2Icqy7 zPrfGJdQSW4S;M>kPP{oi-}W~Dp^}cS<TRVJEjQnM%{i{-CXj#VbN%izt0SuSx%Mn{ zWVsyKG;yBC;we@fQzqS#`pfhF%mt2jdnP7N+~*b>q1o&IV7Y8)@|5cjCY{^)?#5s1 zDT%MAy{td7|4Rb*_sJiMlz*yKO?ai?wCk0#-J^@iK?ehCji%2^eYtIm<l<vLX0WW< zBxICSkP`ZKCi87c|5ehnGxqNK=2XACf7Jq2N69Mb>DSfIUY>L7eB|!9T_5*%#5XJd zHk9S;^j)tZG%qiEj^oeAXBwv1NA;BcGJh0T`qTAsLh0Asea`$(AFVj8A3Ar->s#dq z@4Wi*ezE%!ofif(L(e`5*%V_M{5p8^t?3Weck-I8vpKhd`$$yPskausk}o`B(y~|$ z&FjxiIb`W$5j4*s;`m;xpoSwJ>8i#?smHYL6vYYd(A8XR6FEci)w(BHzLw_uk|Y<e zeV*@eL&eIEYtE&f&s(=>%w#$L+2FSNLA87OY5QN#<&gfMscQaiL6^eOk~t?jYYcri zcwF&%*jF3!=H>RcqB`+s?$su_dEGwRpY~L9`zKM6dZ+S`{hsZIk5sGpwl*)CTN@gB zUAVaH+jGUUdwdnHzD<_6Tzv7{w{+Rw^JU#}XJ0XC9b9ur@bP8QqG$JQ{Y^fXymoK% zQT_R2WrZEDba<|ao@nT+mos;;Jneq?@Z(L5-qzKcm0}_{7Ot7y!IxWkAxO)tc~h}k zu$=z#$#HR;J{i}m+4y+HPx-_Wndq`%mGY#!FV{@_>L1<m`|DZ#xg9NH3iZdPFzoE; zDrx8lDk^Pw;gEQ>*(O{<UgRj#DI@O-qFzOdK1{Bk{@88imFt_to_|ZvEt<dflk&>S z&RzaFJMA~QFIaFtQ|G^hu5I7j`P^d5OCE0*l+HZ(a*E${?(1jXe5>y~tS8J9&b`|w zGU32mrn>K;=4FSX{(Tdl!oRCLCm}6#cGL9FGuB90yYu^OYZbRW^XT(Mvn_JBB~_(V zx{kBo@7tJTz1MSrBHQVEw;OA-tsgl!+zjl!A!DCnz{0XZ{7=Ne=wtlv-&-Z$YnWVH z)lw&rAk)IKZnNUURuRi|rl}hB#_~1Xr_bpZ#HUp4oM*AVl&hoeu+#>Vg{Ky;<YYAd z`)*QMwA$CNJf%Ne3SKfXvd`J<`Oba${cDvx4d*If{o?Qad+qA>pYNl6K6O`pI=Gm9 z>$C+w&q!XDI(hHuv8~5S*SX*O=lNCAaJi)EzBwFMS-7>|*@$wj+-UrSW8<Fvsz-b4 z{nmCJ`fRbi>dK9aOiOO&*(n&iOt4$^&N5eIWq`xvzItEg(C|RU*U~d;#WWW+=5AcK zGB!-qHt2ew=!Rnp^Y1fz{W|kXrMP#IdFK}8zq7RE3avH;mzRrv;aob|*Jtz6!n40N z?D;6-8OvOnSanB_t#Y&8ew~v(*#|o|NfmJ%ORkS~$YGlpcWLUbt*ZnX>#ezX&ma9< zbf)^sPG`-{!IHZ?Lbg9@F`IHIpijO#&RgTGqlbICaT@EQzK(_AbKA=InZLUK@o<n` zM4ULUPW_WljWX?N_it>n6UqE0)x22ezstcFlXk99usf|IBN*fK^Z4^fHHSGW!p+a$ zf2!^l&M!-?-*r?^bnX<_lOKNt3hw(XGq-8N{V<ysn)}ykFlpTkJLd3WQA@Pf6oFT1 zkNWn9a7@3eIm`I)rsjpoeKSvO5_&Fnu;}GX%k=k+(+rh9zh^f4thoAo%#G(S-!~uK zAGlh6L-Ibo&u12AnAY9?cG1=7{ra2U(*KTJ>=1FOnsdT>Wv$@D$zOD17-vil)C*>{ z{;spzeDX@Y3`W(-Li$sc*FEoHGy3^i_I_Gk@^$quk7`3>!Z@5*{G0kk1I`!U+7@x) z>*iDX&lv09oq6z%dHU{hog~edm;N<O_w9b_xqMb_u+aC3t|6T51@$|PGJksRd)YT# zeYTf{yUpE8!S{I%PSrShM$EEbysbI!Z^Rc(g98aNEjb%X&;MZvn{sE8xVlZ6YoU(F z<X=3pf&Nc6R)#T7@jjb6<G$p&j`EXnA6@o$S03GZY~Bsqd-aU5+F$;BEcwS}6ZE89 zjsM)OyEkWk68Vs!+V$?m7ukk0{M%Xge{DN4J0X+3|H)yGxu3u6=8>1?&8s{yi_Q5O zqm#kC^-hMfPg?%>u@&impnqR%%g=C?-e2i|%JbxZO+PU?J=8$ddUAJFrc|2S`O{Na zKgOkhYCQ8S^~8(9S(9%~uD1^P+_iGW_2t4rGkOgzzdRP#m@5B8FyLJ1hBGnR?m4G} zj>jLg4YSlSnWz2v46|j2hZxtx8QIzsJQC`b2IfD`oSwL@t3y9ITgWh0#NAPI!sRu` zG!ly*uGM8#=|AFcDjB`+$G@9Lf@%a~5`J%X_^_GR+F?;l*%ih|DV2`wf%)~^hO?GG zGFIZR&I+4+YQ?WZ75;U3K~q?d<bPOk$?K_T^UMCU=)#Rl3pTbG>(%WxpOk!UVp4zI zgA<c(&ONayM(VKlS9AW;-KL+W#MMpoiaPOYi%-z54T;;<T;kjl82kRn%%0yzZqDX# zUDYK~8XbGU*mvpG(tzN2_N9+M&i31E^SfT;k>WMK?rldO_3}*k&b`+`O@OPYMbTK} zwNbvvnm*QQGr#stll43oWm`@+`C0mF`;qE}^Zxm*U={7KELPvC6PNeu$)zdNLh3iG z_`OT*(`ycYTCO=``rAt_UX51bo5as8e<EPJ`u4m@3J<4Rr{4YiCBy33md+_k6Y|a6 z@0l>x)(2<zoGy7*``57evX-WiU*6IsI>vu$^U@DZm(JJ`a#Hqnapl9-(^Kwj)DxZ* zy=SrN-X$M?KUY~_?4acucl=h}s}uf73apOvJ==c>tbZ<iG1B^E!de^WBd=DTJ`g|C z??C@wCY9bf7k<QZ=~O;lyj|`3N;%n-Uo|C-PgE;fW|&FVFEBBvNZ1`S;lq#hKK&>C z9B)MIQmmOSY%$GFVfFE)rgME|-Of(*YuY2V;v!Fv_5tBPfs-fPv^g8KF52BhXO2&c zLgt#fQa!nKAEzv_JUB@>CztK&%h!H}{i{twv>sKt++f`D@!j5YU)oE&)#nRtQO|h! zIOwAMv77e!E8B`6Moq0h#b&ng;Lh96(h@y$%A1Yt);?LYv3k!{tN))neqZX)IhWBb ztGlT9fu!s6eMM}IomXV%m)hRv(z@W<yZ*nAIRBoiJr^AIiD@3I>`ZKoTJO!p>GNgB zkI0D0B8Od;pV(Azve-5wul(GbiJekBR-0!zxzAal`PIy;Bk{_E>OBo@ne~Un<&8_* z-OcJ)JFU*!*(p44_z=3z@7}HIrjWU7@}8f);<@eXl}@YHv;-yZbUo_}9B&zm-W;4D zVRd-E=}%V~&RE^cQ6cQ2e(8F4pCr}K-%Yxbrq0!vFh8RF$kA1@oB6`OJ-a^B^Xt($ zcHfRlv@^6uMP2^BYL!FttKX-d)I?3L57s%JdV5aQcJH&!vroU8W6$|k@^+O~ga6_c zFSj?IS+bgQ&8@qh(eHduO@H>Ieb&9=>kEDyNJ%zvx}xHc{m}jGhd=qZt_uA=wsAI( z#4N8*d|g%>R!-y+7A^OivfM#J)au>yvroNW<UfgUk>Yri@ItX;wl;6FBX6_+x5X>P zx!oD-)tdeU><Hb^ZS~JMea+qEyj{gLcCANFzo_JN(qDdk($lzyPopFi&S-Fpi<C$* z*d#hgKJP8&*dy1oym{kh+4IZ0=FZbEmM#%@3Ve`rAmCWbiK-v9p|7u&@*Mr@v~1p= zY+1RxhL;Z+&ncPi8hE(x?Iylr#{2^(7cIN<)$`EI4UP5BZ?k@HVd}ZF+&R}*>cb+T z+ZkJKr;ERR_SE%?{m0OI`ezKpr$jGkF_zz1aNy1XzJ*u+Ke+f;DyBJ5K&o6q*U?Bo z*x<=qKciJ$lZ-ZKe&KqN{;GA^dXaTcUkL8}a!KuGpHc5=uS3Rj6*yi@Sakctk&cFl z3pb{$zWRBgo~88$&#ZdGx4Sx5_$-?6ShFhlL6P7UiMw-;-ek3V#<abf{i%brW|qq( zeU1oQ@eS#}4O%_cTq@M#Z1|MfwCbUw;eW=NUW@j~cFdW+hDR_;{-wyYBdanlH+KJ- z?qau<H(8S7epuRX_3Lg=*S?Lq=e%L(rThED{;qv}qo?Myx$~Um!oMOD*VUVTX?T6L z`t^KI^~wDI6m0WdQnweLWqVzif2QJumSuOHaHqoIlRk&IS1Z_0$l1L;?lvF$;kD<V zNFS}&nq9wUy=wCOkm3l{-M3xlM!hI)kPO*itW#nA>T2lw&;wJC+FjkbLXdmL|E{)^ za}t!k2s<47uGc=x-=TN$mPJur3AbWm>aX8>mi^LGD1S%6T8p^p8hiEH<9dG-#MTOD zIn4bx*Y>B|8S($YPv`h2XMdH@zEe|oafg#)1=nGPyPu7Cn%~6j*FCJz+q}Fd#?<je zKXaalg7Ng{=0_uAOcx#rcU&sLJ7t;Q?q1e{#D{(_EQ{hNzxOK=TOqYjwoEd%ae)bk ziFN&q;7<3cF+JxtOgvGuZb1cO>Rq7##&oHPO)XPPSSJKb3Y%;CMrYBDb4!n?z5Xz> z<GK9jpA*?tqz=kzMlDGB>aN4_;lvw{rzN)kMB3sP+;$80__hDJ!{fZ^f9h6M?YZ1_ zx7=1fw#~Lm@ko}V{3L}*$$=S5Uxw}o=e)WnE-U0uVf~b{vo+`1d+U#Sgv#*FyO^gj zY0bfR8E@T<Vw82hw6iI8%=h7yT6q3$)mDk=As5_SGQIDXpS{?`d6_>=U}M_NAm=s9 z!e*XYr5RSaZCBQJmCz&4*7)d_)&13pHY_oHD{?wLXZ5jHA!aFSdsk&8Y@VgD_}c%r zW8J|^3+Cp2I6D7lJzw~SivIY;3-_E4vtpf@ul;hv#w)&;_qr;rED_vv<W7cW(IQvd z?Lp?NtEOHp)vrsNQjo98da=jKC(Ql4W9QEk$1cCpuRL}9e9oT}RmU%EXWy}r?SNhW z(MQ?B$A$YsF0vS{Fq1bepJ|rtCcaBqZquZz+L5-)*UVGMnb=*cSQJ+Oc$&Xzl3=vI za$@CqOQvnA5=F093vIY_wnLVw?oFP->(;%xp~lfWxYiwA->H;*>D?^8+}Q`5_~#{S z6!n=rWL5I1eR%0n_nyDs4f|$mh&Ap!cG+a!?~Vw$pAq-=w&pSSUHc%s;m?yzQC83W znHQ+oq{{r}mi;(^VZnvTbNK@+`Rd;aIR}3}=qtmuFiy9|#-(n$zoz%mizmBT=7+Vu zGjvtZvcDO|wy5r9;tHAa&+ZG=c0G<b^6tWx%T>&lm-bGcbo9Gi$Qs{O&F)=23m&dN zq%5au(<FRRxNUpivhKX6-sW<5PleaX{;zENee+SzGxZzi&%LOuWRJFgT35!#ar*B0 z`g05qB=0oZ>@Jxbwdm7jk^Lf_zs|Va@v5->S=ip)wZ3z?oSRUOzUZWc^N~3(&3EXB z=cInwvxiw|f9A%ijm^&sOHEw+o1VRI>#uG&a^<+k1dEnuYIB4f73%k<yVl(J8E`IB zP`=DKYSza+9al5?f=_+E`mwQpsoI%xIhL|N>2K<Pu8-LHPxAlY$Nn?RfB2POIb4&F zu^{J<=DCxXe;=uOxIZt2-`z3l|C)X0iYA%3ZP2gUJ@3Os=H=^FSlJlat!S)Rne!+4 zHB04}W6zTBaybe;;M}sJ<oM|w@=BX8AGZ%QxcmMRpQz527ncfj!xwsg|G&k2gWuv4 zOWzgD@H|^JZMtQB$_r(#Cs$`4(_Z>S@Vv>tX-nRG;(z1&b+?J+?k~>O!FTP{Ij#SD z?pw-nW2wv)YtMaJ^AaX~(Xd*z-BI;J-Or}(wv}guTC@80h!iC3x&KP*L8dE{`>o== zCt~DYo<3<{oUp3x^WO^gdzyzHcSPM<Sw8dcx$1rSt2U}znZN5RwLe#XsMcV&%5$Ok z9Ic3r^F&|I^!|UOcH7Siw)Orycl0mWqL?~;`=8=j)t8!;mp^7OxV#|qqP~~q;iIK% zG*yCMs(;#)ztL{5=1%5sdv<JH|KNDjs*_LdvGQskbUBr168~ZE)p_Ry%~FpXT-5mW zH213dX?2W#p||I=9{l&QqTTn?*C@yOUuz%R&pz#us^{N4=kv1XBEMtbEj{nQ@UU2^ zZSayKI^~vPxBpuT_-^|nZ@;VFDCh1Bh0U?ag5fTH`R5hZ)OW68?B{>BvxsT!jGVlp zgPVgy!&V*g3e^Y?ouOIqU;46$Ti~LL!5LhYclGtTA4q0$RSMX$`z9LYEOODD<rJ5H zzFxsKQO-AU)s>d?wSsF{zIzqu#}@eeL{@CG<n&kd`@AbYuI!Mp&~lKzLMutLz(pd3 zv##G3j>}by`E>AwS;EhWWg?EMJ#Tk@QkDC^@2oM`clLi-Qfv3`pJ*8W@$CWYXP>Q^ zb}8R?H}n4V{9KFI!iNUN9En;ESzRa3P5Wp%rT&D~XO|BjTDGrydFf=1O?PAD9=ko9 z6W0dM+1j<1ty*c%?KP6?b8V{5z3Y16a*ydyUU8#t*7~I%b}T4UR5Lj>&A}^~*@o|p z_n99ZPInWP<lnt{7pu~7vSqU~7XwR4+P9DQCn<zD*H>Q2cD?#k_~^p<4DYVL*(JC# zB3Qer-rehH{p5p7?k$<DZ_~>rbxM3@GD|M6LiQcz_+$Snt>-XzJ-gznyzY4(>*9qL zx}TJ#?H`=&zrWzuiHn<$uuOY7IU<SozozzdmM1IjFZMRPw*P<W>)!{jeGmKn`}*<w z^X2RB|9bvw*|lt|`cyuNf4d}jjNk9<WVrR~dFhu}-osy$lV!6k>dp2$CrQ`Fy{<n~ zz}Y%s>6Uw1UPf0kbI(*d-q~K8y!uAr!|sfmx9c}ufBN><OWSio`FpCTT#avfD_%N7 zljp_5Ezb_;@%0HCE#~OpJoH%b@qF%vSqV84S3GEU<6LKdf8L@u?>Kd(dJ3K;h{z`> zozj`bzHh?CqO;o~Qnshu()n3e?-p1S=)Sm(-IxDYP|*I<*_nlZ>z2NFuJvn9So)VA zbu({mxp1sOzUE&tpJ?^(%~2D){iWuA-H@}gqHBNu4Bih{v)XD?i}g%pb#K0%v`K1G z?6jIRzrgbTwG67it9O0T^Zhw<f`jd3u8=v2v0ZA;_BPigKj-Xp5I%fx`_iXtuC&(Y zyT<<TGHG6~WVvU(Wy8Yx>JyGFy1%q5dF}b7Cz3DTPv&^Cb&u_fkoU%&>6%rWRo_l| zH1&!4&rP3#S6X&FvRae=kokn5OR${dr!%bX*WxB*1kK|XkX3rOSy6y9SLjf6z6hVY zcBDzN%Eh3`$1~UJ7Mwh`CT5PFLDZtnwpZ`_xYt+9oO}49@2kYe_Y2?Oy)DL{F8N6} zc56h(0(tjEPaHm5Jd0hkdHLqI6&W6hm;OjEm{#uc`+YYn?-t{wD>N0o<rW^YslE7d zv#_jovU2|N|CNTNXP#$8JTqWnF!8#-#*^>9WFMo>_luHy6`njT{1wsOzhcF4>u9cc z(Tf@Whr?W-)j#yvRU`U7o;P9Bk9+r3uI_6UH`csblJHCZ>D6tYY^oL~JzBbh&*4$< zo|Dgv@3BvDKELbcG-l=ZbB;={d{U|X=U3dppA}Bc+>77Nj9nIADsB2{{S}_WSCl_3 zI4SY&$ysjY2LgBAH?joXc)Y0Xtoej8!{{xspTZVQwGFBBQt3Y~RDXKC-aoslxF?I! zuFRP^!AVWW{C{A{u03nq*B(C3JEiOU^qoDG6Wx8IMef>f3le<)R&%nbYZYt6@w|-h zIT62hZVw75st*>;3BFgC(atCQ?6P%TOIH|6{677z*D`$^JI{#klxFFB{@k?UQ2hS& zpSo;nwiu@^JKw1D;$)KJ_3fGU*4pd8US4scdgkZA3rYObm`}5Q72O;9R)RsdS#rYB z`yb|C{_=Q6UcJlgy8I*NS2JQ>2KRq0UVioPjkQX_C99Kf7#;t3?8|iK^Stku<z7u+ z;S?ox@Tg$L+57GlHS6Ppg>3cge7RLNX=O(2yUCq?+4gDXwVKk1sBG5sxCh%KwYuu3 z9=`1S;Wy9Jt)<Ohub!8j)iEt9I*dV2H0K<bYmT5+!jE9)`R6Vq)J(jz#KpfW@$x!< zPm@*GGG~_*{4&gszNmHV*pc-+rGvR=OHJ;sp115%&f-PK*4@lkzJ1(egSEk}7c$+~ z&Yr#&8NIzMXL`u0rgfY9dggDu9X~5QKmE1IZ=?DJlDl)w<Mvt3UVC38*hk35W==Mf zu|(FU%qpAk$1{DVw`W^)hAmt6ROYjZ)*oJ#wvV4*9Zib<l*#yU_GbC(>*ij$ZZl0c zQ2d+X3SDolC$n}1KJ<{CmJ)0}X;p-)@Ym9}*4Hy%FI;xw+Ryn}DuJ(G-4^-j**0la z=}*<QtFBGvUsZ3oGyHnJ&(-A<GD|<2Uow6D$vf0@`mR5VH2X`x=B|3ja(I3B{)uUk z)8kip+C}>RnYU`bi1(W1^FlU9MB6^T`Ak_xLi3+p(k{uJ=1Nv^i~5~YPP<6Nl=;oL z_xaPOLzDK}y>y&lWpLR-<x$M9z{%S-IXb6Xb@jwJq@B2Ysk-7&Ouep5&@D?L+m1WR z!B#%kKIOlf^TuQ5?buCby#2j*G?rR>PkXFYDdc`Kd55Rmbx)_+waZR_4GuYP63;2i zulDZURsAlb!x!G%`zV@~ZV@b`t(3=^^7i7|J^I@3PoMg|>C?V7Q0AwlRq@;GkF)%j z*Umq4N;-IxdD<6=b2IAq>YtK4{Pxw;-AO@z^$rS7zWMy}j>Mn^Hsb0&j0uOzqOWjH ze)Uk(IfUi({A0YvQ~y>Uz3uJ7nelOT<iu5zdGAd1+7@(j-a@Z!y3_nK9p}d{?GW{- z;?kUb^{Ws|ZrpZ%<?PK1D)k<1lh`&%B`-|fU$ew;y8kV0mAu7QY+v@D_piTK?4ma} z$Kg^@;-lCUS=A#?zBImH)Tys#>XTFyRCHs@@!u~0E-v?GXcg`9+~&E+@?rmS1*w}2 zA1{8Dn^F>PEm*XPJJWNUp|x)3tau(y&pp#zorH@0J)LGPS5TL#omac}&)n-hfA@71 zeD&S-|7h&>lOk&l^52^LHsREq3)gGS>IG&kRj=9E_VT-XMb*bO>>g+L$u5+Ct|IfP z@uTDGC(J>NX-78}tm<uRl{$0JWyac*Okx7FTRhvs`$`X==N4GbA+*w1db@VdlZRI~ zus!0JeSQ8%ji!2)&Xn+J+sv9~p6OL6J2u(O|MHwyDUE(H{i&;uMg^D5xgWOc{F}w+ zRe%4k&t=)Q<WbEQ6G7LCiLI~BOix+9eN9JRvT?OR{V(3*lcuJy8+0Ar+*5dB-7}e^ zwtY@p1m&A!)}NMWd6j)Gu*HJwrU&Qq_PToy*stfyNK2pGy8q+xORf9VCW~2xC(Kjc znY4R`-F)W?>6T>oxli0?-FAAuN5$u>(``f6&^fvMZVL4R4RJv>*0WR37p_WUQuVKJ zV^IGI8obS`Q<}f-eF$${)PG;8g!Cu3MN-XNgT!@gulrq9kbTt>rN8TeMA)MPEPqOq z`^*Hqmj!THG@KCI)Gr?Jk^P6WNZgMNjWTalM2`t8_CKmvbT63Ibj_zlUk>cpnJ2cQ zNHFf@G}j+f*G#B?T=r~2O|RZ__kdGjaxaXg9Gdf){l_r}mEP@^nR)eL*~^bGb1vKO z)MhMyZl2byS8KBGug>~=_33nX`?C$sTmC%e`H`dZ+lKj7>CESn8M1b>mRs+?ebU@Z z@9@I8?7^BJe}6odZgVuG+~0Zs{o26!x5{#V*RMO{zuwcx)=%F0&*b{=<>~3~4PfVi z>^HX4WoBHEG25=>|K06BZ{9X$t1t?y{hm?(y`cPk``^X4&fO|sect@j#=KgyFWbtp z+qcfm{g?bZt>e_O&g92OmmV(EeEt8!QSLvxt4lU4{(tnmok7F<vUr)da(fsietpDn z?f=7v=Ps5XJ7;wL|AWTHIrS&>&0qc%|Fx05V&bfa6@TsSb!gXBHU4>K{8LwgJ-cLs zX2$`&i*1VcKE!8dFPbQoaj{JNOZU9H>kFh8K-Nr_u*4_S#25Ph*aTWLDO+}4=HCN> zdj11%jDH8@EzY{Idsoi(%8##%q9fUU&z;$9)xcqN>yz8VXSZ%eT{mp5KX9RQrnbx_ zF^BHp`s@!}6&!KbrFk4G-GqI%oBGAa9sXso?tE14;zCxj+{1-Dn<^tarVDq@ZYz9z zsD$bKj_tn9JHMMn=<JA8I(Kikd9C!@t_4{eqV~HTote#Rd*|fBeGBGqUVZx9&7&`` zrhZ-&yL5tzOW>QYzOUc>T2xracDAMd?yQfi&6ODTR6qM&QDES7rkW*}*TCden}G>$ zjH#Zi8|&N+yIXzr8K1Q6I?_-zr}E{oU$GK={oA+yUJz|N<FW3-*%R-YDjmuH?!e4_ zE%~z0SCPt8rTKx&lNSeG7VKM;@~~HP_Z<a$|2vnxx6Pi_VWrbF%YkRVIwSktoja?F zZ`NCc25%N@6e!L~^k;H;v)<Um(3Ux2NnNq|lUZ99d{`&GhPC){^<umE%6=<@?A_Lj zZ@>RB#mI*-%X6{S)YBqg{crl*F!*O;lQ+dWPQ2%N<4sm!>+0rTq9KZ}giVEF{kF#I zUf*yu&;5YtHOsCe2DZ6!_Q#h!?EmU9QT^)d^;dS)Kd{{TP2)lL_NHs4YqCNnem^?F zZjo8mr%YGH73=mbecknF)=z7N%R7#}?K^dB|G%xVmFan3%eK|k{C|G7{_pGa4pM=s zwUhU%UyL+o+iG{_!-h?pf98F!$o^i-75l=4(Yw{(PWZ>KH4pwY>nIq?7HRiQ`|93y z{LjgCCEXD--h8@R?{)q6GJEac`KkXof9JnHewcX!Lw(H6`ujWns+X=Y%Gs~^#y;wE z!vD7o7q^#h*v$R<|AQ9^<*EN`jsMjDcb)bB{n{V@gMR$ypZGujf4h7?UteF=ZvAik ze0*_hmK-oY_5WgoUiDvjSs9;4|Et@ptJ~SxPyCPHbA$cw`-G$a!+-s+@A|*~%m1tC zFaPZKkxnT4`~O2ie*V(`>wo<3`maCn|NHmNSNE3xINSvi*(O?*y0c#G!~bUHAM?Nb zZ*E>ZS6OF!bpc0z*q?e%`CAv?m;BJppWAoml6ma)$J@`aW!GGnKb)M|Jco5t!1=Vk zqxX%<O(yi8f3TZJ>c9r86n&+lgnFALi>-fJpW#}$s`l}!iv`Dj@Ry!(*?oAU>Y+E4 zbEl^rIA?fjOV$U5=HT7jy)l-{-fo+bKfCX*wOrJvE{EuB=j#Uhn->Q5N7Wtwp2?bG z`cw6)*HJ_E?b9;v$V-3Us_>;cV%4UPf7eIf=ijz(`>p%??f(7y^W%5e+u!$&J=^_w z?ce(E$L9C;*5`#B6^m}~V>@hnf9rQGnTPrOiOC}OLa#WO{q)=5d3*WX3%^gq+|r19 zTwQ8ApSAqt@oiIU4%zV<KIWKW=GD;=dajCn#fv+e=CK#seUaI{y01a?NGJniTEP8= zpy)kU#Pn6S2{x~5SD$g}T%!t;jX(Ec<*mnAlG^3V>buUXaLr=gd_IUnV5JPxC%X%5 z_l#6;ADVmW#dX`bOV2V7Z%;TCVSYvKhndK$fcA@*>!Y{d<>Nnft?N@kE8nGX7N$wo z2le<j+P1RKxZJY*n$W}Wl%w-H8$};mrCrK9=Kk~2_Q>@GD}>pmHAR@6=U-thYWRAk z-lMZ+w&Kd47b~~dTSz#z&u=@n{`QpfP48r-XM79~G~it~Ek5Vl1i6q2v8~KiN{TZW zUd|QI*qouvmu$eF7?<1rb>`KHhK7NKZ=VY6s{2rrJIlSS-CR%doOOkAzrr+C3*Hq% z7qZv59DMzwAit?+;xfi#d$Qb{?b%9Xp3l^6GYF0<zW8v%C(rZWn(HTgpJ|=*A|*(0 z^YzV*$}KLlb}qHq-yJ;lXB;nE+r<4ES7MeLm@*z%wC>~IeB}oj8?x4(YiZMn%nn*O z&vL`u!az+|-kmA)&ojR;3(eRNyv69znXYRm4bv@`3RH9bi<F$nCwNs?YL<PGVYWvz ztEC6e9c$wqvpcfSu+9_>m{c-ra<QKn<FUzIe)7EKdB-`;ShKeYw(YC6p1jRZjzhXI zvgKjPRPD)k{FLk0pO;#0FsF1v?=-G&Ij3JQHp~#cpI{`qHTZB<$eXvNn`^J_tf_9? zDqmxrBD-MU8?_gv{oO|_4(KWc?<-?IwMqBQ;*ZaKuds_~y=$JOnP+uuYTCgRo%$Jm z{7R-KeHSNR@6B%6UY-8y&q@8>?4KXxl!cyto_@Cb*w^(xeq1Z_t*>9><*vVA&%bqd z_x$+!boS}#KeV>o{kZn=UAO#O>HjlMo6pEmzjtE!tIiz7Rkd|xxAs_0S7kr5$-Q}n zO}%#Z$L)c4&8LgopPbeA{M+KHA8ywUnFr3@+&#OvrfZvK{Uxj2d1e{&m^XcTa@nk2 zMKOPy<*q{+SI%;qW-KrWeD`V6EvNcp8c|m4MnbO5j2D`<PP?neeLT3b{88qWywB<% zUtD{)dinZ$F=j6k&wup!_~y%}XHRDv*JM;4SUR(!s_c@@^TS&r#8oynyxVf|S!$!Y zi~p^&#a~5uV=SM2-W;~Ou<oe4?wS`b=GL5<|EKC0C%^xqK9Bf&=|;K_y}z0|zT%w~ z6>R8}wb*gL&&SuIe_wUR+h1PapJepU@A8M)74AzCxSSq5IHh_?;ad{dzE88R9hn=! z(<?T4U4U$T*S+{l5_v}@&gFG@xIdEJTB&`j#&g15t`l+lmc^G(^0Dabh-Z1ew&AmC z@B6S#4f9`w$4^i?Xem%IPe3P@@$`9?=f@jUjOHBeh-ZlmcPMjQyJOMR`k<5dQ$3{u z!+Tz|6kHRv`2AD&>j#B<v6rm<|2)$1b@)50?rvwiy2-vgg?i5Elh^!kwT)QR&b_E6 zT*&rp^Vi)eoO2XA;;&c>?=99-n0Y|5cUtGgeTyd927bDF|HbwFNA+j5&zsR6&Qj{{ z@VD#5X7v}J)rFdB6`AUlEPgYcGdFSXo3VI)W{v#QA3vBxH~jJWTPyN+ZlJc$mQTii ze`(bHby@tj`{F;B&6mVC*MFMjR;}*#d)BYr!hiQJ`}fYJem!S%IaBlcmEWx|{?0yh zdhUVK*{>e@eYvnia`Vw1)0Infz05MVY?H{H{2_^Zj|rz(^npt%5jl+BldCqQ@^879 zyYXKAqN>`+{?8$X`}SYlUEf_^uUz$W`x1{sm)skd&d>a3*Y)%F%wrz{dmg60s(-)u z#rs(rH^ry?G2Z$!aGU4j-x}$YkNpem`J29IUVl?n-7>*i5#?Vq!>%6RD3TkqqBGuv z&AsO#@7L!Y|LzrhRBu&1J5l-B3*O%If{&{YyRHzKcV)M7mHqOMyhnbV%j97`Y04qY z+}K&XXmjI&&Bc0GU1r-0rqnXtv^;1euwjmHeHlB`?&n8L*_yIrE@#vl-YRaYQdqEW z!N%Q5Z^W-OYhSkx?AKoLylFuh>lJYqTfNCm^G;WO?E6*hS})$>7@qK<sjA%dy{}ZW z?y-W(ru}=?{czp<vh(JiB_Au3YNj9YwLR#o&)Gchzyr~(mLj=v7k{)R)r5x>X?X2h zRBrpT&!FC3WX67_GyJU2{`+nIIeW(0>{oZi_r_oDs4-lWt@W~h$*n`8VjsH=Bsh4s zt@!Tn<=&!=>`8BQrE(SAZZDE!y6D`UrYf-c(xQuONn3OmZFV@7xo(1|Xct)U(W)sD z_gTL_@A`L+!`rBOjjJ-(la7pBwxrx`D^e7^g}$;hRn_0RQms*yfB6^pQYD`m9IR@$ zS~>#~7M=a-xb$Dq)9^n^yZDyQ+4sb2QOLX<uT<(T?he?eY~jq9KKp|tSIxG}Hwz`I zXB$Xx@odZ7vQXkJucNI{!2N)e6E!NG*Y>z*n;*I9-n99@Q}Pb+<R7gM_J|k!b1JyU zZE;^nO^!v)k0U*{zHxK-m(}WZdzV)6FS=*Xp+BD`u5PK^u|@6iE1yJ6`J?{z!|oRk z=bLQb->-Bv=-1wzb7z^go@5l3+<1z=K*mx*SnhUabl2=_o3DAr^vzhcA}IKyuB`gg zWAB2p4AUB(I`5M`{ApJS+wu>S5}qX&?Aa^Z)Ar)#>Wgi%Ggh0Pf1mGMe={N4?&hTD zm+}h5&tLo7EgsFhA^GFBnIErR_}+GgKUeI}^M7KoX~N+rlGhp5%zfGzwvH#0^~fDr z8OK#Tyy1E4Qg&QcU-)+8!V`NOHr;4l{`<LDi}&kdEg8{+JA8IbDo+(t>WR0R@*%vd z{ny7wKkK%o-1K9*lft^F_SkvN)8C!z?Plz|%4q#{+lJyep9zT@r(1oNx+s#hPqd`t z@DXDVWvRtQPr4@m+QezO*Kn3vT}4GsM47qIhL4_0KR$Oi;}e?dKl5;rR{E4@JMXTX zG^0*7zK`+nk+&Bvx1BrRd%5Pr{@y(s3WCp<MY2CRa-eK^(W2MSyHpi><}%ILzi<iP zU+p*boKoAWAIHBruy3oZwT%BA_jyU-v$j|Md?5CQ<;clqvm~_~*Yi8H51o%NXq<oW zNcP@2F6Xz}F8XnG$0CJ&GeqJ7_WYcDHh0T2^&ZQu#jdVyeU}B<=N@I>V-fk`tX6mJ zD~mI4+sj#Jzi<3&tzD5Ty2qKnV1c)}i*1wO`-aw|tw!}5SEZTnz5o7J#f3Gy1fsI@ zF7Yt;mfD}1#S}mJ6;Ew-!mr1CssGLg2|liVv+wpp8*k;);eU>v&#@`J;QdMLz0*wn zcji7`J5!J8Bq&c-QJy-}>xG(EQQX0_bq1as?#i?I*1X}Gyij|MIqUlKJ8#<RCWMuI z2)*q1>e+Xvbp`oWi|eO&c$qF-B7FCX=j7R1#kz5-97RSJ{d`W2_iqYnusFJ1zu5am z>b~Dv3ptTV`>JAHueydGUTxUD`kC=;Rqvm*LE<O1*WT=WZ+crrHG8w~;+0R9KE2r* zqm+7o+1J!c&OjNp%9|HW92z#Tf6NxwR0>oH%o8k4^~~dZwcOwa@56%nj}J_HlJ&SY zC(e&3H)%9YyT>xmv{>`ee6DOe?hmex4b#K4QY)7!nM|I();~1p&b&AYE_2oIvvPkX z^?04pJjuWLaB$k!Pr6l$vd(UqAS|QQZhmCi?=9T5-&FTS-HE^V=-;mCrDZz5a}Lf( zI+tXB^hD^M<ZDjn`!D%e%N^+1wy<7BDBuj+^|_oDVh>$CEG}NsE{p2!+x*Q(M^q`1 z&-|RJpz|teKjq^y<d*zA)bzsfUDc)MJEp9-9jT^sKX{7q^x&XCt50EfmW5mFnDM@( z>8Q!xYR=gC8n>ka5@c><ihHza2T#<oa=#y#5%DCy%D(^er*yM(tO}nFe_A)eMrh;A zdX1RICvWqnNnVglxF*ti$F={A|F6Z2#&>_@pYF5gbXuLfvHGV6>rKAgI-y#wY$wJE z8p7(2URi7rnz-*tPmnUFQOyp^i11RSEq54d?HCQ`PTY}H@4oB23+Lgp=Z<W6I_>Tj z!?s&rpD+28a`c+ny)7RT?v{O?zS(d0&1a0$c-yDd*Ja!{eih;-yC+07YVmD@s>}QG zVz%5fxs|>=P&)U13A50$DB<aEucvR(uJ8PQaLse+vzvK>JHFm1xXf(3cZqJr59P(o z8WK$ZPTUv&^S!la){+FKAIkOr7oTKS`dfeFyOGw%rzchUBX)1ipBTW}(A#~tw#F;| z$mX<e_TCHPlAZNsg{L-ty;Y*yx#XGu9)*8XFQ(d<3H?8%{#N+kl3Jz53tWEZFZy<W zOT`w+f1-va&;M}#6ZL0NTBqa_6L|T9`w`POpRM?ROKhEHoqFk)e)+9gYtMNKbG}wR z8fDTfEUmS73gg@lU5`9IWG=|slDBT%y*YE|$8NE<d9g%ti`(Ia&fWE^-lk5uY}MiA z_E$k<y7=2?M|=4=Gh((`Us@pOYT@!Im*wiq$k$JH{S3-(j27A+$i0bUtHOP@NfA+V zKW{F3yyakXaop^KJ2`R#Vo!XZ8*XE<dS%z1Nrh22&giFKU;FH7YsORYd8&)01oN$@ zudfh(^f%Ri>JE$Q*;=Is<u0+VUsr#=E;H`llG}Se-Q4@O*XY*1teEYKla|S!D(A4+ zClc^@^@>Ypy%m06Z@BfWb%kb+^J+=nH^1Ioz4`U#(M~hw>uZkJuxYi<VhZhe=CJqr zvX7shs5u%fSF&)O?Gf1FzobGo<48%})f(Z&OAiXXPw({T<l^vJR37*?Uh4W;whLxH zpXw`3yep>clz#Mfsg#-idc%GDKB~oiyL3FF`m(1;-aMuwXN5I%!+GQH#$LWC#_RX; z=4}bSz@3*3J6KtMeVDqBWu4=NIc0INp9>sgm}czB+50K=iGtqg)3aYsHfGH|E&Vfg z*}=-%Z{KG>E9GI@)g08^z{Mf(<L?wfuefb`_vgI4Twh)(U9n^5+E=HQt~At0X9z}q zOqgK#WaBc;6tAb#btkM;cX{0#eW&F0sykiZUY`zTdNappX|u-d$2`kEFsVx&v5dbv z<No=kv=YmiJ@2Z2vVHXS@eR_<44rQKBwBFow)1{*@dBO+r$c&5-+$P|z#gqT?bVXI zXPOj@m^XcBWI5_w|K*0WPGslx3Ipbc3=EY__Z|89fBtQWP&`%l>-Sknf2KuQ!6rxa zyL+EnoL#<HgnQ?mhnZL3IQ)}(yiw@n!p0)C;A)O%D`#J9*SM4-r7x{JQ_VT-(Usnn ztM7*vyJXo+3wip+=c2&Wa|f%RD9mC0edo@JSuCo~8mA(<`k6XHB~R6NZDwzt$Y#3m z)2@$Q%Z_|H8+WmX;n4<`{c@K}7(H$mekkJIu&zN!e(t|zb5wqscKBa76S8>w<YhBf ziZ$OmGKbqSUnzNR`s}n_sWV<ayYy$mE1PLL{p{Z-Y4go|Kjmam?*e`{QT097!;4oP zxig{gde=MW-gD72&&fx&rS~3>Nqrm~!lU|7VY2&#CEt18CcK#OxFuR^WA{uB@oNI^ z2U9v*KHQ%8Hsa5+@~;xg1v{LV7<jZ>dvtY2eCnI=DCv<}?&=pA4B1Q`*H|jnXf|wI z*35FgXXoO{9I>J7R+p!;)RfdrPKizAuq(ScbKbObxs%Vv%GK{RzFRkmEByw0sQY<Y z_jb>zKCO3xBKdSb8^=$I6)g0*%Kh`-q^p5!zUtT6k2dQ4c{A6f=3~jpmAitB<2U3@ zcCq-Zn0PbA<gQPO(cViLTIse+uJvt8=gP_Zw92l}a8gX9(mnU;O@SKwiuQ{yzwB!G z_juIPlKsaE_o?vniCQ!G%zfi@v2D7B#qE1bR!n(XcF@{v{p>rZxsO%6xP9q#^`(rt zCO?iPUFX@gZ0V$5x94`xHh&Z{f5H^?nGfz~&hgm3{&ne@yeIFDMlDZYFJ(S?TbvT( z!^t<}G#EclW{P*Jms$4if91yAyZ$F?$``Ibw4eD*;A3%H0l_N`99dy6PIikgnrprC zU<}{P+lx-0KX0)%WW&T;_oJqZKXN?8w}Vsj@%;x^9j6+0oG2)l&Yv2-+~?8UXJ@Z1 z{doA{xpfB*n=D}Xlg!?BS|YBw&U)E9-h1^aPA8cEK3(`v)P{3gR>k)JY+@TGe7e>= z`DDDO`3qO4fAWoN8z%if{bR+I)rvl*){Hxk76+Ys@<-i&8MEix?n_hJn}Tj`s(#|Z z$y;~!vh2Jd^OV@ho(WF%GZGhEkUaWBiodLaUBdM)`|-0Y>H^i{EUM+x8qA#<H<=c# zZQ2%J`EPA*<e9m5%*wY-I>p9&Ijv0a%JXH-w?sFqZTE41<h+|Xa_NG|u60?h^Uj~j z4PPd(K%C$C+?{t7MeGhT-^;?Ir9Md<^VrQA!kZYDpelNvX~jZ=^S#vzeClsKp116_ z-rbjMZ>ztX>D-<m%%HK%<HR5FDp^5;2~09vMYqJ)suYT)X7hYyyS#Y8>t31ew%cFX zng!YX+q<r8Rn}w9+RnhR$Gi9V<K+I}$xAz)HEoqy9e*LP+nG=J-KKXXwI>gL^YKY` zSk0Ep!!_aPU)77}p4dHq$;l(6^61E(`dO2!_DEXIvpgy#6KHwVyh$)u=bM|K<L&D* zJ()LzM5nM+cRxNIBcT2Et@g(M-{P0N-M@G0-|Zs5-?P8{cVE8F#>&EKRij=V=uqyh z`}X<%UVrS@U)|epD{rf=t6#9f^ZWkyvhUu?%E>JFTfU*5;oJR#r~XC%{2%tGKJuUa z(f{G~|MrXiSN~W4^|OEUj3>WV{M#?SyWO3g^I!dsM;{8F{*ON9US+hcZeqCq`>SQw z^)#G%Cm)_w<?OQQniQ`=!HXLfwUxZ<dsi1$u&aHQ{(Y_ec=r0ejJKtN=B(N?@zKMF z3)8+gMOjpBm>F%n+tm0D8`I~r3SZn~_f*<V*!TSIt%Kj{rJ}x8q+QtgvVB|j9@jJ7 z?a`0UJ;8an*7Lox(i?5}9r91kC_AVkYPx)-`UcjFJ1eE?jqeI79KFG8G(SS}qUwg! zpzS5a?KXSzqOV?;&YB-Pe|yidqnh)!6y7?LaeP{%dhDGo=T;s2dh_bn`ll~>SslYx zUda@GtQ~*v!Q?Y+<=MwHUtbgqeewIePIK9g11EL~-g&rp`V5Cd<%KitACxDR*<OFN z_Cnlyj^&)P-t$bA%w0?`s$ARn;a2&cE>Xh_wjI6MyKDAuKYCZSaU=KNANN+&r~mP| zp1LSI<e8aY)Ai564CQ+t-q`-TT#^4>y=g|Y)sfn)$sBybE(`y=R7aXF6<_~;cEvf) z`&Y#(v>1B8=XdJ`ALxy#)Lii))^W9v)$}|WUz6j1FNCmMuHaPZN&N;pzFR6p)V<sP zrGeY0qm_A!Tmv1go-eTFbKw0uf#rI^6MowT7c$I57*(HF#BSN<=gia7wKx3a><@AU z`|oV3osr6Ns_f@?EvwDD)PCJu7_-PUuEpSqH1lQFWz8-P1uTo-&1Kk<Wpl^Si90~> zYkrV?<cw;CG^VwoISoC_Om}Q<zmatQ9pkn3Gw+kcr#4THNs(fmwzFZ$y2;fkx{Upk zSEeYq^ryX2F0(ukE#30i)I+H2ZP{GGg?uv@e@e(!H+25@;BUOnEk7aW=r`6p=g`ML z&vrhmIJoMGx9x6wA;y=sHg0P58Pm5<=1n!>i7gD^Yg_r?)58}pm?!(DdNBG<o|c+j ze|YZQy{8kRDt5KChbv20NQq8lStsSNFk(4dv*gE`pWL&Ao-A7b%w=(wb!XbymUFi4 zV#*=Um+Pfo@QK=|@-tii*t}J4LVKBZ?}$1wC)nIc>(>g8Wj|QvhIfjzS1f+WJLCKu z!+D-RCkj+^hqQlb+r4r2qzsM8E7Qw7Il_!fSX=A=h)n3PefIU!O18_-miSHaG(5R= zS%f>A4A;Y?gWh+Y4z~9mdp7A>hpNfWly14>s#n{JDw|hlb@TfNEqcSPuG!agQTKz% z!7EGlxn1#6Rw_6;X)&Lt-O?)?RHpu@Y2N3c^{PwGOPq=M`bAyll<y3#lc(-~xkb^c zp|!uz_M+PL_WCIiji=5uvc9iY@L6RMy?vSUmyYlY%zRsWgO6~pTes$9qM(vsf1<$c z+k4&TF7ddstYXzY^*`bVGZsX)^(OGiZduitw$$m<-8%~2ERF9BlQe{OFOlw;G$$wE zQt?~Amur4K2{FDA(Nnc0(s55y??qYGC0{={cXiC?F8!-p_+ZP4`qcR<lO9=2DCy0- z@4VaklN+M}_XbCMCGBs@YmHX!+H~OE?mrvcr$3vbrZ9QY#LRW^2_mfvKR4a_l`?JO zhH{apCtmZTLazw+{i&Y7aBK&&LcZkTwO{p=Pck=O{Ozs(jp2Lc-3yKeyX4OBhlgLd zaA8`dS@Ipwk<+uf9?a1w@${{~n$f$%Nb#D(vcOpz*OX=+a?my~agjQ4D#2%o?BsbY zr_2)=O`a=qGd6o}V!QSxg5T^_(z@q)f~>3!l7DuxMlHJU-h2b;&}ohP)v+QDJ8$)T zU{_$cG^=gahGp$L{DNdGbo(l<=_JI?kqYUZ*Ri5e>s;Sr5#76b_2-QaPkE#8Se4bW zP0HCuuR7`b*3P{~fe|%FH%C1ToK~_XPGcq`qfEi!vda=hG8voso(Y>&fsUJ=G?`)2 z{G*2}Y=qLz6s~#{FL(01ddNrB#2FlKXWfV|I?|zJw_S*<*rMdZ-UmA!OiZLtM6<4l zJ-#I|uHt5oBlEVEhP7fM^Xtnc*(S}{=Nq%|Idk}wX&Rd+Z;DNKn3{0eK=yp9(<A2D z`$UhobITt8Hd%BM^VEm#E*A`R)~OtC6pgk0Fj-)y&U(qSa+iEhwedDgel#m^vc#=g zzDYODKbjgQKD@BfrO6`o^p7}!9Koc*irD;?Uuyq(MUtiZehT!w5eR&+!A?A_ev0Wq z_Q}^eh3@R`VEnA?o1xHHuye`n*KU(7ryZX9*<9hQ{NptlI|{q}R!zC|Qz2}T$)820 zIxf4eSnVvC+<sI&^DNJjrtZo^lRB>IIIPb2AANJp3s=yA)9#zx6nM`R9;uvsNASlM z-O~L&c99EIFNZAp#XGmJfm7Ia(J}V=y;JJlgv#d^gsQb)4pW{yRbaZ>RmS8wQB`to zSw*()pRPQ%v0a>$SJczfFzL629LxOM%?@g23z%lE%1c_Zrp`*!uv1|2lh{j#ey^V) zHL>MsSaYj2k8&{E+k`Kl3(^<$t8hJ=`&LP|=)J=PMzKvPTc>Quty5|{D%ko~)cML) zg-?=l^|e7$zjZ%*^>BMlf3U|11`kFd!5Go-nkBL!M_;W{iry~qYT;F$r`^-sBy{T= zn>DJe8RO?=bYvfk;X1L6BjWU9!?kCQKUDr@$-ZE7hOzsMu*9y3Ik`%oL%*o<)T%7} z+I_n0^OGFe8Hbloc;;=-ew}Z#!J74Dy{V~dZd~!XV3S^Nq8ZD-tTFKMljx3)*{Ocb zHpc4Nw^)kR{Eo4EIIs3I=9fI1dfw-mjlf5zXg*_Rlm5+Rhh46AbT>44vPW}l@Z~Hv zQ5R%0UTLDy@^XJkqNwsM9XsLjmL$0akGfY_eNpCBxZD3c{B!!@DZ92jD;3=q!zNa3 zsXa+#ZMDsWa+iJembbTWEBKIXI{nXypnzTn#^h!3iwkb9vzTjDZ)IYosM@_dWQws= z&b||wjZ(2@6-m0n?y|?fZJQEdqRYMicgFTtQ|4ZrB{S*30~75vr_wbWI8RGy-#qz3 z>@W*!w#kGvr=CYD&5z6W&G}~&=Pj%_H@;!nnWL)~P5F5-f3c0#vyS@NW$^~WODBr1 zc;_tG6?BMkwqfgy89jfmx3#QGn!0!KnjW6hT5qe)-MIAhY-aV2IDO__Syh$aPIwxe zGgK^HzcFgl6}_ej4|Dq%yxwXZ-y)dG`cRH*rin-Y%y)LFiE27q4|UooEDn9MrZC=h zNh!PO<71@;D>>9>*D^8eGTY_6qMkk1+32ahwEEWavnyBa3@naap4rW#=wZdPGply> z`+aAUi@3i|J#dYq-~6aAyS8NR0ejG~(^vJhPM(hLm%e?%>{rUZ#TF_7n*7!YVvnUa z@3>>MEU4tnR=q+;(QcpHb~oN^*>Eh0b<$E@{{!cZBt;L^Tr;oTcYpR4$>MJp_!{e5 zy<K%3%GTYqoOZmTjCH2VEk0epDK`Y3XT=p&UyxZ4AD-FpqF0nt>5=*Yt!o_mI^wM| zo~CdAisW%s@)%td(=cH?qq@q(MQ8y-rG%8rg@bE8G~dZPdSz*k+nr92xArHlYCn(m z*v=C;t@q;MS%q2bDN@M>?&mAGf7w0AUn4fVUh2@>8P-N8jGNU;X6Xu=PB4_J%v^o3 zg*#5f#d*a8i3=yEJYRJod!e<Ro677L>8yg=?qx`xy|(M)ri)qICQbgh?PgtV<z=&b zX6x2Vi@$vqd3wj5YlrLg;w5{#<9p}N7GJ(V?3Rtvlgkq>i3clh>3kn~%gkX*Ql|WY zDK#SNn-oHXCpEr)-p%G<6<ZnFdUMx-9|vDQo0KP7zq~j+_;uNw%=1sKmKoUw@6$6? z4Kh=ov_fs=64Th9q1)fd--s_OWcZ-Dk29!<>6*_iB}WDu3k&@@$8Xy|p5!F^@a)&O zSN$`tO}D?dXW!2c{5@Uk^X&HQ-KU)AJ$>Q61-s6ky?Xrm^z8vtU;f>_J6kDt!sY*> zbIx4M2$7wC>)~Yo`Xt^CH|s5rmTfdG4VY};FpVR6q2{sl{@@?ym^-%K*)-t|M*_!Y z>AQzyP8o^q%C=KH)A=j>K`{IN=A#P(m8GVuD^<PIVJ!I+75>bky-njz1B;SEVWD%D z$^^TMYemf-E#4{p%<j;X=W}#!Pq=b8z35g(zxH3jqJ?uyWAtbGJ>aN+eBjcIUGs0b zG&C7+m}+;t$#C8q<r|y%&i$XGdE>#$l*IS5Ui@`mQQN@VbWwlL6>VAnmZ(VvSsD`@ zj0>Kz?zLFwHt+Jptyd42s~^&4T|Q%pd!fRIiN-t@2FvGK&tc6u_`>?Zk7Fu!W(r4T zPH0&$7^l2A5O9B|Nxu8L7t*_a*!`-PPfg5H|8>q{GfTl5o=uE$yv~0YtzVRLcm4!} zq@06uH#es)k*yJEk$mTKD0S-9qU|4B?9V(Awz>S^3y)c=d|ZmstX2X350WBFHZ)pX znO=Qk$%^@<Z@z3;l9!Uv9;je>E~I3}3)wP7t_i}W-QRZ~)=Y4lK5xOJ+a>#L8o5MO zgzF32|8^dK*jKW@!iXp7>T$8(9?xZJmNh)NzqIXTG<$mG-A7MMpD1rXvc`YqXSv54 zx7}-aeS6`;X*!2b{Zu<RWBm$Kk<+EI3e5`=Cn)>M+|H>sd@=F(8V|-lCx0-_(l!*_ z!Ep4$cisoJ=HCw7UZdnE85`R!Xa49gSCur!KKFMY|I}|(c`?^du1M*;(o1LcDmJEF z>-MSqVd3CiXe?27n)$}cTS6<RKJi`BxkAw0vuo!uk&A(8F&grdCeF>QT7L7(5tfev zXOATAdQz~UxWdoqe(=KAADq84DDr<>XY}=G`&GM-x93KGIkuzjx6qRgjqi_6e4GCM z{^IbwfB%>Q7^5c(sMp^J{;si~+tlW8@L!?oZQOZhC9Pisd|$iZs^*$|5*gQLMQg0} z*!rz6{pG>V2Hg`btsMf1NyQ(WE?nTtxMy#|Kh=9fMxfsQ@(EYtSDs9d6m0$GoqW0I zZ@*GTtMQHfb0<DX&snx%UO|mbh;`93*RAIBe+WIC%~*Z)mh!(ZyI=oksPDB)aq6gB z$QLFiBQyEh7aN5$Q$JX<=<CiZV_JQ2A5*Tv#enHuJD=^mlGxwz;f&6U1)XZW{ACT( zO&Z17Y-LwWmOIC_EaF$AeE;NIGk?YINV7lh!8UXIfyJs)D{a&pf7|YoYpMPd`@-7k zo*4hc^}$bqYj+h0=vvnuuV2W^8zW!;bMybV?@wLSZY&Tq^Xp$IW9ofBpqNGNquw&P zjxIaxiH66+VpJ2N%FKF_j^}RPGNJjp$Mve}^4dN-%}w1pQlWEr+-obO1FwB&m^1hM zfy%T!Y?-ryJWWpq_AouzcX`W!DRX?=j=HwYelgj+-@4_2#}cPE1;XFf@I^kg`FqOh zPkr3RkM~R-aJ>KX_-(er>g?W*#MZ@GOn>+C+&a`<w(ICY`-S`R56nFM$*T6s+o?w4 z+x@%N&Ej%1RB@X1+~S?b&4aVFp1=AdQ?>QL|C0N$t4>*(Mn&BHtXIarxoPp8!1;M$ zi%tHmdMoH3sH?td<>Mz?#q;ilONBcK7s^#$;W=reU7y^2Qg7t}^*t4eJT1i!-Oq+G z`PxfFx5()yT)R?!_y4DEag!RZmDd`tUtqVNb*hTD<IAmsx>sf$i&?n;*CG|xxXSHE zcV4^5t)j_oQq^w8c}Tw?n9bg?zL<S#;cDp*sb;(%?m6w(Y%ETH!{TW9)cO2Loj8vA zS&t%rcs0zsJZWbAbNPa=3<+7W8*Ep09I;A_c)q^m#BATpp6jo@V}A6gF>d^4GWF;_ zk-A-1?KRoIf76ms7kl_SBXZmC=3^P!T49SnI{S!3KfXJuEnO$f%CPq_d&TMdlgs69 z9W6WS@TPp?y2qlwvMV$^Wdb(3@K4h7Q}>kFEuB&JoiAk1!tKA;_SF~GdVh1fp2_5V z$J)R%<Gsnjw}xwkq#i%NyP2(n`TGVAPua!C?-~mp{K4K*D;6~Cp#7GMKfYd%ciif* zspj#0Rww(G&!$nAbid7DygH9fZqc+}wr!nCK7UwN_&X+Bo@TB1K0l>ne)+FQ!bgg3 z^&XpVI@@aN#5I0DZnTSKsJM4+sQ-0n{f2|_3;!<t`-|y(_ZhVbY+uC=e(GAlaJJ>u z-NrL!KTcjL-`s0<^P0n^b6Z|Ew3VoK-co8%JZs!iXAtVT;o6VQiR;7);u9YJXW7sA zoAZm1M$hGd=@~Lc3x2G)sS<CeS9<x|)b^Qu)_H$tti19*p)&i{>j$p_g1<z^`q|I0 zu7A6xk#*CyT`iFZzW&ZhRQU8<Tw~%Q*7@$M%s87gx|Xa^DC{*b+tu~gOVNX+^pY@3 zrV8KFi6&w#;ZkvD?#5*7uUGy$q2#yy|Mwer|C|5cdzWAeXQyY=g~@RaCI*rpmz(cj zkhdh}?w7~ACKi_(cfDjQExCXEgLs{|%1zDW4-N(OpW6~xPReX!T-zST{2^J`Rl2LV zp*Aa5;##5bGvC?Xhcn8QngbMP3Ki_jEM7N*L)&m!Zs^6kauNrZ)o;=0+7h>8!CMYp zasLZ%!z3=O^~<@D%{_tZ-a_w-uMR}j*e;&0Bb1QhS}d@jP<H0b#7V#Wy=VLs`5?Vs zR7tSBrAp!5w|cK&gFvx=%p0>#+tu?gvwFjJ#X|gELVPjLPPTO`nctN;{f;vg3k#fO zf5g+YKH`Cq<ns$(E#Lllb4GU4L(!^DUj5rQ2lPKzXmdKNSe}v2aDT(Q1zYMSe30kW z2ze59DWa}2p<+|*i|}YEWeMRumdk4&HF}f^EnlU@IrYO;t|a4ny%Qn*(%-qyZ{O9$ zzF*C~oj0gF?79SRdx+={pP)Zn{48sZB$qD<3KbWh^XigNWQBOl#UJi#FYaKuZ@6TK zAh+4KRDqtg)suRR*WZjipeVe&R^`-+Z9mt{KE~#~ZvMnGUF?h6r@yF|GM%^ngXM#w z?M=z-H7?xu7C1fDw|0@3xUT;5wGCT$Cf01)uv>49z{Y4ruda#w8(+n{np|6drI58# zW<m+y?1&tvMCky%jIy8q(#rmRd-}WFJl}rFWS94I`^&Fy&)2^nBYf$_-TL~<^6#g2 z-=5wgQ}zA*y7hMV7F|1FH@o+=x&8j*+v}^!r>912|NFaq`-;B>Cev!oor^z8vDZI; zbnpM|vv1q`r>}qcASJ-+YXAHA{kv;s$|_0B^>Es+_bn?&sHxLd?qZR`(%CCMAA79K z8{`=AaNdN4w-0fZNX~f>P$SYBubArL*x7Y&VY2CqddGW}z5lM9`8KnIt)BPs*17El zcOscT_IadrzN?mbAXfV%>L$}v^_90ax_Ftf)?fLZW%5t_MT~dgj{SF5BxH%^2^wGa z$=`g-L!9>z{|T;3jlabg-*c(ibba;a|4v1(=4W_y{eN|c|H}K*(pOg7XS=r9Jv~{W zb9&?4Pk;Pv{tKV~e`NitPxg2B{;sGltyRCZ|Mu0V^{+fPiJbdyGVOQry#FivPMhwJ zjo(*Oth?^&vHCK9U5iDzYr=Vt<dsJk?#>Tj{8IGy_OuOQ_s^Q|zxnN;Z$Ibnyh%KV z*|(<~cTAjjc29JB<OwOx7nL8*Y%J6JX3TMSyOOkJ<^pB;TgS@USf%d=>uAfK6TKgn zt6Xw?^};J1tJhrEuyHNlzqyTeHqKHvv+^?o`|kwp3gnmFs{CqZ{qk2Xwo8}W2KGB7 z-gLKZxHM;T>+X(+$0NRXR5b`calgZ^+v>Sev##)G|LOXee~-nvf9iL2Zkqo8L3+Ty z$x9n`ihr)}>&`Dd_uumW^FQ-H*Pr{p+w)gp>9_fD`5NtS?UTRApZlM^!>KOp#>P`$ zmnf|Zz7pQ`UKFZ4{=OpbfBqQ<w4eOnTj=rMU1Y)epY^q`&zsvk|3Bw{{r5lhCX$oq zSIXPm`4@k_)Ia>s!p6sm%bQ;Nyb9rP*lti}BK?mcp~T#%Xw}UhE{9(POs)>vJkw;! zLH4s9D|V$lUg)STu_J%-?@Gn`Wf=-@;(O$R<0UGxAGV$NxnJ4v-ua*V-Yl#;Cw+6# zpE=iFGS>N>{<E?6g>Qp6@6^QyBRPyz4)Gf_$Z<4D@8%Xi-lp;=Q>#Jrq@;Y0=ezq? zmOc4%Y?<nJ#cc+RVkYmNTh}g~H<^jyUd*0@8|)|LN@&~M@nAYqlQCiYGXd}Yfr<6U z;*16DXRl4{4EWF2dV8k!>xB<nt{&2Mz58)?uY*DE%yk(SxtkrGGXBPH<XV(#mNCz# zt=8O9{^_TB&Y$zI*W1tgbN==I;-B{?{_kA>KI!L)y8r68{<AH<@bkXIyYD;x#CQK$ zZ)<n%z>VJ*HcUM(Ic@5MjE4FLvp9nnUVkv9;d6a`-v7tn?CWaz|IDwHag+Kl|MlsF zzxfJ<zvFGM^Z&ngH!`h!UH-0H&y3F=zr39B_O8_TIkl;s+$)NFlQ$bqGVzFsn7u@7 zp_;S$b@r_?ek<=@*!k92-f#Bw#vZSIi@N+I`x-6=2$Vg`in`<U_={6d&*cWsi?trU zO&NJNEZ8F7JJsu-+i<dQRzg9^t;;R0*S^?I_^-mV@<43h%~yW=PPT8Jm0@uG|IUB) zEB=4q`R~8&r+T4jkthGj^S5*Uv)?=6-~IOg9M0$d@BDZCWqs|h`8o^d9{;-k{hWX9 zs>&;Z{!ji@JL&&o`!}a+C$KL4m~rB-efG{3LF}h_U%yj%P}KJ&Jv+Jn<H?<z#}D2x zWcs9%=AZa7zcWN8ur=htlAG~c|EeA{l>O>4M~|h*`FBU!7sjub%9g1eTCaUV_Q#@& z3q&PZdRB}0rqAE9*K~7Pck8m1VYe@Zoi<)yrW>ZkJYRL6<9`P)!=SnOA78pEM|{cB z_W5g^<NW`!eUz2Tfj6Zs*MiJ-rRz-+JUTk-7QeK%f4ctQt4sC|7^My}?aScmpLI9y z;TDB2%DW6aRxAIx>=b1*t7(T>NUmvc`Rm-@Ynp}Ezgr{uM0DmUTT2^`xI+Prk}IYy zWG!Aax3g}-*1~sZ)+X8eMxQRsU(xeCE8lSX)rHsOwTmn5CbaMUm!b4kWargFuVsp+ z^}DWmdc2pco)}VmIs6otZt8>52*ZgX2Y39-UB2eli{IAo)aNMjT%3NWC*|iH&dVz= z%sD&3Y2VDVvr=Bhgf#AcYkcn5jz7nr+Ux!QxO%~#=jSa#=l(I5<8}Hp-{+hC^#8A> z|G&iIz}w-<_fp^S$L^vHtCjDpDa;i9ey)GnI^CDKze3D+@H(4zHp}g;$=dgD<B@{a zB}=j|w^YUF^Zx!-E?dk0@9n8s?;0$Z_@3DNK947R+1l;j=FPn_Q%_@8vUSj-zs`w< z20wJ)iWI*2r>M}Y>e#wbq^^GQ`&ya$?11g3Tt0p3*|Wdx`_-R5ug<DuPJ38eyuH!O zVaFS%tmH}Rv2(4WeM|mjC@->j!ST0Gq2DUw(~JKe&tE+Jzq9w@{CY`g-#a(EH-F)8 zerx*GEYeKlSi{t&r8EE6zTaW+x=SYJf5>z04<G7`Lh{vKGE@YuS)N&JIZ;2Pbdir5 zb7sBLYTMA6JZ`7|Wvs}WrE>aG&{Q|&C4W4ckGjnApC<18GigVRmvW`ejtgyj(+Y0e zOu2WS<N5n)e#W!w*Xhb#+cD{z#T3T1vmda2z3-?Ml2iQu5d$|@W0zRE^#k4ZyUv!q zDknCo_33Gz*-+m-;Xu$Aed~|aMmp8EjwrIPOkuh4r#@uT@8-lJYwz%_tx4yYYUf|x zeKzO)qm94*#+?e-DwrpK^_=Gh-?xHXFWw5O7({jMn%I0zO!c$s3F}+-r}9#FdmEhk zxN6;+Ev!)`higRUFZl6=?O@cB?XJ6+<0j3oT$b|cMRQt2jmq5Mj*bJ(N2dQM?E9x= z8Q%BOVX5?r{UYB?>OFVM6z*F4>RQ>-H!q*<+r4k^&YHV#CRq7jR(r(5;lgTRG;^-K z-l^jIg$mmYuHE(jyl&geb6?$EQg^u?zqs~hzBO~1{5Gw!2W;O`+H8(2xpUR|)VftJ zA}0>s-W4?G;&k5U`PFaOJJ^g36Sf(?xq0bE?v-Cp8F`HNyBMqpQSx9>tQX~Ps!E%a zQ{YsVllTAWxA^)0uV)xd*!g$*?Rx$$u8{J7_A=jo<^Anfw5W6Xcl=_<?Rx*a|6U*Y za{kY|hxNf>ySiBIva(VWwaSXzN?Q8GZglhe9xwQRY1!3-Yx{m5Q`O77A$X$R@zK|L zfu}$HKWHOvwc@~)JA!eN&t$^SFW!H@USsvr#C4`q|LwbT(?4K-@<Vp1t^U@=XEW!O zt@gN<KewzcEoDyG{v~U2Z!vqy7%b8`%jlCS?@@g5mHD+LQ3gdV)h!=c6W?BOHM{U2 zdU9a>rWd@wo;zn6*vOyRdUEHb>ufL9e>{4$)x`bRu@z6XpWag1vO;v>B^?jh-CXP* zhQ%KBKk9Ao|KD`WqA6{e*vB_B^{;R!D1GglQod|y55MpF(gd?&<J`0q|IqVyymp>E z@oqu6z-Io9R$_~_k391-+$p8w_U57IO`9x{X3obPjylTI*bQx%j1K%+Ht(sqcxKU= z{q<pCvsQ9UQt?XKKXsS#%A0D76wTIeTTyBHsIuv=UPArC+*X|}Ykz#>47<tYIpzEp zsZ8Il?Z<a*yFM+uy0>tiH}kgp%WgSkt9KXqXdh?0bt;Lu_x0iY_c=#zSSR26dfP16 zPGj*>^T|6W@66oHWt=89`KhD6<F*HXtyVX`4^3HEvMb;F%#66dY9|?bw6=R3Yt*^K z#yNjUs@;;3#1;8=&Gky=&R!8FBK&ExLYn8K7G}1J9PX%GdNy;rV&aZp`?pMvh+6q= zscnGy=Jk3HyJC!<Oj4ZAvoqyKkLuxMFW2anZo_8{TO#I`q&dEN$+ok}d)+LqNimIU zob&Ex7Ry;>e)}jAHO<`R{p~t0T^4^M>y2zvJsi(Sdbj9VGrjz*(|WhQ!Drc;uw&Ct zMV5b&Vzn&aFY#P&vy<q0AyI**W6vI4a*S0fnRZmFW_5RHNI?IcXb+>hec7VwLYvzv zjzoHwZFs*ei{Z`uQt$b%wQV0Zv~pjLnept9iTJXe2C_%}%WnGi{8YYw)9dobE&Jcj zJfpNj;9supye(UUTn?34zvg(d^-R6YO1H}D=?6o~jF`%oa!YEqOrNToC498}YUJkm z&#lsmpPk*RoIT-E`B!<bD;p&Q7gaA5J-F$MAxl~6x^vSfcYoYzwr7Whe1<dY$t$Pt z{jAW4_fcc^ed!tGu*~cN`|Oyw=bx;mU*EZ>ZqcVI@!(z0m9{=U*%m2OVt?9a!Dg>_ z74;f{;nq&q>Nam!``GL2yCi$zn|4_{yICcie8M<Q5|@itWEAL3Rbb;}li}Q?$jH3( zkUMwZV*d?C8`ng!UY?q=ZJz7bNe$_fn-&KfWvQx6S<0I?Ay|KnYs;f$njcp9vDh?d zDL-AVcK(=NWP_Ki%u6M9L5sx}5BuW}ao0{`oc*d^SZtExDVL}OmWPk#SnwS>US!hS z{QiN+gXo5nt^8XpJ=gTBxXpR9o8#J9i}M+*25ef#L%A0R>aGzNb6BQzq=#i5!-clU zd8xO(veiFqsk5JW=Z46V%)P>28CJ;^OK`3{IODO=mmd}T+>Rey*fY=bYr>(6Q>Upc zv6xnz?z!hh@vZux-J#lyy?swgqJ%oxWIFruL?3fG_i`Ox7gqali{He3rlpE$%2$`^ zz1bI<yRhtt<-BbI&Cc$2>;I@dIrO~CmB-Ke^)&AC`>P^;#1wYSji@+t`I7R2fNREA z-yhCtWbx5$Uv+>-`os<$!9`gwr(f#MXqftS&Z#XLrJZx%Tz{4^sXl#a_c1rSp2#=9 zo*dSiw)=mrPC28aUgFNz0#8;&ygB%N;|*4obxZcf?mbfKlr1}9OIGwo87IN@^H1x? z{cpTp|KO|qkEu)lHLqhzj(nxc&7gk0e!{U&1u|>?D}4X;!f^fn54>0Y`>uLb@OV-9 z@$cp<FBY`+N7j~?R*M!&|8LXcs$bIKe5AQqZ;!OTX?EhP9SaU8o^NblKlSWmzUwm; z9=AyEce3JL=iT`JewMa{(zp712X$+hzt?`~V0f^h*r>$i`Myh{_ug9TTujqR7F_2k zxGqv~UFO7)&4*??^{o=Ul7CRyVoi5S)#gL4!quA3&e#O1%`bh+z2)_3O<vCzMr=3h zbJlA<6RGA&sW@JB=}hM9!|o5ow=9oZ{%}FVwOeiv!WoxM<!|G?bWm35-`i)ureCp~ zlxto3ZGFXGv)qS!bMt-QE1zUkm~iLgc9-nt4S^rFX3n);QY#d&_<+C+JICjL`6|73 zAN_vWIwr|T@WsRcz86Betd)Mv*W&+v(%S1jd4g2^{dH$TQa?2~9b`G?ckip%6voz5 zYduWkw^*eJG$iVDimcDGi@7gqRezvD*fZhi^!Ir|j2jeuR2YI!MLd|@CcB)q_0`m* zbEcQ?l(+1cn6}PlY4eO5vdaQfqHF$tJbvB0+&*@>>|TSjeC5-wH=lFv6F%Sa%J++b zr{k5M;c7*X-_$?yC|o)>SKNK#k2QOgq+5$UowwY%bk0ReX{BS&fy;e&UO)8{&{h>m z^>CYzs&ZoD+dn#o7dseE%D0}%G*xqTfyOjh#SRsRL_cc-mCj>R78$R}@b#?eeY=^5 zcQwm-Z}xpZ3jS$4<mHUG|2*RSMmx^e-R&tY8}>cR=wX>7Uohu+y~X^N&qtll9iFo9 z+KXcmQ{*?Dn{q(#yNTd-A12B9ddF@hRL#GfH0yNAth;GZCo-ZAWJOKCxg~CQX5isW z!PA+w%YwgcyUf+I{NlGsG21R~lDoe3maoLjnCuNZjSP1gZQEt{<P7r@=T%3luE;** zwEh-x*?!i83;Vau)^Az1>8_Q@)_U&uX8Wg|DtJ2E=iaHSca(d7*BAa@AN=wEB-NGn zGKK&3-~D&}vtMBH1%;V~lF!$N{9ixsj<oRq_5U{LfB(H=u8ACP+nxWfOaAP?@uPaL z+KVSuT$U#-ihgi5?r_|AX;$XzT&K5NwKnTt(%iA=y0hlblRp=jJbd|2aVNtrZi#El z7<Sbc<oaK5F8Y4;Xa9c-`3_rw4By&YRh!<f{krJ((MLP~MMg`!Hl4LHV@5yUo;B}k z?z^rpnOr)1LDi2Xg4?aGEG=;TC8C#m`^t0c48;rkSZkb;7oN8cU$~^<bHvRR1^g%P zG;I_SS-w-N#_)_kQ&z%aMzLdVR||`Odu}|byC{`omukI2;Z2im%lblQU6qqtux*ys zwj%Gh8-EC^?z-L-6eIWill}DnJO8{tRv+_)E#}|zPxcf4Ph61j?zGqc%uoAmCa_PE z{(o_L!vFr?%AKeG-*@`Mp0~r*X~rWq>4qEsPlX)1+cJgq%JIC^@|O9G?4CW$Kd(>x zYtn6}@=<7=>NbZR&KC816lMN3wC{Ajw7@NYLO_rCthEgu<*mEi^0Q|jwR5gvd8bpK z(Xw@Rw8w^Iom;{h&XX*@%zyb;UN<&(Z^Po{(~_6C*++XH&ZvFM@nxk<l~wqeYu8m4 z?@n$i+x4E+dV)~=wW}|qlNZmOdg6_zL;0h3CsQUp{P96|&OybB$Y1-n@YJVoILJNu zedgzPzrKFG%FdV-Xt`M=?(V*7<p?&R&ld}{eSbV%{`z+I6_*{A+FO?P)m%$?VCEJ0 zZAaztyGQMF&tE+8^n9(-@q(k?)&ZBU+Lz_MnDO=f=db6t{5u-US^K(v&ysV7tL-1G zo}c-(+xqIya(jy_g*%^G6nU?D@JY5y-Md~kP}#;Rd&`kcwmX`79yuPoQm9fV@wPm- zQTKu9uNf0Xb3~&KhIwu8D4F3=<kGQplRTrf=FU@#e|$dv`gZ-1?dLqEo!l~C<Ta<3 z8UOUt7c&e4+8$qAqTj3P8>c6J%c-r#Z<g6C9=FN!v@-YpTX8>r#ix`ldtUS&d-cLe zPUDqIV*R_8XBP|E79Xs*Fk4&MbK28~tykusU-~dcPIqZty^Y-WW8%%-KMPj$wtY%j z<f|w4_i2h<L=W3yZrA8D?3|As*5<BQp3@lqL_0M#b7k?ZH`j_=ZaaJz`t|kqVcR*P z`VDR#LFFNySNCO9x$l(9DR5(Xal-Xijlr5dKJk7N#Kav`ogdgnweE{}z~{%hgY}8E z1W&^1&Grq;m!IWNRXq11VqRV9x~934ExV-|!zPDzE7nhC`{w-R1e3e$Be${&F%iQR zPniDJPv5p!kohRb{nY{1hgJtq>=HS~_#>UO{n(ogjJ$t+HXdA^+J63`tHsB8GjAO- z5RAAmoki@|KG%I~zaEfUdPw<dLy(7G3}`f4S9ZJ0Yfr}G4Cw)%tiRd5*z&e9q&aVm zK;JUOmz^4)&naE4UvlxeGV{|LITE+rufJWKXltPvVVrP~n<f3(IrSp756o|U+V@L8 zyYcJyPf;JSiJ_;>5}D`Mrn=7HkjQ#e!Sdwm#3?xi>n1OI!eVZH>QUo9zF$EsADV?( zYRrrdEA#C5Z~y(jz3cz_pGhV%o}XC1|9}4P|B?UqkMP+Z;a}n+;t*B;=RLz;UEX7R z1M_wGtA(!AOPsR#x83i5{b8lN&wSrYZJx@m|H3C0dSQQu=JQUrzV0u*-^<(|b>_Yk zoA5x@?=FX@^~pG2cBcwqrqKA3-Thr_YXiSMe{nLscA=?t-|@-Y0=KvA+o=3|$HoUK z3*TP3y3}kAkFV_c11FZ<_~9TOb*nxp-RjoCdg1Q|N8@ZdSMA$yyRG%v_ek@FMMvcG z!q47*y_<jY>F?&7UvJmHzkhe-Z^lb|EChE(%vp3g_5HpDfi9_vT4kGsFCIL;`}OVZ z)AQFYY+jn^vaPZnI`n%XZQYECx$i)Ozmwt~JZRgta8<;UqRa22vN>m|H81sVtM^b- zS+F<p14m>)<GzMO)f7jLnj4~>f)f`s&q%Sj;FLd=ac=pE)hn`PpC2#&6B+#>eD$VW z*IxzgXZeDS*5^3%-bu~;b;5jITfxuyr~mK!albHr7MSVs@Ax|1(BuF6*qoLAJO6p_ zA=OjxXT47G&;Pso{{Lmz@jN8tu>HCX^#_`7Y|LHw`&icYwoSS1=AJeigzbBz8cH`Q zH@ti3^6t?;h1ZMoZvHw{dwK6=!F#iRMHzmtzxqw~(y!iqj^$x~!Qa*EJXWut+Ue-0 zz4MzGqfS9{ji<|!LiZj2?y?=sEZx36Cs&ro{@CZU@^w9)j%#u}&lMM3S2>#fB-4y@ za?`~6St~Q=ds<&gjd@+N-J(TILO>-v<8q(;F1G6)cW2eI<(n-LS@na*TJijrW#^v# zUSphb#De*q$t-2jeb&onX1>X({cQ1j$-;*+y&U0R%NB5RW*%*kJK)LxJj3sY+LdEb zHksL~dtV;9eIfY%Gd3UAE|b0WC&W`*%w{gL&wIf9d4GM+vpqki{NJjpC?~PvyPRsK zIQQ%BFAA--hF^u%)VCHLQ0zXN!0q#K8RMbr%U(V-jO@7o$!FaI^SQQjjwbS*;s3Px zv3-%l?11*!)6eFd<!;G*)*9SV@G|SzN=@tAGi<Xuraeq~_VKn(miX@tX1}{xUKzi+ z^yXvy$K$i@@9+6Lp|<{w$tHo1=hC)ES*AZeVtwO%R&-&4VcZ2_f6d0{5_U(w8b7RP zd!4(iW{LimDU}@cI(0vPI4&`eD6`R?vbrhf!sBJD3JP9rF%FesT)pbxnxq?{R{CrQ zw<Iq=+Hq{F-SMr$N47q)wD6O>&L(r+PvCl2`kw_m*w{6t-aTw7c-!>&R=wt<s0&L% zCv3PHwQjAJkGJNnGL@Q@LfKxA{ARAol$dqgM_xWi-uu|f$>&dsD$JVZInSx1bi%H5 z?fi7Z)+M*PyQBKJXBBOVp4@%Qj4M~yAa=T$xcZEhr(N9HKhCKvC}F(f-+R!*?xjY@ zuS|F4nHO#C7p1#=tT_=Itk&7%uEtZ}?^`4@cY~$fNoSR!N$l6$HJA1Wd&#W4QoJVU z_r+71GV7mMBx#nP33{+%>4QS=iOSQBj_WP$i}RA*Z(!A=S;aH?rN*)uS1wG|_KX!+ z=~cPokXw~Sk-`r4{ihC_7B_B=X<5d8Yq4wXamKO&sRrGIJ<hwmyi4CFvV|B$h3z<H zTfg&Cb8yz=&&>*)4>%iE=kI^s{NSQrNm0`@-ia0wldN92++&rrxz4KT9g}5r?b;SO z#;RDRRZHK_xS!v(=FQ8i!WBPVOFcL3dD?ljliTc(+W85hjXYn~Pj(&BSZ29tQ^J*( zsV6=?%!vIL8ab`KbGqp5zwvjrYp^_@e8FBn>$GG@y~L%ZCKn&8D|)wle$etD#(;Sy z|2g&P4LU5pUw!ItZ4Br(a6AwzzVjT*L#dagb`HjiZ!Mqr@omMC-2yjGPyP^m;#--G zR~*NSH7_g~WdFCy&yjhc@5lE+aN^vbcc0ye;^C?|>w0+iD~p*N;%7`^wQfsF?CF=- zzxegPqZ>+|a@NMwdsntdH!J@79C%ydCxe{wvQ=C6&0DH>f%C{BgS34;IWyjfZ}_1U zCLkHKnJGNs=kJ=IkEid?+2FP|Dz)*b{D-6c@qd_#F6OPic5Y^QrDU=0^9}41EVz=- z-7x)DU+nXc{m!3)!0gA*c0WIQ=B9qtQEvIIKXR5dI4@Zl$aTY3U-3bGwCil9OU@>@ zt|-~QnK%8zhqX$+k>`7=mh`0@?@8v8V?W?w73-V!r@dfp_eXJt_ZutgHFs=&xU>Cr zsn)t0^^;|h>mwr7_eb4~UHDb1CiwNymdkTmlof72?fS}=!uVy8UK3+s`>_rKJBRaP zOjA^!sb^2{U$$aiOrp)tM`fQ_U)78Bo;fMgwOQe&?{bsVnbzqmZk)Ta-0x9Y>AtHW zv4XsxH|}=bl>MFS;Ny!9FaF)TBK9k6yWzj59UVnUMyuB_$@OL*lvLl#&l#|M0-ve% zi$4y(KRxaK;rf3G^RJ{62i>-QzdK*`Ws;FhEYGo<4??w<aP)*(-BOvh;i}KUU%AU? z%&OnumU7ysC9Gsccw}neyGgZ|rfyQZGCA9Cg}9^F<G*|6PLbZcsBopl_cGB4F<+ZB z*A)(u@ryN%l`ws~$RIUuP45<~H>+jd-gqdjtgPL7#dAia@P_s0H@+9yxPHyrYwfk} z+peiSxYzLbp5~*to6TwVPgg58M$KIze&J}g=$))dx9evp2M01YH-)^}`;@JJ_fr!s z&v{QmUuT#vx|);yi+#l}{X<7>Zq1*1HD_)9vPm6Z)c!dCtgT|Szcy>rOum!x95r9^ zPlu(i`c|pc{rKO)&vj8XY^`1*tEv@}mcKY+Is2HdpXo~dq`-y$I@YiGkgoL5n6<KS zrJ2~DukGrh%>N&h)F1d?JJs;{*Z&oN?c@H>zW%>^&3|^O=%1hJHNXB}@Z`He#Q$h1 z<(wy9|NAZf7k{p*{-Wq#g=meH6U#GiFSEP9kn!`?GrN~wdM+v?m9cVn|CJR28olMc zGu~-M*y@M)_KTe7zJ8}$XPLO(m2!73Y4+8x4w@8+T>bqiMI+lbO0D=zy-H%^ygirw zv`pV!_3o3=^V8MNTJ!Pjlv~-8o_U;haV{_X+`?d45tg6#?!}?25i?p(8l1Y+yMJ}8 zk-mA!Asg-QjV;_KVzd_L_XIi@ZvSiI!Fns>_QBVylIpTrgO=EAi1&Dwxx#pDZq^Um zxI0o;wv-rz%GJrR8my|5y-@MPNw?l#CRB8GOW?BCGLDgw6L;3U+&SfvutCJ{g7#{i zg{fb~)9$-%H%Zv-H~Igyy6|har>g1oly*Bdn(bLt>^k@2(c~?`^S*vE@^22jJInpn zwyxaV^rW2AJhsIyJ1WvT1QfT6A7(2FzPa|z%*+cilV!BElJ8DUb`9{=ZWE~R=w94d z-_CaF$IOL}5%uT$I6^f&Lsz=6PF-a5sdl?hsmQm;pje$*scibfuB)$2HZ=1N>W>S{ zGW5Ds_-b9@EbEAhEB4vaQQ|LplWzT5wk)^zZ@Sh2#hvQLcb`wSh!sC@vTwr`-_z%| z1qojFx@q%niu;#MZE+$my4HR<uD<)|fsZ$r+MCu}%?)#E^jjA5<zs-V{4STOJ~8F~ zt-E^X3H|@|Zeu%Z@!HEDHw!(H+$37p*UiK#sQ75dCJ8eO>9*4`q6_k_H@+(t-52xa z#BSrRH%%KpI^6nl=IeoJRnlpbrgy(RAHdS>yzKInqghAi#N0R>Ai%xg^5#h=9!<<V zFj3RqXyb&_F)8)Gmb?|$cK-S0PGRN=&S1fqPu4RH6}-=TUP<rsluY?|>*GR+uqUEF z_D@w{t^4?cU+#Zk=^yv~_B$o`Q)eEp|L}uf=>Nya>-$3F{~Jp6y9xYP>`$pQkvJ*v zU(wrH?th`xM|lgA<kdMLM|+PJa64||<ohY@w3ScS^wz=s9wO!L^&dVhd&(`w$zI;# z>~N@1R`AeN>3fWyPYT{+bbq;_{8eu<hk8VVqybml0eRt`#k!Iw9S$6}n!<QZQ&n2= zqC8`@aFKqC5XY*MYmJ}jT@k$ZVuk;Yl1Y}j`*eR572D_Di`~C(-!Fw1t3JH?c2_!a z@9~YN59!;--j7qRu;Z#1sybUgB`(ds>#Ip_9FJJCOR{>gXONq?ZLY@3#RnsH&FE1R zt~7YZKYeef$vpMcB?kL)Oo~sP;MQaGlbkHSsO;J!&uHzNv#dRp-q}8K3UK|f$;B<T zk4HD(B0lAm)3ftjlK=kASW?aTbwa7=iyJ}5zfO@qCnqsc;8~*a&y`-Qvc(m(>)mxv zc_oJJTpy<O<<!+z&F>;Fr?=aDPcAg)E<NWuXY<8pGD~K1rlxt%c)jqn<jEqtRW(K~ zJCkO~D4l$|!h5^?^B=LZWZH|DCTKBOPh(BAD~l`=FPnOO%UQ-#MX5RdE%#j=N(;CG zbPxQ_C}2*npYylyTe;6S@z~jy)=!+$Uz=9{+W4umY@*TA`!@nFoLPKg+U+SkP8$t# zZSpD~d8n=~*P6%X?%YyzB4AfT;aR6RzAG<^uOu`|9qpFhy`pf>reiw1#xjO8xNepH z)Clbp*HpZGJTlfTJI2J<WNrJ=u*IjMziJ10uid^crR$dz|CZ$G6M8Ow@LyDsQa9V- zqt-;z?s{{}>5Ko{OkZ5VdBV!l-8Ne=)Xl)&rTbFmb)VDQ<P0{}3ZC!V*7@IfZ@HFS zS<AHMoB-L%Oo_GYWgG3LI{QEGy7_BX!8=WxM0K~*Z}*A6aqy~<JSaRVW7@W})~%|m z4KKKhO-adKdi*s1f1QJS+hvs&G|tyo63{7|JJ02V{j8bwx0o)va@(nGIQ3okQ{`Ir zZ8t>Z)Q!#den^Ys*=W_Y>&T{btG3Q-lbQBKoxAa*{7v<R%-hYY+3rRt`uMtC{pIa* zWL?nGlRvvAG(0l$7dWO~Saf`gQW<N2USXU2f;|Rh(z8vU&*foz{Le!8O=He7#`}tE z>$m)?t7HA_`sK<d-y7*0+qV{VZ8T?Umzp8dSRVUDnY-k*vck@WGhICb4cFa$J~i*D nPf|GV7F@AFeE*N5`gI?><NrJ&hWXVt?!WxmwiXtK1*{AJTRNGP diff --git a/dbrepo-search-service/test/test_app.py b/dbrepo-search-service/test/test_app.py index 1b1af02098..8621f6a0a4 100644 --- a/dbrepo-search-service/test/test_app.py +++ b/dbrepo-search-service/test/test_app.py @@ -1,35 +1,26 @@ import json import time import unittest -import datetime import jwt -from dbrepo.api.dto import Database, User, UserAttributes, Container, Image, Table, Constraints, Column, ColumnType, \ - Concept, Unit +from dbrepo.api.dto import Database, User, Container, Image, Table, Constraints, Column, ColumnType, Concept, Unit, \ + UserBrief from app import app req = Database(id=1, name="Test", internal_name="test_tuw1", - creator=User(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", - username="foo", - attributes=UserAttributes(theme="dark")), - owner=User(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", - username="foo", - attributes=UserAttributes(theme="dark")), - contact=User(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", - username="foo", - attributes=UserAttributes(theme="dark")), - created=datetime.datetime(2024, 3, 25, 16, tzinfo=datetime.timezone.utc), + owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"), + contact=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"), exchange_name="dbrepo", is_public=True, + is_schema_public=True, container=Container(id=1, name="MariaDB", internal_name="mariadb", host="data-db", port="3306", - created=datetime.datetime(2024, 3, 1, 10, tzinfo=datetime.timezone.utc), sidecar_host="data-db-sidecar", sidecar_port=3305, image=Image(id=1, @@ -41,29 +32,19 @@ req = Database(id=1, jdbc_method="mariadb", default_port=3306)), tables=[Table(id=1, database_id=1, name="Data", internal_name="data", - creator=User(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", - username="foo", - attributes=UserAttributes(theme="dark")), - owner=User(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", - username="foo", - attributes=UserAttributes(theme="dark")), - created=datetime.datetime(2024, 3, 1, 10, tzinfo=datetime.timezone.utc), + owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"), constraints=Constraints(uniques=[], foreign_keys=[], checks=[], primary_key=[]), is_versioned=False, - created_by="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", queue_name="dbrepo", routing_key="dbrepo.1.1", is_public=True, + is_schema_public=True, columns=[Column(id=1, database_id=1, table_id=1, name="ID", internal_name="id", column_type=ColumnType.BIGINT, is_public=True, is_null_allowed=False, size=20, d=0, - concept=Concept(id=1, uri="http://www.wikidata.org/entity/Q2221906", - created=datetime.datetime(2024, 3, 1, 10, - tzinfo=datetime.timezone.utc)), + concept=Concept(id=1, uri="http://www.wikidata.org/entity/Q2221906"), unit=Unit(id=1, - uri="http://www.ontology-of-units-of-measure.org/resource/om-2/degreeCelsius", - created=datetime.datetime(2024, 3, 1, 10, - tzinfo=datetime.timezone.utc)), + uri="http://www.ontology-of-units-of-measure.org/resource/om-2/degreeCelsius"), val_min=0, val_max=10)] )]) diff --git a/dbrepo-search-service/test/test_opensearch_client.py b/dbrepo-search-service/test/test_opensearch_client.py index 581e5f8c5d..e8909936ca 100644 --- a/dbrepo-search-service/test/test_opensearch_client.py +++ b/dbrepo-search-service/test/test_opensearch_client.py @@ -3,34 +3,25 @@ import unittest import opensearchpy from dbrepo.api.dto import Database, User, UserAttributes, Container, Image, Table, Column, ColumnType, Constraints, \ - PrimaryKey, TableMinimal, ColumnMinimal, Concept, Unit + PrimaryKey, TableMinimal, ColumnMinimal, Concept, Unit, UserBrief from opensearchpy import NotFoundError from app import app - from init.clients.opensearch_client import OpenSearchClient req = Database(id=1, name="Test", internal_name="test_tuw1", - creator=User(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", - username="foo", - attributes=UserAttributes(theme="dark")), - owner=User(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", - username="foo", - attributes=UserAttributes(theme="dark")), - contact=User(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", - username="foo", - attributes=UserAttributes(theme="dark")), - created=datetime.datetime(2024, 3, 25, 16, tzinfo=datetime.timezone.utc), + owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"), + contact=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"), exchange_name="dbrepo", is_public=True, + is_schema_public=True, container=Container(id=1, name="MariaDB", internal_name="mariadb", host="data-db", port="3306", - created=datetime.datetime(2024, 3, 1, 10, tzinfo=datetime.timezone.utc), sidecar_host="data-db-sidecar", sidecar_port=3305, image=Image(id=1, @@ -41,30 +32,23 @@ req = Database(id=1, driver_class="org.mariadb.jdbc.Driver", jdbc_method="mariadb", default_port=3306)), - tables=[Table(id=1, database_id=1, name="Data", internal_name="data", - creator=User(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", - username="foo", - attributes=UserAttributes(theme="dark")), - owner=User(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", - username="foo", - attributes=UserAttributes(theme="dark")), - created=datetime.datetime(2024, 3, 1, 10, tzinfo=datetime.timezone.utc), + tables=[Table(id=1, + database_id=1, + name="Data", + internal_name="data", + owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"), constraints=Constraints(uniques=[], foreign_keys=[], checks=[], primary_key=[]), is_versioned=False, - created_by="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", queue_name="dbrepo", routing_key="dbrepo.1.1", is_public=True, + is_schema_public=True, columns=[Column(id=1, database_id=1, table_id=1, name="ID", internal_name="id", column_type=ColumnType.BIGINT, is_public=True, is_null_allowed=False, size=20, d=0, - concept=Concept(id=1, uri="http://www.wikidata.org/entity/Q2221906", - created=datetime.datetime(2024, 3, 1, 10, - tzinfo=datetime.timezone.utc)), + concept=Concept(id=1, uri="http://www.wikidata.org/entity/Q2221906"), unit=Unit(id=1, - uri="http://www.ontology-of-units-of-measure.org/resource/om-2/degreeCelsius", - created=datetime.datetime(2024, 3, 1, 10, - tzinfo=datetime.timezone.utc)), + uri="http://www.ontology-of-units-of-measure.org/resource/om-2/degreeCelsius"), val_min=0, val_max=10)] )]) @@ -84,6 +68,7 @@ class OpenSearchClientTest(unittest.TestCase): queue_name="dbrepo", routing_key="dbrepo.test_tuw1.test_table", is_public=True, + is_schema_public=True, database_id=req.id, constraints=Constraints(uniques=[], foreign_keys=[], checks=[], primary_key=[PrimaryKey(id=1, @@ -92,14 +77,7 @@ class OpenSearchClientTest(unittest.TestCase): column=ColumnMinimal(id=1, table_id=1, database_id=req.id))]), is_versioned=True, - created_by="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", - creator=User(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", - username="foo", - attributes=UserAttributes(theme="dark")), - owner=User(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", - username="foo", - attributes=UserAttributes(theme="dark")), - created=datetime.datetime(2024, 4, 25, 17, 44, tzinfo=datetime.timezone.utc), + owner=UserBrief(id="c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", username="foo"), columns=[Column(id=1, name="ID", internal_name="id", @@ -121,7 +99,6 @@ class OpenSearchClientTest(unittest.TestCase): self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.contact.id) self.assertEqual("foo", database.contact.username) self.assertEqual("dark", database.contact.attributes.theme) - self.assertEqual(datetime.datetime(2024, 3, 25, 16, tzinfo=datetime.timezone.utc), database.created) self.assertEqual("dbrepo", database.exchange_name) self.assertEqual(True, database.is_public) self.assertEqual(1, database.container.id) @@ -137,15 +114,13 @@ class OpenSearchClientTest(unittest.TestCase): self.assertEqual(True, database.tables[0].is_public) self.assertEqual(1, database.tables[0].database_id) self.assertEqual(True, database.tables[0].is_versioned) - self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.tables[0].created_by) + self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.tables[0].owned_by) self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.tables[0].creator.id) self.assertEqual("foo", database.tables[0].creator.username) self.assertEqual("dark", database.tables[0].creator.attributes.theme) self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.tables[0].owner.id) self.assertEqual("foo", database.tables[0].owner.username) self.assertEqual("dark", database.tables[0].owner.attributes.theme) - self.assertEqual(datetime.datetime(2024, 4, 25, 17, 44, tzinfo=datetime.timezone.utc), - database.tables[0].created) self.assertEqual(1, len(database.tables[0].columns)) self.assertEqual(1, database.tables[0].columns[0].id) self.assertEqual("ID", database.tables[0].columns[0].name) @@ -172,7 +147,6 @@ class OpenSearchClientTest(unittest.TestCase): self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.contact.id) self.assertEqual("foo", database.contact.username) self.assertEqual("dark", database.contact.attributes.theme) - self.assertEqual(datetime.datetime(2024, 3, 25, 16, 0, tzinfo=datetime.timezone.utc), database.created) self.assertEqual("dbrepo", database.exchange_name) self.assertEqual(True, database.is_public) self.assertEqual(1, database.container.id) diff --git a/lib/python/tests/test_unit_container.py b/lib/python/tests/test_unit_container.py index 0e1d93faa0..b7a35e6a4a 100644 --- a/lib/python/tests/test_unit_container.py +++ b/lib/python/tests/test_unit_container.py @@ -25,7 +25,6 @@ class ContainerUnitTest(unittest.TestCase): name="MariaDB 10.11.3", internal_name="mariadb_10_11_3", running=True, - created=datetime.datetime(2024, 3, 26, 10, 11, 0, 0, datetime.timezone.utc), image=ImageBrief(id=1, name="mariadb", version="10.11.3", @@ -58,7 +57,6 @@ class ContainerUnitTest(unittest.TestCase): port=12345, sidecar_host="data-db-sidecar", sidecar_port=3305, - created=datetime.datetime(2024, 3, 26, 10, 11, 0, 0, datetime.timezone.utc), image=Image(id=1, registry="docker.io", name="mariadb", diff --git a/lib/python/tests/test_unit_database.py b/lib/python/tests/test_unit_database.py index 0109416479..99d420f5fc 100644 --- a/lib/python/tests/test_unit_database.py +++ b/lib/python/tests/test_unit_database.py @@ -28,7 +28,6 @@ class DatabaseUnitTest(unittest.TestCase): name='test', owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), internal_name='test_abcd', is_public=True) ] @@ -45,7 +44,6 @@ class DatabaseUnitTest(unittest.TestCase): name='test', owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), exchange_name='dbrepo', internal_name='test_abcd', is_public=True, @@ -57,7 +55,6 @@ class DatabaseUnitTest(unittest.TestCase): port=3306, sidecar_host='data-db-sidecar', sidecar_port=3305, - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), image=Image( id=1, registry='docker.io', @@ -113,7 +110,6 @@ class DatabaseUnitTest(unittest.TestCase): name='test', owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), exchange_name='dbrepo', internal_name='test_abcd', is_public=True, @@ -125,7 +121,6 @@ class DatabaseUnitTest(unittest.TestCase): port=3306, sidecar_host='data-db-sidecar', sidecar_port=3305, - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), image=Image( id=1, registry='docker.io', @@ -184,7 +179,6 @@ class DatabaseUnitTest(unittest.TestCase): name='test', owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), exchange_name='dbrepo', internal_name='test_abcd', is_public=True, @@ -196,7 +190,6 @@ class DatabaseUnitTest(unittest.TestCase): port=3306, sidecar_host='data-db-sidecar', sidecar_port=3305, - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), image=Image( id=1, registry='docker.io', @@ -255,7 +248,6 @@ class DatabaseUnitTest(unittest.TestCase): name='test', owner=UserBrief(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='other'), contact=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), exchange_name='dbrepo', internal_name='test_abcd', is_public=True, @@ -267,7 +259,6 @@ class DatabaseUnitTest(unittest.TestCase): port=3306, sidecar_host='data-db-sidecar', sidecar_port=3305, - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), image=Image( id=1, registry='docker.io', @@ -325,7 +316,6 @@ class DatabaseUnitTest(unittest.TestCase): def test_get_database_access_succeeds(self): exp = DatabaseAccess(type=AccessType.READ, - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), user=UserBrief(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='other')) with requests_mock.Mocker() as mock: # mock @@ -356,7 +346,6 @@ class DatabaseUnitTest(unittest.TestCase): def test_create_database_access_succeeds(self): exp = DatabaseAccess(type=AccessType.READ, - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), user=UserBrief(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='other')) with requests_mock.Mocker() as mock: # mock @@ -417,7 +406,6 @@ class DatabaseUnitTest(unittest.TestCase): def test_update_database_access_succeeds(self): exp = DatabaseAccess(type=AccessType.READ, - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), user=UserBrief(id='abdbf897-e599-4e5a-a3f0-7529884ea011', username='other')) with requests_mock.Mocker() as mock: # mock diff --git a/lib/python/tests/test_unit_identifier.py b/lib/python/tests/test_unit_identifier.py index bc9f8a5314..45b0a919e7 100644 --- a/lib/python/tests/test_unit_identifier.py +++ b/lib/python/tests/test_unit_identifier.py @@ -21,8 +21,6 @@ class IdentifierUnitTest(unittest.TestCase): view_id=32, publication_year=2024, publisher='TU Wien', - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), - last_modified=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), type=IdentifierType.VIEW, language=Language.EN, descriptions=[IdentifierDescription(id=2, description='Test Description')], @@ -121,8 +119,6 @@ class IdentifierUnitTest(unittest.TestCase): view_id=32, publication_year=2024, publisher='TU Wien', - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), - last_modified=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), type=IdentifierType.VIEW, language=Language.EN, descriptions=[IdentifierDescription(id=2, description='Test Description')], diff --git a/lib/python/tests/test_unit_table.py b/lib/python/tests/test_unit_table.py index 0b5721ae5b..f149b60781 100644 --- a/lib/python/tests/test_unit_table.py +++ b/lib/python/tests/test_unit_table.py @@ -22,7 +22,6 @@ class TableUnitTest(unittest.TestCase): internal_name="test", owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), is_versioned=True, - created_by='8638c043-5145-4be8-a3e4-4b79991b0a16', queue_name='test', routing_key='dbrepo.test_database_1234.test', is_public=True, @@ -152,7 +151,6 @@ class TableUnitTest(unittest.TestCase): internal_name="test", owner=UserBrief(id='8638c043-5145-4be8-a3e4-4b79991b0a16', username='mweise'), is_versioned=True, - created_by='8638c043-5145-4be8-a3e4-4b79991b0a16', queue_name='test', routing_key='dbrepo.test_database_1234.test', is_public=True, @@ -501,11 +499,9 @@ class TableUnitTest(unittest.TestCase): is_public=True, concept=Concept(id=2, uri="http://dbpedia.org/page/Category:Precipitation", - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), name="Precipitation"), unit=Unit(id=2, uri="http://www.wikidata.org/entity/Q119856947", - created=datetime.datetime(2024, 1, 1, 0, 0, 0, 0, datetime.timezone.utc), name="liters per square meter"), is_null_allowed=False) # mock -- GitLab From d1819635325ea2e9dd7161c3b4c089ab66e5580f Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 11 Dec 2024 08:01:01 +0100 Subject: [PATCH 09/12] WIP --- dbrepo-search-service/test/test_opensearch_client.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/dbrepo-search-service/test/test_opensearch_client.py b/dbrepo-search-service/test/test_opensearch_client.py index e8909936ca..e86b764beb 100644 --- a/dbrepo-search-service/test/test_opensearch_client.py +++ b/dbrepo-search-service/test/test_opensearch_client.py @@ -90,9 +90,6 @@ class OpenSearchClientTest(unittest.TestCase): self.assertEqual(1, database.id) self.assertEqual("Test", database.name) self.assertEqual("test_tuw1", database.internal_name) - self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.creator.id) - self.assertEqual("foo", database.creator.username) - self.assertEqual("dark", database.creator.attributes.theme) self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.owner.id) self.assertEqual("foo", database.owner.username) self.assertEqual("dark", database.owner.attributes.theme) @@ -115,9 +112,6 @@ class OpenSearchClientTest(unittest.TestCase): self.assertEqual(1, database.tables[0].database_id) self.assertEqual(True, database.tables[0].is_versioned) self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.tables[0].owned_by) - self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.tables[0].creator.id) - self.assertEqual("foo", database.tables[0].creator.username) - self.assertEqual("dark", database.tables[0].creator.attributes.theme) self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.tables[0].owner.id) self.assertEqual("foo", database.tables[0].owner.username) self.assertEqual("dark", database.tables[0].owner.attributes.theme) @@ -138,9 +132,6 @@ class OpenSearchClientTest(unittest.TestCase): self.assertEqual(1, database.id) self.assertEqual("Test", database.name) self.assertEqual("test_tuw1", database.internal_name) - self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.creator.id) - self.assertEqual("foo", database.creator.username) - self.assertEqual("dark", database.creator.attributes.theme) self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.owner.id) self.assertEqual("foo", database.owner.username) self.assertEqual("dark", database.owner.attributes.theme) -- GitLab From 130db442d00c18f79b404f9de202fb2e5edafe07 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 11 Dec 2024 08:33:36 +0100 Subject: [PATCH 10/12] WIP --- dbrepo-search-service/test/test_opensearch_client.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/dbrepo-search-service/test/test_opensearch_client.py b/dbrepo-search-service/test/test_opensearch_client.py index e86b764beb..9cb000d588 100644 --- a/dbrepo-search-service/test/test_opensearch_client.py +++ b/dbrepo-search-service/test/test_opensearch_client.py @@ -2,8 +2,8 @@ import datetime import unittest import opensearchpy -from dbrepo.api.dto import Database, User, UserAttributes, Container, Image, Table, Column, ColumnType, Constraints, \ - PrimaryKey, TableMinimal, ColumnMinimal, Concept, Unit, UserBrief +from dbrepo.api.dto import Database, Container, Image, Table, Column, ColumnType, Constraints, PrimaryKey, \ + TableMinimal, ColumnMinimal, Concept, Unit, UserBrief from opensearchpy import NotFoundError from app import app @@ -92,10 +92,8 @@ class OpenSearchClientTest(unittest.TestCase): self.assertEqual("test_tuw1", database.internal_name) self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.owner.id) self.assertEqual("foo", database.owner.username) - self.assertEqual("dark", database.owner.attributes.theme) self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.contact.id) self.assertEqual("foo", database.contact.username) - self.assertEqual("dark", database.contact.attributes.theme) self.assertEqual("dbrepo", database.exchange_name) self.assertEqual(True, database.is_public) self.assertEqual(1, database.container.id) @@ -114,7 +112,6 @@ class OpenSearchClientTest(unittest.TestCase): self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.tables[0].owned_by) self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.tables[0].owner.id) self.assertEqual("foo", database.tables[0].owner.username) - self.assertEqual("dark", database.tables[0].owner.attributes.theme) self.assertEqual(1, len(database.tables[0].columns)) self.assertEqual(1, database.tables[0].columns[0].id) self.assertEqual("ID", database.tables[0].columns[0].name) @@ -134,10 +131,8 @@ class OpenSearchClientTest(unittest.TestCase): self.assertEqual("test_tuw1", database.internal_name) self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.owner.id) self.assertEqual("foo", database.owner.username) - self.assertEqual("dark", database.owner.attributes.theme) self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.contact.id) self.assertEqual("foo", database.contact.username) - self.assertEqual("dark", database.contact.attributes.theme) self.assertEqual("dbrepo", database.exchange_name) self.assertEqual(True, database.is_public) self.assertEqual(1, database.container.id) -- GitLab From 78673014f88dad8c78e02cebb06a6db50d272345 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 11 Dec 2024 09:30:42 +0100 Subject: [PATCH 11/12] Fixed owned_by --- dbrepo-search-service/test/test_opensearch_client.py | 1 - 1 file changed, 1 deletion(-) diff --git a/dbrepo-search-service/test/test_opensearch_client.py b/dbrepo-search-service/test/test_opensearch_client.py index 9cb000d588..dc17c01d3b 100644 --- a/dbrepo-search-service/test/test_opensearch_client.py +++ b/dbrepo-search-service/test/test_opensearch_client.py @@ -109,7 +109,6 @@ class OpenSearchClientTest(unittest.TestCase): self.assertEqual(True, database.tables[0].is_public) self.assertEqual(1, database.tables[0].database_id) self.assertEqual(True, database.tables[0].is_versioned) - self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.tables[0].owned_by) self.assertEqual("c6b71ef5-2d2f-48b2-9d79-b8f23a3a0502", database.tables[0].owner.id) self.assertEqual("foo", database.tables[0].owner.username) self.assertEqual(1, len(database.tables[0].columns)) -- GitLab From d9510aa84d1d3ebbbaedc172c235099135a806d1 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Wed, 11 Dec 2024 10:06:35 +0100 Subject: [PATCH 12/12] Added jwt --- lib/python/dbrepo/RestClient.py | 18 +------ lib/python/dbrepo/api/dto.py | 4 +- lib/python/tests/test_unit_database.py | 4 +- lib/python/tests/test_unit_jwt.py | 65 ++++++++++++++++++++++++++ 4 files changed, 69 insertions(+), 22 deletions(-) create mode 100644 lib/python/tests/test_unit_jwt.py diff --git a/lib/python/dbrepo/RestClient.py b/lib/python/dbrepo/RestClient.py index 77a1d82d74..6cc706d46c 100644 --- a/lib/python/dbrepo/RestClient.py +++ b/lib/python/dbrepo/RestClient.py @@ -79,22 +79,6 @@ class RestClient: return requests.request(method=method, url=url, auth=auth, verify=self.secure, json=payload, headers=headers, params=params, stream=stream) - def upload(self, file_path: str) -> str: - """ - Uploads a file located at file_path to the Upload Service. - - :param file_path: The location of the file on the local filesystem. - - :returns: Filename on the S3 backend of the Upload Service, if successful. - """ - my_client = TusClient(url=f'{self.endpoint}/api/upload/files/') - uploader = my_client.uploader(file_path=file_path) - uploader.upload() - filename = uploader.url[uploader.url.rfind('/') + 1:uploader.url.rfind('+')] - if filename is None or len(filename) == 0: - raise UploadError(f'Failed to upload the file to {self.endpoint}') - return filename - def get_jwt_auth(self, username: str = None, password: str = None) -> JwtAuth: """ Obtains a JWT auth object from the auth service containing e.g. the access token and refresh token. @@ -147,7 +131,7 @@ class RestClient: :raises ResponseCodeError: If something went wrong with the authentication. """ url = f'{self.endpoint}/api/user/token' - response = self._wrapper(method="put", url=url, payload={"refresh_token": refresh_token}) + response = requests.put(url=url, json=dict({"refresh_token": refresh_token})) if response.status_code == 202: body = response.json() return JwtAuth.model_validate(body) diff --git a/lib/python/dbrepo/api/dto.py b/lib/python/dbrepo/api/dto.py index a6fe8f18e3..79c4279ed0 100644 --- a/lib/python/dbrepo/api/dto.py +++ b/lib/python/dbrepo/api/dto.py @@ -4,7 +4,7 @@ from dataclasses import field from enum import Enum import datetime from typing import List, Optional, Any, Annotated -from pydantic import BaseModel, ConfigDict, PlainSerializer, Field +from pydantic import BaseModel, PlainSerializer, Field Timestamp = Annotated[ datetime.datetime, PlainSerializer(lambda v: v.strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3] + 'Z', return_type=str) @@ -17,7 +17,7 @@ class JwtAuth(BaseModel): id_token: str expires_in: int refresh_expires_in: int - not_before_policy: int = Field(alias='not-before-policy') + not_before_policy: int scope: str session_state: str token_type: str diff --git a/lib/python/tests/test_unit_database.py b/lib/python/tests/test_unit_database.py index 99d420f5fc..c1f3014436 100644 --- a/lib/python/tests/test_unit_database.py +++ b/lib/python/tests/test_unit_database.py @@ -1,13 +1,11 @@ import unittest import requests_mock -import datetime from pydantic_core import ValidationError from dbrepo.RestClient import RestClient -from dbrepo.api.dto import Database, User, Container, Image, UserAttributes, DatabaseAccess, AccessType, DatabaseBrief, \ - UserBrief, DataType +from dbrepo.api.dto import Database, Container, Image, DatabaseAccess, AccessType, DatabaseBrief, UserBrief, DataType from dbrepo.api.exceptions import ResponseCodeError, NotExistsError, ForbiddenError, MalformedError, AuthenticationError diff --git a/lib/python/tests/test_unit_jwt.py b/lib/python/tests/test_unit_jwt.py new file mode 100644 index 0000000000..4a0748fe38 --- /dev/null +++ b/lib/python/tests/test_unit_jwt.py @@ -0,0 +1,65 @@ +import json +from unittest import TestCase, main + +import requests_mock + +from dbrepo.RestClient import RestClient +from dbrepo.api.dto import JwtAuth + + +class DatabaseUnitTest(TestCase): + + def test_get_jwt_auth_succeeds(self): + exp = JwtAuth(access_token='eyABC', + refresh_token='ey123', + id_token='eyXYZ', + expires_in=3600, + refresh_expires_in=36000, + not_before_policy=0, + scope='openid', + session_state='4604e4b1-2163-42c3-806d-3be2e426c3a5', + token_type='Bearer') + with requests_mock.Mocker() as mock: + # mock + mock.post('/api/user/token', json=exp.model_dump(), status_code=202) + # test + response = RestClient().get_jwt_auth(username='foo', password='bar') + self.assertEqual(exp, response) + + def test_get_jwt_auth_empty_succeeds(self): + exp = JwtAuth(access_token='eyABC', + refresh_token='ey123', + id_token='eyXYZ', + expires_in=3600, + refresh_expires_in=36000, + not_before_policy=0, + scope='openid', + session_state='4604e4b1-2163-42c3-806d-3be2e426c3a5', + token_type='Bearer') + with requests_mock.Mocker() as mock: + # mock + mock.post('/api/user/token', json=exp.model_dump(), status_code=202) + # test + response = RestClient().get_jwt_auth() + self.assertEqual(exp, response) + + def test_refresh_jwt_auth_succeeds(self): + exp = JwtAuth(access_token='eyABC', + refresh_token='ey123', + id_token='eyXYZ', + expires_in=3600, + refresh_expires_in=36000, + not_before_policy=0, + scope='openid', + session_state='4604e4b1-2163-42c3-806d-3be2e426c3a5', + token_type='Bearer') + with requests_mock.Mocker() as mock: + # mock + mock.put('/api/user/token', json=exp.model_dump(), status_code=202) + # test + response = RestClient().refresh_jwt_auth(refresh_token='ey123') + self.assertEqual(exp, response) + + +if __name__ == "__main__": + main() -- GitLab