diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..2090db1 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,2 @@ +[alias] +prisma = "run -p prisma-cli --" diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml deleted file mode 100644 index b92251a..0000000 --- a/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: "CodeQL" - -on: - push: - branches: [ main ] - pull_request: - branches: [ main ] - schedule: - - cron: '0 12 * * *' - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: [ 'python' ] - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: ${{ matrix.language }} - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/linters.yaml b/.github/workflows/linters.yaml deleted file mode 100644 index 006d212..0000000 --- a/.github/workflows/linters.yaml +++ /dev/null @@ -1,35 +0,0 @@ -name: Linters - -on: - push: - branches: - - main - pull_request: - types: [opened, synchronize, reopened] - -jobs: - Run-Pre-Commit: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 32 - - - uses: actions/setup-python@v4 - with: - python-version: 3.11 - - - name: Install pre-commit - run: pip3 install pre-commit - - - name: Pre-commit (Push) - env: - SETUPTOOLS_USE_DISTUTILS: stdlib - if: ${{ github.event_name == 'push' }} - run: pre-commit run --source ${{ github.event.before }} --origin ${{ github.event.after }} --show-diff-on-failure - - - name: Pre-commit (Pull-Request) - env: - SETUPTOOLS_USE_DISTUTILS: stdlib - if: ${{ github.event_name == 'pull_request' }} - run: pre-commit run --source ${{ github.event.pull_request.base.sha }} --origin ${{ github.event.pull_request.head.sha }} --show-diff-on-failure diff --git a/.gitignore b/.gitignore index 8f967e6..c6cbe6c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,4 @@ +/target + +.env .vscode -.idea -.ruff_cache - -__pycache__ - -venv diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml deleted file mode 100644 index e7485eb..0000000 --- a/.pre-commit-config.yaml +++ /dev/null @@ -1,18 +0,0 @@ -exclude: 'docs|node_modules|migrations|.git|.tox' - -repos: -- repo: https://github.com/ambv/black - rev: 23.3.0 - hooks: - - id: black - language_version: python3.11 - -- repo: https://github.com/charliermarsh/ruff-pre-commit - rev: 'v0.0.265' - hooks: - - id: ruff - -- repo: https://github.com/crate-ci/typos - rev: typos-dict-v0.9.26 - hooks: - - id: typos diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..f6a6bb3 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,5611 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom 0.2.10", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +dependencies = [ + "memchr", +] + +[[package]] +name = "aho-corasick" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8f9420f797f2d9e935edf629310eb938a0d839f984e25327f3c7eed22300c" +dependencies = [ + "memchr", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "ascii" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-native-tls" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d57d4cec3c647232e1094dc013546c0b33ce785d8aeb251e1f20dfaf8a9a13fe" +dependencies = [ + "futures-util", + "native-tls", + "thiserror", + "url", +] + +[[package]] +name = "async-trait" +version = "0.1.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.28", +] + +[[package]] +name = "asynchronous-codec" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4057f2c32adbb2fc158e22fb38433c8e9bbf76b75a4732c7c0cbaf695fb65568" +dependencies = [ + "bytes", + "futures-sink", + "futures-util", + "memchr", + "pin-project-lite", +] + +[[package]] +name = "atomic-shim" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67cd4b51d303cf3501c301e8125df442128d3c6d7c69f71b27833d253de47e77" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "axum" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +dependencies = [ + "async-trait", + "axum-core", + "bitflags 1.3.2", + "bytes", + "futures-util", + "http", + "http-body", + "hyper", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "mime", + "rustversion", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-extra" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a93e433be9382c737320af3924f7d5fc6f89c155cf2bf88949d8f5126fab283f" +dependencies = [ + "axum", + "axum-core", + "bytes", + "futures-util", + "http", + "http-body", + "mime", + "pin-project-lite", + "serde", + "serde_html_form", + "tokio", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-prometheus" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97def327c5481791abb57ac295bfc70f2e1a0727675b7dbf74bd1b27a72b6fd8" +dependencies = [ + "axum", + "axum-core", + "bytes", + "futures", + "futures-core", + "http", + "http-body", + "matchit", + "metrics 0.21.1", + "metrics-exporter-prometheus 0.12.1", + "once_cell", + "pin-project", + "tokio", + "tower", + "tower-http", +] + +[[package]] +name = "backtrace" +version = "0.3.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base-x" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" + +[[package]] +name = "base36" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9c26bddc1271f7112e5ec797e8eeba6de2de211c1488e506b9500196dbf77c5" +dependencies = [ + "base-x", + "failure", +] + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" + +[[package]] +name = "bigdecimal" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "bindgen" +version = "0.59.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8" +dependencies = [ + "bitflags 1.3.2", + "cexpr", + "clang-sys", + "lazy_static", + "lazycell", + "peeking_take_while", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "book_library_server" +version = "0.1.0" +dependencies = [ + "axum", + "axum-extra", + "axum-prometheus", + "chrono", + "meilisearch-sdk", + "once_cell", + "prisma-client-rust", + "rand 0.8.5", + "sentry", + "serde", + "tokio", + "tower-http", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "borsh" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +dependencies = [ + "borsh-derive", + "hashbrown 0.13.1", +] + +[[package]] +name = "borsh-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +dependencies = [ + "borsh-derive-internal", + "borsh-schema-derive-internal", + "proc-macro-crate", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bson" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aeb8bae494e49dbc330dd23cf78f6f7accee22f640ce3ab17841badaa4ce232" +dependencies = [ + "ahash 0.7.6", + "base64 0.13.1", + "bitvec", + "chrono", + "hex", + "indexmap 1.9.3", + "js-sys", + "lazy_static", + "rand 0.8.5", + "serde", + "serde_bytes", + "serde_json", + "time 0.3.25", + "uuid", +] + +[[package]] +name = "builtin-psl-connectors" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "connection-string 0.1.14", + "either", + "enumflags2", + "indoc", + "lsp-types", + "once_cell", + "psl-core", + "regex", +] + +[[package]] +name = "bumpalo" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" + +[[package]] +name = "bytecheck" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "castaway" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2698f953def977c68f935bb0dfa959375ad4638570e969e2f1e9f433cbf1af6" + +[[package]] +name = "cc" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01" +dependencies = [ + "libc", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "time 0.1.45", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "clang-sys" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "cmake" +version = "0.1.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" +dependencies = [ + "cc", +] + +[[package]] +name = "colored" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6" +dependencies = [ + "is-terminal", + "lazy_static", + "windows-sys", +] + +[[package]] +name = "combine" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +dependencies = [ + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", +] + +[[package]] +name = "concurrent-queue" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "connection-string" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c4ecb0dc8c35d2c626e45ae70bbfcb1050b302f42bcdf025d913cc0c5a0b443" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "connection-string" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "510ca239cf13b7f8d16a2b48f263de7b4f8c566f0af58d901031473c76afb1e3" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "convert_case" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb4a24b1aaf0fd0ce8b45161144d6f42cd91677fd5940fd431183eb023b3a2b8" + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "cpufeatures" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" +dependencies = [ + "cfg-if", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cuid" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51294db11d38eb763c92936c5c88425d0090e27dce21dd15748134af9e53e739" +dependencies = [ + "base36", + "cuid-util", + "cuid2", + "hostname", + "num", + "once_cell", + "rand 0.8.5", +] + +[[package]] +name = "cuid-util" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ea2bfe0336ff1b7ca74819b2df8dfae9afea358aff6b1688baa5c181d8c3713" + +[[package]] +name = "cuid2" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d99cacd52fd67db7490ad051c8c1973fb75520174d69aabbae08c534c9d0e8" +dependencies = [ + "cuid-util", + "num", + "rand 0.8.5", + "sha3", +] + +[[package]] +name = "curl" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22" +dependencies = [ + "curl-sys", + "libc", + "openssl-probe", + "openssl-sys", + "schannel", + "socket2 0.4.9", + "winapi", +] + +[[package]] +name = "curl-sys" +version = "0.4.65+curl-8.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "961ba061c9ef2fe34bbd12b807152d96f0badd2bebe7b90ce6c8c8b7572a0986" +dependencies = [ + "cc", + "libc", + "libnghttp2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", + "winapi", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "data-encoding" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" + +[[package]] +name = "datamodel-renderer" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "base64 0.13.1", + "once_cell", + "psl", + "regex", +] + +[[package]] +name = "debugid" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" +dependencies = [ + "serde", + "uuid", +] + +[[package]] +name = "deranged" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929" +dependencies = [ + "serde", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case 0.4.0", + "proc-macro2", + "quote", + "rustc_version 0.4.0", + "syn 1.0.109", +] + +[[package]] +name = "diagnostics" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "colored", + "indoc", + "pest", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", + "subtle", +] + +[[package]] +name = "directories" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dml" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "chrono", + "cuid", + "either", + "enumflags2", + "indoc", + "prisma-value", + "psl-core", + "schema-ast", + "serde", + "serde_json", + "uuid", +] + +[[package]] +name = "dmmf" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "bigdecimal", + "indexmap 1.9.3", + "prisma-models", + "psl", + "schema", + "schema-builder", + "serde", + "serde_json", +] + +[[package]] +name = "dotenv" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +dependencies = [ + "serde", +] + +[[package]] +name = "encoding" +version = "0.2.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec" +dependencies = [ + "encoding-index-japanese", + "encoding-index-korean", + "encoding-index-simpchinese", + "encoding-index-singlebyte", + "encoding-index-tradchinese", +] + +[[package]] +name = "encoding-index-japanese" +version = "1.20141219.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91" +dependencies = [ + "encoding_index_tests", +] + +[[package]] +name = "encoding-index-korean" +version = "1.20141219.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81" +dependencies = [ + "encoding_index_tests", +] + +[[package]] +name = "encoding-index-simpchinese" +version = "1.20141219.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7" +dependencies = [ + "encoding_index_tests", +] + +[[package]] +name = "encoding-index-singlebyte" +version = "1.20141219.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a" +dependencies = [ + "encoding_index_tests", +] + +[[package]] +name = "encoding-index-tradchinese" +version = "1.20141219.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18" +dependencies = [ + "encoding_index_tests", +] + +[[package]] +name = "encoding_index_tests" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" + +[[package]] +name = "encoding_rs" +version = "0.8.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + +[[package]] +name = "enum-as-inner" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "enumflags2" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c041f5090df68b32bcd905365fd51769c8b9d553fe87fde0b683534f10c01bd2" +dependencies = [ + "enumflags2_derive", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.28", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "failure" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" +dependencies = [ + "backtrace", + "failure_derive", +] + +[[package]] +name = "failure_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "synstructure", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrand" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" + +[[package]] +name = "findshlibs" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40b9e59cd0f7e0806cca4be089683ecb6434e602038df21fe6bf6711b2f07f64" +dependencies = [ + "cc", + "lazy_static", + "libc", + "winapi", +] + +[[package]] +name = "fixedbitset" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33" + +[[package]] +name = "flate2" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +dependencies = [ + "crc32fast", + "libz-sys", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "frunk" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11a351b59e12f97b4176ee78497dff72e4276fb1ceb13e19056aca7fa0206287" +dependencies = [ + "frunk_core", + "frunk_derives", + "frunk_proc_macros", +] + +[[package]] +name = "frunk_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af2469fab0bd07e64ccf0ad57a1438f63160c69b2e57f04a439653d68eb558d6" + +[[package]] +name = "frunk_derives" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fa992f1656e1707946bbba340ad244f0814009ef8c0118eb7b658395f19a2e" +dependencies = [ + "frunk_proc_macro_helpers", + "quote", + "syn 2.0.28", +] + +[[package]] +name = "frunk_proc_macro_helpers" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35b54add839292b743aeda6ebedbd8b11e93404f902c56223e51b9ec18a13d2c" +dependencies = [ + "frunk_core", + "proc-macro2", + "quote", + "syn 2.0.28", +] + +[[package]] +name = "frunk_proc_macros" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71b85a1d4a9a6b300b41c05e8e13ef2feca03e0334127f29eca9506a7fe13a93" +dependencies = [ + "frunk_core", + "frunk_proc_macro_helpers", + "quote", + "syn 2.0.28", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" + +[[package]] +name = "futures-executor" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" + +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-macro" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.28", +] + +[[package]] +name = "futures-sink" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" + +[[package]] +name = "futures-task" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" + +[[package]] +name = "futures-timer" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" + +[[package]] +name = "futures-util" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gimli" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "graphql-parser" +version = "0.3.0" +source = "git+https://github.com/prisma/graphql-parser#6a3f58bd879065588e710cb02b5bd30c1ce182c3" +dependencies = [ + "combine", + "indexmap 1.9.3", + "thiserror", +] + +[[package]] +name = "h2" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 1.9.3", + "slab", + "tokio", + "tokio-util 0.7.8", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash 0.7.6", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.6", +] + +[[package]] +name = "hashbrown" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ff8ae62cd3a9102e5637afc8452c55acf3844001bd5374e0b0bd7b6616c038" +dependencies = [ + "ahash 0.8.3", +] + +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + +[[package]] +name = "hashlink" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7249a3129cbc1ffccd74857f81464a323a152173cdb134e0fd81bc803b29facf" +dependencies = [ + "hashbrown 0.11.2", +] + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "hostname" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +dependencies = [ + "libc", + "match_cfg", + "winapi", +] + +[[package]] +name = "http" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "http-range-header" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "hyper" +version = "0.14.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.4.9", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls 0.3.1", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", +] + +[[package]] +name = "indoc" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306" + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "introspection-connector" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "anyhow", + "async-trait", + "enumflags2", + "psl", + "serde", + "serde_json", + "thiserror", + "user-facing-errors", +] + +[[package]] +name = "ipconfig" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" +dependencies = [ + "socket2 0.5.3", + "widestring", + "windows-sys", + "winreg 0.50.0", +] + +[[package]] +name = "ipnet" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" + +[[package]] +name = "is-terminal" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +dependencies = [ + "hermit-abi", + "rustix", + "windows-sys", +] + +[[package]] +name = "isahc" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "334e04b4d781f436dc315cb1e7515bd96826426345d498149e4bde36b67f8ee9" +dependencies = [ + "async-channel", + "castaway", + "crossbeam-utils", + "curl", + "curl-sys", + "encoding_rs", + "event-listener", + "futures-lite", + "http", + "log", + "mime", + "once_cell", + "polling", + "slab", + "sluice", + "tracing", + "tracing-futures", + "url", + "waker-fn", +] + +[[package]] +name = "iso8601" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924e5d73ea28f59011fec52a0d12185d496a9b075d360657aed2a5707f701153" +dependencies = [ + "nom", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "js-sys" +version = "0.3.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "json-rpc-api-build" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "backtrace", + "heck 0.3.3", + "serde", + "toml", +] + +[[package]] +name = "jsonrpc-core" +version = "17.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4467ab6dfa369b69e52bd0692e480c4d117410538526a57a304a0f2250fd95e" +dependencies = [ + "futures", + "futures-executor", + "futures-util", + "log", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "jsonwebtoken" +version = "8.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +dependencies = [ + "base64 0.21.2", + "ring", + "serde", + "serde_json", +] + +[[package]] +name = "keccak" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "lexical" +version = "6.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7aefb36fd43fef7003334742cbf77b243fcd36418a1d1bdd480d613a67968f6" +dependencies = [ + "lexical-core", +] + +[[package]] +name = "lexical-core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" +dependencies = [ + "lexical-parse-float", + "lexical-parse-integer", + "lexical-util", + "lexical-write-float", + "lexical-write-integer", +] + +[[package]] +name = "lexical-parse-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" +dependencies = [ + "lexical-parse-integer", + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-parse-integer" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-util" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "lexical-write-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" +dependencies = [ + "lexical-util", + "lexical-write-integer", + "static_assertions", +] + +[[package]] +name = "lexical-write-integer" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "libc" +version = "0.2.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libnghttp2-sys" +version = "0.1.8+1.55.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fae956c192dadcdb5dace96db71fa0b827333cce7c7b38dc71446f024d8a340" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "libsqlite3-sys" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290b64917f8b0cb885d9de0f9959fe1f775d7fa12f1da2db9001c1c8ab60f89d" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "libz-sys" +version = "1.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linux-raw-sys" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" + +[[package]] +name = "lock_api" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" + +[[package]] +name = "lru" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" +dependencies = [ + "hashbrown 0.12.3", +] + +[[package]] +name = "lru-cache" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "lsp-types" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2368312c59425dd133cb9a327afee65be0a633a8ce471d248e2202a48f8f68ae" +dependencies = [ + "bitflags 1.3.2", + "serde", + "serde_json", + "serde_repr", + "url", +] + +[[package]] +name = "mach" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +dependencies = [ + "libc", +] + +[[package]] +name = "mach2" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0d1830bcd151a6fc4aea1369af235b36c1528fe976b8ff678683c9995eade8" +dependencies = [ + "libc", +] + +[[package]] +name = "match_cfg" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "matchit" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed1202b2a6f884ae56f04cff409ab315c5ce26b5e58d7412e484f01fd52f52ef" + +[[package]] +name = "md-5" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "md5" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e6bcd6433cff03a4bfc3d9834d504467db1f1cf6d0ea765d37d330249ed629d" + +[[package]] +name = "meilisearch-index-setting-macro" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "923bb7380030676cfd6563bc09cf88f7150fab55fc881c44e86f4a10c9b7ae2a" +dependencies = [ + "convert_case 0.6.0", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "meilisearch-sdk" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff38036cb0ce16609896d1fd90fbce9432a173c744abd3a0d8daf2e4cdbb0d65" +dependencies = [ + "async-trait", + "either", + "futures", + "futures-io", + "isahc", + "iso8601", + "js-sys", + "jsonwebtoken", + "log", + "meilisearch-index-setting-macro", + "serde", + "serde_json", + "thiserror", + "time 0.3.25", + "uuid", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "yaup", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "metrics" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e52eb6380b6d2a10eb3434aec0885374490f5b82c8aaf5cd487a183c98be834" +dependencies = [ + "ahash 0.7.6", + "metrics-macros 0.5.1", +] + +[[package]] +name = "metrics" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "142c53885123b68d94108295a09d4afe1a1388ed95b54d5dacd9a454753030f2" +dependencies = [ + "ahash 0.7.6", + "metrics-macros 0.5.1", +] + +[[package]] +name = "metrics" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fde3af1a009ed76a778cb84fdef9e7dbbdf5775ae3e4cc1f434a6a307f6f76c5" +dependencies = [ + "ahash 0.8.3", + "metrics-macros 0.7.0", + "portable-atomic", +] + +[[package]] +name = "metrics-exporter-prometheus" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953cbbb6f9ba4b9304f4df79b98cdc9d14071ed93065a9fca11c00c5d9181b66" +dependencies = [ + "hyper", + "indexmap 1.9.3", + "ipnet", + "metrics 0.19.0", + "metrics-util 0.13.0", + "parking_lot 0.11.2", + "quanta 0.9.3", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "metrics-exporter-prometheus" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a4964177ddfdab1e3a2b37aec7cf320e14169abb0ed73999f558136409178d5" +dependencies = [ + "base64 0.21.2", + "hyper", + "indexmap 1.9.3", + "ipnet", + "metrics 0.21.1", + "metrics-util 0.15.1", + "quanta 0.11.1", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "metrics-macros" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49e30813093f757be5cf21e50389a24dc7dbb22c49f23b7e8f51d69b508a5ffa" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "metrics-macros" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddece26afd34c31585c74a4db0630c376df271c285d682d1e55012197830b6df" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.28", +] + +[[package]] +name = "metrics-util" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65a9e83b833e1d2e07010a386b197c13aa199bbd0fca5cf69bfa147972db890a" +dependencies = [ + "aho-corasick 0.7.20", + "atomic-shim", + "crossbeam-epoch", + "crossbeam-utils", + "hashbrown 0.11.2", + "indexmap 1.9.3", + "metrics 0.18.1", + "num_cpus", + "ordered-float", + "parking_lot 0.11.2", + "quanta 0.9.3", + "radix_trie", + "sketches-ddsketch 0.1.3", +] + +[[package]] +name = "metrics-util" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd1f4b69bef1e2b392b2d4a12902f2af90bb438ba4a66aa222d1023fa6561b50" +dependencies = [ + "atomic-shim", + "crossbeam-epoch", + "crossbeam-utils", + "hashbrown 0.11.2", + "metrics 0.19.0", + "num_cpus", + "parking_lot 0.11.2", + "quanta 0.9.3", + "sketches-ddsketch 0.1.3", +] + +[[package]] +name = "metrics-util" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4de2ed6e491ed114b40b732e4d1659a9d53992ebd87490c44a6ffe23739d973e" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", + "hashbrown 0.13.1", + "metrics 0.21.1", + "num_cpus", + "quanta 0.11.1", + "sketches-ddsketch 0.2.1", +] + +[[package]] +name = "migration-connector" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "chrono", + "enumflags2", + "introspection-connector", + "psl", + "sha2 0.9.9", + "tracing", + "tracing-error", + "user-facing-errors", +] + +[[package]] +name = "migration-core" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "async-trait", + "chrono", + "enumflags2", + "json-rpc-api-build", + "jsonrpc-core", + "migration-connector", + "mongodb-migration-connector", + "psl", + "serde", + "serde_json", + "sql-migration-connector", + "tokio", + "tracing", + "tracing-futures", + "tracing-subscriber", + "url", + "user-facing-errors", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", +] + +[[package]] +name = "mobc" +version = "0.7.3" +source = "git+https://github.com/prisma/mobc?tag=1.0.6#80462c4870a2bf6aab49da15c88c021bae531da8" +dependencies = [ + "async-trait", + "futures-channel", + "futures-core", + "futures-timer", + "futures-util", + "log", + "metrics 0.18.1", + "thiserror", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "mongodb" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebcd85ec209a5b84fd9f54b9e381f6fa17462bc74160d018fc94fd8b9f61faa8" +dependencies = [ + "async-trait", + "base64 0.13.1", + "bitflags 1.3.2", + "bson", + "chrono", + "derivative", + "derive_more", + "futures-core", + "futures-executor", + "futures-io", + "futures-util", + "hex", + "hmac", + "lazy_static", + "md-5", + "pbkdf2", + "percent-encoding", + "rand 0.8.5", + "rustc_version_runtime", + "rustls", + "rustls-pemfile", + "serde", + "serde_bytes", + "serde_with", + "sha-1", + "sha2 0.10.7", + "socket2 0.4.9", + "stringprep", + "strsim", + "take_mut", + "thiserror", + "tokio", + "tokio-rustls", + "tokio-util 0.7.8", + "trust-dns-proto", + "trust-dns-resolver", + "typed-builder", + "uuid", + "webpki-roots", +] + +[[package]] +name = "mongodb-client" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "mongodb", + "once_cell", + "percent-encoding", + "thiserror", +] + +[[package]] +name = "mongodb-introspection-connector" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "async-trait", + "convert_case 0.5.0", + "datamodel-renderer", + "enumflags2", + "futures", + "indoc", + "introspection-connector", + "mongodb", + "mongodb-client", + "mongodb-schema-describer", + "once_cell", + "psl", + "regex", + "serde_json", + "thiserror", + "user-facing-errors", +] + +[[package]] +name = "mongodb-migration-connector" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "enumflags2", + "futures", + "migration-connector", + "mongodb", + "mongodb-client", + "mongodb-introspection-connector", + "mongodb-schema-describer", + "psl", + "serde_json", + "tokio", + "tracing", +] + +[[package]] +name = "mongodb-query-connector" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "anyhow", + "async-trait", + "bigdecimal", + "bson", + "chrono", + "cuid", + "futures", + "indexmap 1.9.3", + "itertools", + "mongodb", + "mongodb-client", + "prisma-models", + "prisma-value", + "psl", + "query-connector", + "query-engine-metrics", + "rand 0.7.3", + "regex", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-futures", + "user-facing-errors", + "uuid", +] + +[[package]] +name = "mongodb-schema-describer" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "futures", + "mongodb", + "serde", +] + +[[package]] +name = "mysql_async" +version = "0.30.0" +source = "git+https://github.com/prisma/mysql_async?rev=e3f8bdb41d57e769412f53d0f479bf67fdcc0ee3#e3f8bdb41d57e769412f53d0f479bf67fdcc0ee3" +dependencies = [ + "bytes", + "crossbeam", + "flate2", + "futures-core", + "futures-sink", + "futures-util", + "lazy_static", + "lru", + "mio", + "mysql_common", + "native-tls", + "once_cell", + "pem", + "percent-encoding", + "pin-project", + "serde", + "serde_json", + "socket2 0.4.9", + "thiserror", + "tokio", + "tokio-native-tls 0.3.0", + "tokio-util 0.7.8", + "twox-hash", + "url", +] + +[[package]] +name = "mysql_common" +version = "0.29.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9006c95034ccf7b903d955f210469119f6c3477fc9c9e7a7845ce38a3e665c2a" +dependencies = [ + "base64 0.13.1", + "bigdecimal", + "bindgen", + "bitflags 1.3.2", + "bitvec", + "byteorder", + "bytes", + "cc", + "cmake", + "crc32fast", + "flate2", + "frunk", + "lazy_static", + "lexical", + "num-bigint", + "num-traits", + "rand 0.8.5", + "regex", + "rust_decimal", + "saturating", + "serde", + "serde_json", + "sha1", + "sha2 0.10.7", + "smallvec", + "subprocess", + "thiserror", + "time 0.3.25", + "uuid", +] + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "nibble_vec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" +dependencies = [ + "smallvec", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "openssl" +version = "0.10.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "729b745ad4a5575dd06a3e1af1414bd330ee561c01b3899eb584baeaa8def17e" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.28", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-src" +version = "111.27.0+1.1.1v" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e8f197c82d7511c5b014030c9b1efeda40d7d5f99d23b4ceed3524a5e63f02" +dependencies = [ + "cc", +] + +[[package]] +name = "openssl-sys" +version = "0.9.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "866b5f16f90776b9bb8dc1e1802ac6f0513de3a7a7465867bfbc563dc737faac" +dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "opentelemetry" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand 0.8.5", + "thiserror", + "tokio", +] + +[[package]] +name = "opentls" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f561874f8d6ecfb674fc08863414040c93cc90c0b6963fe679895fab8b65560" +dependencies = [ + "futures-util", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "url", +] + +[[package]] +name = "ordered-float" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87" +dependencies = [ + "num-traits", +] + +[[package]] +name = "ordermap" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" + +[[package]] +name = "os_info" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "006e42d5b888366f1880eda20371fedde764ed2213dc8496f49622fa0c99cd5e" +dependencies = [ + "log", + "serde", + "winapi", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parking" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.8", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.3.5", + "smallvec", + "windows-targets", +] + +[[package]] +name = "parser-database" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "diagnostics", + "either", + "enumflags2", + "indexmap 1.9.3", + "schema-ast", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + +[[package]] +name = "pest" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1acb4a4365a13f749a93f1a094a7805e5cfa0955373a9de860d962eaa3a5fe5a" +dependencies = [ + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "666d00490d4ac815001da55838c500eafb0320019bbaa44444137c48b443a853" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ca01446f50dbda87c1786af8770d535423fa8a53aec03b8f4e3d7eb10e0929" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.28", +] + +[[package]] +name = "pest_meta" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56af0a30af74d0445c0bf6d9d051c979b516a1a5af790d251daee76005420a48" +dependencies = [ + "once_cell", + "pest", + "sha2 0.10.7", +] + +[[package]] +name = "petgraph" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f" +dependencies = [ + "fixedbitset", + "ordermap", +] + +[[package]] +name = "phf" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.28", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + +[[package]] +name = "polling" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys", +] + +[[package]] +name = "portable-atomic" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f32154ba0af3a075eefa1eda8bb414ee928f62303a54ea85b8d6638ff1a6ee9e" + +[[package]] +name = "postgres-native-tls" +version = "0.5.0" +source = "git+https://github.com/pimeys/rust-postgres?branch=pgbouncer-mode#74f0847e9a8ac350c48dd65c4c33e9be5fcf6010" +dependencies = [ + "native-tls", + "tokio", + "tokio-native-tls 0.3.1", + "tokio-postgres", +] + +[[package]] +name = "postgres-protocol" +version = "0.6.4" +source = "git+https://github.com/pimeys/rust-postgres?branch=pgbouncer-mode#74f0847e9a8ac350c48dd65c4c33e9be5fcf6010" +dependencies = [ + "base64 0.13.1", + "byteorder", + "bytes", + "fallible-iterator", + "hmac", + "md-5", + "memchr", + "rand 0.8.5", + "sha2 0.10.7", + "stringprep", +] + +[[package]] +name = "postgres-types" +version = "0.2.4" +source = "git+https://github.com/pimeys/rust-postgres?branch=pgbouncer-mode#74f0847e9a8ac350c48dd65c4c33e9be5fcf6010" +dependencies = [ + "bit-vec", + "bytes", + "chrono", + "fallible-iterator", + "postgres-protocol", + "serde", + "serde_json", + "uuid", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "pretty-hex" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6fa0831dd7cc608c38a5e323422a0077678fa5744aa2be4ad91c4ece8eec8d5" + +[[package]] +name = "prisma-cli" +version = "0.1.0" +dependencies = [ + "prisma-client-rust-cli", +] + +[[package]] +name = "prisma-client-rust" +version = "0.6.8" +source = "git+https://github.com/Brendonovich/prisma-client-rust?tag=0.6.8#51f0473b642b16bb78fe0f5f3235aeb56f89300d" +dependencies = [ + "base64 0.13.1", + "bigdecimal", + "chrono", + "diagnostics", + "dml", + "dmmf", + "dotenv", + "futures", + "indexmap 1.9.3", + "migration-core", + "paste", + "prisma-client-rust-macros", + "prisma-models", + "psl", + "query-connector", + "query-core", + "schema", + "serde", + "serde-value", + "serde_json", + "thiserror", + "user-facing-errors", + "uuid", +] + +[[package]] +name = "prisma-client-rust-cli" +version = "0.6.8" +source = "git+https://github.com/Brendonovich/prisma-client-rust?tag=0.6.8#51f0473b642b16bb78fe0f5f3235aeb56f89300d" +dependencies = [ + "directories", + "flate2", + "http", + "prisma-client-rust-sdk", + "proc-macro2", + "quote", + "regex", + "reqwest", + "serde", + "serde_json", + "serde_path_to_error", + "syn 1.0.109", + "thiserror", +] + +[[package]] +name = "prisma-client-rust-macros" +version = "0.6.8" +source = "git+https://github.com/Brendonovich/prisma-client-rust?tag=0.6.8#51f0473b642b16bb78fe0f5f3235aeb56f89300d" +dependencies = [ + "convert_case 0.6.0", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "prisma-client-rust-sdk" +version = "0.6.8" +source = "git+https://github.com/Brendonovich/prisma-client-rust?tag=0.6.8#51f0473b642b16bb78fe0f5f3235aeb56f89300d" +dependencies = [ + "convert_case 0.5.0", + "dml", + "dmmf", + "prisma-models", + "proc-macro2", + "psl", + "query-core", + "quote", + "request-handlers", + "serde", + "serde_json", + "serde_path_to_error", + "syn 1.0.109", + "thiserror", +] + +[[package]] +name = "prisma-models" +version = "0.0.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "bigdecimal", + "chrono", + "itertools", + "once_cell", + "prisma-value", + "psl", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "prisma-value" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "base64 0.12.3", + "bigdecimal", + "chrono", + "once_cell", + "regex", + "serde", + "serde_json", + "uuid", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro2" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "psl" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "builtin-psl-connectors", + "dml", + "psl-core", +] + +[[package]] +name = "psl-core" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "bigdecimal", + "chrono", + "diagnostics", + "enumflags2", + "indoc", + "itertools", + "lsp-types", + "once_cell", + "parser-database", + "prisma-value", + "regex", + "schema-ast", + "serde", + "serde_json", + "url", +] + +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "quaint" +version = "0.2.0-alpha.13" +source = "git+https://github.com/Brendonovich/quaint?tag=0.6.5#2bf0c3620f76d83982c17e567b71da6fc9d65d14" +dependencies = [ + "async-trait", + "base64 0.12.3", + "bigdecimal", + "bit-vec", + "byteorder", + "bytes", + "chrono", + "connection-string 0.1.14", + "either", + "futures", + "hex", + "libsqlite3-sys", + "lru-cache", + "metrics 0.18.1", + "mobc", + "mysql_async", + "native-tls", + "num_cpus", + "percent-encoding", + "postgres-native-tls", + "postgres-types", + "rusqlite", + "serde_json", + "sqlformat", + "thiserror", + "tiberius", + "tokio", + "tokio-postgres", + "tokio-util 0.6.10", + "tracing", + "tracing-core", + "url", + "uuid", +] + +[[package]] +name = "quanta" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20afe714292d5e879d8b12740aa223c6a88f118af41870e8b6196e39a02238a8" +dependencies = [ + "crossbeam-utils", + "libc", + "mach", + "once_cell", + "raw-cpuid", + "wasi 0.10.0+wasi-snapshot-preview1", + "web-sys", + "winapi", +] + +[[package]] +name = "quanta" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17e662a7a8291a865152364c20c7abc5e60486ab2001e8ec10b24862de0b9ab" +dependencies = [ + "crossbeam-utils", + "libc", + "mach2", + "once_cell", + "raw-cpuid", + "wasi 0.11.0+wasi-snapshot-preview1", + "web-sys", + "winapi", +] + +[[package]] +name = "query-connector" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "anyhow", + "async-trait", + "chrono", + "futures", + "indexmap 1.9.3", + "itertools", + "prisma-models", + "prisma-value", + "serde", + "serde_json", + "thiserror", + "user-facing-errors", + "uuid", +] + +[[package]] +name = "query-core" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "async-trait", + "base64 0.12.3", + "bigdecimal", + "chrono", + "connection-string 0.1.14", + "crossbeam-queue", + "cuid", + "enumflags2", + "futures", + "indexmap 1.9.3", + "itertools", + "lazy_static", + "lru", + "mongodb-client", + "mongodb-query-connector", + "once_cell", + "opentelemetry", + "parking_lot 0.12.1", + "petgraph", + "pin-utils", + "prisma-models", + "prisma-value", + "psl", + "query-connector", + "query-engine-metrics", + "schema", + "schema-builder", + "serde", + "serde_json", + "sql-query-connector", + "thiserror", + "tokio", + "tracing", + "tracing-futures", + "tracing-opentelemetry", + "tracing-subscriber", + "url", + "user-facing-errors", + "uuid", +] + +[[package]] +name = "query-engine-metrics" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "metrics 0.18.1", + "metrics-exporter-prometheus 0.10.0", + "metrics-util 0.12.1", + "once_cell", + "parking_lot 0.12.1", + "serde", + "serde_json", + "tracing", + "tracing-futures", + "tracing-subscriber", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "radix_trie" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" +dependencies = [ + "endian-type", + "nibble_vec", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.10", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "raw-cpuid" +version = "10.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom 0.2.10", + "redox_syscall 0.2.16", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" +dependencies = [ + "aho-corasick 1.0.3", + "memchr", + "regex-automata 0.3.6", + "regex-syntax 0.7.4", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" +dependencies = [ + "aho-corasick 1.0.3", + "memchr", + "regex-syntax 0.7.4", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" + +[[package]] +name = "rend" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581008d2099240d37fb08d77ad713bcaec2c4d89d50b5b21a8bb1996bbab68ab" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "request-handlers" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "bigdecimal", + "connection-string 0.1.14", + "dmmf", + "futures", + "graphql-parser", + "indexmap 1.9.3", + "itertools", + "psl", + "query-core", + "serde", + "serde_json", + "thiserror", + "tracing", + "url", + "user-facing-errors", +] + +[[package]] +name = "reqwest" +version = "0.11.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" +dependencies = [ + "base64 0.21.2", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-native-tls 0.3.1", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg 0.10.1", +] + +[[package]] +name = "resolv-conf" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" +dependencies = [ + "hostname", + "quick-error", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi", +] + +[[package]] +name = "rkyv" +version = "0.7.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0200c8230b013893c0b2d6213d6ec64ed2b9be2e0e016682b7224ff82cff5c58" +dependencies = [ + "bitvec", + "bytecheck", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2e06b915b5c230a17d7a736d1e2e63ee753c256a8614ef3f5147b13a4f5541d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rusqlite" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c4b1eaf239b47034fb450ee9cdedd7d0226571689d8823030c4b6c2cb407152" +dependencies = [ + "bitflags 1.3.2", + "chrono", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "memchr", + "smallvec", +] + +[[package]] +name = "rust_decimal" +version = "1.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a2ab0025103a60ecaaf3abf24db1db240a4e1c15837090d2c32f625ac98abea" +dependencies = [ + "arrayvec", + "borsh", + "byteorder", + "bytes", + "num-traits", + "rand 0.8.5", + "rkyv", + "serde", + "serde_json", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.18", +] + +[[package]] +name = "rustc_version_runtime" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d31b7153270ebf48bf91c65ae5b0c00e749c4cfad505f66530ac74950249582f" +dependencies = [ + "rustc_version 0.2.3", + "semver 0.9.0", +] + +[[package]] +name = "rustix" +version = "0.38.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f" +dependencies = [ + "bitflags 2.4.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + +[[package]] +name = "rustls" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +dependencies = [ + "log", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +dependencies = [ + "base64 0.21.2", +] + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "saturating" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ece8e78b2f38ec51c51f5d475df0a7187ba5111b2a28bdc761ee05b075d40a71" + +[[package]] +name = "schannel" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "schema" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "once_cell", + "prisma-models", + "psl", +] + +[[package]] +name = "schema-ast" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "diagnostics", + "pest", + "pest_derive", +] + +[[package]] +name = "schema-builder" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "itertools", + "lazy_static", + "once_cell", + "prisma-models", + "psl", + "schema", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + +[[package]] +name = "security-framework" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "sentry" +version = "0.31.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01b0ad16faa5d12372f914ed40d00bda21a6d1bdcc99264c5e5e1c9495cf3654" +dependencies = [ + "httpdate", + "native-tls", + "reqwest", + "sentry-backtrace", + "sentry-contexts", + "sentry-core", + "sentry-debug-images", + "sentry-panic", + "sentry-tracing", + "tokio", + "ureq", +] + +[[package]] +name = "sentry-backtrace" +version = "0.31.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11f2ee8f147bb5f22ac59b5c35754a759b9a6f6722402e2a14750b2a63fc59bd" +dependencies = [ + "backtrace", + "once_cell", + "regex", + "sentry-core", +] + +[[package]] +name = "sentry-contexts" +version = "0.31.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcd133362c745151eeba0ac61e3ba8350f034e9fe7509877d08059fe1d7720c6" +dependencies = [ + "hostname", + "libc", + "os_info", + "rustc_version 0.4.0", + "sentry-core", + "uname", +] + +[[package]] +name = "sentry-core" +version = "0.31.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7163491708804a74446642ff2c80b3acd668d4b9e9f497f85621f3d250fd012b" +dependencies = [ + "once_cell", + "rand 0.8.5", + "sentry-types", + "serde", + "serde_json", +] + +[[package]] +name = "sentry-debug-images" +version = "0.31.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a5003d7ff08aa3b2b76994080b183e8cfa06c083e280737c9cee02ca1c70f5e" +dependencies = [ + "findshlibs", + "once_cell", + "sentry-core", +] + +[[package]] +name = "sentry-panic" +version = "0.31.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4dfe8371c9b2e126a8b64f6fefa54cef716ff2a50e63b5558a48b899265bccd" +dependencies = [ + "sentry-backtrace", + "sentry-core", +] + +[[package]] +name = "sentry-tracing" +version = "0.31.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aca8b88978677a27ee1a91beafe4052306c474c06f582321fde72d2e2cc2f7f" +dependencies = [ + "sentry-backtrace", + "sentry-core", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "sentry-types" +version = "0.31.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e7a88e0c1922d19b3efee12a8215f6a8a806e442e665ada71cc222cab72985f" +dependencies = [ + "debugid", + "getrandom 0.2.10", + "hex", + "serde", + "serde_json", + "thiserror", + "time 0.3.25", + "url", + "uuid", +] + +[[package]] +name = "serde" +version = "1.0.183" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-value" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" +dependencies = [ + "ordered-float", + "serde", +] + +[[package]] +name = "serde_bytes" +version = "0.11.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab33ec92f677585af6d88c65593ae2375adde54efdbf16d597f2cbc7a6d368ff" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.183" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.28", +] + +[[package]] +name = "serde_html_form" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cde65b75f2603066b78d6fa239b2c07b43e06ead09435f60554d3912962b4a3c" +dependencies = [ + "form_urlencoded", + "indexmap 2.0.0", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_json" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" +dependencies = [ + "indexmap 2.0.0", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4beec8bce849d58d06238cb50db2e1c417cfeafa4c63f692b15c82b7c80f8335" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.28", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" +dependencies = [ + "serde", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sha-1" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "simdutf8" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" + +[[package]] +name = "siphasher" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" + +[[package]] +name = "sketches-ddsketch" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04d2ecae5fcf33b122e2e6bd520a57ccf152d2dde3b38c71039df1a6867264ee" + +[[package]] +name = "sketches-ddsketch" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68a406c1882ed7f29cd5e248c9848a80e7cb6ae0fea82346d2746f2f941c07e1" + +[[package]] +name = "slab" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +dependencies = [ + "autocfg", +] + +[[package]] +name = "sluice" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d7400c0eff44aa2fcb5e31a5f24ba9716ed90138769e4977a2ba6014ae63eb5" +dependencies = [ + "async-channel", + "futures-core", + "futures-io", +] + +[[package]] +name = "smallvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" + +[[package]] +name = "socket2" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "socket2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "sql-ddl" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" + +[[package]] +name = "sql-introspection-connector" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "anyhow", + "async-trait", + "bigdecimal", + "datamodel-renderer", + "enumflags2", + "introspection-connector", + "once_cell", + "psl", + "quaint", + "regex", + "serde", + "serde_json", + "sql-schema-describer", + "thiserror", + "tracing", + "tracing-futures", + "user-facing-errors", +] + +[[package]] +name = "sql-migration-connector" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "chrono", + "connection-string 0.1.14", + "either", + "enumflags2", + "indoc", + "migration-connector", + "once_cell", + "psl", + "quaint", + "regex", + "serde_json", + "sql-ddl", + "sql-introspection-connector", + "sql-schema-describer", + "tokio", + "tracing", + "tracing-futures", + "url", + "user-facing-errors", + "uuid", +] + +[[package]] +name = "sql-query-connector" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "anyhow", + "async-trait", + "bigdecimal", + "chrono", + "cuid", + "futures", + "itertools", + "once_cell", + "opentelemetry", + "prisma-models", + "prisma-value", + "psl", + "quaint", + "query-connector", + "rand 0.7.3", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-futures", + "tracing-opentelemetry", + "user-facing-errors", + "uuid", +] + +[[package]] +name = "sql-schema-describer" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "async-trait", + "bigdecimal", + "enumflags2", + "indexmap 1.9.3", + "indoc", + "once_cell", + "psl", + "quaint", + "regex", + "serde", + "tracing", + "tracing-error", + "tracing-futures", +] + +[[package]] +name = "sqlformat" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c12bc9199d1db8234678b7051747c07f517cdcf019262d1847b94ec8b1aee3e" +dependencies = [ + "itertools", + "nom", + "unicode_categories", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "stringprep" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3737bde7edce97102e0e2b15365bf7a20bfdb5f60f4f9e8d7004258a51a8da" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "subprocess" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c2e86926081dda636c546d8c5e641661049d7562a68f5488be4a1f7f66f6086" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "unicode-xid", +] + +[[package]] +name = "take_mut" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc02fddf48964c42031a0b3fe0428320ecf3a73c401040fc0096f97794310651" +dependencies = [ + "cfg-if", + "fastrand 2.0.0", + "redox_syscall 0.3.5", + "rustix", + "windows-sys", +] + +[[package]] +name = "thiserror" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.28", +] + +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "tiberius" +version = "0.11.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66303a42b7c5daffb95c10cd8f3007a9c29b3e90128cf42b3738f58102aa2516" +dependencies = [ + "async-native-tls", + "async-trait", + "asynchronous-codec", + "bigdecimal", + "byteorder", + "bytes", + "chrono", + "connection-string 0.2.0", + "encoding", + "enumflags2", + "futures", + "futures-sink", + "futures-util", + "num-traits", + "once_cell", + "opentls", + "pin-project-lite", + "pretty-hex", + "thiserror", + "tokio", + "tokio-util 0.7.8", + "tracing", + "uuid", + "winauth", +] + +[[package]] +name = "time" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "time" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75ea" +dependencies = [ + "deranged", + "itoa", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" + +[[package]] +name = "time-macros" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cd" +dependencies = [ + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d3ce25f50619af8b0aec2eb23deebe84249e19e2ddd393a6e16e3300a6dadfd" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot 0.12.1", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.5.3", + "tokio-macros", + "windows-sys", +] + +[[package]] +name = "tokio-macros" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.28", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.0" +source = "git+https://github.com/pimeys/tls?branch=vendored-openssl#6d0e6fc7a4bf6f290b1033764b47cb3f26d7fceb" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-postgres" +version = "0.7.7" +source = "git+https://github.com/pimeys/rust-postgres?branch=pgbouncer-mode#74f0847e9a8ac350c48dd65c4c33e9be5fcf6010" +dependencies = [ + "async-trait", + "byteorder", + "bytes", + "fallible-iterator", + "futures-channel", + "futures-util", + "log", + "parking_lot 0.12.1", + "percent-encoding", + "phf", + "pin-project-lite", + "postgres-protocol", + "postgres-types", + "socket2 0.4.9", + "tokio", + "tokio-util 0.7.8", +] + +[[package]] +name = "tokio-rustls" +version = "0.23.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +dependencies = [ + "rustls", + "tokio", + "webpki", +] + +[[package]] +name = "tokio-util" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "log", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ae70283aba8d2a8b411c695c437fe25b8b5e44e23e780662002fc72fb47a82" +dependencies = [ + "bitflags 2.4.0", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-range-header", + "pin-project-lite", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.28", +] + +[[package]] +name = "tracing-core" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-error" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e" +dependencies = [ + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +dependencies = [ + "once_cell", + "opentelemetry", + "tracing", + "tracing-core", + "tracing-log", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "trust-dns-proto" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c31f240f59877c3d4bb3b3ea0ec5a6a0cff07323580ff8c7a605cd7d08b255d" +dependencies = [ + "async-trait", + "cfg-if", + "data-encoding", + "enum-as-inner", + "futures-channel", + "futures-io", + "futures-util", + "idna 0.2.3", + "ipnet", + "lazy_static", + "log", + "rand 0.8.5", + "smallvec", + "thiserror", + "tinyvec", + "tokio", + "url", +] + +[[package]] +name = "trust-dns-resolver" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ba72c2ea84515690c9fcef4c6c660bb9df3036ed1051686de84605b74fd558" +dependencies = [ + "cfg-if", + "futures-util", + "ipconfig", + "lazy_static", + "log", + "lru-cache", + "parking_lot 0.12.1", + "resolv-conf", + "smallvec", + "thiserror", + "tokio", + "trust-dns-proto", +] + +[[package]] +name = "try-lock" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "rand 0.8.5", + "static_assertions", +] + +[[package]] +name = "typed-builder" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89851716b67b937e393b3daa8423e67ddfc4bbbf1654bcf05488e95e0828db0c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "uname" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b72f89f0ca32e4db1c04e2a72f5345d59796d4866a1ee0609084569f73683dc8" +dependencies = [ + "libc", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + +[[package]] +name = "unicode-ident" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "unicode_categories" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" + +[[package]] +name = "unreachable" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" +dependencies = [ + "void", +] + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "ureq" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b11c96ac7ee530603dcdf68ed1557050f374ce55a5a07193ebf8cbc9f8927e9" +dependencies = [ + "base64 0.21.2", + "log", + "native-tls", + "once_cell", + "url", +] + +[[package]] +name = "url" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +dependencies = [ + "form_urlencoded", + "idna 0.4.0", + "percent-encoding", + "serde", +] + +[[package]] +name = "user-facing-error-macros" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "user-facing-errors" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "backtrace", + "indoc", + "quaint", + "serde", + "serde_json", + "tracing", + "user-facing-error-macros", +] + +[[package]] +name = "uuid" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +dependencies = [ + "getrandom 0.2.10", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "waker-fn" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca" +dependencies = [ + "bumpalo", + "lazy_static", + "log", + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb6ec270a31b1d3c7e266b999739109abce8b6c87e4b31fcfcd788b65267395" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" + +[[package]] +name = "web-sys" +version = "0.3.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" +dependencies = [ + "webpki", +] + +[[package]] +name = "widestring" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "winauth" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f820cd208ce9c6b050812dc2d724ba98c6c1e9db5ce9b3f58d925ae5723a5e6" +dependencies = [ + "bitflags 1.3.2", + "byteorder", + "md5", + "rand 0.7.3", + "winapi", +] + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yaup" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a59e7d27bed43f7c37c25df5192ea9d435a8092a902e02203359ac9ce3e429d9" +dependencies = [ + "serde", + "url", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..cd9901f --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,35 @@ +[package] +name = "book_library_server" +version = "0.1.0" +edition = "2021" + +[workspace] +members = [ + "prisma-cli" +] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +once_cell = "1.18.0" + +prisma-client-rust = { git = "https://github.com/Brendonovich/prisma-client-rust", tag = "0.6.8", features = ["postgresql"] } + +tokio = { version = "1.28.2", features = ["full"] } + +tracing = "0.1.37" +tracing-subscriber = { version = "0.3.17", features = ["env-filter"]} +tower-http = { version = "0.4.3", features = ["trace"] } + +axum = { version = "0.6.18", features = ["json"] } +axum-extra = { version ="0.7.7", features = ["query"] } +axum-prometheus = "0.4.0" +serde = { version = "1.0.163", features = ["derive"] } + +sentry = { version = "0.31.3", features = ["debug-images"] } + +meilisearch-sdk = "0.24.1" + +rand = "0.8.5" + +chrono = "0.4.26" diff --git a/fastapi_book_server/__init__.py b/fastapi_book_server/__init__.py deleted file mode 100644 index 3dc1f76..0000000 --- a/fastapi_book_server/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__version__ = "0.1.0" diff --git a/fastapi_book_server/app/alembic.ini b/fastapi_book_server/app/alembic.ini deleted file mode 100644 index 01b575f..0000000 --- a/fastapi_book_server/app/alembic.ini +++ /dev/null @@ -1,98 +0,0 @@ -# A generic, single database configuration. - -[alembic] -# path to migration scripts -script_location = ./app/alembic - -# template used to generate migration files -# file_template = %%(rev)s_%%(slug)s - -# sys.path path, will be prepended to sys.path if present. -# defaults to the current working directory. -prepend_sys_path = . - -# timezone to use when rendering the date within the migration file -# as well as the filename. -# If specified, requires the python-dateutil library that can be -# installed by adding `alembic[tz]` to the pip requirements -# string value is passed to dateutil.tz.gettz() -# leave blank for localtime -# timezone = - -# max length of characters to apply to the -# "slug" field -# truncate_slug_length = 40 - -# set to 'true' to run the environment during -# the 'revision' command, regardless of autogenerate -# revision_environment = false - -# set to 'true' to allow .pyc and .pyo files without -# a source .py file to be detected as revisions in the -# versions/ directory -# sourceless = false - -# version location specification; This defaults -# to alembic/versions. When using multiple version -# directories, initial revisions must be specified with --version-path. -# The path separator used here should be the separator specified by "version_path_separator" -# version_locations = %(here)s/bar:%(here)s/bat:alembic/versions - -# version path separator; As mentioned above, this is the character used to split -# version_locations. Valid values are: -# -# version_path_separator = : -# version_path_separator = ; -# version_path_separator = space -version_path_separator = os # default: use os.pathsep - -# the output encoding used when revision files -# are written from script.py.mako -# output_encoding = utf-8 - - -[post_write_hooks] -# post_write_hooks defines scripts or Python functions that are run -# on newly generated revision scripts. See the documentation for further -# detail and examples - -# format using "black" - use the console_scripts runner, against the "black" entrypoint -# hooks = black -# black.type = console_scripts -# black.entrypoint = black -# black.options = -l 79 REVISION_SCRIPT_FILENAME - -# Logging configuration -[loggers] -keys = root,sqlalchemy,alembic - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = WARN -handlers = console -qualname = - -[logger_sqlalchemy] -level = WARN -handlers = -qualname = sqlalchemy.engine - -[logger_alembic] -level = INFO -handlers = -qualname = alembic - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(levelname)-5.5s [%(name)s] %(message)s -datefmt = %H:%M:%S diff --git a/fastapi_book_server/app/alembic/README b/fastapi_book_server/app/alembic/README deleted file mode 100644 index 98e4f9c..0000000 --- a/fastapi_book_server/app/alembic/README +++ /dev/null @@ -1 +0,0 @@ -Generic single-database configuration. \ No newline at end of file diff --git a/fastapi_book_server/app/alembic/env.py b/fastapi_book_server/app/alembic/env.py deleted file mode 100644 index dad7229..0000000 --- a/fastapi_book_server/app/alembic/env.py +++ /dev/null @@ -1,68 +0,0 @@ -from logging.config import fileConfig -import os -import sys - -from alembic import context -from sqlalchemy.engine import create_engine - -from core.db import DATABASE_URL - - -myPath = os.path.dirname(os.path.abspath(__file__)) -sys.path.insert(0, myPath + "/../../") - -config = context.config - - -from app.models import BaseMeta - - -target_metadata = BaseMeta.metadata - - -def run_migrations_offline(): - """Run migrations in 'offline' mode. - - This configures the context with just a URL - and not an Engine, though an Engine is acceptable - here as well. By skipping the Engine creation - we don't even need a DBAPI to be available. - - Calls to context.execute() here emit the given string to the - script output. - - """ - url = config.get_main_option("sqlalchemy.url") - context.configure( - url=url, - target_metadata=target_metadata, - literal_binds=True, - dialect_opts={"paramstyle": "named"}, - ) - - with context.begin_transaction(): - context.run_migrations() - - -def run_migrations_online(): - """Run migrations in 'online' mode. - - In this scenario we need to create an Engine - and associate a connection with the context. - - """ - connectable = create_engine(DATABASE_URL) - - with connectable.connect() as connection: - context.configure( - connection=connection, target_metadata=target_metadata, compare_type=True - ) - - with context.begin_transaction(): - context.run_migrations() - - -if context.is_offline_mode(): - run_migrations_offline() -else: - run_migrations_online() diff --git a/fastapi_book_server/app/alembic/script.py.mako b/fastapi_book_server/app/alembic/script.py.mako deleted file mode 100644 index 2c01563..0000000 --- a/fastapi_book_server/app/alembic/script.py.mako +++ /dev/null @@ -1,24 +0,0 @@ -"""${message} - -Revision ID: ${up_revision} -Revises: ${down_revision | comma,n} -Create Date: ${create_date} - -""" -from alembic import op -import sqlalchemy as sa -${imports if imports else ""} - -# revision identifiers, used by Alembic. -revision = ${repr(up_revision)} -down_revision = ${repr(down_revision)} -branch_labels = ${repr(branch_labels)} -depends_on = ${repr(depends_on)} - - -def upgrade(): - ${upgrades if upgrades else "pass"} - - -def downgrade(): - ${downgrades if downgrades else "pass"} diff --git a/fastapi_book_server/app/alembic/versions/08193b547a80_.py b/fastapi_book_server/app/alembic/versions/08193b547a80_.py deleted file mode 100644 index 8fb3f0b..0000000 --- a/fastapi_book_server/app/alembic/versions/08193b547a80_.py +++ /dev/null @@ -1,143 +0,0 @@ -"""empty message - -Revision ID: 08193b547a80 -Revises: b44117a41998 -Create Date: 2021-11-19 14:04:16.589304 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = "08193b547a80" -down_revision = "b44117a41998" -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_index(op.f("ix_books_title"), "books", ["title"], unique=False) - op.create_index( - op.f("ix_books_is_deleted"), - "books", - [sa.text("is_deleted = 'f'")], - unique=False, - ) - op.create_index(op.f("ix_books_file_type"), "books", ["file_type"], unique=False) - op.create_index(op.f("ix_sequences_name"), "sequences", ["name"], unique=False) - op.create_index( - op.f("tgrm_books_title"), - "books", - ["title"], - postgresql_using="gin", - postgresql_ops={"description": "gin_trgm_ops"}, - ) - op.create_index( - op.f("tgrm_sequences_name"), - "sequences", - ["name"], - postgresql_using="gin", - postgresql_ops={"description": "gin_trgm_ops"}, - ) - op.create_index( - op.f("tgrm_authors_lfm"), - "authors", - [sa.text("(last_name || ' ' || first_name || ' ' || middle_name)")], - postgresql_using="gin", - postgresql_ops={"description": "gin_trgm_ops"}, - ) - op.create_index( - op.f("tgrm_authors_lf"), - "authors", - [sa.text("(last_name || ' ' || first_name)")], - postgresql_using="gin", - postgresql_ops={"description": "gin_trgm_ops"}, - ) - op.create_index( - op.f("tgrm_authors_l"), - "authors", - ["last_name"], - postgresql_using="gin", - postgresql_ops={"description": "gin_trgm_ops"}, - ) - op.create_index( - op.f("book_authors_book"), - "book_authors", - ["book"], - unique=False, - postgresql_using="btree", - ) - op.create_index( - op.f("book_authors_author"), - "book_authors", - ["author"], - unique=False, - postgresql_using="btree", - ) - op.create_index( - op.f("book_sequences_book"), - "book_sequences", - ["book"], - unique=False, - postgresql_using="btree", - ) - op.create_index( - op.f("book_sequences_sequence"), - "book_sequences", - ["sequence"], - unique=False, - postgresql_using="btree", - ) - op.create_index( - op.f("translations_book"), - "translations", - ["book"], - unique=False, - postgresql_using="btree", - ) - op.create_index( - op.f("translations_author"), - "translations", - ["author"], - unique=False, - postgresql_using="btree", - ) - op.create_index( - op.f("book_genres_book"), - "book_genres", - ["book"], - unique=False, - postgresql_using="btree", - ), - op.create_index( - op.f("book_genres_genre"), - "book_genres", - ["genre"], - unique=False, - postgresql_using="btree", - ) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_index(op.f("ix_sequences_name"), table_name="sequences") - op.drop_index(op.f("ix_books_title"), table_name="books") - op.drop_index(op.f("ix_books_is_deleted"), table_name="books") - op.drop_index(op.f("ix_books_file_type"), table_name="books") - op.drop_index(op.f("tgrm_books_title"), table_name="books") - op.drop_index(op.f("tgrm_sequences_name"), table_name="books") - op.drop_index(op.f("tgrm_authors_lfm"), table_name="books") - op.drop_index(op.f("tgrm_authors_lf"), table_name="books") - op.drop_index(op.f("tgrm_authors_l"), table_name="books") - op.drop_index(op.f("book_authors_book"), table_name="book_authors") - op.drop_index(op.f("book_authors_author"), table_name="book_authors") - op.drop_index(op.f("book_sequences_book"), table_name="book_sequences") - op.drop_index(op.f("book_sequences_sequence"), table_name="book_sequences") - op.drop_index(op.f("translations_book"), table_name="translations") - op.drop_index(op.f("translations_author"), table_name="translations") - op.drop_index(op.f("book_genres_book"), table_name="book_genres"), - op.drop_index(op.f("book_genres_genre"), table_name="book_genres"), - # ### end Alembic commands ### diff --git a/fastapi_book_server/app/alembic/versions/b44117a41998_.py b/fastapi_book_server/app/alembic/versions/b44117a41998_.py deleted file mode 100644 index cf5cb60..0000000 --- a/fastapi_book_server/app/alembic/versions/b44117a41998_.py +++ /dev/null @@ -1,221 +0,0 @@ -"""empty message - -Revision ID: b44117a41998 -Revises: -Create Date: 2021-11-18 18:25:06.921287 - -""" -from alembic import op -import sqlalchemy as sa -from sqlalchemy.sql.schema import UniqueConstraint - - -# revision identifiers, used by Alembic. -revision = "b44117a41998" -down_revision = None -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_table( - "sources", - sa.Column("id", sa.SmallInteger(), nullable=False), - sa.Column("name", sa.String(length=32), nullable=False), - sa.PrimaryKeyConstraint("id"), - sa.UniqueConstraint("name"), - ) - op.create_table( - "authors", - sa.Column("id", sa.Integer(), nullable=False), - sa.Column("source", sa.SmallInteger(), nullable=False), - sa.Column("remote_id", sa.Integer(), nullable=False), - sa.Column("first_name", sa.String(length=256), nullable=False), - sa.Column("last_name", sa.String(length=256), nullable=False), - sa.Column("middle_name", sa.String(length=256), nullable=True), - sa.ForeignKeyConstraint( - ["source"], ["sources.id"], name="fk_authors_sources_id_source" - ), - sa.PrimaryKeyConstraint("id"), - sa.UniqueConstraint("source", "remote_id", name="uc_authors_source_remote_id"), - ) - op.create_table( - "books", - sa.Column("id", sa.Integer(), nullable=False), - sa.Column("source", sa.SmallInteger(), nullable=False), - sa.Column("remote_id", sa.Integer(), nullable=False), - sa.Column("title", sa.String(length=256), nullable=False), - sa.Column("lang", sa.String(length=3), nullable=False), - sa.Column("file_type", sa.String(length=4), nullable=False), - sa.Column("uploaded", sa.Date(), nullable=False), - sa.Column( - "is_deleted", sa.Boolean(), server_default=sa.text("false"), nullable=False - ), - sa.ForeignKeyConstraint( - ["source"], ["sources.id"], name="fk_books_sources_id_source" - ), - sa.PrimaryKeyConstraint("id"), - sa.UniqueConstraint("source", "remote_id", name="uc_books_source_remote_id"), - ) - op.create_table( - "genres", - sa.Column("id", sa.Integer(), nullable=False), - sa.Column("source", sa.SmallInteger(), nullable=False), - sa.Column("remote_id", sa.Integer(), nullable=False), - sa.Column("code", sa.String(length=45), nullable=False), - sa.Column("description", sa.String(length=99), nullable=False), - sa.Column("meta", sa.String(length=45), nullable=False), - sa.ForeignKeyConstraint( - ["source"], ["sources.id"], name="fk_genres_sources_id_source" - ), - sa.PrimaryKeyConstraint("id"), - sa.UniqueConstraint("source", "remote_id", name="uc_genres_source_remote_id"), - ) - op.create_table( - "sequences", - sa.Column("id", sa.Integer(), nullable=False), - sa.Column("source", sa.SmallInteger(), nullable=False), - sa.Column("remote_id", sa.Integer(), nullable=False), - sa.Column("name", sa.String(length=256), nullable=False), - sa.ForeignKeyConstraint( - ["source"], ["sources.id"], name="fk_sequences_sources_id_source" - ), - sa.PrimaryKeyConstraint("id"), - sa.UniqueConstraint( - "source", "remote_id", name="uc_sequences_source_remote_id" - ), - ) - op.create_table( - "author_annotations", - sa.Column("id", sa.Integer(), nullable=False), - sa.Column("author", sa.Integer(), nullable=False), - sa.Column("title", sa.String(length=256), nullable=False), - sa.Column("text", sa.Text(), nullable=False), - sa.Column("file", sa.String(length=256), nullable=True), - sa.ForeignKeyConstraint( - ["author"], ["authors.id"], name="fk_author_annotations_authors_id_author" - ), - sa.PrimaryKeyConstraint("id"), - sa.UniqueConstraint("author"), - ) - op.create_table( - "book_annotations", - sa.Column("id", sa.Integer(), nullable=False), - sa.Column("book", sa.Integer(), nullable=False), - sa.Column("title", sa.String(length=256), nullable=False), - sa.Column("text", sa.Text(), nullable=False), - sa.Column("file", sa.String(length=256), nullable=True), - sa.ForeignKeyConstraint( - ["book"], ["books.id"], name="fk_book_annotations_books_id_book" - ), - sa.PrimaryKeyConstraint("id"), - sa.UniqueConstraint("book"), - ) - op.create_table( - "book_authors", - sa.Column("id", sa.Integer(), nullable=False), - sa.Column("author", sa.Integer(), nullable=True), - sa.Column("book", sa.Integer(), nullable=True), - sa.ForeignKeyConstraint( - ["author"], - ["authors.id"], - name="fk_book_authors_authors_author_id", - onupdate="CASCADE", - ondelete="CASCADE", - ), - sa.ForeignKeyConstraint( - ["book"], - ["books.id"], - name="fk_book_authors_books_book_id", - onupdate="CASCADE", - ondelete="CASCADE", - ), - sa.PrimaryKeyConstraint("id"), - sa.UniqueConstraint("book", "author", name="uc_book_authors_book_author"), - ) - op.create_table( - "book_genres", - sa.Column("id", sa.Integer(), nullable=False), - sa.Column("genre", sa.Integer(), nullable=True), - sa.Column("book", sa.Integer(), nullable=True), - sa.ForeignKeyConstraint( - ["book"], - ["books.id"], - name="fk_book_genres_books_book_id", - onupdate="CASCADE", - ondelete="CASCADE", - ), - sa.ForeignKeyConstraint( - ["genre"], - ["genres.id"], - name="fk_book_genres_genres_genre_id", - onupdate="CASCADE", - ondelete="CASCADE", - ), - sa.PrimaryKeyConstraint("id"), - sa.UniqueConstraint("book", "genre", name="uc_book_genres_book_genre"), - ) - op.create_table( - "book_sequences", - sa.Column("id", sa.Integer(), nullable=False), - sa.Column("position", sa.SmallInteger(), nullable=False), - sa.Column("sequence", sa.Integer(), nullable=True), - sa.Column("book", sa.Integer(), nullable=True), - sa.ForeignKeyConstraint( - ["book"], - ["books.id"], - name="fk_book_sequences_books_book_id", - onupdate="CASCADE", - ondelete="CASCADE", - ), - sa.ForeignKeyConstraint( - ["sequence"], - ["sequences.id"], - name="fk_book_sequences_sequences_sequence_id", - onupdate="CASCADE", - ondelete="CASCADE", - ), - sa.PrimaryKeyConstraint("id"), - sa.UniqueConstraint("book", "sequence", name="uc_book_sequences_book_sequence"), - ) - op.create_table( - "translations", - sa.Column("id", sa.Integer(), nullable=False), - sa.Column("position", sa.SmallInteger(), nullable=False), - sa.Column("author", sa.Integer(), nullable=True), - sa.Column("book", sa.Integer(), nullable=True), - sa.ForeignKeyConstraint( - ["author"], - ["authors.id"], - name="fk_translations_authors_author_id", - onupdate="CASCADE", - ondelete="CASCADE", - ), - sa.ForeignKeyConstraint( - ["book"], - ["books.id"], - name="fk_translations_books_book_id", - onupdate="CASCADE", - ondelete="CASCADE", - ), - sa.PrimaryKeyConstraint("id"), - sa.UniqueConstraint("book", "author", name="uc_translations_book_author"), - ) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_table("translations") - op.drop_table("book_sequences") - op.drop_table("book_genres") - op.drop_table("book_authors") - op.drop_table("book_annotations") - op.drop_table("author_annotations") - op.drop_table("sequences") - op.drop_table("genres") - op.drop_table("books") - op.drop_table("authors") - op.drop_table("sources") - # ### end Alembic commands ### diff --git a/fastapi_book_server/app/alembic/versions/b44117a41999_.py b/fastapi_book_server/app/alembic/versions/b44117a41999_.py deleted file mode 100644 index 4df6292..0000000 --- a/fastapi_book_server/app/alembic/versions/b44117a41999_.py +++ /dev/null @@ -1,29 +0,0 @@ -"""empty message - -Revision ID: b44117a41999 -Revises: 08193b547a80 -Create Date: 2021-11-18 18:25:06.921287 - -""" -from alembic import op -import sqlalchemy as sa -from sqlalchemy.sql.schema import UniqueConstraint - - -# revision identifiers, used by Alembic. -revision = "b44117a41999" -down_revision = "08193b547a80" -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column("books", sa.Column("pages", sa.Integer(), nullable=True)) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_column("books", "pages") - # ### end Alembic commands ### diff --git a/fastapi_book_server/app/depends.py b/fastapi_book_server/app/depends.py deleted file mode 100644 index a558f38..0000000 --- a/fastapi_book_server/app/depends.py +++ /dev/null @@ -1,22 +0,0 @@ -from typing import Optional - -from fastapi import HTTPException, Query, Security, status - -from core.auth import default_security -from core.config import env_config - - -def check_token(api_key: str = Security(default_security)): - if api_key != env_config.API_KEY: - raise HTTPException( - status_code=status.HTTP_403_FORBIDDEN, detail="Wrong api key!" - ) - - -def get_allowed_langs( - allowed_langs: Optional[list[str]] = Query(None), -) -> frozenset[str]: - if allowed_langs is not None: - return frozenset(allowed_langs) - - return frozenset(("ru", "be", "uk")) diff --git a/fastapi_book_server/app/filters/book.py b/fastapi_book_server/app/filters/book.py deleted file mode 100644 index 6959594..0000000 --- a/fastapi_book_server/app/filters/book.py +++ /dev/null @@ -1,40 +0,0 @@ -from datetime import date -from typing import Optional - -from fastapi import Query - -from app.depends import get_allowed_langs - - -def get_book_filter( - is_deleted: Optional[bool] = None, - allowed_langs: Optional[list[str]] = Query(None), # type: ignore - uploaded_gte: Optional[date] = None, - uploaded_lte: Optional[date] = None, - id_gte: Optional[int] = None, - id_lte: Optional[int] = None, - no_cache: bool = False, -) -> dict: - result = {} - - if is_deleted is not None: - result["is_deleted"] = is_deleted - - if not (allowed_langs and "__all__" in allowed_langs): - result["lang__in"] = get_allowed_langs(allowed_langs) - - if uploaded_gte: - result["uploaded__gte"] = uploaded_gte - - if uploaded_lte: - result["uploaded__lte"] = uploaded_lte - - if id_gte: - result["id__gte"] = id_gte - - if id_lte: - result["id__lte"] = id_lte - - result["no_cache"] = no_cache - - return result diff --git a/fastapi_book_server/app/filters/genre.py b/fastapi_book_server/app/filters/genre.py deleted file mode 100644 index 0c7b1f8..0000000 --- a/fastapi_book_server/app/filters/genre.py +++ /dev/null @@ -1,10 +0,0 @@ -from typing import Optional - - -def get_genre_filter(meta: Optional[str] = None) -> dict: - result = {} - - if meta: - result["meta"] = meta - - return result diff --git a/fastapi_book_server/app/models.py b/fastapi_book_server/app/models.py deleted file mode 100644 index c34b048..0000000 --- a/fastapi_book_server/app/models.py +++ /dev/null @@ -1,189 +0,0 @@ -from datetime import date -from typing import Optional - -import ormar -from sqlalchemy import text - -from core.db import database, metadata - - -class BaseMeta(ormar.ModelMeta): - metadata = metadata - database = database - - -class Source(ormar.Model): - class Meta(BaseMeta): - tablename = "sources" - - id: int = ormar.SmallInteger(primary_key=True, nullable=False) # type: ignore - name: str = ormar.String(max_length=32, nullable=False, unique=True) # type: ignore - - -class Genre(ormar.Model): - class Meta(BaseMeta): - tablename = "genres" - constraints = [ - ormar.UniqueColumns("source", "remote_id"), - ] - - id: int = ormar.Integer(primary_key=True, nullable=False) # type: ignore - - source: Source = ormar.ForeignKey(Source, nullable=False) - remote_id: int = ormar.Integer(minimum=0, nullable=False) # type: ignore - - code: str = ormar.String(max_length=45, nullable=False) # type: ignore - description: str = ormar.String(max_length=99, nullable=False) # type: ignore - meta: str = ormar.String(max_length=45, nullable=False) # type: ignore - - -class Author(ormar.Model): - class Meta(BaseMeta): - tablename = "authors" - constraints = [ - ormar.UniqueColumns("source", "remote_id"), - ] - - id: int = ormar.Integer(primary_key=True, nullable=False) # type: ignore - - source: Source = ormar.ForeignKey(Source, nullable=False) - remote_id: int = ormar.Integer(minimum=0, nullable=False) # type: ignore - - first_name: str = ormar.String(max_length=256, nullable=False) # type: ignore - last_name: str = ormar.String(max_length=256, nullable=False) # type: ignore - middle_name: str = ormar.String(max_length=256, nullable=True) # type: ignore - - @ormar.property_field - def annotation_exists(self) -> bool: - return len(self.annotations) != 0 - - -class AuthorAnnotation(ormar.Model): - class Meta(BaseMeta): - tablename = "author_annotations" - - id = ormar.Integer(primary_key=True, nullable=False) - - author: Author = ormar.ForeignKey( - Author, nullable=False, unique=True, related_name="annotations" - ) - - title: str = ormar.String( - max_length=256, nullable=False, default="" - ) # type: ignore - text: str = ormar.Text(nullable=False, default="") # type: ignore - file: str = ormar.String(max_length=256, nullable=True) # type: ignore - - -class Sequence(ormar.Model): - class Meta(BaseMeta): - tablename = "sequences" - constraints = [ - ormar.UniqueColumns("source", "remote_id"), - ] - - id: int = ormar.Integer(primary_key=True, nullable=False) # type: ignore - - source: Source = ormar.ForeignKey(Source, nullable=False) - remote_id: int = ormar.Integer(minimum=0, nullable=False) # type: ignore - - name: str = ormar.String(max_length=256, nullable=False, index=True) # type: ignore - - -class BookAuthors(ormar.Model): - class Meta(BaseMeta): - tablename = "book_authors" - - id: int = ormar.Integer(primary_key=True, nullable=False) # type: ignore - - -class BookGenres(ormar.Model): - class Meta(BaseMeta): - tablename = "book_genres" - - id: int = ormar.Integer(primary_key=True, nullable=False) # type: ignore - - -class BookSequences(ormar.Model): - class Meta(BaseMeta): - tablename = "book_sequences" - orders_by = [ - "position", - ] - - id: int = ormar.Integer(primary_key=True, nullable=False) # type: ignore - - position: int = ormar.SmallInteger(minimum=0, nullable=False) # type: ignore - - -class Translation(ormar.Model): - class Meta(BaseMeta): - tablename = "translations" - orders_by = [ - "position", - ] - - id: int = ormar.Integer(primary_key=True, nullable=False) # type: ignore - - position: int = ormar.SmallInteger(nullable=False) # type: ignore - - -class Book(ormar.Model): - class Meta(BaseMeta): - tablename = "books" - constraints = [ - ormar.UniqueColumns("source", "remote_id"), - ] - - id: int = ormar.Integer(primary_key=True, nullable=False) # type: ignore - - source: Source = ormar.ForeignKey(Source, nullable=False) - remote_id: int = ormar.Integer(minimum=0, nullable=False) # type: ignore - - title: str = ormar.String( - max_length=256, nullable=False, index=True - ) # type: ignore - lang: str = ormar.String(max_length=3, nullable=False, index=True) # type: ignore - file_type: str = ormar.String( - max_length=4, nullable=False, index=True - ) # type: ignore - uploaded: date = ormar.Date() # type: ignore - is_deleted: bool = ormar.Boolean( - default=False, server_default=text("false"), nullable=False - ) - pages: Optional[int] = ormar.Integer(minimum=0, nullable=True) # type: ignore - - authors = ormar.ManyToMany(Author, through=BookAuthors) - translators = ormar.ManyToMany( - Author, through=Translation, related_name="translated_books" - ) - genres = ormar.ManyToMany(Genre, through=BookGenres) - sequences = ormar.ManyToMany(Sequence, through=BookSequences) - - @ormar.property_field - def available_types(self) -> list[str]: - if self.file_type == "fb2" and self.source.name == "flibusta": - return ["fb2", "fb2zip", "epub", "mobi"] - - return [self.file_type] - - @ormar.property_field - def annotation_exists(self) -> bool: - return len(self.annotations) != 0 - - -class BookAnnotation(ormar.Model): - class Meta(BaseMeta): - tablename = "book_annotations" - - id = ormar.Integer(primary_key=True, nullable=False) - - book: Book = ormar.ForeignKey( - Book, nullable=False, unique=True, related_name="annotations" - ) - - title: str = ormar.String( - max_length=256, nullable=False, default="" - ) # type: ignore - text: str = ormar.Text(nullable=False, default="") # type: ignore - file: str = ormar.String(max_length=256, nullable=True) # type: ignore diff --git a/fastapi_book_server/app/serializers/author.py b/fastapi_book_server/app/serializers/author.py deleted file mode 100644 index 2242653..0000000 --- a/fastapi_book_server/app/serializers/author.py +++ /dev/null @@ -1,48 +0,0 @@ -from datetime import date -from typing import Optional - -from fastapi_pagination import Page -from pydantic import BaseModel - -from app.serializers.sequence import Sequence - - -class Author(BaseModel): - id: int - - first_name: str - last_name: str - middle_name: Optional[str] - - annotation_exists: bool - - -class AuthorBook(BaseModel): - id: int - title: str - lang: str - file_type: str - available_types: list[str] - uploaded: date - translators: list[Author] - sequences: list[Sequence] - annotation_exists: bool - - -class TranslatedBook(BaseModel): - id: int - title: str - lang: str - file_type: str - available_types: list[str] - authors: list[Author] - sequences: list[Sequence] - annotation_exists: bool - - -class PageWithAuthorBook(Page[AuthorBook]): - parent_item: Author | None - - -class PageWithTranslatedBook(Page[TranslatedBook]): - parent_item: Author | None diff --git a/fastapi_book_server/app/serializers/author_annotation.py b/fastapi_book_server/app/serializers/author_annotation.py deleted file mode 100644 index f8b13d3..0000000 --- a/fastapi_book_server/app/serializers/author_annotation.py +++ /dev/null @@ -1,10 +0,0 @@ -from typing import Optional - -from pydantic import BaseModel - - -class AuthorAnnotation(BaseModel): - id: int - title: str - text: str - file: Optional[str] diff --git a/fastapi_book_server/app/serializers/book.py b/fastapi_book_server/app/serializers/book.py deleted file mode 100644 index 9bf98d2..0000000 --- a/fastapi_book_server/app/serializers/book.py +++ /dev/null @@ -1,46 +0,0 @@ -from datetime import date -from typing import Optional - -from pydantic import BaseModel - -from app.serializers.author import Author -from app.serializers.sequence import Sequence - - -class BookSource(BaseModel): - id: int - name: str - - -class BookGenre(BaseModel): - id: int - description: str - - -class Book(BaseModel): - id: int - title: str - lang: str - file_type: str - available_types: list[str] - uploaded: date - authors: list[Author] - translators: list[Author] - sequences: list[Sequence] - annotation_exists: bool - - -class RemoteBook(Book): - source: BookSource - remote_id: int - - -class BookBaseInfo(BaseModel): - id: int - available_types: list[str] - - -class BookDetail(RemoteBook): - genres: list[BookGenre] - is_deleted: bool - pages: Optional[int] diff --git a/fastapi_book_server/app/serializers/book_annotation.py b/fastapi_book_server/app/serializers/book_annotation.py deleted file mode 100644 index 1fa5539..0000000 --- a/fastapi_book_server/app/serializers/book_annotation.py +++ /dev/null @@ -1,10 +0,0 @@ -from typing import Optional - -from pydantic import BaseModel - - -class BookAnnotation(BaseModel): - id: int - title: str - text: str - file: Optional[str] diff --git a/fastapi_book_server/app/serializers/genre.py b/fastapi_book_server/app/serializers/genre.py deleted file mode 100644 index c200d4c..0000000 --- a/fastapi_book_server/app/serializers/genre.py +++ /dev/null @@ -1,15 +0,0 @@ -from pydantic import BaseModel - - -class GenreSource(BaseModel): - id: int - name: str - - -class Genre(BaseModel): - id: int - source: GenreSource - remote_id: int - code: str - description: str - meta: str diff --git a/fastapi_book_server/app/serializers/sequence.py b/fastapi_book_server/app/serializers/sequence.py deleted file mode 100644 index 13883e7..0000000 --- a/fastapi_book_server/app/serializers/sequence.py +++ /dev/null @@ -1,36 +0,0 @@ -from datetime import date -from typing import Optional - -from fastapi_pagination import Page -from pydantic import BaseModel - - -class Sequence(BaseModel): - id: int - name: str - - -class Author(BaseModel): - id: int - - first_name: str - last_name: str - middle_name: Optional[str] - - annotation_exists: bool - - -class Book(BaseModel): - id: int - title: str - lang: str - file_type: str - available_types: list[str] - uploaded: date - authors: list[Author] - translators: list[Author] - annotation_exists: bool - - -class PageWithSequence(Page[Book]): - parent_item: Sequence | None diff --git a/fastapi_book_server/app/serializers/source.py b/fastapi_book_server/app/serializers/source.py deleted file mode 100644 index 9f08c5b..0000000 --- a/fastapi_book_server/app/serializers/source.py +++ /dev/null @@ -1,6 +0,0 @@ -from pydantic import BaseModel - - -class Source(BaseModel): - id: int - name: str diff --git a/fastapi_book_server/app/serializers/translation.py b/fastapi_book_server/app/serializers/translation.py deleted file mode 100644 index f4b5f6d..0000000 --- a/fastapi_book_server/app/serializers/translation.py +++ /dev/null @@ -1,21 +0,0 @@ -from pydantic import BaseModel - - -class TranslationBook(BaseModel): - id: int - title: str - lang: str - file_type: str - - -class TranslationTranslator(BaseModel): - id: int - first_name: str - last_name: str - middle_name: str - - -class Translation(BaseModel): - book: TranslationBook - translator: TranslationTranslator - position: int diff --git a/fastapi_book_server/app/services/author.py b/fastapi_book_server/app/services/author.py deleted file mode 100644 index 5e3aa5c..0000000 --- a/fastapi_book_server/app/services/author.py +++ /dev/null @@ -1,86 +0,0 @@ -from typing import TypedDict - -from app.models import Author -from app.services.common import GetRandomService, MeiliSearchService, TRGMSearchService - - -GET_OBJECT_IDS_QUERY = """ -SELECT ARRAY( - WITH filtered_authors AS ( - SELECT - id, - GREATEST( - similarity( - (last_name || ' ' || first_name || ' ' || middle_name), - :query - ), - similarity((last_name || ' ' || first_name), :query), - similarity((last_name), :query) - ) as sml, - ( - SELECT count(*) FROM book_authors - LEFT JOIN books ON (books.id = book) - WHERE author = authors.id AND books.is_deleted = 'f' - AND books.lang = ANY(:langs ::text[]) - ) as books_count - FROM authors - WHERE ( - (last_name || ' ' || first_name || ' ' || middle_name) % :query OR - (last_name || ' ' || first_name) % :query OR - (last_name) % :query - ) AND - EXISTS ( - SELECT * FROM book_authors - LEFT JOIN books ON (books.id = book) - WHERE author = authors.id AND books.is_deleted = 'f' - AND books.lang = ANY(:langs ::text[]) - ) - ) - SELECT fauthors.id FROM filtered_authors as fauthors - ORDER BY fauthors.sml DESC, fauthors.books_count DESC - LIMIT 210 -); -""" - - -class AuthorTGRMSearchService(TRGMSearchService): - MODEL_CLASS = Author - PREFETCH_RELATED = ["source"] - SELECT_RELATED = ["annotations"] - - GET_OBJECT_IDS_QUERY = GET_OBJECT_IDS_QUERY - - -GET_OBJECTS_ID_QUERY = """ -WITH filtered_authors AS ( - SELECT id FROM authors - WHERE EXISTS ( - SELECT * FROM book_authors - LEFT JOIN books ON (books.id = book) - WHERE author = authors.id AND books.is_deleted = 'f' - AND books.lang = ANY(:langs ::text[]) - ) -) -SELECT id FROM filtered_authors; -""" - - -class RandomAuthorServiceQuery(TypedDict): - allowed_langs: frozenset[str] - - -class GetRandomAuthorService(GetRandomService[Author, RandomAuthorServiceQuery]): - MODEL_CLASS = Author # type: ignore - PREFETCH_RELATED = ["source"] - SELECT_RELATED = ["annotations"] - - GET_OBJECTS_ID_QUERY = GET_OBJECTS_ID_QUERY - - -class AuthorMeiliSearchService(MeiliSearchService): - MODEL_CLASS = Author - PREFETCH_RELATED = ["source"] - SELECT_RELATED = ["annotations"] - - MS_INDEX_NAME = "authors" - MS_INDEX_LANG_KEY = "author_langs" diff --git a/fastapi_book_server/app/services/book.py b/fastapi_book_server/app/services/book.py deleted file mode 100644 index 08b2c8a..0000000 --- a/fastapi_book_server/app/services/book.py +++ /dev/null @@ -1,98 +0,0 @@ -from typing import Optional, TypedDict - -from app.models import Book as BookDB -from app.services.common import ( - BaseFilterService, - GetRandomService, - MeiliSearchService, - TRGMSearchService, -) - - -GET_OBJECT_IDS_QUERY = """ -SELECT ARRAY( - WITH filtered_books AS ( - SELECT id, similarity(title, :query) as sml FROM books - WHERE books.title % :query AND books.is_deleted = 'f' - AND books.lang = ANY(:langs ::text[]) - ) - SELECT fbooks.id FROM filtered_books as fbooks - ORDER BY fbooks.sml DESC, fbooks.id - LIMIT 210 -); -""" - - -class BookTGRMSearchService(TRGMSearchService): - MODEL_CLASS = BookDB - PREFETCH_RELATED = ["source"] - SELECT_RELATED = ["authors", "translators", "annotations"] - - GET_OBJECT_IDS_QUERY = GET_OBJECT_IDS_QUERY - - -class BookBaseInfoFilterService(BaseFilterService): - MODEL_CLASS = BookDB - PREFETCH_RELATED = [] - SELECT_RELATED = [] - - -class BookFilterService(BaseFilterService): - MODEL_CLASS = BookDB - PREFETCH_RELATED = ["source"] - SELECT_RELATED = ["authors", "translators", "annotations"] - - -GET_OBJECTS_ID_QUERY = """ -WITH filtered_books AS ( - SELECT id FROM books - WHERE books.is_deleted = 'f' AND books.lang = ANY(:langs ::text[]) -) -SELECT id FROM filtered_books; -""" - - -GET_OBJECTS_ID_BY_GENRE_QUERY = """ -WITH filtered_books AS ( - SELECT books.id FROM books - LEFT JOIN book_genres ON (book_genres.book = books.id) - WHERE books.is_deleted = 'f' AND book_genres.genre = :genre - AND books.lang = ANY(:langs ::text[]) -) -SELECT id FROM filtered_books; -""" - - -class RandomBookServiceQuery(TypedDict): - genre: Optional[int] - allowed_langs: frozenset[str] - - -class GetRandomBookService(GetRandomService[BookDB, RandomBookServiceQuery]): - MODEL_CLASS = BookDB # type: ignore - PREFETCH_RELATED = ["source"] - SELECT_RELATED = ["authors", "translators", "annotations"] - - GET_OBJECTS_ID_QUERY = GET_OBJECTS_ID_QUERY - GET_OBJECTS_ID_BY_GENRE_QUERY = GET_OBJECTS_ID_BY_GENRE_QUERY - - @classmethod - async def _get_objects_from_db(cls, query: RandomBookServiceQuery) -> list[int]: - if query.get("genre") is None: - ex_query = cls.objects_id_query - params = {"langs": query["allowed_langs"]} - else: - ex_query = cls.GET_OBJECTS_ID_BY_GENRE_QUERY - params = {"langs": query["allowed_langs"], "genre": query["genre"]} - - objects = await cls.database.fetch_all(ex_query, params) - return [obj["id"] for obj in objects] - - -class BookMeiliSearchService(MeiliSearchService): - MODEL_CLASS = BookDB - PREFETCH_RELATED = ["source"] - SELECT_RELATED = ["authors", "translators", "annotations", "sequences"] - - MS_INDEX_NAME = "books" - MS_INDEX_LANG_KEY = "lang" diff --git a/fastapi_book_server/app/services/common.py b/fastapi_book_server/app/services/common.py deleted file mode 100644 index f7133a3..0000000 --- a/fastapi_book_server/app/services/common.py +++ /dev/null @@ -1,347 +0,0 @@ -import abc -import asyncio -from concurrent.futures import ThreadPoolExecutor -import hashlib -from random import choice -from typing import Generic, Optional, TypedDict, TypeVar, Union - -from databases import Database -from fastapi_pagination import Page -from fastapi_pagination.api import resolve_params -from fastapi_pagination.bases import AbstractParams, RawParams -import meilisearch -import orjson -from ormar import Model, QuerySet -from redis import asyncio as aioredis -from sqlalchemy import Table - -from app.utils.orjson_default import default as orjson_default -from core.config import env_config - - -MODEL = TypeVar("MODEL", bound=Model) -QUERY = TypeVar("QUERY", bound=TypedDict) - - -class BaseService(Generic[MODEL, QUERY], abc.ABC): - MODEL_CLASS: Optional[MODEL] = None - CACHE_PREFIX: str = "" - CUSTOM_MODEL_CACHE_NAME: Optional[str] = None - CACHE_TTL = 6 * 60 * 60 - - @classmethod - @property - def model(cls) -> MODEL: - assert cls.MODEL_CLASS is not None, f"MODEL in {cls.__name__} don't set!" - return cls.MODEL_CLASS - - @classmethod - @property - def table(cls) -> Table: - return cls.model.Meta.table - - @classmethod - @property - def database(cls) -> Database: - return cls.model.Meta.database - - @classmethod - @property - def cache_prefix(cls) -> str: - return cls.CUSTOM_MODEL_CACHE_NAME or cls.model.Meta.tablename - - @staticmethod - def _get_query_hash(query: QUERY) -> str: - json_value = orjson.dumps(query, orjson_default, option=orjson.OPT_SORT_KEYS) - return hashlib.md5(json_value).hexdigest() - - @classmethod - def get_cache_key(cls, query: QUERY) -> str: - model_class_name = cls.cache_prefix - query_hash = cls._get_query_hash(query) - cache_key = f"{model_class_name}_{query_hash}" - return f"{cls.CACHE_PREFIX}_{cache_key}" if cls.CACHE_PREFIX else cache_key - - @classmethod - async def cache_object_ids( - cls, - query: QUERY, - object_ids: list[int], - redis: aioredis.Redis, - ) -> bool: - try: - key = cls.get_cache_key(query) - active_key = f"{key}_active" - - p = redis.pipeline() - - await p.delete(key) - await p.set(active_key, 1, ex=cls.CACHE_TTL) - await p.sadd(key, *object_ids) - - await p.execute() - - return True - except aioredis.RedisError as e: - print(e) - return False - - -class BaseSearchService(Generic[MODEL, QUERY], BaseService[MODEL, QUERY]): - SELECT_RELATED: Optional[Union[list[str], str]] = None - PREFETCH_RELATED: Optional[Union[list[str], str]] = None - - @classmethod - def get_params(cls) -> AbstractParams: - return resolve_params() - - @classmethod - def get_raw_params(cls) -> RawParams: - return resolve_params().to_raw_params() - - @classmethod - async def _get_object_ids(cls, query: QUERY) -> list[int]: - ... - - @classmethod - async def get_cached_ids( - cls, - query: QUERY, - redis: aioredis.Redis, - params: RawParams, - ) -> Optional[tuple[int, list[int]]]: - try: - key = cls.get_cache_key(query) - active_key = f"{key}_active" - - if not await redis.exists(active_key): - return None - - assert params.offset is not None - assert params.limit is not None - - objects_count, objects = await asyncio.gather( - redis.llen(key), - redis.lrange(key, params.offset, params.offset + params.limit), - ) - - return objects_count, [int(item.decode()) for item in objects] - except aioredis.RedisError as e: - print(e) - return None - - @classmethod - async def get_object_ids( - cls, query: QUERY, redis: aioredis.Redis, no_cache: bool - ) -> tuple[int, list[int]]: - params = cls.get_raw_params() - - if not no_cache and ( - cached_object_ids := await cls.get_cached_ids(query, redis, params) - ): - return cached_object_ids - - assert params.limit is not None - assert params.offset is not None - - object_ids = await cls._get_object_ids(query) - limited_object_ids = object_ids[params.offset : params.offset + params.limit] - - if not no_cache and len(object_ids) != 0: - await cls.cache_object_ids(query, object_ids, redis) - - return len(object_ids), limited_object_ids - - @classmethod - async def get_limited_objects( - cls, query: QUERY, redis: aioredis.Redis, no_cache: bool - ) -> tuple[int, list[MODEL]]: - count, object_ids = await cls.get_object_ids(query, redis, no_cache) - - queryset: QuerySet[MODEL] = cls.model.objects - - if cls.PREFETCH_RELATED is not None: - queryset = queryset.prefetch_related(cls.PREFETCH_RELATED) - - if cls.SELECT_RELATED: - queryset = queryset.select_related(cls.SELECT_RELATED) - - db_objects = await queryset.filter(id__in=object_ids).all() - return count, sorted(db_objects, key=lambda o: object_ids.index(o.id)) - - @classmethod - async def get(cls, query: QUERY, redis: aioredis.Redis) -> Page[MODEL]: - no_cache: bool = query.pop("no_cache", False) # type: ignore - - params = cls.get_params() - - total, objects = await cls.get_limited_objects(query, redis, no_cache) - - return Page.create(items=objects, total=total, params=params) - - -class SearchQuery(TypedDict): - query: str - allowed_langs: frozenset[str] - - -class TRGMSearchService(Generic[MODEL], BaseSearchService[MODEL, SearchQuery]): - GET_OBJECT_IDS_QUERY: Optional[str] = None - - @classmethod - @property - def object_ids_query(cls) -> str: - assert ( - cls.GET_OBJECT_IDS_QUERY is not None - ), f"GET_OBJECT_IDS_QUERY in {cls.__name__} don't set!" - return cls.GET_OBJECT_IDS_QUERY - - @classmethod - async def _get_object_ids(cls, query: SearchQuery) -> list[int]: - row = await cls.database.fetch_one( - cls.object_ids_query, - {"query": query["query"], "langs": query["allowed_langs"]}, - ) - - if row is None: - raise ValueError("Something is wrong!") - - return row["array"] - - -class MeiliSearchService(Generic[MODEL], BaseSearchService[MODEL, SearchQuery]): - MS_INDEX_NAME: Optional[str] = None - MS_INDEX_LANG_KEY: Optional[str] = None - - _executor = ThreadPoolExecutor(2) - - @classmethod - @property - def lang_key(cls) -> str: - assert ( - cls.MS_INDEX_LANG_KEY is not None - ), f"MS_INDEX_LANG_KEY in {cls.__name__} don't set!" - return cls.MS_INDEX_LANG_KEY - - @classmethod - @property - def index_name(cls) -> str: - assert ( - cls.MS_INDEX_NAME is not None - ), f"MS_INDEX_NAME in {cls.__name__} don't set!" - return cls.MS_INDEX_NAME - - @classmethod - def get_allowed_langs_filter(cls, allowed_langs: frozenset[str]) -> list[str]: - langs_values = ", ".join(allowed_langs) - return [f"{cls.lang_key} IN [{langs_values}]"] - - @classmethod - def make_request( - cls, query: str, allowed_langs_filter: list[str], offset: int, limit: int - ) -> tuple[int, list[int]]: - client = meilisearch.Client(env_config.MEILI_HOST, env_config.MEILI_MASTER_KEY) - index = client.index(cls.index_name) - - result = index.search( - query, - { - "filter": allowed_langs_filter, - "offset": offset, - "limit": limit, - "attributesToRetrieve": ["id"], - }, - ) - - total: int = result["estimatedTotalHits"] - ids: list[int] = [r["id"] for r in result["hits"][:total]] - - return total, ids - - @classmethod - async def _get_object_ids(cls, query: SearchQuery) -> tuple[int, list[int]]: - params = cls.get_raw_params() - allowed_langs_filter = cls.get_allowed_langs_filter(query["allowed_langs"]) - - return await asyncio.get_event_loop().run_in_executor( - cls._executor, - cls.make_request, - query["query"], - allowed_langs_filter, - params.offset, - params.limit, - ) - - @classmethod - async def get_object_ids( - cls, query: SearchQuery, redis: aioredis.Redis, no_cache: bool - ) -> tuple[int, list[int]]: - return await cls._get_object_ids(query) - - -class GetRandomService(Generic[MODEL, QUERY], BaseService[MODEL, QUERY]): - GET_OBJECTS_ID_QUERY: Optional[str] = None - CACHE_PREFIX: str = "random" - - @classmethod - @property - def objects_id_query(cls) -> str: - assert ( - cls.GET_OBJECTS_ID_QUERY is not None - ), f"GET_OBJECT_IDS_QUERY in {cls.__name__} don't set!" - return cls.GET_OBJECTS_ID_QUERY - - @classmethod - async def _get_objects_from_db(cls, query: QUERY) -> list[int]: - objects = await cls.database.fetch_all( - cls.objects_id_query, {"langs": query["allowed_langs"]} - ) - return [obj["id"] for obj in objects] - - @classmethod - async def _get_random_object_from_cache( - cls, query: QUERY, redis: aioredis.Redis - ) -> Optional[int]: - try: - key = cls.get_cache_key(query) - active_key = f"{key}_active" - - if not await redis.exists(active_key): - return None - - data: str = await redis.srandmember(key) # type: ignore - - return int(data) - except aioredis.RedisError as e: - print(e) - return None - - @classmethod - async def get_random_id( - cls, - query: QUERY, - redis: aioredis.Redis, - ) -> int | None: - cached_object_id = await cls._get_random_object_from_cache(query, redis) - - if cached_object_id is not None: - return cached_object_id - - object_ids = await cls._get_objects_from_db(query) - - await cls.cache_object_ids(query, object_ids, redis) - - if len(object_ids) == 0: - return None - - return choice(object_ids) - - -class BaseFilterService(Generic[MODEL, QUERY], BaseSearchService[MODEL, QUERY]): - @classmethod - async def _get_object_ids(cls, query: QUERY) -> list[int]: - return ( - await cls.model.objects.filter(**query) - .fields("id") - .values_list(flatten=True) - ) diff --git a/fastapi_book_server/app/services/genre.py b/fastapi_book_server/app/services/genre.py deleted file mode 100644 index 7562ca8..0000000 --- a/fastapi_book_server/app/services/genre.py +++ /dev/null @@ -1,10 +0,0 @@ -from app.models import Genre -from app.services.common import MeiliSearchService - - -class GenreMeiliSearchService(MeiliSearchService): - MODEL_CLASS = Genre - PREFETCH_RELATED = ["source"] - - MS_INDEX_NAME = "genres" - MS_INDEX_LANG_KEY = "langs" diff --git a/fastapi_book_server/app/services/sequence.py b/fastapi_book_server/app/services/sequence.py deleted file mode 100644 index 9d1e83d..0000000 --- a/fastapi_book_server/app/services/sequence.py +++ /dev/null @@ -1,74 +0,0 @@ -from typing import TypedDict - -from app.models import Sequence -from app.services.common import GetRandomService, MeiliSearchService, TRGMSearchService - - -GET_OBJECT_IDS_QUERY = """ -SELECT ARRAY ( - WITH filtered_sequences AS ( - SELECT - id, - similarity(name, :query) as sml, - ( - SELECT count(*) FROM book_sequences - LEFT JOIN books ON (books.id = book) - WHERE sequence = sequences.id AND books.is_deleted = 'f' - AND books.lang = ANY(:langs ::text[]) - ) as books_count - FROM sequences - WHERE name % :query AND - EXISTS ( - SELECT * FROM book_sequences - LEFT JOIN books ON (books.id = book) - WHERE sequence = sequences.id AND books.is_deleted = 'f' AND - books.lang = ANY(:langs ::text[]) - ) - ) - SELECT fsequences.id FROM filtered_sequences as fsequences - ORDER BY fsequences.sml DESC, fsequences.books_count DESC - LIMIT 210 -); -""" - - -class SequenceTGRMSearchService(TRGMSearchService): - MODEL_CLASS = Sequence - PREFETCH_RELATED = ["source"] - - GET_OBJECT_IDS_QUERY = GET_OBJECT_IDS_QUERY - - -GET_OBJECTS_ID_QUERY = """ -WITH filtered_sequences AS ( - SELECT id FROM sequences - WHERE EXISTS ( - SELECT * FROM book_sequences - LEFT JOIN books - ON (books.id = book AND - books.is_deleted = 'f' AND - books.lang = ANY(:langs ::text[])) - WHERE sequence = sequences.id - ) -) -SELECT id FROM filtered_sequences; -""" - - -class RandomSequenceServiceQuery(TypedDict): - allowed_langs: frozenset[str] - - -class GetRandomSequenceService(GetRandomService[Sequence, RandomSequenceServiceQuery]): - MODEL_CLASS = Sequence # type: ignore - PREFETCH_RELATED = ["source"] - - GET_OBJECTS_ID_QUERY = GET_OBJECTS_ID_QUERY - - -class SequenceMeiliSearchService(MeiliSearchService): - MODEL_CLASS = Sequence - PREFETCH_RELATED = ["source"] - - MS_INDEX_NAME = "sequences" - MS_INDEX_LANG_KEY = "langs" diff --git a/fastapi_book_server/app/services/translator.py b/fastapi_book_server/app/services/translator.py deleted file mode 100644 index 0e12821..0000000 --- a/fastapi_book_server/app/services/translator.py +++ /dev/null @@ -1,60 +0,0 @@ -from app.models import Author -from app.services.common import MeiliSearchService, TRGMSearchService - - -GET_OBJECT_IDS_QUERY = """ -SELECT ARRAY( - WITH filtered_authors AS ( - SELECT - id, - GREATEST( - similarity( - (last_name || ' ' || first_name || ' ' || middle_name), - :query - ), - similarity((last_name || ' ' || first_name), :query), - similarity((last_name), :query) - ) as sml, - ( - SELECT count(*) FROM translations - LEFT JOIN books ON (books.id = book) - WHERE author = authors.id AND books.is_deleted = 'f' AND - books.lang = ANY(:langs ::text[]) - ) as books_count - FROM authors - WHERE ( - (last_name || ' ' || first_name || ' ' || middle_name) % :query OR - (last_name || ' ' || first_name) % :query OR - (last_name) % :query - ) AND - EXISTS ( - SELECT * FROM translations - LEFT JOIN books ON (books.id = book) - WHERE author = authors.id AND books.is_deleted = 'f' AND - books.lang = ANY(:langs ::text[]) - ) - ) - SELECT fauthors.id FROM filtered_authors as fauthors - ORDER BY fauthors.sml DESC, fauthors.books_count DESC - LIMIT 210 -); -""" - - -class TranslatorTGRMSearchService(TRGMSearchService): - MODEL_CLASS = Author - CUSTOM_CACHE_PREFIX = "translator" - PREFETCH_RELATED = ["source"] - SELECT_RELATED = ["annotations"] - - GET_OBJECT_IDS_QUERY = GET_OBJECT_IDS_QUERY - - -class TranslatorMeiliSearchService(MeiliSearchService): - MODEL_CLASS = Author - CUSTOM_CACHE_PREFIX = "translator" - PREFETCH_RELATED = ["source"] - SELECT_RELATED = ["annotations"] - - MS_INDEX_NAME = "authors" - MS_INDEX_LANG_KEY = "translator_langs" diff --git a/fastapi_book_server/app/utils/orjson_default.py b/fastapi_book_server/app/utils/orjson_default.py deleted file mode 100644 index c7deccb..0000000 --- a/fastapi_book_server/app/utils/orjson_default.py +++ /dev/null @@ -1,15 +0,0 @@ -from typing import Any - -import orjson - - -def default(value: Any): - if isinstance(value, frozenset): - list_value = list(value) - return "-".join(sorted(list_value)) - - return value - - -def orjson_dumps(v, *, default) -> str: - return orjson.dumps(v, default=default).decode() diff --git a/fastapi_book_server/app/utils/transformer.py b/fastapi_book_server/app/utils/transformer.py deleted file mode 100644 index dfcee3f..0000000 --- a/fastapi_book_server/app/utils/transformer.py +++ /dev/null @@ -1,10 +0,0 @@ -from typing import Any, Sequence, TypeVar - -from pydantic import BaseModel - - -T = TypeVar("T", bound=BaseModel) - - -async def dict_transformer(items: Sequence[T]) -> Sequence[dict[str, Any]]: - return [item.dict() for item in items] diff --git a/fastapi_book_server/app/views/__init__.py b/fastapi_book_server/app/views/__init__.py deleted file mode 100644 index c8067a8..0000000 --- a/fastapi_book_server/app/views/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -from app.views.author import author_router, translator_router -from app.views.author_annotation import author_annotation_router -from app.views.book import book_router -from app.views.book_annotation import book_annotation_router -from app.views.genre import genre_router -from app.views.healthcheck import healtcheck_router -from app.views.sequence import sequence_router -from app.views.source import source_router -from app.views.translation import translation_router - - -routers = [ - source_router, - author_router, - translator_router, - author_annotation_router, - book_router, - book_annotation_router, - translation_router, - sequence_router, - genre_router, - healtcheck_router, -] diff --git a/fastapi_book_server/app/views/author.py b/fastapi_book_server/app/views/author.py deleted file mode 100644 index b315715..0000000 --- a/fastapi_book_server/app/views/author.py +++ /dev/null @@ -1,214 +0,0 @@ -from typing import Annotated, cast - -from fastapi import APIRouter, Depends, HTTPException, Request, status - -from fastapi_pagination import Page, Params -from fastapi_pagination.ext.ormar import paginate - -from app.depends import check_token, get_allowed_langs -from app.models import Author as AuthorDB -from app.models import AuthorAnnotation as AuthorAnnotationDB -from app.models import Book as BookDB -from app.serializers.author import ( - Author, - PageWithAuthorBook, - PageWithTranslatedBook, -) -from app.serializers.author_annotation import AuthorAnnotation -from app.services.author import AuthorMeiliSearchService, GetRandomAuthorService -from app.services.translator import TranslatorMeiliSearchService -from app.utils.transformer import dict_transformer - - -author_router = APIRouter( - prefix="/api/v1/authors", - tags=["author"], - dependencies=[Depends(check_token)], -) - - -PREFETCH_RELATED_FIELDS = ["source"] -SELECT_RELATED_FIELDS = ["annotations"] - - -@author_router.get("/", response_model=Page[Author], dependencies=[Depends(Params)]) -async def get_authors(): - return await paginate( - AuthorDB.objects.select_related(SELECT_RELATED_FIELDS).prefetch_related( - PREFETCH_RELATED_FIELDS - ), - transformer=dict_transformer, - ) - - -@author_router.get("/random", response_model=Author) -async def get_random_author( - request: Request, - allowed_langs: Annotated[frozenset[str], Depends(get_allowed_langs)], -): - author_id = await GetRandomAuthorService.get_random_id( - {"allowed_langs": allowed_langs}, request.app.state.redis - ) - - if author_id is None: - raise HTTPException(status.HTTP_204_NO_CONTENT) - - return ( - await AuthorDB.objects.select_related(SELECT_RELATED_FIELDS) - .prefetch_related(PREFETCH_RELATED_FIELDS) - .get(id=author_id) - ) - - -@author_router.get("/{id}", response_model=Author) -async def get_author(id: int): - author = ( - await AuthorDB.objects.select_related(SELECT_RELATED_FIELDS) - .prefetch_related(PREFETCH_RELATED_FIELDS) - .get_or_none(id=id) - ) - - if author is None: - raise HTTPException(status.HTTP_404_NOT_FOUND) - - return author - - -@author_router.get("/{id}/annotation", response_model=AuthorAnnotation) -async def get_author_annotation(id: int): - annotation = await AuthorAnnotationDB.objects.get_or_none(author__id=id) - - if annotation is None: - raise HTTPException(status.HTTP_404_NOT_FOUND) - - return annotation - - -@author_router.get( - "/{id}/books", response_model=PageWithAuthorBook, dependencies=[Depends(Params)] -) -async def get_author_books( - id: int, allowed_langs: Annotated[list[str], Depends(get_allowed_langs)] -): - page = await paginate( - BookDB.objects.prefetch_related(["source"]) - .select_related(["annotations", "translators", "sequences"]) - .filter(authors__id=id, lang__in=allowed_langs, is_deleted=False) - .order_by("title"), - transformer=dict_transformer, - ) - - author = await AuthorDB.objects.get_or_none(id=id) - - return PageWithAuthorBook( - items=page.items, - total=page.total, - page=page.page, - size=page.size, - pages=page.pages, - parent_item=Author.parse_obj(author.dict()) if author else None, - ) - - -@author_router.get("/{id}/available_types", response_model=list[str]) -async def get_author_books_available_types( - id: int, allowed_langs: Annotated[list[str], Depends(get_allowed_langs)] -) -> list[str]: - books = await ( - BookDB.objects.prefetch_related(["source"]) - .filter(authors__id=id, lang__in=allowed_langs, is_deleted=False) - .all() - ) - - file_types: set[str] = set() - - for book in books: - for file_type in cast(list[str], book.available_types): - file_types.add(file_type) - - return sorted(file_types) - - -@author_router.get( - "/search/{query}", response_model=Page[Author], dependencies=[Depends(Params)] -) -async def search_authors( - query: str, - request: Request, - allowed_langs: Annotated[frozenset[str], Depends(get_allowed_langs)], -): - return await AuthorMeiliSearchService.get( - {"query": query, "allowed_langs": allowed_langs}, - request.app.state.redis, - ) - - -translator_router = APIRouter( - prefix="/api/v1/translators", - tags=["author"], - dependencies=[Depends(check_token)], -) - - -@translator_router.get("/{id}/books", response_model=PageWithTranslatedBook) -async def get_translated_books( - id: int, allowed_langs: Annotated[list[str], Depends(get_allowed_langs)] -): - page = await paginate( - BookDB.objects.prefetch_related(["source"]) - .select_related(["annotations", "authors", "sequences"]) - .filter( - translators__id=id, - lang__in=allowed_langs, - is_deleted=False, - ), - transformer=dict_transformer, - ) - - translator = await AuthorDB.objects.get(id=id) - - return PageWithTranslatedBook( - items=page.items, - total=page.total, - page=page.page, - size=page.size, - pages=page.pages, - parent_item=Author.parse_obj(translator.dict()) if translator else None, - ) - - -@translator_router.get("/{id}/available_types", response_model=list[str]) -async def get_translator_books_available_types( - id: int, allowed_langs: Annotated[list[str], Depends(get_allowed_langs)] -) -> list[str]: - books = await ( - BookDB.objects.prefetch_related(["source"]) - .filter( - translators__id=id, - lang__in=allowed_langs, - is_deleted=False, - ) - .all() - ) - - file_types: set[str] = set() - - for book in books: - for file_type in cast(list[str], book.available_types): - file_types.add(file_type) - - return sorted(file_types) - - -@translator_router.get( - "/search/{query}", response_model=Page[Author], dependencies=[Depends(Params)] -) -async def search_translators( - query: str, - request: Request, - allowed_langs: Annotated[frozenset[str], Depends(get_allowed_langs)], -): - return await TranslatorMeiliSearchService.get( - {"query": query, "allowed_langs": allowed_langs}, - request.app.state.redis, - ) diff --git a/fastapi_book_server/app/views/author_annotation.py b/fastapi_book_server/app/views/author_annotation.py deleted file mode 100644 index 5853880..0000000 --- a/fastapi_book_server/app/views/author_annotation.py +++ /dev/null @@ -1,33 +0,0 @@ -from fastapi import APIRouter, Depends, HTTPException, status - -from fastapi_pagination import Page, Params -from fastapi_pagination.ext.ormar import paginate - -from app.depends import check_token -from app.models import AuthorAnnotation as AuthorAnnotationDB -from app.serializers.author_annotation import AuthorAnnotation -from app.utils.transformer import dict_transformer - - -author_annotation_router = APIRouter( - prefix="/api/v1/author_annotations", - tags=["author_annotation"], - dependencies=[Depends(check_token)], -) - - -@author_annotation_router.get( - "/", response_model=Page[AuthorAnnotation], dependencies=[Depends(Params)] -) -async def get_author_annotations(): - return await paginate(AuthorAnnotationDB.objects, transformer=dict_transformer) - - -@author_annotation_router.get("/{id}", response_model=AuthorAnnotation) -async def get_author_annotation(id: int): - annotation = await AuthorAnnotationDB.objects.get_or_none(id=id) - - if annotation is None: - raise HTTPException(status.HTTP_404_NOT_FOUND) - - return annotation diff --git a/fastapi_book_server/app/views/book.py b/fastapi_book_server/app/views/book.py deleted file mode 100644 index ab2cecc..0000000 --- a/fastapi_book_server/app/views/book.py +++ /dev/null @@ -1,131 +0,0 @@ -from typing import Annotated, Optional - -from fastapi import APIRouter, Depends, HTTPException, Request, status - -from fastapi_pagination import Page, Params - -from app.depends import check_token, get_allowed_langs -from app.filters.book import get_book_filter -from app.models import Book as BookDB -from app.models import BookAnnotation as BookAnnotationDB -from app.serializers.book import Book, BookBaseInfo, BookDetail, RemoteBook -from app.serializers.book_annotation import BookAnnotation -from app.services.book import ( - BookBaseInfoFilterService, - BookFilterService, - BookMeiliSearchService, - GetRandomBookService, -) - - -book_router = APIRouter( - prefix="/api/v1/books", - tags=["book"], - dependencies=[Depends(check_token)], -) - -PREFETCH_RELATED_FIELDS = ["source"] -SELECT_RELATED_FIELDS = ["authors", "translators", "annotations"] - -DETAIL_SELECT_RELATED_FIELDS = ["sequences", "genres"] - - -@book_router.get("/", response_model=Page[RemoteBook], dependencies=[Depends(Params)]) -async def get_books( - request: Request, - book_filter: Annotated[dict, Depends(get_book_filter)], -): - return await BookFilterService.get(book_filter, request.app.state.redis) - - -@book_router.get( - "/base/", response_model=Page[BookBaseInfo], dependencies=[Depends(Params)] -) -async def get_base_books_info( - request: Request, book_filter: Annotated[dict, Depends(get_book_filter)] -): - return await BookBaseInfoFilterService.get(book_filter, request.app.state.redis) - - -@book_router.get("/last", response_model=int) -async def get_last_book_id(): - book = await BookDB.objects.order_by("-id").first() - return book.id - - -@book_router.get("/random", response_model=BookDetail) -async def get_random_book( - request: Request, - allowed_langs: Annotated[frozenset[str], Depends(get_allowed_langs)], - genre: Optional[int] = None, -): - book_id = await GetRandomBookService.get_random_id( - {"allowed_langs": allowed_langs, "genre": genre}, request.app.state.redis - ) - - if book_id is None: - raise HTTPException(status.HTTP_204_NO_CONTENT) - - book = ( - await BookDB.objects.select_related( - SELECT_RELATED_FIELDS + DETAIL_SELECT_RELATED_FIELDS - ) - .prefetch_related(PREFETCH_RELATED_FIELDS) - .get(id=book_id) - ) - - return book - - -@book_router.get("/{id}", response_model=BookDetail) -async def get_book(id: int): - book = ( - await BookDB.objects.select_related( - SELECT_RELATED_FIELDS + DETAIL_SELECT_RELATED_FIELDS - ) - .prefetch_related(PREFETCH_RELATED_FIELDS) - .get_or_none(id=id) - ) - - if book is None: - raise HTTPException(status.HTTP_404_NOT_FOUND) - - return book - - -@book_router.get("/remote/{source_id}/{remote_id}", response_model=Book) -async def get_remote_book(source_id: int, remote_id: int): - book = ( - await BookDB.objects.select_related(SELECT_RELATED_FIELDS) - .prefetch_related(PREFETCH_RELATED_FIELDS) - .get_or_none(source=source_id, remote_id=remote_id) - ) - - if book is None: - raise HTTPException(status.HTTP_404_NOT_FOUND) - - return book - - -@book_router.get("/{id}/annotation", response_model=BookAnnotation) -async def get_book_annotation(id: int): - annotation = await BookAnnotationDB.objects.get_or_none(book__id=id) - - if annotation is None: - raise HTTPException(status.HTTP_404_NOT_FOUND) - - return annotation - - -@book_router.get( - "/search/{query}", response_model=Page[Book], dependencies=[Depends(Params)] -) -async def search_books( - query: str, - request: Request, - allowed_langs: Annotated[frozenset[str], Depends(get_allowed_langs)], -): - return await BookMeiliSearchService.get( - {"query": query, "allowed_langs": allowed_langs}, - request.app.state.redis, - ) diff --git a/fastapi_book_server/app/views/book_annotation.py b/fastapi_book_server/app/views/book_annotation.py deleted file mode 100644 index 6052958..0000000 --- a/fastapi_book_server/app/views/book_annotation.py +++ /dev/null @@ -1,33 +0,0 @@ -from fastapi import APIRouter, Depends, HTTPException, status - -from fastapi_pagination import Page, Params -from fastapi_pagination.ext.ormar import paginate - -from app.depends import check_token -from app.models import BookAnnotation as BookAnnotationDB -from app.serializers.book_annotation import BookAnnotation -from app.utils.transformer import dict_transformer - - -book_annotation_router = APIRouter( - prefix="/api/v1/book_annotations", - tags=["book_annotation"], - dependencies=[Depends(check_token)], -) - - -@book_annotation_router.get( - "/", response_model=Page[BookAnnotation], dependencies=[Depends(Params)] -) -async def get_book_annotations(): - return await paginate(BookAnnotationDB.objects, transformer=dict_transformer) - - -@book_annotation_router.get("/{id}", response_model=BookAnnotation) -async def get_book_annotation(id: int): - annotation = await BookAnnotationDB.objects.get_or_none(id=id) - - if annotation is None: - raise HTTPException(status.HTTP_404_NOT_FOUND) - - return annotation diff --git a/fastapi_book_server/app/views/genre.py b/fastapi_book_server/app/views/genre.py deleted file mode 100644 index fca0265..0000000 --- a/fastapi_book_server/app/views/genre.py +++ /dev/null @@ -1,64 +0,0 @@ -from typing import Annotated - -from fastapi import APIRouter, Depends, HTTPException, Request, status - -from fastapi_pagination import Page, Params -from fastapi_pagination.ext.ormar import paginate - -from app.depends import check_token, get_allowed_langs -from app.filters.genre import get_genre_filter -from app.models import Genre as GenreDB -from app.serializers.genre import Genre -from app.services.genre import GenreMeiliSearchService -from app.utils.transformer import dict_transformer - - -genre_router = APIRouter( - prefix="/api/v1/genres", tags=["genres"], dependencies=[Depends(check_token)] -) - - -PREFETCH_RELATED_FIELDS = ["source"] - - -@genre_router.get("/", response_model=Page[Genre], dependencies=[Depends(Params)]) -async def get_genres(genre_filter: Annotated[dict, Depends(get_genre_filter)]): - return await paginate( - GenreDB.objects.prefetch_related(PREFETCH_RELATED_FIELDS) - .filter(**genre_filter) - .order_by("description"), - transformer=dict_transformer, - ) - - -@genre_router.get("/metas", response_model=list[str]) -async def get_genre_metas(): - genres = await GenreDB.objects.fields("meta").values_list(flatten=True) - genres.sort() - return list(set(genres)) - - -@genre_router.get("/{id}", response_model=Genre) -async def get_genre(id: int): - genre = await GenreDB.objects.prefetch_related(PREFETCH_RELATED_FIELDS).get_or_none( - id=id - ) - - if genre is None: - raise HTTPException(status.HTTP_404_NOT_FOUND) - - return genre - - -@genre_router.get( - "/search/{query}", response_model=Page[Genre], dependencies=[Depends(Params)] -) -async def search_genres( - query: str, - request: Request, - allowed_langs: Annotated[frozenset[str], Depends(get_allowed_langs)], -): - return await GenreMeiliSearchService.get( - {"query": query, "allowed_langs": allowed_langs}, - request.app.state.redis, - ) diff --git a/fastapi_book_server/app/views/healthcheck.py b/fastapi_book_server/app/views/healthcheck.py deleted file mode 100644 index ec89004..0000000 --- a/fastapi_book_server/app/views/healthcheck.py +++ /dev/null @@ -1,9 +0,0 @@ -from fastapi import APIRouter - - -healtcheck_router = APIRouter(tags=["healthcheck"]) - - -@healtcheck_router.get("/healthcheck") -async def healthcheck(): - return "Ok!" diff --git a/fastapi_book_server/app/views/sequence.py b/fastapi_book_server/app/views/sequence.py deleted file mode 100644 index 6b5cef0..0000000 --- a/fastapi_book_server/app/views/sequence.py +++ /dev/null @@ -1,113 +0,0 @@ -from typing import Annotated, cast - -from fastapi import APIRouter, Depends, HTTPException, Request, status - -from fastapi_pagination import Page, Params -from fastapi_pagination.ext.ormar import paginate - -from app.depends import check_token, get_allowed_langs -from app.models import Book as BookDB -from app.models import Sequence as SequenceDB -from app.serializers.sequence import Book as SequenceBook -from app.serializers.sequence import PageWithSequence, Sequence -from app.services.sequence import GetRandomSequenceService, SequenceMeiliSearchService -from app.utils.transformer import dict_transformer - - -sequence_router = APIRouter( - prefix="/api/v1/sequences", - tags=["sequence"], - dependencies=[Depends(check_token)], -) - - -@sequence_router.get("/", response_model=Page[Sequence], dependencies=[Depends(Params)]) -async def get_sequences(): - return await paginate(SequenceDB.objects, transformer=dict_transformer) - - -@sequence_router.get("/random", response_model=Sequence) -async def get_random_sequence( - request: Request, - allowed_langs: Annotated[frozenset[str], Depends(get_allowed_langs)], -): - sequence_id = await GetRandomSequenceService.get_random_id( - {"allowed_langs": allowed_langs}, - request.app.state.redis, - ) - - if sequence_id is None: - raise HTTPException(status.HTTP_204_NO_CONTENT) - - return await SequenceDB.objects.get(id=sequence_id) - - -@sequence_router.get("/{id}", response_model=Sequence) -async def get_sequence(id: int): - return await SequenceDB.objects.get(id=id) - - -@sequence_router.get( - "/{id}/books", - response_model=PageWithSequence, - dependencies=[Depends(Params)], -) -async def get_sequence_books( - id: int, allowed_langs: Annotated[list[str], Depends(get_allowed_langs)] -): - page: Page[SequenceBook] = await paginate( - BookDB.objects.prefetch_related(["source"]) - .select_related(["annotations", "authors", "translators"]) - .filter(sequences__id=id, lang__in=allowed_langs, is_deleted=False) - .order_by("sequences__booksequences__position"), - transformer=dict_transformer, - ) - - sequence = await SequenceDB.objects.get_or_none(id=id) - - return PageWithSequence( - items=page.items, - total=page.total, - page=page.page, - size=page.size, - pages=page.pages, - parent_item=Sequence.parse_obj(sequence.dict()) if sequence else None, - ) - - -@sequence_router.get( - "/{id}/available_types", - response_model=list[str], -) -async def sequence_available_types( - id: int, allowed_langs: Annotated[list[str], Depends(get_allowed_langs)] -) -> list[str]: - books = await ( - BookDB.objects.prefetch_related(["source"]) - .filter(sequences__id=id, lang__in=allowed_langs, is_deleted=False) - .all() - ) - - file_types: set[str] = set() - - for book in books: - for file_type in cast(list[str], book.available_types): - file_types.add(file_type) - - return sorted(file_types) - - -@sequence_router.get( - "/search/{query}", - response_model=Page[Sequence], - dependencies=[Depends(Params)], -) -async def search_sequences( - query: str, - request: Request, - allowed_langs: Annotated[frozenset[str], Depends(get_allowed_langs)], -): - return await SequenceMeiliSearchService.get( - {"query": query, "allowed_langs": allowed_langs}, - request.app.state.redis, - ) diff --git a/fastapi_book_server/app/views/source.py b/fastapi_book_server/app/views/source.py deleted file mode 100644 index 5e08d7d..0000000 --- a/fastapi_book_server/app/views/source.py +++ /dev/null @@ -1,21 +0,0 @@ -from fastapi import APIRouter, Depends - -from fastapi_pagination import Page, Params -from fastapi_pagination.ext.ormar import paginate - -from app.depends import check_token -from app.models import Source as SourceDB -from app.serializers.source import Source -from app.utils.transformer import dict_transformer - - -source_router = APIRouter( - prefix="/api/v1/sources", - tags=["source"], - dependencies=[Depends(check_token)], -) - - -@source_router.get("", response_model=Page[Source], dependencies=[Depends(Params)]) -async def get_sources(): - return await paginate(SourceDB.objects, transformer=dict_transformer) diff --git a/fastapi_book_server/app/views/translation.py b/fastapi_book_server/app/views/translation.py deleted file mode 100644 index 50f8b93..0000000 --- a/fastapi_book_server/app/views/translation.py +++ /dev/null @@ -1,26 +0,0 @@ -from fastapi import APIRouter, Depends - -from fastapi_pagination import Page, Params -from fastapi_pagination.ext.ormar import paginate - -from app.depends import check_token -from app.models import Translation as TranslationDB -from app.serializers.translation import Translation -from app.utils.transformer import dict_transformer - - -translation_router = APIRouter( - prefix="/api/v1/translation", - tags=["translation"], - dependencies=[Depends(check_token)], -) - - -@translation_router.get( - "/", response_model=Page[Translation], dependencies=[Depends(Params)] -) -async def get_translations(): - return await paginate( - TranslationDB.objects.select_related(["book", "author"]), - transformer=dict_transformer, - ) diff --git a/fastapi_book_server/core/app.py b/fastapi_book_server/core/app.py deleted file mode 100644 index 608b8f9..0000000 --- a/fastapi_book_server/core/app.py +++ /dev/null @@ -1,58 +0,0 @@ -from contextlib import asynccontextmanager - -from fastapi import FastAPI -from fastapi.responses import ORJSONResponse - -from fastapi_pagination import add_pagination -from prometheus_fastapi_instrumentator import Instrumentator -from redis import asyncio as aioredis -import sentry_sdk - -from app.views import routers -from core.config import env_config -from core.db import database - - -sentry_sdk.init( - env_config.SENTRY_SDN, -) - - -@asynccontextmanager -async def lifespan(app: FastAPI): - database_ = app.state.database - if not database_.is_connected: - await database_.connect() - - yield - - database_ = app.state.database - if database_.is_connected: - await database_.disconnect() - - await app.state.redis.close() - - -def start_app() -> FastAPI: - app = FastAPI(default_response_class=ORJSONResponse, lifespan=lifespan) - - app.state.database = database - - app.state.redis = aioredis.Redis( - host=env_config.REDIS_HOST, - port=env_config.REDIS_PORT, - db=env_config.REDIS_DB, - password=env_config.REDIS_PASSWORD, - ) - - for router in routers: - app.include_router(router) - - add_pagination(app) - - Instrumentator( - should_ignore_untemplated=True, - excluded_handlers=["/docs", "/metrics", "/healthcheck"], - ).instrument(app).expose(app, include_in_schema=True) - - return app diff --git a/fastapi_book_server/core/auth.py b/fastapi_book_server/core/auth.py deleted file mode 100644 index 7cc07b5..0000000 --- a/fastapi_book_server/core/auth.py +++ /dev/null @@ -1,4 +0,0 @@ -from fastapi.security import APIKeyHeader - - -default_security = APIKeyHeader(name="Authorization") diff --git a/fastapi_book_server/core/config.py b/fastapi_book_server/core/config.py deleted file mode 100644 index 685945a..0000000 --- a/fastapi_book_server/core/config.py +++ /dev/null @@ -1,35 +0,0 @@ -from typing import Optional - -from pydantic import BaseSettings - - -class EnvConfig(BaseSettings): - API_KEY: str - - POSTGRES_USER: str - POSTGRES_PASSWORD: str - POSTGRES_HOST: str - POSTGRES_PORT: int - POSTGRES_DB: str - - REDIS_HOST: str - REDIS_PORT: int - REDIS_DB: int - REDIS_PASSWORD: Optional[str] - - MEILI_HOST: str - MEILI_MASTER_KEY: str - - PUSH_GETAWAY_ENABLED: bool - PUSH_GETAWAY_HOST: str - PUSH_GETAWAY_JOB: str - PUSH_GETAWAY_INTERVAL: int - - SENTRY_SDN: str - - class Config: - env_file = ".env" - env_file_encoding = "utf-8" - - -env_config = EnvConfig() diff --git a/fastapi_book_server/core/db.py b/fastapi_book_server/core/db.py deleted file mode 100644 index 812d2b3..0000000 --- a/fastapi_book_server/core/db.py +++ /dev/null @@ -1,15 +0,0 @@ -from urllib.parse import quote - -from databases import Database -from sqlalchemy import MetaData - -from core.config import env_config - - -DATABASE_URL = ( - f"postgresql://{env_config.POSTGRES_USER}:{quote(env_config.POSTGRES_PASSWORD)}@" - f"{env_config.POSTGRES_HOST}:{env_config.POSTGRES_PORT}/{env_config.POSTGRES_DB}" -) - -metadata = MetaData() -database = Database(DATABASE_URL, min_size=2, max_size=10) diff --git a/fastapi_book_server/main.py b/fastapi_book_server/main.py deleted file mode 100644 index 0a4385b..0000000 --- a/fastapi_book_server/main.py +++ /dev/null @@ -1,4 +0,0 @@ -from core.app import start_app - - -app = start_app() diff --git a/poetry.lock b/poetry.lock deleted file mode 100644 index 413cbe0..0000000 --- a/poetry.lock +++ /dev/null @@ -1,1481 +0,0 @@ -# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. - -[[package]] -name = "alembic" -version = "1.11.2" -description = "A database migration tool for SQLAlchemy." -optional = false -python-versions = ">=3.7" -files = [ - {file = "alembic-1.11.2-py3-none-any.whl", hash = "sha256:7981ab0c4fad4fe1be0cf183aae17689fe394ff874fd2464adb774396faf0796"}, - {file = "alembic-1.11.2.tar.gz", hash = "sha256:678f662130dc540dac12de0ea73de9f89caea9dbea138f60ef6263149bf84657"}, -] - -[package.dependencies] -Mako = "*" -SQLAlchemy = ">=1.3.0" -typing-extensions = ">=4" - -[package.extras] -tz = ["python-dateutil"] - -[[package]] -name = "anyio" -version = "3.6.2" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.6.2" -files = [ - {file = "anyio-3.6.2-py3-none-any.whl", hash = "sha256:fbbe32bd270d2a2ef3ed1c5d45041250284e31fc0a4df4a5a6071842051a51e3"}, - {file = "anyio-3.6.2.tar.gz", hash = "sha256:25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421"}, -] - -[package.dependencies] -idna = ">=2.8" -sniffio = ">=1.1" - -[package.extras] -doc = ["packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["contextlib2", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (<0.15)", "uvloop (>=0.15)"] -trio = ["trio (>=0.16,<0.22)"] - -[[package]] -name = "async-timeout" -version = "4.0.2" -description = "Timeout context manager for asyncio programs" -optional = false -python-versions = ">=3.6" -files = [ - {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"}, - {file = "async_timeout-4.0.2-py3-none-any.whl", hash = "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"}, -] - -[[package]] -name = "asyncpg" -version = "0.26.0" -description = "An asyncio PostgreSQL driver" -optional = false -python-versions = ">=3.6.0" -files = [ - {file = "asyncpg-0.26.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2ed3880b3aec8bda90548218fe0914d251d641f798382eda39a17abfc4910af0"}, - {file = "asyncpg-0.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5bd99ee7a00e87df97b804f178f31086e88c8106aca9703b1d7be5078999e68"}, - {file = "asyncpg-0.26.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:868a71704262834065ca7113d80b1f679609e2df77d837747e3d92150dd5a39b"}, - {file = "asyncpg-0.26.0-cp310-cp310-win32.whl", hash = "sha256:838e4acd72da370ad07243898e886e93d3c0c9413f4444d600ba60a5cc206014"}, - {file = "asyncpg-0.26.0-cp310-cp310-win_amd64.whl", hash = "sha256:a254d09a3a989cc1839ba2c34448b879cdd017b528a0cda142c92fbb6c13d957"}, - {file = "asyncpg-0.26.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3ecbe8ed3af4c739addbfbd78f7752866cce2c4e9cc3f953556e4960349ae360"}, - {file = "asyncpg-0.26.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3ce7d8c0ab4639bbf872439eba86ef62dd030b245ad0e17c8c675d93d7a6b2d"}, - {file = "asyncpg-0.26.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:7129bd809990fd119e8b2b9982e80be7712bb6041cd082be3e415e60e5e2e98f"}, - {file = "asyncpg-0.26.0-cp36-cp36m-win32.whl", hash = "sha256:03f44926fa7ff7ccd59e98f05c7e227e9de15332a7da5bbcef3654bf468ee597"}, - {file = "asyncpg-0.26.0-cp36-cp36m-win_amd64.whl", hash = "sha256:b1f7b173af649b85126429e11a628d01a5b75973d2a55d64dba19ad8f0e9f904"}, - {file = "asyncpg-0.26.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:efe056fd22fc6ed5c1ab353b6510808409566daac4e6f105e2043797f17b8dad"}, - {file = "asyncpg-0.26.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d96cf93e01df9fb03cef5f62346587805e6c0ca6f654c23b8d35315bdc69af59"}, - {file = "asyncpg-0.26.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:235205b60d4d014921f7b1cdca0e19669a9a8978f7606b3eb8237ca95f8e716e"}, - {file = "asyncpg-0.26.0-cp37-cp37m-win32.whl", hash = "sha256:0de408626cfc811ef04f372debfcdd5e4ab5aeb358f2ff14d1bdc246ed6272b5"}, - {file = "asyncpg-0.26.0-cp37-cp37m-win_amd64.whl", hash = "sha256:f92d501bf213b16fabad4fbb0061398d2bceae30ddc228e7314c28dcc6641b79"}, - {file = "asyncpg-0.26.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9acb22a7b6bcca0d80982dce3d67f267d43e960544fb5dd934fd3abe20c48014"}, - {file = "asyncpg-0.26.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e550d8185f2c4725c1e8d3c555fe668b41bd092143012ddcc5343889e1c2a13d"}, - {file = "asyncpg-0.26.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:050e339694f8c5d9aebcf326ca26f6622ef23963a6a3a4f97aeefc743954afd5"}, - {file = "asyncpg-0.26.0-cp38-cp38-win32.whl", hash = "sha256:b0c3f39ebfac06848ba3f1e280cb1fada7cc1229538e3dad3146e8d1f9deb92a"}, - {file = "asyncpg-0.26.0-cp38-cp38-win_amd64.whl", hash = "sha256:49fc7220334cc31d14866a0b77a575d6a5945c0fa3bb67f17304e8b838e2a02b"}, - {file = "asyncpg-0.26.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d156e53b329e187e2dbfca8c28c999210045c45ef22a200b50de9b9e520c2694"}, - {file = "asyncpg-0.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b4051012ca75defa9a1dc6b78185ca58cdc3a247187eb76a6bcf55dfaa2fad4"}, - {file = "asyncpg-0.26.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6d60f15a0ac18c54a6ca6507c28599c06e2e87a0901e7b548f15243d71905b18"}, - {file = "asyncpg-0.26.0-cp39-cp39-win32.whl", hash = "sha256:ede1a3a2c377fe12a3930f4b4dd5340e8b32929541d5db027a21816852723438"}, - {file = "asyncpg-0.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:8e1e79f0253cbd51fc43c4d0ce8804e46ee71f6c173fdc75606662ad18756b52"}, - {file = "asyncpg-0.26.0.tar.gz", hash = "sha256:77e684a24fee17ba3e487ca982d0259ed17bae1af68006f4cf284b23ba20ea2c"}, -] - -[package.extras] -dev = ["Cython (>=0.29.24,<0.30.0)", "Sphinx (>=4.1.2,<4.2.0)", "flake8 (>=3.9.2,<3.10.0)", "pycodestyle (>=2.7.0,<2.8.0)", "pytest (>=6.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)", "uvloop (>=0.15.3)"] -docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] -test = ["flake8 (>=3.9.2,<3.10.0)", "pycodestyle (>=2.7.0,<2.8.0)", "uvloop (>=0.15.3)"] - -[[package]] -name = "camel-converter" -version = "3.0.0" -description = "Converts a string from snake case to camel case or camel case to snake case" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "camel_converter-3.0.0-py3-none-any.whl", hash = "sha256:4b01725c8ccf918752436a8aab595fa153c5123c147225434bf1f40041acb3c7"}, - {file = "camel_converter-3.0.0.tar.gz", hash = "sha256:7f200e1d1067245f39ae2df6c547dc3de8619060012679702f6471187280e6eb"}, -] - -[package.dependencies] -pydantic = {version = ">=1.8.2", optional = true, markers = "extra == \"pydantic\""} - -[package.extras] -pydantic = ["pydantic (>=1.8.2)"] - -[[package]] -name = "certifi" -version = "2023.7.22" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, - {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, -] - -[[package]] -name = "cfgv" -version = "3.3.1" -description = "Validate configuration and produce human readable error messages." -optional = false -python-versions = ">=3.6.1" -files = [ - {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"}, - {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"}, -] - -[[package]] -name = "charset-normalizer" -version = "2.1.1" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -optional = false -python-versions = ">=3.6.0" -files = [ - {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, - {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, -] - -[package.extras] -unicode-backport = ["unicodedata2"] - -[[package]] -name = "click" -version = "8.1.3" -description = "Composable command line interface toolkit" -optional = false -python-versions = ">=3.7" -files = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "databases" -version = "0.6.1" -description = "Async database support for Python." -optional = false -python-versions = ">=3.7" -files = [ - {file = "databases-0.6.1-py3-none-any.whl", hash = "sha256:47fae85d82d8227049f08b154019913c3ad2f6057ceb0b5ebb36703be6f5666b"}, - {file = "databases-0.6.1.tar.gz", hash = "sha256:0a69c6983a27e10a5b75ffa094486f1febadd9d5a8db016e69b8c2f6a354dc30"}, -] - -[package.dependencies] -sqlalchemy = ">=1.4,<1.5" - -[package.extras] -aiomysql = ["aiomysql"] -aiopg = ["aiopg"] -aiosqlite = ["aiosqlite"] -asyncmy = ["asyncmy"] -asyncpg = ["asyncpg"] -mysql = ["aiomysql"] -postgresql = ["asyncpg"] -sqlite = ["aiosqlite"] - -[[package]] -name = "distlib" -version = "0.3.6" -description = "Distribution utilities" -optional = false -python-versions = "*" -files = [ - {file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"}, - {file = "distlib-0.3.6.tar.gz", hash = "sha256:14bad2d9b04d3a36127ac97f30b12a19268f211063d8f8ee4f47108896e11b46"}, -] - -[[package]] -name = "fastapi" -version = "0.101.0" -description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" -optional = false -python-versions = ">=3.7" -files = [ - {file = "fastapi-0.101.0-py3-none-any.whl", hash = "sha256:494eb3494d89e8079c20859d7ca695f66eaccc40f46fe8c75ab6186d15f05ffd"}, - {file = "fastapi-0.101.0.tar.gz", hash = "sha256:ca2ae65fe42f6a34b5cf6c994337149154b1b400c39809d7b2dccdceb5ae77af"}, -] - -[package.dependencies] -pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" -starlette = ">=0.27.0,<0.28.0" -typing-extensions = ">=4.5.0" - -[package.extras] -all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.5)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] - -[[package]] -name = "fastapi-pagination" -version = "0.12.7" -description = "FastAPI pagination" -optional = false -python-versions = ">=3.8,<4.0" -files = [ - {file = "fastapi_pagination-0.12.7-py3-none-any.whl", hash = "sha256:dabf3810343b63841def98862707098f5dac6867c283b118a1b2be4d8bc820df"}, - {file = "fastapi_pagination-0.12.7.tar.gz", hash = "sha256:627e561101c4845a36e1ec1da9d38c967b17dffc760dacacdc5e0e5118cb2334"}, -] - -[package.dependencies] -fastapi = ">=0.93.0" -ormar = {version = ">=0.11.2", optional = true, markers = "extra == \"ormar\" or extra == \"all\""} -pydantic = ">=1.9.1" - -[package.extras] -all = ["SQLAlchemy (>=1.3.20)", "asyncpg (>=0.24.0)", "beanie (>=1.11.9,<2.0.0)", "bunnet (>=1.1.0,<2.0.0)", "databases (>=0.6.0)", "django (<5.0.0)", "mongoengine (>=0.23.1,<0.28.0)", "motor (>=2.5.1,<4.0.0)", "orm (>=0.3.1)", "ormar (>=0.11.2)", "piccolo (>=0.89,<0.120)", "pony (>=0.7.16,<0.8.0)", "scylla-driver (>=3.25.6,<4.0.0)", "sqlakeyset (>=2.0.1680321678,<3.0.0)", "sqlmodel (>=0.0.8,<0.0.9)", "tortoise-orm (>=0.16.18,<0.20.0)"] -asyncpg = ["SQLAlchemy (>=1.3.20)", "asyncpg (>=0.24.0)"] -beanie = ["beanie (>=1.11.9,<2.0.0)"] -bunnet = ["bunnet (>=1.1.0,<2.0.0)"] -databases = ["databases (>=0.6.0)"] -django = ["databases (>=0.6.0)", "django (<5.0.0)"] -mongoengine = ["mongoengine (>=0.23.1,<0.28.0)"] -motor = ["motor (>=2.5.1,<4.0.0)"] -orm = ["databases (>=0.6.0)", "orm (>=0.3.1)"] -ormar = ["ormar (>=0.11.2)"] -piccolo = ["piccolo (>=0.89,<0.120)"] -scylla-driver = ["scylla-driver (>=3.25.6,<4.0.0)"] -sqlalchemy = ["SQLAlchemy (>=1.3.20)", "sqlakeyset (>=2.0.1680321678,<3.0.0)"] -sqlmodel = ["sqlakeyset (>=2.0.1680321678,<3.0.0)", "sqlmodel (>=0.0.8,<0.0.9)"] -tortoise = ["tortoise-orm (>=0.16.18,<0.20.0)"] - -[[package]] -name = "filelock" -version = "3.9.0" -description = "A platform independent file lock." -optional = false -python-versions = ">=3.7" -files = [ - {file = "filelock-3.9.0-py3-none-any.whl", hash = "sha256:f58d535af89bb9ad5cd4df046f741f8553a418c01a7856bf0d173bbc9f6bd16d"}, - {file = "filelock-3.9.0.tar.gz", hash = "sha256:7b319f24340b51f55a2bf7a12ac0755a9b03e718311dac567a0f4f7fabd2f5de"}, -] - -[package.extras] -docs = ["furo (>=2022.12.7)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"] -testing = ["covdefaults (>=2.2.2)", "coverage (>=7.0.1)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-timeout (>=2.1)"] - -[[package]] -name = "greenlet" -version = "2.0.1" -description = "Lightweight in-process concurrent programming" -optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" -files = [ - {file = "greenlet-2.0.1-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:9ed358312e63bf683b9ef22c8e442ef6c5c02973f0c2a939ec1d7b50c974015c"}, - {file = "greenlet-2.0.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:4f09b0010e55bec3239278f642a8a506b91034f03a4fb28289a7d448a67f1515"}, - {file = "greenlet-2.0.1-cp27-cp27m-win32.whl", hash = "sha256:1407fe45246632d0ffb7a3f4a520ba4e6051fc2cbd61ba1f806900c27f47706a"}, - {file = "greenlet-2.0.1-cp27-cp27m-win_amd64.whl", hash = "sha256:3001d00eba6bbf084ae60ec7f4bb8ed375748f53aeaefaf2a37d9f0370558524"}, - {file = "greenlet-2.0.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d566b82e92ff2e09dd6342df7e0eb4ff6275a3f08db284888dcd98134dbd4243"}, - {file = "greenlet-2.0.1-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:0722c9be0797f544a3ed212569ca3fe3d9d1a1b13942d10dd6f0e8601e484d26"}, - {file = "greenlet-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d37990425b4687ade27810e3b1a1c37825d242ebc275066cfee8cb6b8829ccd"}, - {file = "greenlet-2.0.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be35822f35f99dcc48152c9839d0171a06186f2d71ef76dc57fa556cc9bf6b45"}, - {file = "greenlet-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c140e7eb5ce47249668056edf3b7e9900c6a2e22fb0eaf0513f18a1b2c14e1da"}, - {file = "greenlet-2.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d21681f09e297a5adaa73060737e3aa1279a13ecdcfcc6ef66c292cb25125b2d"}, - {file = "greenlet-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fb412b7db83fe56847df9c47b6fe3f13911b06339c2aa02dcc09dce8bbf582cd"}, - {file = "greenlet-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:c6a08799e9e88052221adca55741bf106ec7ea0710bca635c208b751f0d5b617"}, - {file = "greenlet-2.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9e112e03d37987d7b90c1e98ba5e1b59e1645226d78d73282f45b326f7bddcb9"}, - {file = "greenlet-2.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56961cfca7da2fdd178f95ca407fa330c64f33289e1804b592a77d5593d9bd94"}, - {file = "greenlet-2.0.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:13ba6e8e326e2116c954074c994da14954982ba2795aebb881c07ac5d093a58a"}, - {file = "greenlet-2.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bf633a50cc93ed17e494015897361010fc08700d92676c87931d3ea464123ce"}, - {file = "greenlet-2.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9f2c221eecb7ead00b8e3ddb913c67f75cba078fd1d326053225a3f59d850d72"}, - {file = "greenlet-2.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:13ebf93c343dd8bd010cd98e617cb4c1c1f352a0cf2524c82d3814154116aa82"}, - {file = "greenlet-2.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:6f61d71bbc9b4a3de768371b210d906726535d6ca43506737682caa754b956cd"}, - {file = "greenlet-2.0.1-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:2d0bac0385d2b43a7bd1d651621a4e0f1380abc63d6fb1012213a401cbd5bf8f"}, - {file = "greenlet-2.0.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:f6327b6907b4cb72f650a5b7b1be23a2aab395017aa6f1adb13069d66360eb3f"}, - {file = "greenlet-2.0.1-cp35-cp35m-win32.whl", hash = "sha256:81b0ea3715bf6a848d6f7149d25bf018fd24554a4be01fcbbe3fdc78e890b955"}, - {file = "greenlet-2.0.1-cp35-cp35m-win_amd64.whl", hash = "sha256:38255a3f1e8942573b067510f9611fc9e38196077b0c8eb7a8c795e105f9ce77"}, - {file = "greenlet-2.0.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:04957dc96669be041e0c260964cfef4c77287f07c40452e61abe19d647505581"}, - {file = "greenlet-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:4aeaebcd91d9fee9aa768c1b39cb12214b30bf36d2b7370505a9f2165fedd8d9"}, - {file = "greenlet-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:974a39bdb8c90a85982cdb78a103a32e0b1be986d411303064b28a80611f6e51"}, - {file = "greenlet-2.0.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8dca09dedf1bd8684767bc736cc20c97c29bc0c04c413e3276e0962cd7aeb148"}, - {file = "greenlet-2.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4c0757db9bd08470ff8277791795e70d0bf035a011a528ee9a5ce9454b6cba2"}, - {file = "greenlet-2.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:5067920de254f1a2dee8d3d9d7e4e03718e8fd2d2d9db962c8c9fa781ae82a39"}, - {file = "greenlet-2.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:5a8e05057fab2a365c81abc696cb753da7549d20266e8511eb6c9d9f72fe3e92"}, - {file = "greenlet-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:3d75b8d013086b08e801fbbb896f7d5c9e6ccd44f13a9241d2bf7c0df9eda928"}, - {file = "greenlet-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:097e3dae69321e9100202fc62977f687454cd0ea147d0fd5a766e57450c569fd"}, - {file = "greenlet-2.0.1-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:cb242fc2cda5a307a7698c93173d3627a2a90d00507bccf5bc228851e8304963"}, - {file = "greenlet-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:72b00a8e7c25dcea5946692a2485b1a0c0661ed93ecfedfa9b6687bd89a24ef5"}, - {file = "greenlet-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5b0ff9878333823226d270417f24f4d06f235cb3e54d1103b71ea537a6a86ce"}, - {file = "greenlet-2.0.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be9e0fb2ada7e5124f5282d6381903183ecc73ea019568d6d63d33f25b2a9000"}, - {file = "greenlet-2.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b493db84d124805865adc587532ebad30efa68f79ad68f11b336e0a51ec86c2"}, - {file = "greenlet-2.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0459d94f73265744fee4c2d5ec44c6f34aa8a31017e6e9de770f7bcf29710be9"}, - {file = "greenlet-2.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a20d33124935d27b80e6fdacbd34205732660e0a1d35d8b10b3328179a2b51a1"}, - {file = "greenlet-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:ea688d11707d30e212e0110a1aac7f7f3f542a259235d396f88be68b649e47d1"}, - {file = "greenlet-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:afe07421c969e259e9403c3bb658968702bc3b78ec0b6fde3ae1e73440529c23"}, - {file = "greenlet-2.0.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:cd4ccc364cf75d1422e66e247e52a93da6a9b73cefa8cad696f3cbbb75af179d"}, - {file = "greenlet-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:4c8b1c43e75c42a6cafcc71defa9e01ead39ae80bd733a2608b297412beede68"}, - {file = "greenlet-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:659f167f419a4609bc0516fb18ea69ed39dbb25594934bd2dd4d0401660e8a1e"}, - {file = "greenlet-2.0.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:356e4519d4dfa766d50ecc498544b44c0249b6de66426041d7f8b751de4d6b48"}, - {file = "greenlet-2.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:811e1d37d60b47cb8126e0a929b58c046251f28117cb16fcd371eed61f66b764"}, - {file = "greenlet-2.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d38ffd0e81ba8ef347d2be0772e899c289b59ff150ebbbbe05dc61b1246eb4e0"}, - {file = "greenlet-2.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0109af1138afbfb8ae647e31a2b1ab030f58b21dd8528c27beaeb0093b7938a9"}, - {file = "greenlet-2.0.1-cp38-cp38-win32.whl", hash = "sha256:88c8d517e78acdf7df8a2134a3c4b964415b575d2840a2746ddb1cc6175f8608"}, - {file = "greenlet-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:d6ee1aa7ab36475035eb48c01efae87d37936a8173fc4d7b10bb02c2d75dd8f6"}, - {file = "greenlet-2.0.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:b1992ba9d4780d9af9726bbcef6a1db12d9ab1ccc35e5773685a24b7fb2758eb"}, - {file = "greenlet-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:b5e83e4de81dcc9425598d9469a624826a0b1211380ac444c7c791d4a2137c19"}, - {file = "greenlet-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:505138d4fa69462447a562a7c2ef723c6025ba12ac04478bc1ce2fcc279a2db5"}, - {file = "greenlet-2.0.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cce1e90dd302f45716a7715517c6aa0468af0bf38e814ad4eab58e88fc09f7f7"}, - {file = "greenlet-2.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e9744c657d896c7b580455e739899e492a4a452e2dd4d2b3e459f6b244a638d"}, - {file = "greenlet-2.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:662e8f7cad915ba75d8017b3e601afc01ef20deeeabf281bd00369de196d7726"}, - {file = "greenlet-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:41b825d65f31e394b523c84db84f9383a2f7eefc13d987f308f4663794d2687e"}, - {file = "greenlet-2.0.1-cp39-cp39-win32.whl", hash = "sha256:db38f80540083ea33bdab614a9d28bcec4b54daa5aff1668d7827a9fc769ae0a"}, - {file = "greenlet-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:b23d2a46d53210b498e5b701a1913697671988f4bf8e10f935433f6e7c332fb6"}, - {file = "greenlet-2.0.1.tar.gz", hash = "sha256:42e602564460da0e8ee67cb6d7236363ee5e131aa15943b6670e44e5c2ed0f67"}, -] - -[package.extras] -docs = ["Sphinx", "docutils (<0.18)"] -test = ["faulthandler", "objgraph", "psutil"] - -[[package]] -name = "gunicorn" -version = "21.2.0" -description = "WSGI HTTP Server for UNIX" -optional = false -python-versions = ">=3.5" -files = [ - {file = "gunicorn-21.2.0-py3-none-any.whl", hash = "sha256:3213aa5e8c24949e792bcacfc176fef362e7aac80b76c56f6b5122bf350722f0"}, - {file = "gunicorn-21.2.0.tar.gz", hash = "sha256:88ec8bff1d634f98e61b9f65bc4bf3cd918a90806c6f5c48bc5603849ec81033"}, -] - -[package.dependencies] -packaging = "*" - -[package.extras] -eventlet = ["eventlet (>=0.24.1)"] -gevent = ["gevent (>=1.4.0)"] -setproctitle = ["setproctitle"] -tornado = ["tornado (>=0.2)"] - -[[package]] -name = "h11" -version = "0.14.0" -description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false -python-versions = ">=3.7" -files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, -] - -[[package]] -name = "hiredis" -version = "2.1.0" -description = "Python wrapper for hiredis" -optional = false -python-versions = ">=3.7" -files = [ - {file = "hiredis-2.1.0-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:7b339a7542a3f6a10b3bbc157e4abc9bae9628e2df7faf5f8a32f730014719ae"}, - {file = "hiredis-2.1.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:dd82370c2f9f804ec617b95d25edb0fd04882251afb2ecdf08b9ced0c3aa4bcc"}, - {file = "hiredis-2.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:92077511d3a62109d5d11bf584e41264a993ae3c77c72de63c1f741b7809bacb"}, - {file = "hiredis-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6544c7807cbb75bc6ae9ab85773b4413edbcd55342e9e3d7d3f159f677f7428"}, - {file = "hiredis-2.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8181d73f25943fbdca904154e51b845317103cee08116cfae258f96927ce1e74"}, - {file = "hiredis-2.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:040f861e4e43daa9287f3a85979542f9c7ee8cfab695fa662f3b6186c6f7d5e8"}, - {file = "hiredis-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef5ae8c1af82a8000742003cb16a6fa6c57919abb861ab214dcb27db8573ee64"}, - {file = "hiredis-2.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b9aa1b0ec46dec5b05dcec22e50bbd4af33da121fca83bd2601dc60c79183f9"}, - {file = "hiredis-2.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c53c36a630a6c6fd9dfe439f4266e564ca58995015a780c1d964567ebf328466"}, - {file = "hiredis-2.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:05aab35210bd7fbd7bd066efb2a42eb5c2878c2c137a9cff597204be2c07475b"}, - {file = "hiredis-2.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e6097e1cef647c665f71cd0e58346389580db98365e804f7a9ad5d96e66b7150"}, - {file = "hiredis-2.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:32f98370efed38088d000df2eb2c8ed43d93d99bbf4a0a740e15eb4a887cc23f"}, - {file = "hiredis-2.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b85276ed57e0aee8910b48383a38a299851935ba134460bad394988c750985fe"}, - {file = "hiredis-2.1.0-cp310-cp310-win32.whl", hash = "sha256:bd9d99606008a8cfa6b9e950abaa35f5b87496f03e63b73197d02b0fe7ecb6d3"}, - {file = "hiredis-2.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:6a8e796c94b7b8c63c99757d6ec2075069e4c362dfb0f130aaf874422bea3e7d"}, - {file = "hiredis-2.1.0-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:e7bb5cab604fc45b45cee40e84e84d9e30eeb34c571a3784392ae658273bbd23"}, - {file = "hiredis-2.1.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:e0d4b074ff5ebba00933da27a06f3752b8af2448a6aa9dc895d5279f43011530"}, - {file = "hiredis-2.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f0c2dbaffd4a9e8df04731a012c8a67b7517abec7e53bb12c3cd749865c63428"}, - {file = "hiredis-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c19151e79b36e0d849899a21fc10539aa1903af94b31754bddab1bea876cd508"}, - {file = "hiredis-2.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:08ec41519a533f5cd1f1f8bd1797929358117c8e4570b679b469f768b45b7dbf"}, - {file = "hiredis-2.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f0db3667fa8abbd37ac66385b460841029033bfc1ba8d7e5b3ff1e01d3346a"}, - {file = "hiredis-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f592d1522b5981890b34b0b814f4bfa4a68b23ee90f538aac321d17e8bf859c8"}, - {file = "hiredis-2.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dddd2be67de25a62b3bf871f091181c13da3b32186d4be6af49dadbf6fdc266d"}, - {file = "hiredis-2.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4ee8f6d0774cd6179c625688201e961a2d03da212230adaa2193cfb7a04f9169"}, - {file = "hiredis-2.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5000942ffb6b6410ccbc87089c15fde5f48bd205664ee8b3067e6b2fb5689485"}, - {file = "hiredis-2.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:21e0017b8f50abd13b4c4c4218c7dfd5a42623e3255b460dfa5f70b45c4e7c3e"}, - {file = "hiredis-2.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:40b55fb46fcc78b04190176c0ae28bfa3cc7f418fca9df06c037028af5942b6a"}, - {file = "hiredis-2.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:24a55169a7f0bd9458935ac644bf8191f127c8aa50cdd70c0b87928cc515cae5"}, - {file = "hiredis-2.1.0-cp311-cp311-win32.whl", hash = "sha256:bb60f79e8c1eb5971b10fd256764ea0c89c4ad2d55ac4379981f678f349411f2"}, - {file = "hiredis-2.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:b223668844f26034759a6c24a72f0bb8e4fb64a43b27e2f3e8378639eaac1661"}, - {file = "hiredis-2.1.0-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:7f7e7d91d6533fcb1939d467cf8bfb98640edf715897959f31ae83f5ad29aed3"}, - {file = "hiredis-2.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:531d1d3955244831b69272b993e16f93489ce2dadfdf800ac856dc2d9a43d353"}, - {file = "hiredis-2.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66ffcbfc4db52dd87cdfd53bda45881ab3ab07c80ec43244fd8d70ee69d42c01"}, - {file = "hiredis-2.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:023b3b3ac410d6cfdb45ee943b8c528c90379f31419a1fd229888aa2b965732d"}, - {file = "hiredis-2.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c972385a0647120d4b0fe0e9567257cad7b2577b9f1315815713c571af0e778d"}, - {file = "hiredis-2.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32893825426e73d57b3290b68110dd76229945e6c79b08a37795f536501935c4"}, - {file = "hiredis-2.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:262148f9b616c0cdd0f2c6bda45cd0f1ce6ce2d1974efd296b85b44e5c7567c2"}, - {file = "hiredis-2.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9d601c27b9599fe52cade3096351f92f665e527d29af8d3e29353a76bfcf5615"}, - {file = "hiredis-2.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:d248acc7d7713c1b3d48ed8ea67d6ba43b104aa67d63078846a3590adbab6b73"}, - {file = "hiredis-2.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:969ffe37a8980a6e5404993ccfe605a40fa6732fa6d7b26a1a718c9121197002"}, - {file = "hiredis-2.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:288d5d0566d3cbcd800e46c7a547428d321842898b8c7de037a7e78b5644e88a"}, - {file = "hiredis-2.1.0-cp37-cp37m-win32.whl", hash = "sha256:06cb776d3cd3cbec86010f1bab6895ee16af8036aae8c3594a5e96c24f0f83a5"}, - {file = "hiredis-2.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:6766376dc43ef186113422ecacec0ece0d4b12c0e5f4b556669e639b20ccabb1"}, - {file = "hiredis-2.1.0-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:41afba30304adcbe1c93fc8272a7169b7fc4e4d3d470ad8babd391678a519d76"}, - {file = "hiredis-2.1.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:6df0115f8b0766cd3d12416e2e2e914efed5b1a1a27605c9f37bc92de086877a"}, - {file = "hiredis-2.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5d7d7078f3b841ad86e35459e9f1a49db6d793b796a25fe866333166196d9fec"}, - {file = "hiredis-2.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:835c4cbf8b38c83240b3eb9bd575cd1bfefe5ea5c46cc5ac2bf2d1f47d1fd696"}, - {file = "hiredis-2.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:718589c48e97820bdc2a99e2621b5039884cc23199213756054d10cd309ad56c"}, - {file = "hiredis-2.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2d96be6917ea8f753691a4674f682dd5e145b70edab28c05aa5552ae873e843"}, - {file = "hiredis-2.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5fe1bb4b1525751f3050337097b3b2bfe445836e59a5a0984928dd0797f9abf"}, - {file = "hiredis-2.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91dc73310b92b4aeccffdcd4a762955fe71380f5eaa4e242ee95019e41519101"}, - {file = "hiredis-2.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:bb858218de60a930a164a991fff001c70b0c3d923d3ae40fef2acf3321126b00"}, - {file = "hiredis-2.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:53040c3b3488b52f4609775453fc759262f2885b733150ee2e1d88257fdafed8"}, - {file = "hiredis-2.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:a1c9b7d6d7bf35e1e2217b2847710154b11d25bf86b77bb7e190161f8b89917e"}, - {file = "hiredis-2.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:dfbe939fdddbc7b90cab4124f3ddd6391099fb964f6dab3386aa8cf56f37b5ba"}, - {file = "hiredis-2.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3a51cb4ea466276a845a940931357b4a876f903eabde514ba95e45050e1c2150"}, - {file = "hiredis-2.1.0-cp38-cp38-win32.whl", hash = "sha256:8bce4c687136bf13df76072072b9baadbd52f7d1b143fbbda96387f50e8ebaeb"}, - {file = "hiredis-2.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:1f94684b13fbbee1239303018d5ea900d786e486cdb130cde3144d53f4e262e4"}, - {file = "hiredis-2.1.0-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:879668ffab582bdffd9f10f6c8797aac055db183f266e3aa3a6438ff0768bc29"}, - {file = "hiredis-2.1.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f1d5a99de0fd02438f251e50ec64936d22d542c8e5d80bdec236f9713eeef334"}, - {file = "hiredis-2.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab622bcddcf334b4b1fc4b22e163e93160e3afdd7feaedd77ac6f258e0c77b68"}, - {file = "hiredis-2.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:964c4f23ff450fb8d73edf06fc7475a4e81a3f9b03a9a04a907ec81c84052fcf"}, - {file = "hiredis-2.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9f8b8daef346ffc0268d7086c213ab24c2a3fcbd4249eacfbb3635602c79d20"}, - {file = "hiredis-2.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e2039cdaa2e6656eae4a2e2537ed77e27f29b7487b97ce7ae6a3cb88d01b968"}, - {file = "hiredis-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43d3168da0a81fa0a9e4bc6e14316beac8e5f1b439ca5cc5af7f9a558cfba741"}, - {file = "hiredis-2.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0021ba034b74c5006f62e4cfdd79d04c7c720731eda256ce29d769ac6483adc3"}, - {file = "hiredis-2.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:39a1bb45bcd698baf70ad4e9a94af164525bf053caea7df3777172d20d69538a"}, - {file = "hiredis-2.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c1b636b05777536a83b4cced157cbdc2d0012d494a9ec2f7b7e07c54296cd773"}, - {file = "hiredis-2.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:58a7ceb71f967fcc1878fb64666a12fbc5f243ab00d0653d3752a811941d8261"}, - {file = "hiredis-2.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:c5263c676dc4d55202e7ca0429b949fc6ba7c0dd3a3a2b80538593ab27d82836"}, - {file = "hiredis-2.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b5879d13025b04903ddf71921812db27fe1156a0952ad253014354d72463aaa9"}, - {file = "hiredis-2.1.0-cp39-cp39-win32.whl", hash = "sha256:9259f637d77544ffeb97acb0a87fdd192a8aced7a2fbd7439160dbee8341d446"}, - {file = "hiredis-2.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:fb818b6e0981e16dfdfc9e507c9842f8d210e6ecaf3edb8ac3039dbd24768839"}, - {file = "hiredis-2.1.0-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:648d4648bf6b3dcc418a974df143b2f96627ab8b50bda23a57759c273880ecfb"}, - {file = "hiredis-2.1.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:654949cfc0bc76a5292b6ac111113b2eafb0739e0496495368981ea2e80bf4ec"}, - {file = "hiredis-2.1.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f2a98b835c2088998a47da51b1b3661b587b2d4b3305d03fc9893888cc2aa54"}, - {file = "hiredis-2.1.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7222bd9243387d778245619d0ac62d35cf72ee746ec0efb7b9b230ae3e0c3a39"}, - {file = "hiredis-2.1.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:778f6de73c3abd67d447a3442f89e7d43a8de1eb5093f416af14dddc1d5c9cb5"}, - {file = "hiredis-2.1.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c4cfb61fe642f30a22789055847004393bc65b5686988c64191e379ea4ccd069"}, - {file = "hiredis-2.1.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03b6bef7eb50415aca87200a511d66a2fd69f1fcc75cfe1408e1201cbe28ddfb"}, - {file = "hiredis-2.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3195e13a700f6ff35894c4920fcce8f6c2b01cdbc01f76fe567753c495849e9b"}, - {file = "hiredis-2.1.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19f724405c808a89db422ed1010caab80a16d3e5b49632356ae7912513b6d58e"}, - {file = "hiredis-2.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8ecebeff966b412138b0cd105d7572f8d5e65e96355af699863890f8370707e6"}, - {file = "hiredis-2.1.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:4f34eefaf164bf43b29ccc809c168248eb95001837ed0e9e3279891f57ae2fab"}, - {file = "hiredis-2.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11fad16beb9d623ea423c9129bab0e392ea4c84363d61c125f679be3d029442f"}, - {file = "hiredis-2.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c763eb9a1414c4d665945c70ae2ef74a843600667b0069fe90e2aabc78e5411"}, - {file = "hiredis-2.1.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edb7f156a8f8a1999574f27bda67dd2bff2d5b180bb6aed996a1792cafbcc668"}, - {file = "hiredis-2.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e057d5545189d4c9e22ae0f7dc283ea0a225f56999511022c062cce7f9589d69"}, -] - -[[package]] -name = "httpcore" -version = "0.16.3" -description = "A minimal low-level HTTP client." -optional = false -python-versions = ">=3.7" -files = [ - {file = "httpcore-0.16.3-py3-none-any.whl", hash = "sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0"}, - {file = "httpcore-0.16.3.tar.gz", hash = "sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb"}, -] - -[package.dependencies] -anyio = ">=3.0,<5.0" -certifi = "*" -h11 = ">=0.13,<0.15" -sniffio = "==1.*" - -[package.extras] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] - -[[package]] -name = "httptools" -version = "0.5.0" -description = "A collection of framework independent HTTP protocol utils." -optional = false -python-versions = ">=3.5.0" -files = [ - {file = "httptools-0.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8f470c79061599a126d74385623ff4744c4e0f4a0997a353a44923c0b561ee51"}, - {file = "httptools-0.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e90491a4d77d0cb82e0e7a9cb35d86284c677402e4ce7ba6b448ccc7325c5421"}, - {file = "httptools-0.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1d2357f791b12d86faced7b5736dea9ef4f5ecdc6c3f253e445ee82da579449"}, - {file = "httptools-0.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f90cd6fd97c9a1b7fe9215e60c3bd97336742a0857f00a4cb31547bc22560c2"}, - {file = "httptools-0.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5230a99e724a1bdbbf236a1b58d6e8504b912b0552721c7c6b8570925ee0ccde"}, - {file = "httptools-0.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3a47a34f6015dd52c9eb629c0f5a8a5193e47bf2a12d9a3194d231eaf1bc451a"}, - {file = "httptools-0.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:24bb4bb8ac3882f90aa95403a1cb48465de877e2d5298ad6ddcfdebec060787d"}, - {file = "httptools-0.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e67d4f8734f8054d2c4858570cc4b233bf753f56e85217de4dfb2495904cf02e"}, - {file = "httptools-0.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7e5eefc58d20e4c2da82c78d91b2906f1a947ef42bd668db05f4ab4201a99f49"}, - {file = "httptools-0.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0297822cea9f90a38df29f48e40b42ac3d48a28637368f3ec6d15eebefd182f9"}, - {file = "httptools-0.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:557be7fbf2bfa4a2ec65192c254e151684545ebab45eca5d50477d562c40f986"}, - {file = "httptools-0.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:54465401dbbec9a6a42cf737627fb0f014d50dc7365a6b6cd57753f151a86ff0"}, - {file = "httptools-0.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4d9ebac23d2de960726ce45f49d70eb5466725c0087a078866043dad115f850f"}, - {file = "httptools-0.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:e8a34e4c0ab7b1ca17b8763613783e2458e77938092c18ac919420ab8655c8c1"}, - {file = "httptools-0.5.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f659d7a48401158c59933904040085c200b4be631cb5f23a7d561fbae593ec1f"}, - {file = "httptools-0.5.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef1616b3ba965cd68e6f759eeb5d34fbf596a79e84215eeceebf34ba3f61fdc7"}, - {file = "httptools-0.5.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3625a55886257755cb15194efbf209584754e31d336e09e2ffe0685a76cb4b60"}, - {file = "httptools-0.5.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:72ad589ba5e4a87e1d404cc1cb1b5780bfcb16e2aec957b88ce15fe879cc08ca"}, - {file = "httptools-0.5.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:850fec36c48df5a790aa735417dca8ce7d4b48d59b3ebd6f83e88a8125cde324"}, - {file = "httptools-0.5.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f222e1e9d3f13b68ff8a835574eda02e67277d51631d69d7cf7f8e07df678c86"}, - {file = "httptools-0.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3cb8acf8f951363b617a8420768a9f249099b92e703c052f9a51b66342eea89b"}, - {file = "httptools-0.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:550059885dc9c19a072ca6d6735739d879be3b5959ec218ba3e013fd2255a11b"}, - {file = "httptools-0.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a04fe458a4597aa559b79c7f48fe3dceabef0f69f562daf5c5e926b153817281"}, - {file = "httptools-0.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d0c1044bce274ec6711f0770fd2d5544fe392591d204c68328e60a46f88843b"}, - {file = "httptools-0.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c6eeefd4435055a8ebb6c5cc36111b8591c192c56a95b45fe2af22d9881eee25"}, - {file = "httptools-0.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:5b65be160adcd9de7a7e6413a4966665756e263f0d5ddeffde277ffeee0576a5"}, - {file = "httptools-0.5.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fe9c766a0c35b7e3d6b6939393c8dfdd5da3ac5dec7f971ec9134f284c6c36d6"}, - {file = "httptools-0.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:85b392aba273566c3d5596a0a490978c085b79700814fb22bfd537d381dd230c"}, - {file = "httptools-0.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5e3088f4ed33947e16fd865b8200f9cfae1144f41b64a8cf19b599508e096bc"}, - {file = "httptools-0.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c2a56b6aad7cc8f5551d8e04ff5a319d203f9d870398b94702300de50190f63"}, - {file = "httptools-0.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9b571b281a19762adb3f48a7731f6842f920fa71108aff9be49888320ac3e24d"}, - {file = "httptools-0.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa47ffcf70ba6f7848349b8a6f9b481ee0f7637931d91a9860a1838bfc586901"}, - {file = "httptools-0.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:bede7ee075e54b9a5bde695b4fc8f569f30185891796b2e4e09e2226801d09bd"}, - {file = "httptools-0.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:64eba6f168803a7469866a9c9b5263a7463fa8b7a25b35e547492aa7322036b6"}, - {file = "httptools-0.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4b098e4bb1174096a93f48f6193e7d9aa7071506a5877da09a783509ca5fff42"}, - {file = "httptools-0.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9423a2de923820c7e82e18980b937893f4aa8251c43684fa1772e341f6e06887"}, - {file = "httptools-0.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca1b7becf7d9d3ccdbb2f038f665c0f4857e08e1d8481cbcc1a86a0afcfb62b2"}, - {file = "httptools-0.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:50d4613025f15f4b11f1c54bbed4761c0020f7f921b95143ad6d58c151198142"}, - {file = "httptools-0.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8ffce9d81c825ac1deaa13bc9694c0562e2840a48ba21cfc9f3b4c922c16f372"}, - {file = "httptools-0.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:1af91b3650ce518d226466f30bbba5b6376dbd3ddb1b2be8b0658c6799dd450b"}, - {file = "httptools-0.5.0.tar.gz", hash = "sha256:295874861c173f9101960bba332429bb77ed4dcd8cdf5cee9922eb00e4f6bc09"}, -] - -[package.extras] -test = ["Cython (>=0.29.24,<0.30.0)"] - -[[package]] -name = "httpx" -version = "0.24.1" -description = "The next generation HTTP client." -optional = false -python-versions = ">=3.7" -files = [ - {file = "httpx-0.24.1-py3-none-any.whl", hash = "sha256:06781eb9ac53cde990577af654bd990a4949de37a28bdb4a230d434f3a30b9bd"}, - {file = "httpx-0.24.1.tar.gz", hash = "sha256:5853a43053df830c20f8110c5e69fe44d035d850b2dfe795e196f00fdb774bdd"}, -] - -[package.dependencies] -certifi = "*" -httpcore = ">=0.15.0,<0.18.0" -idna = "*" -sniffio = "*" - -[package.extras] -brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] -http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] - -[[package]] -name = "identify" -version = "2.5.12" -description = "File identification library for Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "identify-2.5.12-py2.py3-none-any.whl", hash = "sha256:e8a400c3062d980243d27ce10455a52832205649bbcaf27ffddb3dfaaf477bad"}, - {file = "identify-2.5.12.tar.gz", hash = "sha256:0bc96b09c838310b6fcfcc61f78a981ea07f94836ef6ef553da5bb5d4745d662"}, -] - -[package.extras] -license = ["ukkonen"] - -[[package]] -name = "idna" -version = "3.4" -description = "Internationalized Domain Names in Applications (IDNA)" -optional = false -python-versions = ">=3.5" -files = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, -] - -[[package]] -name = "Mako" -version = "1.2.4" -description = "A super-fast templating language that borrows the best ideas from the existing templating languages." -optional = false -python-versions = ">=3.7" -files = [ - {file = "Mako-1.2.4-py3-none-any.whl", hash = "sha256:c97c79c018b9165ac9922ae4f32da095ffd3c4e6872b45eded42926deea46818"}, - {file = "Mako-1.2.4.tar.gz", hash = "sha256:d60a3903dc3bb01a18ad6a89cdbe2e4eadc69c0bc8ef1e3773ba53d44c3f7a34"}, -] - -[package.dependencies] -MarkupSafe = ">=0.9.2" - -[package.extras] -babel = ["Babel"] -lingua = ["lingua"] -testing = ["pytest"] - -[[package]] -name = "MarkupSafe" -version = "2.1.1" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, - {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, -] - -[[package]] -name = "meilisearch" -version = "0.28.2" -description = "The python client for Meilisearch API." -optional = false -python-versions = ">=3.8" -files = [ - {file = "meilisearch-0.28.2-py3-none-any.whl", hash = "sha256:69997e0ca3c9bbdb1159bf8e491937f04d07350a3133ef74079084cef53649b6"}, - {file = "meilisearch-0.28.2.tar.gz", hash = "sha256:555a9df22ec446c330de3939622b42cd7a1404511027b3e0b2ea24840427e5ee"}, -] - -[package.dependencies] -camel-converter = {version = "*", extras = ["pydantic"]} -requests = "*" - -[[package]] -name = "nodeenv" -version = "1.7.0" -description = "Node.js virtual environment builder" -optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" -files = [ - {file = "nodeenv-1.7.0-py2.py3-none-any.whl", hash = "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e"}, - {file = "nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"}, -] - -[package.dependencies] -setuptools = "*" - -[[package]] -name = "orjson" -version = "3.9.4" -description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" -optional = false -python-versions = ">=3.7" -files = [ - {file = "orjson-3.9.4-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2e83ec1ee66d83b558a6d273d8a01b86563daa60bea9bc040e2c1cb8008de61f"}, - {file = "orjson-3.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32a9e0f140c7d0d52f79553cabd1a471f6a4f187c59742239939f1139258a053"}, - {file = "orjson-3.9.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fb429c56ea645e084e34976c2ea0efca7661ee961f61e51405f28bc5a9d1fb24"}, - {file = "orjson-3.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2fb7963c17ab347428412a0689f5c89ea480f5d5f7ba3e46c6c2f14f3159ee4"}, - {file = "orjson-3.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:224ad19dcdc21bb220d893807f2563e219319a8891ead3c54243b51a4882d767"}, - {file = "orjson-3.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4974cc2ebb53196081fef96743c02c8b073242b20a40b65d2aa2365ba8c949df"}, - {file = "orjson-3.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b39747f8e57728b9d8c26bd1d28e9a31c028717617a5938a179244b9436c0b31"}, - {file = "orjson-3.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0a31c2cab0ba86998205c2eba550c178a8b4ee7905cadeb402eed45392edb178"}, - {file = "orjson-3.9.4-cp310-none-win32.whl", hash = "sha256:04cd7f4a4f4cd2fe43d104eb70e7435c6fcbdde7aa0cde4230e444fbc66924d3"}, - {file = "orjson-3.9.4-cp310-none-win_amd64.whl", hash = "sha256:4fdb59cfa00e10c82e09d1c32a9ce08a38bd29496ba20a73cd7f498e3a0a5024"}, - {file = "orjson-3.9.4-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:daeed2502ddf1f2b29ec8da2fe2ea82807a5c4acf869608ce6c476db8171d070"}, - {file = "orjson-3.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73d9507a547202f0dd0672e529ce3ca45582d152369c684a9ce75677ce5ae089"}, - {file = "orjson-3.9.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144a3b8c7cbdd301e1b8cd7dd33e3cbfe7b011df2bebd45b84bacc8cb490302d"}, - {file = "orjson-3.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ef7119ebc9b76d5e37c330596616c697d1957779c916aec30cefd28df808f796"}, - {file = "orjson-3.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b75f0fc7a64a95027c6f0c70f17969299bdf2b6a85e342b29fc23be2788bad6f"}, - {file = "orjson-3.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e4b20164809b21966b63e063f894927bc85391e60d0a96fa0bb552090f1319c"}, - {file = "orjson-3.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e7c3b7e29572ef2d845a59853475f40fdabec53b8b7d6effda4bb26119c07f5"}, - {file = "orjson-3.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d73c0fd54a52a1a1abfad69d4f1dfb7048cd0b3ef1828ddb4920ef2d3739d8fb"}, - {file = "orjson-3.9.4-cp311-none-win32.whl", hash = "sha256:e12492ce65cb10f385e70a88badc6046bc720fa7d468db27b7429d85d41beaeb"}, - {file = "orjson-3.9.4-cp311-none-win_amd64.whl", hash = "sha256:3b9f8bf43a5367d5522f80e7d533c98d880868cd0b640b9088c9237306eca6e8"}, - {file = "orjson-3.9.4-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:0b400cf89c15958cd829c8a4ade8f5dd73588e63d2fb71a00483e7a74e9f92da"}, - {file = "orjson-3.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23d3b6f2706cb324661899901e6b1fcaee4f5aac7d7588306df3f43e68173840"}, - {file = "orjson-3.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3932b06abf49135c93816c74139c7937fa54079fce3f44db2d598859894c344a"}, - {file = "orjson-3.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:562cf24f9f11df8099e0e78859ba6729e7caa25c2f3947cb228d9152946c854b"}, - {file = "orjson-3.9.4-cp312-none-win_amd64.whl", hash = "sha256:a533e664a0e3904307d662c5d45775544dc2b38df6e39e213ff6a86ceaa3d53c"}, - {file = "orjson-3.9.4-cp37-cp37m-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:149d1b7630771222f73ecb024ab5dd8e7f41502402b02015494d429bacc4d5c1"}, - {file = "orjson-3.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:004f0d307473af210717260dab2ddceab26750ef5d2c6b1f7454c33f7bb69f0c"}, - {file = "orjson-3.9.4-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ba21fe581a83555024f3cfc9182a2390a61bc50430364855022c518b8ba285a4"}, - {file = "orjson-3.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1fb36efdf2a35286fb87cfaa195fc34621389da1c7b28a8eb51a4d212d60e56d"}, - {file = "orjson-3.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:644728d803200d7774164d252a247e2fcb0d19e4ef7a4a19a1a139ae472c551b"}, - {file = "orjson-3.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bae10f4e7a9145b120e37b6456f1d3853a953e5131fe4740a764e46420289f5"}, - {file = "orjson-3.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c416c50f63bfcf453b6e28d1df956938486191fd1a15aeb95107e810e6e219c8"}, - {file = "orjson-3.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:220ca4125416636a3d6b53a77d50434987a83da243f9080ee4cce7ac6a34bb4a"}, - {file = "orjson-3.9.4-cp37-none-win32.whl", hash = "sha256:bcda6179eb863c295eb5ea832676d33ef12c04d227b4c98267876c8322e5a96e"}, - {file = "orjson-3.9.4-cp37-none-win_amd64.whl", hash = "sha256:3d947366127abef192419257eb7db7fcee0841ced2b49ccceba43b65e9ce5e3f"}, - {file = "orjson-3.9.4-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a7d029fc34a516f7eae29b778b30371fcb621134b2acfe4c51c785102aefc6cf"}, - {file = "orjson-3.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c65df12f92e771361dca45765fcac3d97491799ee8ab3c6c5ecf0155a397a313"}, - {file = "orjson-3.9.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b749d06a3d84ac27311cb85fb5e8f965efd1c5f27556ad8fcfd1853c323b4d54"}, - {file = "orjson-3.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:161cc72dd3ff569fd67da4af3a23c0c837029085300f0cebc287586ae3b559e0"}, - {file = "orjson-3.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:edcbccfe852d1d3d56cc8bfc5fa3688c866619328a73cb2394e79b29b4ab24d2"}, - {file = "orjson-3.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0725260a12d7102b6e66f9925a027f55567255d8455f8288b02d5eedc8925c3e"}, - {file = "orjson-3.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:53b417cc9465dbb42ec9cd7be744a921a0ce583556315d172a246d6e71aa043b"}, - {file = "orjson-3.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9ab3720fba68cc1c0bad00803d2c5e2c70177da5af12c45e18cc4d14426d56d8"}, - {file = "orjson-3.9.4-cp38-none-win32.whl", hash = "sha256:94d15ee45c2aaed334688e511aa73b4681f7c08a0810884c6b3ae5824dea1222"}, - {file = "orjson-3.9.4-cp38-none-win_amd64.whl", hash = "sha256:336ec8471102851f0699198031924617b7a77baadea889df3ffda6000bd59f4c"}, - {file = "orjson-3.9.4-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2f57ccb50e9e123709e9f2d7b1a9e09e694e49d1fa5c5585e34b8e3f01929dc3"}, - {file = "orjson-3.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e876ef36801b3d4d3a4b0613b6144b0b47f13f3043fd1fcdfafd783c174b538"}, - {file = "orjson-3.9.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f009c1a02773bdecdd1157036918fef1da47f7193d4ad599c9edb1e1960a0491"}, - {file = "orjson-3.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f0a4cf31bfa94cd235aa50030bef3df529e4eb2893ea6a7771c0fb087e4e53b2"}, - {file = "orjson-3.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c32dea3b27a97ac88783c1eb61ccb531865bf478a37df3707cbc96ca8f34a04"}, - {file = "orjson-3.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:264637cad35a1755ab90a8ea290076d444deda20753e55a0eb75496a4645f7bc"}, - {file = "orjson-3.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a4f12e9ec62679c3f2717d9ec41b497a2c2af0b1361229db0dc86ef078a4c034"}, - {file = "orjson-3.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c4fcd1ac0b7850f85398fd9fdbc7150ac4e82d2ae6754cc6acaf49ca7c30d79a"}, - {file = "orjson-3.9.4-cp39-none-win32.whl", hash = "sha256:b5b5038187b74e2d33e5caee8a7e83ddeb6a21da86837fa2aac95c69aeb366e6"}, - {file = "orjson-3.9.4-cp39-none-win_amd64.whl", hash = "sha256:915da36bc93ef0c659fa50fe7939d4f208804ad252fc4fc8d55adbbb82293c48"}, - {file = "orjson-3.9.4.tar.gz", hash = "sha256:a4c9254d21fc44526a3850355b89afd0d00ed73bdf902a5ab416df14a61eac6b"}, -] - -[[package]] -name = "ormar" -version = "0.12.2" -description = "An async ORM with fastapi in mind and pydantic validation." -optional = false -python-versions = ">=3.7.0,<4.0.0" -files = [ - {file = "ormar-0.12.2-py3-none-any.whl", hash = "sha256:8af45d1c28811d73c2c5015bd0a4353b4c4cb54a69bcd2eecac276922e2de19c"}, - {file = "ormar-0.12.2.tar.gz", hash = "sha256:0cd60ee2106c8215486d9654e39cf8612837c16b7deaf2680c35eb55b06abf9d"}, -] - -[package.dependencies] -asyncpg = {version = ">=0.24,<0.28", optional = true, markers = "extra == \"postgresql\" or extra == \"postgres\" or extra == \"all\""} -databases = ">=0.3.2,<0.5.0 || >0.5.0,<0.5.1 || >0.5.1,<0.5.2 || >0.5.2,<0.5.3 || >0.5.3,<0.6.3" -psycopg2-binary = {version = ">=2.9.1,<3.0.0", optional = true, markers = "extra == \"postgresql\" or extra == \"postgres\" or extra == \"aiopg\" or extra == \"all\""} -pydantic = ">=1.6.1,<1.7 || >1.7,<1.7.1 || >1.7.1,<1.7.2 || >1.7.2,<1.7.3 || >1.7.3,<1.8 || >1.8,<1.8.1 || >1.8.1,<1.10.9" -SQLAlchemy = ">=1.3.18,<1.4.42" - -[package.extras] -aiopg = ["aiopg (>=1.3.3,<2.0.0)", "psycopg2-binary (>=2.9.1,<3.0.0)"] -all = ["PyMySQL (>=0.9)", "aiomysql (>=0.1.0)", "aiopg (>=1.3.3,<2.0.0)", "aiosqlite (>=0.17,<0.20)", "asyncpg (>=0.24,<0.28)", "cryptography (>=35,<41)", "mysqlclient (>=2.1.0,<3.0.0)", "orjson (>=3.6.4)", "psycopg2-binary (>=2.9.1,<3.0.0)"] -crypto = ["cryptography (>=35,<41)"] -mysql = ["PyMySQL (>=0.9)", "aiomysql (>=0.1.0)"] -orjson = ["orjson (>=3.6.4)"] -postgres = ["asyncpg (>=0.24,<0.28)", "psycopg2-binary (>=2.9.1,<3.0.0)"] -postgresql = ["asyncpg (>=0.24,<0.28)", "psycopg2-binary (>=2.9.1,<3.0.0)"] -sqlite = ["aiosqlite (>=0.17,<0.20)"] - -[[package]] -name = "packaging" -version = "23.1" -description = "Core utilities for Python packages" -optional = false -python-versions = ">=3.7" -files = [ - {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, - {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, -] - -[[package]] -name = "platformdirs" -version = "2.6.2" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -optional = false -python-versions = ">=3.7" -files = [ - {file = "platformdirs-2.6.2-py3-none-any.whl", hash = "sha256:83c8f6d04389165de7c9b6f0c682439697887bca0aa2f1c87ef1826be3584490"}, - {file = "platformdirs-2.6.2.tar.gz", hash = "sha256:e1fea1fe471b9ff8332e229df3cb7de4f53eeea4998d3b6bfff542115e998bd2"}, -] - -[package.extras] -docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] - -[[package]] -name = "pre-commit" -version = "2.21.0" -description = "A framework for managing and maintaining multi-language pre-commit hooks." -optional = false -python-versions = ">=3.7" -files = [ - {file = "pre_commit-2.21.0-py2.py3-none-any.whl", hash = "sha256:e2f91727039fc39a92f58a588a25b87f936de6567eed4f0e673e0507edc75bad"}, - {file = "pre_commit-2.21.0.tar.gz", hash = "sha256:31ef31af7e474a8d8995027fefdfcf509b5c913ff31f2015b4ec4beb26a6f658"}, -] - -[package.dependencies] -cfgv = ">=2.0.0" -identify = ">=1.0.0" -nodeenv = ">=0.11.1" -pyyaml = ">=5.1" -virtualenv = ">=20.10.0" - -[[package]] -name = "prometheus-client" -version = "0.15.0" -description = "Python client for the Prometheus monitoring system." -optional = false -python-versions = ">=3.6" -files = [ - {file = "prometheus_client-0.15.0-py3-none-any.whl", hash = "sha256:db7c05cbd13a0f79975592d112320f2605a325969b270a94b71dcabc47b931d2"}, - {file = "prometheus_client-0.15.0.tar.gz", hash = "sha256:be26aa452490cfcf6da953f9436e95a9f2b4d578ca80094b4458930e5f584ab1"}, -] - -[package.extras] -twisted = ["twisted"] - -[[package]] -name = "prometheus-fastapi-instrumentator" -version = "6.1.0" -description = "Instrument your FastAPI with Prometheus metrics." -optional = false -python-versions = ">=3.7.0,<4.0.0" -files = [ - {file = "prometheus_fastapi_instrumentator-6.1.0-py3-none-any.whl", hash = "sha256:2279ac1cf5b9566a4c3a07f78c9c5ee19648ed90976ab87d73d672abc1bfa017"}, - {file = "prometheus_fastapi_instrumentator-6.1.0.tar.gz", hash = "sha256:1820d7a90389ce100f7d1285495ead388818ae0882e761c1f3e6e62a410bdf13"}, -] - -[package.dependencies] -fastapi = ">=0.38.1,<1.0.0" -prometheus-client = ">=0.8.0,<1.0.0" - -[[package]] -name = "psycopg2-binary" -version = "2.9.5" -description = "psycopg2 - Python-PostgreSQL Database Adapter" -optional = false -python-versions = ">=3.6" -files = [ - {file = "psycopg2-binary-2.9.5.tar.gz", hash = "sha256:33e632d0885b95a8b97165899006c40e9ecdc634a529dca7b991eb7de4ece41c"}, - {file = "psycopg2_binary-2.9.5-cp310-cp310-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:0775d6252ccb22b15da3b5d7adbbf8cfe284916b14b6dc0ff503a23edb01ee85"}, - {file = "psycopg2_binary-2.9.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2ec46ed947801652c9643e0b1dc334cfb2781232e375ba97312c2fc256597632"}, - {file = "psycopg2_binary-2.9.5-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3520d7af1ebc838cc6084a3281145d5cd5bdd43fdef139e6db5af01b92596cb7"}, - {file = "psycopg2_binary-2.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cbc554ba47ecca8cd3396ddaca85e1ecfe3e48dd57dc5e415e59551affe568e"}, - {file = "psycopg2_binary-2.9.5-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:5d28ecdf191db558d0c07d0f16524ee9d67896edf2b7990eea800abeb23ebd61"}, - {file = "psycopg2_binary-2.9.5-cp310-cp310-manylinux_2_24_ppc64le.whl", hash = "sha256:b9c33d4aef08dfecbd1736ceab8b7b3c4358bf10a0121483e5cd60d3d308cc64"}, - {file = "psycopg2_binary-2.9.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:05b3d479425e047c848b9782cd7aac9c6727ce23181eb9647baf64ffdfc3da41"}, - {file = "psycopg2_binary-2.9.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:1e491e6489a6cb1d079df8eaa15957c277fdedb102b6a68cfbf40c4994412fd0"}, - {file = "psycopg2_binary-2.9.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:9e32cedc389bcb76d9f24ea8a012b3cb8385ee362ea437e1d012ffaed106c17d"}, - {file = "psycopg2_binary-2.9.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:46850a640df62ae940e34a163f72e26aca1f88e2da79148e1862faaac985c302"}, - {file = "psycopg2_binary-2.9.5-cp310-cp310-win32.whl", hash = "sha256:3d790f84201c3698d1bfb404c917f36e40531577a6dda02e45ba29b64d539867"}, - {file = "psycopg2_binary-2.9.5-cp310-cp310-win_amd64.whl", hash = "sha256:1764546ffeaed4f9428707be61d68972eb5ede81239b46a45843e0071104d0dd"}, - {file = "psycopg2_binary-2.9.5-cp311-cp311-macosx_10_9_universal2.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:426c2ae999135d64e6a18849a7d1ad0e1bd007277e4a8f4752eaa40a96b550ff"}, - {file = "psycopg2_binary-2.9.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7cf1d44e710ca3a9ce952bda2855830fe9f9017ed6259e01fcd71ea6287565f5"}, - {file = "psycopg2_binary-2.9.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:024030b13bdcbd53d8a93891a2cf07719715724fc9fee40243f3bd78b4264b8f"}, - {file = "psycopg2_binary-2.9.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcda1c84a1c533c528356da5490d464a139b6e84eb77cc0b432e38c5c6dd7882"}, - {file = "psycopg2_binary-2.9.5-cp311-cp311-manylinux_2_24_aarch64.whl", hash = "sha256:2ef892cabdccefe577088a79580301f09f2a713eb239f4f9f62b2b29cafb0577"}, - {file = "psycopg2_binary-2.9.5-cp311-cp311-manylinux_2_24_ppc64le.whl", hash = "sha256:af0516e1711995cb08dc19bbd05bec7dbdebf4185f68870595156718d237df3e"}, - {file = "psycopg2_binary-2.9.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e72c91bda9880f097c8aa3601a2c0de6c708763ba8128006151f496ca9065935"}, - {file = "psycopg2_binary-2.9.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e67b3c26e9b6d37b370c83aa790bbc121775c57bfb096c2e77eacca25fd0233b"}, - {file = "psycopg2_binary-2.9.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:5fc447058d083b8c6ac076fc26b446d44f0145308465d745fba93a28c14c9e32"}, - {file = "psycopg2_binary-2.9.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d892bfa1d023c3781a3cab8dd5af76b626c483484d782e8bd047c180db590e4c"}, - {file = "psycopg2_binary-2.9.5-cp311-cp311-win32.whl", hash = "sha256:2abccab84d057723d2ca8f99ff7b619285d40da6814d50366f61f0fc385c3903"}, - {file = "psycopg2_binary-2.9.5-cp311-cp311-win_amd64.whl", hash = "sha256:bef7e3f9dc6f0c13afdd671008534be5744e0e682fb851584c8c3a025ec09720"}, - {file = "psycopg2_binary-2.9.5-cp36-cp36m-macosx_10_14_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:6e63814ec71db9bdb42905c925639f319c80e7909fb76c3b84edc79dadef8d60"}, - {file = "psycopg2_binary-2.9.5-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:212757ffcecb3e1a5338d4e6761bf9c04f750e7d027117e74aa3cd8a75bb6fbd"}, - {file = "psycopg2_binary-2.9.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f8a9bcab7b6db2e3dbf65b214dfc795b4c6b3bb3af922901b6a67f7cb47d5f8"}, - {file = "psycopg2_binary-2.9.5-cp36-cp36m-manylinux_2_24_aarch64.whl", hash = "sha256:56b2957a145f816726b109ee3d4e6822c23f919a7d91af5a94593723ed667835"}, - {file = "psycopg2_binary-2.9.5-cp36-cp36m-manylinux_2_24_ppc64le.whl", hash = "sha256:f95b8aca2703d6a30249f83f4fe6a9abf2e627aa892a5caaab2267d56be7ab69"}, - {file = "psycopg2_binary-2.9.5-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:70831e03bd53702c941da1a1ad36c17d825a24fbb26857b40913d58df82ec18b"}, - {file = "psycopg2_binary-2.9.5-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:dbc332beaf8492b5731229a881807cd7b91b50dbbbaf7fe2faf46942eda64a24"}, - {file = "psycopg2_binary-2.9.5-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:2d964eb24c8b021623df1c93c626671420c6efadbdb8655cb2bd5e0c6fa422ba"}, - {file = "psycopg2_binary-2.9.5-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:95076399ec3b27a8f7fa1cc9a83417b1c920d55cf7a97f718a94efbb96c7f503"}, - {file = "psycopg2_binary-2.9.5-cp36-cp36m-win32.whl", hash = "sha256:3fc33295cfccad697a97a76dec3f1e94ad848b7b163c3228c1636977966b51e2"}, - {file = "psycopg2_binary-2.9.5-cp36-cp36m-win_amd64.whl", hash = "sha256:02551647542f2bf89073d129c73c05a25c372fc0a49aa50e0de65c3c143d8bd0"}, - {file = "psycopg2_binary-2.9.5-cp37-cp37m-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:63e318dbe52709ed10d516a356f22a635e07a2e34c68145484ed96a19b0c4c68"}, - {file = "psycopg2_binary-2.9.5-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7e518a0911c50f60313cb9e74a169a65b5d293770db4770ebf004245f24b5c5"}, - {file = "psycopg2_binary-2.9.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9d38a4656e4e715d637abdf7296e98d6267df0cc0a8e9a016f8ba07e4aa3eeb"}, - {file = "psycopg2_binary-2.9.5-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:68d81a2fe184030aa0c5c11e518292e15d342a667184d91e30644c9d533e53e1"}, - {file = "psycopg2_binary-2.9.5-cp37-cp37m-manylinux_2_24_ppc64le.whl", hash = "sha256:7ee3095d02d6f38bd7d9a5358fcc9ea78fcdb7176921528dd709cc63f40184f5"}, - {file = "psycopg2_binary-2.9.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:46512486be6fbceef51d7660dec017394ba3e170299d1dc30928cbedebbf103a"}, - {file = "psycopg2_binary-2.9.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b911dfb727e247340d36ae20c4b9259e4a64013ab9888ccb3cbba69b77fd9636"}, - {file = "psycopg2_binary-2.9.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:422e3d43b47ac20141bc84b3d342eead8d8099a62881a501e97d15f6addabfe9"}, - {file = "psycopg2_binary-2.9.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c5682a45df7d9642eff590abc73157c887a68f016df0a8ad722dcc0f888f56d7"}, - {file = "psycopg2_binary-2.9.5-cp37-cp37m-win32.whl", hash = "sha256:b8104f709590fff72af801e916817560dbe1698028cd0afe5a52d75ceb1fce5f"}, - {file = "psycopg2_binary-2.9.5-cp37-cp37m-win_amd64.whl", hash = "sha256:7b3751857da3e224f5629400736a7b11e940b5da5f95fa631d86219a1beaafec"}, - {file = "psycopg2_binary-2.9.5-cp38-cp38-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:043a9fd45a03858ff72364b4b75090679bd875ee44df9c0613dc862ca6b98460"}, - {file = "psycopg2_binary-2.9.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9ffdc51001136b699f9563b1c74cc1f8c07f66ef7219beb6417a4c8aaa896c28"}, - {file = "psycopg2_binary-2.9.5-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c15ba5982c177bc4b23a7940c7e4394197e2d6a424a2d282e7c236b66da6d896"}, - {file = "psycopg2_binary-2.9.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc85b3777068ed30aff8242be2813038a929f2084f69e43ef869daddae50f6ee"}, - {file = "psycopg2_binary-2.9.5-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:215d6bf7e66732a514f47614f828d8c0aaac9a648c46a831955cb103473c7147"}, - {file = "psycopg2_binary-2.9.5-cp38-cp38-manylinux_2_24_ppc64le.whl", hash = "sha256:7d07f552d1e412f4b4e64ce386d4c777a41da3b33f7098b6219012ba534fb2c2"}, - {file = "psycopg2_binary-2.9.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a0adef094c49f242122bb145c3c8af442070dc0e4312db17e49058c1702606d4"}, - {file = "psycopg2_binary-2.9.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:00475004e5ed3e3bf5e056d66e5dcdf41a0dc62efcd57997acd9135c40a08a50"}, - {file = "psycopg2_binary-2.9.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:7d88db096fa19d94f433420eaaf9f3c45382da2dd014b93e4bf3215639047c16"}, - {file = "psycopg2_binary-2.9.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:902844f9c4fb19b17dfa84d9e2ca053d4a4ba265723d62ea5c9c26b38e0aa1e6"}, - {file = "psycopg2_binary-2.9.5-cp38-cp38-win32.whl", hash = "sha256:4e7904d1920c0c89105c0517dc7e3f5c20fb4e56ba9cdef13048db76947f1d79"}, - {file = "psycopg2_binary-2.9.5-cp38-cp38-win_amd64.whl", hash = "sha256:a36a0e791805aa136e9cbd0ffa040d09adec8610453ee8a753f23481a0057af5"}, - {file = "psycopg2_binary-2.9.5-cp39-cp39-macosx_10_15_x86_64.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:25382c7d174c679ce6927c16b6fbb68b10e56ee44b1acb40671e02d29f2fce7c"}, - {file = "psycopg2_binary-2.9.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9c38d3869238e9d3409239bc05bc27d6b7c99c2a460ea337d2814b35fb4fea1b"}, - {file = "psycopg2_binary-2.9.5-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5c6527c8efa5226a9e787507652dd5ba97b62d29b53c371a85cd13f957fe4d42"}, - {file = "psycopg2_binary-2.9.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e59137cdb970249ae60be2a49774c6dfb015bd0403f05af1fe61862e9626642d"}, - {file = "psycopg2_binary-2.9.5-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:d4c7b3a31502184e856df1f7bbb2c3735a05a8ce0ade34c5277e1577738a5c91"}, - {file = "psycopg2_binary-2.9.5-cp39-cp39-manylinux_2_24_ppc64le.whl", hash = "sha256:b9a794cef1d9c1772b94a72eec6da144c18e18041d294a9ab47669bc77a80c1d"}, - {file = "psycopg2_binary-2.9.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c5254cbd4f4855e11cebf678c1a848a3042d455a22a4ce61349c36aafd4c2267"}, - {file = "psycopg2_binary-2.9.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c5e65c6ac0ae4bf5bef1667029f81010b6017795dcb817ba5c7b8a8d61fab76f"}, - {file = "psycopg2_binary-2.9.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:74eddec4537ab1f701a1647214734bc52cee2794df748f6ae5908e00771f180a"}, - {file = "psycopg2_binary-2.9.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:01ad49d68dd8c5362e4bfb4158f2896dc6e0c02e87b8a3770fc003459f1a4425"}, - {file = "psycopg2_binary-2.9.5-cp39-cp39-win32.whl", hash = "sha256:937880290775033a743f4836aa253087b85e62784b63fd099ee725d567a48aa1"}, - {file = "psycopg2_binary-2.9.5-cp39-cp39-win_amd64.whl", hash = "sha256:484405b883630f3e74ed32041a87456c5e0e63a8e3429aa93e8714c366d62bd1"}, -] - -[[package]] -name = "pydantic" -version = "1.10.4" -description = "Data validation and settings management using python type hints" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pydantic-1.10.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5635de53e6686fe7a44b5cf25fcc419a0d5e5c1a1efe73d49d48fe7586db854"}, - {file = "pydantic-1.10.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6dc1cc241440ed7ca9ab59d9929075445da6b7c94ced281b3dd4cfe6c8cff817"}, - {file = "pydantic-1.10.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51bdeb10d2db0f288e71d49c9cefa609bca271720ecd0c58009bd7504a0c464c"}, - {file = "pydantic-1.10.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78cec42b95dbb500a1f7120bdf95c401f6abb616bbe8785ef09887306792e66e"}, - {file = "pydantic-1.10.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8775d4ef5e7299a2f4699501077a0defdaac5b6c4321173bcb0f3c496fbadf85"}, - {file = "pydantic-1.10.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:572066051eeac73d23f95ba9a71349c42a3e05999d0ee1572b7860235b850cc6"}, - {file = "pydantic-1.10.4-cp310-cp310-win_amd64.whl", hash = "sha256:7feb6a2d401f4d6863050f58325b8d99c1e56f4512d98b11ac64ad1751dc647d"}, - {file = "pydantic-1.10.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:39f4a73e5342b25c2959529f07f026ef58147249f9b7431e1ba8414a36761f53"}, - {file = "pydantic-1.10.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:983e720704431a6573d626b00662eb78a07148c9115129f9b4351091ec95ecc3"}, - {file = "pydantic-1.10.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75d52162fe6b2b55964fbb0af2ee58e99791a3138588c482572bb6087953113a"}, - {file = "pydantic-1.10.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fdf8d759ef326962b4678d89e275ffc55b7ce59d917d9f72233762061fd04a2d"}, - {file = "pydantic-1.10.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:05a81b006be15655b2a1bae5faa4280cf7c81d0e09fcb49b342ebf826abe5a72"}, - {file = "pydantic-1.10.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d88c4c0e5c5dfd05092a4b271282ef0588e5f4aaf345778056fc5259ba098857"}, - {file = "pydantic-1.10.4-cp311-cp311-win_amd64.whl", hash = "sha256:6a05a9db1ef5be0fe63e988f9617ca2551013f55000289c671f71ec16f4985e3"}, - {file = "pydantic-1.10.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:887ca463c3bc47103c123bc06919c86720e80e1214aab79e9b779cda0ff92a00"}, - {file = "pydantic-1.10.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdf88ab63c3ee282c76d652fc86518aacb737ff35796023fae56a65ced1a5978"}, - {file = "pydantic-1.10.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a48f1953c4a1d9bd0b5167ac50da9a79f6072c63c4cef4cf2a3736994903583e"}, - {file = "pydantic-1.10.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a9f2de23bec87ff306aef658384b02aa7c32389766af3c5dee9ce33e80222dfa"}, - {file = "pydantic-1.10.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:cd8702c5142afda03dc2b1ee6bc358b62b3735b2cce53fc77b31ca9f728e4bc8"}, - {file = "pydantic-1.10.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6e7124d6855b2780611d9f5e1e145e86667eaa3bd9459192c8dc1a097f5e9903"}, - {file = "pydantic-1.10.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b53e1d41e97063d51a02821b80538053ee4608b9a181c1005441f1673c55423"}, - {file = "pydantic-1.10.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:55b1625899acd33229c4352ce0ae54038529b412bd51c4915349b49ca575258f"}, - {file = "pydantic-1.10.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:301d626a59edbe5dfb48fcae245896379a450d04baeed50ef40d8199f2733b06"}, - {file = "pydantic-1.10.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6f9d649892a6f54a39ed56b8dfd5e08b5f3be5f893da430bed76975f3735d15"}, - {file = "pydantic-1.10.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d7b5a3821225f5c43496c324b0d6875fde910a1c2933d726a743ce328fbb2a8c"}, - {file = "pydantic-1.10.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f2f7eb6273dd12472d7f218e1fef6f7c7c2f00ac2e1ecde4db8824c457300416"}, - {file = "pydantic-1.10.4-cp38-cp38-win_amd64.whl", hash = "sha256:4b05697738e7d2040696b0a66d9f0a10bec0efa1883ca75ee9e55baf511909d6"}, - {file = "pydantic-1.10.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a9a6747cac06c2beb466064dda999a13176b23535e4c496c9d48e6406f92d42d"}, - {file = "pydantic-1.10.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:eb992a1ef739cc7b543576337bebfc62c0e6567434e522e97291b251a41dad7f"}, - {file = "pydantic-1.10.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:990406d226dea0e8f25f643b370224771878142155b879784ce89f633541a024"}, - {file = "pydantic-1.10.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e82a6d37a95e0b1b42b82ab340ada3963aea1317fd7f888bb6b9dfbf4fff57c"}, - {file = "pydantic-1.10.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9193d4f4ee8feca58bc56c8306bcb820f5c7905fd919e0750acdeeeef0615b28"}, - {file = "pydantic-1.10.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2b3ce5f16deb45c472dde1a0ee05619298c864a20cded09c4edd820e1454129f"}, - {file = "pydantic-1.10.4-cp39-cp39-win_amd64.whl", hash = "sha256:9cbdc268a62d9a98c56e2452d6c41c0263d64a2009aac69246486f01b4f594c4"}, - {file = "pydantic-1.10.4-py3-none-any.whl", hash = "sha256:4948f264678c703f3877d1c8877c4e3b2e12e549c57795107f08cf70c6ec7774"}, - {file = "pydantic-1.10.4.tar.gz", hash = "sha256:b9a3859f24eb4e097502a3be1fb4b2abb79b6103dd9e2e0edb70613a4459a648"}, -] - -[package.dependencies] -typing-extensions = ">=4.2.0" - -[package.extras] -dotenv = ["python-dotenv (>=0.10.4)"] -email = ["email-validator (>=1.0.3)"] - -[[package]] -name = "python-dotenv" -version = "1.0.0" -description = "Read key-value pairs from a .env file and set them as environment variables" -optional = false -python-versions = ">=3.8" -files = [ - {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, - {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, -] - -[package.extras] -cli = ["click (>=5.0)"] - -[[package]] -name = "PyYAML" -version = "6.0" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.6" -files = [ - {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, - {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, - {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, - {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, - {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, - {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, - {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, - {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, - {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, - {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, - {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, - {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, - {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, - {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, - {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, - {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, - {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, - {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, -] - -[[package]] -name = "redis" -version = "4.6.0" -description = "Python client for Redis database and key-value store" -optional = false -python-versions = ">=3.7" -files = [ - {file = "redis-4.6.0-py3-none-any.whl", hash = "sha256:e2b03db868160ee4591de3cb90d40ebb50a90dd302138775937f6a42b7ed183c"}, - {file = "redis-4.6.0.tar.gz", hash = "sha256:585dc516b9eb042a619ef0a39c3d7d55fe81bdb4df09a52c9cdde0d07bf1aa7d"}, -] - -[package.dependencies] -async-timeout = {version = ">=4.0.2", markers = "python_full_version <= \"3.11.2\""} -hiredis = {version = ">=1.0.0", optional = true, markers = "extra == \"hiredis\""} - -[package.extras] -hiredis = ["hiredis (>=1.0.0)"] -ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)"] - -[[package]] -name = "requests" -version = "2.31.0" -description = "Python HTTP for Humans." -optional = false -python-versions = ">=3.7" -files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "sentry-sdk" -version = "1.29.2" -description = "Python client for Sentry (https://sentry.io)" -optional = false -python-versions = "*" -files = [ - {file = "sentry-sdk-1.29.2.tar.gz", hash = "sha256:a99ee105384788c3f228726a88baf515fe7b5f1d2d0f215a03d194369f158df7"}, - {file = "sentry_sdk-1.29.2-py2.py3-none-any.whl", hash = "sha256:3e17215d8006612e2df02b0e73115eb8376c37e3f586d8436fa41644e605074d"}, -] - -[package.dependencies] -certifi = "*" -urllib3 = {version = ">=1.26.11", markers = "python_version >= \"3.6\""} - -[package.extras] -aiohttp = ["aiohttp (>=3.5)"] -arq = ["arq (>=0.23)"] -beam = ["apache-beam (>=2.12)"] -bottle = ["bottle (>=0.12.13)"] -celery = ["celery (>=3)"] -chalice = ["chalice (>=1.16.0)"] -django = ["django (>=1.8)"] -falcon = ["falcon (>=1.4)"] -fastapi = ["fastapi (>=0.79.0)"] -flask = ["blinker (>=1.1)", "flask (>=0.11)", "markupsafe"] -grpcio = ["grpcio (>=1.21.1)"] -httpx = ["httpx (>=0.16.0)"] -huey = ["huey (>=2)"] -loguru = ["loguru (>=0.5)"] -opentelemetry = ["opentelemetry-distro (>=0.35b0)"] -pure-eval = ["asttokens", "executing", "pure-eval"] -pymongo = ["pymongo (>=3.1)"] -pyspark = ["pyspark (>=2.4.4)"] -quart = ["blinker (>=1.1)", "quart (>=0.16.1)"] -rq = ["rq (>=0.6)"] -sanic = ["sanic (>=0.8)"] -sqlalchemy = ["sqlalchemy (>=1.2)"] -starlette = ["starlette (>=0.19.1)"] -starlite = ["starlite (>=1.48)"] -tornado = ["tornado (>=5)"] - -[[package]] -name = "setuptools" -version = "65.6.3" -description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false -python-versions = ">=3.7" -files = [ - {file = "setuptools-65.6.3-py3-none-any.whl", hash = "sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54"}, - {file = "setuptools-65.6.3.tar.gz", hash = "sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] - -[[package]] -name = "sniffio" -version = "1.3.0" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -files = [ - {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"}, - {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"}, -] - -[[package]] -name = "SQLAlchemy" -version = "1.4.41" -description = "Database Abstraction Library" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -files = [ - {file = "SQLAlchemy-1.4.41-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:13e397a9371ecd25573a7b90bd037db604331cf403f5318038c46ee44908c44d"}, - {file = "SQLAlchemy-1.4.41-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:2d6495f84c4fd11584f34e62f9feec81bf373787b3942270487074e35cbe5330"}, - {file = "SQLAlchemy-1.4.41-cp27-cp27m-win32.whl", hash = "sha256:e570cfc40a29d6ad46c9aeaddbdcee687880940a3a327f2c668dd0e4ef0a441d"}, - {file = "SQLAlchemy-1.4.41-cp27-cp27m-win_amd64.whl", hash = "sha256:5facb7fd6fa8a7353bbe88b95695e555338fb038ad19ceb29c82d94f62775a05"}, - {file = "SQLAlchemy-1.4.41-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:f37fa70d95658763254941ddd30ecb23fc4ec0c5a788a7c21034fc2305dab7cc"}, - {file = "SQLAlchemy-1.4.41-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:361f6b5e3f659e3c56ea3518cf85fbdae1b9e788ade0219a67eeaaea8a4e4d2a"}, - {file = "SQLAlchemy-1.4.41-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0990932f7cca97fece8017414f57fdd80db506a045869d7ddf2dda1d7cf69ecc"}, - {file = "SQLAlchemy-1.4.41-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cd767cf5d7252b1c88fcfb58426a32d7bd14a7e4942497e15b68ff5d822b41ad"}, - {file = "SQLAlchemy-1.4.41-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5102fb9ee2c258a2218281adcb3e1918b793c51d6c2b4666ce38c35101bb940e"}, - {file = "SQLAlchemy-1.4.41-cp310-cp310-win32.whl", hash = "sha256:2082a2d2fca363a3ce21cfa3d068c5a1ce4bf720cf6497fb3a9fc643a8ee4ddd"}, - {file = "SQLAlchemy-1.4.41-cp310-cp310-win_amd64.whl", hash = "sha256:e4b12e3d88a8fffd0b4ca559f6d4957ed91bd4c0613a4e13846ab8729dc5c251"}, - {file = "SQLAlchemy-1.4.41-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:90484a2b00baedad361402c257895b13faa3f01780f18f4a104a2f5c413e4536"}, - {file = "SQLAlchemy-1.4.41-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b67fc780cfe2b306180e56daaa411dd3186bf979d50a6a7c2a5b5036575cbdbb"}, - {file = "SQLAlchemy-1.4.41-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ad2b727fc41c7f8757098903f85fafb4bf587ca6605f82d9bf5604bd9c7cded"}, - {file = "SQLAlchemy-1.4.41-cp311-cp311-win32.whl", hash = "sha256:59bdc291165b6119fc6cdbc287c36f7f2859e6051dd923bdf47b4c55fd2f8bd0"}, - {file = "SQLAlchemy-1.4.41-cp311-cp311-win_amd64.whl", hash = "sha256:d2e054aed4645f9b755db85bc69fc4ed2c9020c19c8027976f66576b906a74f1"}, - {file = "SQLAlchemy-1.4.41-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:4ba7e122510bbc07258dc42be6ed45997efdf38129bde3e3f12649be70683546"}, - {file = "SQLAlchemy-1.4.41-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0dcf127bb99458a9d211e6e1f0f3edb96c874dd12f2503d4d8e4f1fd103790b"}, - {file = "SQLAlchemy-1.4.41-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e16c2be5cb19e2c08da7bd3a87fed2a0d4e90065ee553a940c4fc1a0fb1ab72b"}, - {file = "SQLAlchemy-1.4.41-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5ebeeec5c14533221eb30bad716bc1fd32f509196318fb9caa7002c4a364e4c"}, - {file = "SQLAlchemy-1.4.41-cp36-cp36m-win32.whl", hash = "sha256:3e2ef592ac3693c65210f8b53d0edcf9f4405925adcfc031ff495e8d18169682"}, - {file = "SQLAlchemy-1.4.41-cp36-cp36m-win_amd64.whl", hash = "sha256:eb30cf008850c0a26b72bd1b9be6730830165ce049d239cfdccd906f2685f892"}, - {file = "SQLAlchemy-1.4.41-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:c23d64a0b28fc78c96289ffbd0d9d1abd48d267269b27f2d34e430ea73ce4b26"}, - {file = "SQLAlchemy-1.4.41-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8eb8897367a21b578b26f5713833836f886817ee2ffba1177d446fa3f77e67c8"}, - {file = "SQLAlchemy-1.4.41-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:14576238a5f89bcf504c5f0a388d0ca78df61fb42cb2af0efe239dc965d4f5c9"}, - {file = "SQLAlchemy-1.4.41-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:639e1ae8d48b3c86ffe59c0daa9a02e2bfe17ca3d2b41611b30a0073937d4497"}, - {file = "SQLAlchemy-1.4.41-cp37-cp37m-win32.whl", hash = "sha256:0005bd73026cd239fc1e8ccdf54db58b6193be9a02b3f0c5983808f84862c767"}, - {file = "SQLAlchemy-1.4.41-cp37-cp37m-win_amd64.whl", hash = "sha256:5323252be2bd261e0aa3f33cb3a64c45d76829989fa3ce90652838397d84197d"}, - {file = "SQLAlchemy-1.4.41-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:05f0de3a1dc3810a776275763764bb0015a02ae0f698a794646ebc5fb06fad33"}, - {file = "SQLAlchemy-1.4.41-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0002e829142b2af00b4eaa26c51728f3ea68235f232a2e72a9508a3116bd6ed0"}, - {file = "SQLAlchemy-1.4.41-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:22ff16cedab5b16a0db79f1bc99e46a6ddececb60c396562e50aab58ddb2871c"}, - {file = "SQLAlchemy-1.4.41-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ccfd238f766a5bb5ee5545a62dd03f316ac67966a6a658efb63eeff8158a4bbf"}, - {file = "SQLAlchemy-1.4.41-cp38-cp38-win32.whl", hash = "sha256:58bb65b3274b0c8a02cea9f91d6f44d0da79abc993b33bdedbfec98c8440175a"}, - {file = "SQLAlchemy-1.4.41-cp38-cp38-win_amd64.whl", hash = "sha256:ce8feaa52c1640de9541eeaaa8b5fb632d9d66249c947bb0d89dd01f87c7c288"}, - {file = "SQLAlchemy-1.4.41-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:199a73c31ac8ea59937cc0bf3dfc04392e81afe2ec8a74f26f489d268867846c"}, - {file = "SQLAlchemy-1.4.41-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676d51c9f6f6226ae8f26dc83ec291c088fe7633269757d333978df78d931ab"}, - {file = "SQLAlchemy-1.4.41-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:036d8472356e1d5f096c5e0e1a7e0f9182140ada3602f8fff6b7329e9e7cfbcd"}, - {file = "SQLAlchemy-1.4.41-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2307495d9e0ea00d0c726be97a5b96615035854972cc538f6e7eaed23a35886c"}, - {file = "SQLAlchemy-1.4.41-cp39-cp39-win32.whl", hash = "sha256:9c56e19780cd1344fcd362fd6265a15f48aa8d365996a37fab1495cae8fcd97d"}, - {file = "SQLAlchemy-1.4.41-cp39-cp39-win_amd64.whl", hash = "sha256:f5fa526d027d804b1f85cdda1eb091f70bde6fb7d87892f6dd5a48925bc88898"}, - {file = "SQLAlchemy-1.4.41.tar.gz", hash = "sha256:0292f70d1797e3c54e862e6f30ae474014648bc9c723e14a2fda730adb0a9791"}, -] - -[package.dependencies] -greenlet = {version = "!=0.4.17", markers = "python_version >= \"3\" and (platform_machine == \"win32\" or platform_machine == \"WIN32\" or platform_machine == \"AMD64\" or platform_machine == \"amd64\" or platform_machine == \"x86_64\" or platform_machine == \"ppc64le\" or platform_machine == \"aarch64\")"} - -[package.extras] -aiomysql = ["aiomysql", "greenlet (!=0.4.17)"] -aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing-extensions (!=3.10.0.1)"] -asyncio = ["greenlet (!=0.4.17)"] -asyncmy = ["asyncmy (>=0.2.3,!=0.2.4)", "greenlet (!=0.4.17)"] -mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2)"] -mssql = ["pyodbc"] -mssql-pymssql = ["pymssql"] -mssql-pyodbc = ["pyodbc"] -mypy = ["mypy (>=0.910)", "sqlalchemy2-stubs"] -mysql = ["mysqlclient (>=1.4.0)", "mysqlclient (>=1.4.0,<2)"] -mysql-connector = ["mysql-connector-python"] -oracle = ["cx-oracle (>=7)", "cx-oracle (>=7,<8)"] -postgresql = ["psycopg2 (>=2.7)"] -postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] -postgresql-pg8000 = ["pg8000 (>=1.16.6,!=1.29.0)"] -postgresql-psycopg2binary = ["psycopg2-binary"] -postgresql-psycopg2cffi = ["psycopg2cffi"] -pymysql = ["pymysql", "pymysql (<1)"] -sqlcipher = ["sqlcipher3-binary"] - -[[package]] -name = "starlette" -version = "0.27.0" -description = "The little ASGI library that shines." -optional = false -python-versions = ">=3.7" -files = [ - {file = "starlette-0.27.0-py3-none-any.whl", hash = "sha256:918416370e846586541235ccd38a474c08b80443ed31c578a418e2209b3eef91"}, - {file = "starlette-0.27.0.tar.gz", hash = "sha256:6a6b0d042acb8d469a01eba54e9cda6cbd24ac602c4cd016723117d6a7e73b75"}, -] - -[package.dependencies] -anyio = ">=3.4.0,<5" - -[package.extras] -full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart", "pyyaml"] - -[[package]] -name = "typing-extensions" -version = "4.7.1" -description = "Backported and Experimental Type Hints for Python 3.7+" -optional = false -python-versions = ">=3.7" -files = [ - {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, - {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, -] - -[[package]] -name = "urllib3" -version = "1.26.13" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"}, - {file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] - -[[package]] -name = "uvicorn" -version = "0.23.2" -description = "The lightning-fast ASGI server." -optional = false -python-versions = ">=3.8" -files = [ - {file = "uvicorn-0.23.2-py3-none-any.whl", hash = "sha256:1f9be6558f01239d4fdf22ef8126c39cb1ad0addf76c40e760549d2c2f43ab53"}, - {file = "uvicorn-0.23.2.tar.gz", hash = "sha256:4d3cc12d7727ba72b64d12d3cc7743124074c0a69f7b201512fc50c3e3f1569a"}, -] - -[package.dependencies] -click = ">=7.0" -colorama = {version = ">=0.4", optional = true, markers = "sys_platform == \"win32\" and extra == \"standard\""} -h11 = ">=0.8" -httptools = {version = ">=0.5.0", optional = true, markers = "extra == \"standard\""} -python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} -pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} -uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "(sys_platform != \"win32\" and sys_platform != \"cygwin\") and platform_python_implementation != \"PyPy\" and extra == \"standard\""} -watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} -websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""} - -[package.extras] -standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] - -[[package]] -name = "uvloop" -version = "0.17.0" -description = "Fast implementation of asyncio event loop on top of libuv" -optional = false -python-versions = ">=3.7" -files = [ - {file = "uvloop-0.17.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ce9f61938d7155f79d3cb2ffa663147d4a76d16e08f65e2c66b77bd41b356718"}, - {file = "uvloop-0.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:68532f4349fd3900b839f588972b3392ee56042e440dd5873dfbbcd2cc67617c"}, - {file = "uvloop-0.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0949caf774b9fcefc7c5756bacbbbd3fc4c05a6b7eebc7c7ad6f825b23998d6d"}, - {file = "uvloop-0.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff3d00b70ce95adce264462c930fbaecb29718ba6563db354608f37e49e09024"}, - {file = "uvloop-0.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a5abddb3558d3f0a78949c750644a67be31e47936042d4f6c888dd6f3c95f4aa"}, - {file = "uvloop-0.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8efcadc5a0003d3a6e887ccc1fb44dec25594f117a94e3127954c05cf144d811"}, - {file = "uvloop-0.17.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3378eb62c63bf336ae2070599e49089005771cc651c8769aaad72d1bd9385a7c"}, - {file = "uvloop-0.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6aafa5a78b9e62493539456f8b646f85abc7093dd997f4976bb105537cf2635e"}, - {file = "uvloop-0.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c686a47d57ca910a2572fddfe9912819880b8765e2f01dc0dd12a9bf8573e539"}, - {file = "uvloop-0.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:864e1197139d651a76c81757db5eb199db8866e13acb0dfe96e6fc5d1cf45fc4"}, - {file = "uvloop-0.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2a6149e1defac0faf505406259561bc14b034cdf1d4711a3ddcdfbaa8d825a05"}, - {file = "uvloop-0.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6708f30db9117f115eadc4f125c2a10c1a50d711461699a0cbfaa45b9a78e376"}, - {file = "uvloop-0.17.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:23609ca361a7fc587031429fa25ad2ed7242941adec948f9d10c045bfecab06b"}, - {file = "uvloop-0.17.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2deae0b0fb00a6af41fe60a675cec079615b01d68beb4cc7b722424406b126a8"}, - {file = "uvloop-0.17.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45cea33b208971e87a31c17622e4b440cac231766ec11e5d22c76fab3bf9df62"}, - {file = "uvloop-0.17.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9b09e0f0ac29eee0451d71798878eae5a4e6a91aa275e114037b27f7db72702d"}, - {file = "uvloop-0.17.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:dbbaf9da2ee98ee2531e0c780455f2841e4675ff580ecf93fe5c48fe733b5667"}, - {file = "uvloop-0.17.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a4aee22ece20958888eedbad20e4dbb03c37533e010fb824161b4f05e641f738"}, - {file = "uvloop-0.17.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:307958f9fc5c8bb01fad752d1345168c0abc5d62c1b72a4a8c6c06f042b45b20"}, - {file = "uvloop-0.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ebeeec6a6641d0adb2ea71dcfb76017602ee2bfd8213e3fcc18d8f699c5104f"}, - {file = "uvloop-0.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1436c8673c1563422213ac6907789ecb2b070f5939b9cbff9ef7113f2b531595"}, - {file = "uvloop-0.17.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8887d675a64cfc59f4ecd34382e5b4f0ef4ae1da37ed665adba0c2badf0d6578"}, - {file = "uvloop-0.17.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3db8de10ed684995a7f34a001f15b374c230f7655ae840964d51496e2f8a8474"}, - {file = "uvloop-0.17.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7d37dccc7ae63e61f7b96ee2e19c40f153ba6ce730d8ba4d3b4e9738c1dccc1b"}, - {file = "uvloop-0.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cbbe908fda687e39afd6ea2a2f14c2c3e43f2ca88e3a11964b297822358d0e6c"}, - {file = "uvloop-0.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d97672dc709fa4447ab83276f344a165075fd9f366a97b712bdd3fee05efae8"}, - {file = "uvloop-0.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1e507c9ee39c61bfddd79714e4f85900656db1aec4d40c6de55648e85c2799c"}, - {file = "uvloop-0.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c092a2c1e736086d59ac8e41f9c98f26bbf9b9222a76f21af9dfe949b99b2eb9"}, - {file = "uvloop-0.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:30babd84706115626ea78ea5dbc7dd8d0d01a2e9f9b306d24ca4ed5796c66ded"}, - {file = "uvloop-0.17.0.tar.gz", hash = "sha256:0ddf6baf9cf11a1a22c71487f39f15b2cf78eb5bde7e5b45fbb99e8a9d91b9e1"}, -] - -[package.extras] -dev = ["Cython (>=0.29.32,<0.30.0)", "Sphinx (>=4.1.2,<4.2.0)", "aiohttp", "flake8 (>=3.9.2,<3.10.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=22.0.0,<22.1.0)", "pycodestyle (>=2.7.0,<2.8.0)", "pytest (>=3.6.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] -docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] -test = ["Cython (>=0.29.32,<0.30.0)", "aiohttp", "flake8 (>=3.9.2,<3.10.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=22.0.0,<22.1.0)", "pycodestyle (>=2.7.0,<2.8.0)"] - -[[package]] -name = "virtualenv" -version = "20.17.1" -description = "Virtual Python Environment builder" -optional = false -python-versions = ">=3.6" -files = [ - {file = "virtualenv-20.17.1-py3-none-any.whl", hash = "sha256:ce3b1684d6e1a20a3e5ed36795a97dfc6af29bc3970ca8dab93e11ac6094b3c4"}, - {file = "virtualenv-20.17.1.tar.gz", hash = "sha256:f8b927684efc6f1cc206c9db297a570ab9ad0e51c16fa9e45487d36d1905c058"}, -] - -[package.dependencies] -distlib = ">=0.3.6,<1" -filelock = ">=3.4.1,<4" -platformdirs = ">=2.4,<3" - -[package.extras] -docs = ["proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-argparse (>=0.3.2)", "sphinx-rtd-theme (>=1)", "towncrier (>=22.8)"] -testing = ["coverage (>=6.2)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=21.3)", "pytest (>=7.0.1)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.6.1)", "pytest-randomly (>=3.10.3)", "pytest-timeout (>=2.1)"] - -[[package]] -name = "watchfiles" -version = "0.18.1" -description = "Simple, modern and high performance file watching and code reload in python." -optional = false -python-versions = ">=3.7" -files = [ - {file = "watchfiles-0.18.1-cp37-abi3-macosx_10_7_x86_64.whl", hash = "sha256:9891d3c94272108bcecf5597a592e61105279def1313521e637f2d5acbe08bc9"}, - {file = "watchfiles-0.18.1-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:7102342d60207fa635e24c02a51c6628bf0472e5fef067f78a612386840407fc"}, - {file = "watchfiles-0.18.1-cp37-abi3-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:00ea0081eca5e8e695cffbc3a726bb90da77f4e3f78ce29b86f0d95db4e70ef7"}, - {file = "watchfiles-0.18.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b8e6db99e49cd7125d8a4c9d33c0735eea7b75a942c6ad68b75be3e91c242fb"}, - {file = "watchfiles-0.18.1-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bc7c726855f04f22ac79131b51bf0c9f728cb2117419ed830a43828b2c4a5fcb"}, - {file = "watchfiles-0.18.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbaff354d12235002e62d9d3fa8bcf326a8490c1179aa5c17195a300a9e5952f"}, - {file = "watchfiles-0.18.1-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:888db233e06907c555eccd10da99b9cd5ed45deca47e41766954292dc9f7b198"}, - {file = "watchfiles-0.18.1-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:dde79930d1b28f15994ad6613aa2865fc7a403d2bb14585a8714a53233b15717"}, - {file = "watchfiles-0.18.1-cp37-abi3-win32.whl", hash = "sha256:e2b2bdd26bf8d6ed90763e6020b475f7634f919dbd1730ea1b6f8cb88e21de5d"}, - {file = "watchfiles-0.18.1-cp37-abi3-win_amd64.whl", hash = "sha256:c541e0f2c3e95e83e4f84561c893284ba984e9d0025352057396d96dceb09f44"}, - {file = "watchfiles-0.18.1-cp37-abi3-win_arm64.whl", hash = "sha256:9a26272ef3e930330fc0c2c148cc29706cc2c40d25760c7ccea8d768a8feef8b"}, - {file = "watchfiles-0.18.1-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:9fb12a5e2b42e0b53769455ff93546e6bc9ab14007fbd436978d827a95ca5bd1"}, - {file = "watchfiles-0.18.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:548d6b42303d40264118178053c78820533b683b20dfbb254a8706ca48467357"}, - {file = "watchfiles-0.18.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e0d8fdfebc50ac7569358f5c75f2b98bb473befccf9498cf23b3e39993bb45a"}, - {file = "watchfiles-0.18.1-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0f9a22fff1745e2bb930b1e971c4c5b67ea3b38ae17a6adb9019371f80961219"}, - {file = "watchfiles-0.18.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b02e7fa03cd4059dd61ff0600080a5a9e7a893a85cb8e5178943533656eec65e"}, - {file = "watchfiles-0.18.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a868ce2c7565137f852bd4c863a164dc81306cae7378dbdbe4e2aca51ddb8857"}, - {file = "watchfiles-0.18.1.tar.gz", hash = "sha256:4ec0134a5e31797eb3c6c624dbe9354f2a8ee9c720e0b46fc5b7bab472b7c6d4"}, -] - -[package.dependencies] -anyio = ">=3.0.0" - -[[package]] -name = "websockets" -version = "10.4" -description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" -optional = false -python-versions = ">=3.7" -files = [ - {file = "websockets-10.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d58804e996d7d2307173d56c297cf7bc132c52df27a3efaac5e8d43e36c21c48"}, - {file = "websockets-10.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc0b82d728fe21a0d03e65f81980abbbcb13b5387f733a1a870672c5be26edab"}, - {file = "websockets-10.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ba089c499e1f4155d2a3c2a05d2878a3428cf321c848f2b5a45ce55f0d7d310c"}, - {file = "websockets-10.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33d69ca7612f0ddff3316b0c7b33ca180d464ecac2d115805c044bf0a3b0d032"}, - {file = "websockets-10.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62e627f6b6d4aed919a2052efc408da7a545c606268d5ab5bfab4432734b82b4"}, - {file = "websockets-10.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ea7b82bfcae927eeffc55d2ffa31665dc7fec7b8dc654506b8e5a518eb4d50"}, - {file = "websockets-10.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e0cb5cc6ece6ffa75baccfd5c02cffe776f3f5c8bf486811f9d3ea3453676ce8"}, - {file = "websockets-10.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ae5e95cfb53ab1da62185e23b3130e11d64431179debac6dc3c6acf08760e9b1"}, - {file = "websockets-10.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7c584f366f46ba667cfa66020344886cf47088e79c9b9d39c84ce9ea98aaa331"}, - {file = "websockets-10.4-cp310-cp310-win32.whl", hash = "sha256:b029fb2032ae4724d8ae8d4f6b363f2cc39e4c7b12454df8df7f0f563ed3e61a"}, - {file = "websockets-10.4-cp310-cp310-win_amd64.whl", hash = "sha256:8dc96f64ae43dde92530775e9cb169979f414dcf5cff670455d81a6823b42089"}, - {file = "websockets-10.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:47a2964021f2110116cc1125b3e6d87ab5ad16dea161949e7244ec583b905bb4"}, - {file = "websockets-10.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e789376b52c295c4946403bd0efecf27ab98f05319df4583d3c48e43c7342c2f"}, - {file = "websockets-10.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7d3f0b61c45c3fa9a349cf484962c559a8a1d80dae6977276df8fd1fa5e3cb8c"}, - {file = "websockets-10.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f55b5905705725af31ccef50e55391621532cd64fbf0bc6f4bac935f0fccec46"}, - {file = "websockets-10.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00c870522cdb69cd625b93f002961ffb0c095394f06ba8c48f17eef7c1541f96"}, - {file = "websockets-10.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f38706e0b15d3c20ef6259fd4bc1700cd133b06c3c1bb108ffe3f8947be15fa"}, - {file = "websockets-10.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f2c38d588887a609191d30e902df2a32711f708abfd85d318ca9b367258cfd0c"}, - {file = "websockets-10.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:fe10ddc59b304cb19a1bdf5bd0a7719cbbc9fbdd57ac80ed436b709fcf889106"}, - {file = "websockets-10.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:90fcf8929836d4a0e964d799a58823547df5a5e9afa83081761630553be731f9"}, - {file = "websockets-10.4-cp311-cp311-win32.whl", hash = "sha256:b9968694c5f467bf67ef97ae7ad4d56d14be2751000c1207d31bf3bb8860bae8"}, - {file = "websockets-10.4-cp311-cp311-win_amd64.whl", hash = "sha256:a7a240d7a74bf8d5cb3bfe6be7f21697a28ec4b1a437607bae08ac7acf5b4882"}, - {file = "websockets-10.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:74de2b894b47f1d21cbd0b37a5e2b2392ad95d17ae983e64727e18eb281fe7cb"}, - {file = "websockets-10.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3a686ecb4aa0d64ae60c9c9f1a7d5d46cab9bfb5d91a2d303d00e2cd4c4c5cc"}, - {file = "websockets-10.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0d15c968ea7a65211e084f523151dbf8ae44634de03c801b8bd070b74e85033"}, - {file = "websockets-10.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00213676a2e46b6ebf6045bc11d0f529d9120baa6f58d122b4021ad92adabd41"}, - {file = "websockets-10.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e23173580d740bf8822fd0379e4bf30aa1d5a92a4f252d34e893070c081050df"}, - {file = "websockets-10.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:dd500e0a5e11969cdd3320935ca2ff1e936f2358f9c2e61f100a1660933320ea"}, - {file = "websockets-10.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:4239b6027e3d66a89446908ff3027d2737afc1a375f8fd3eea630a4842ec9a0c"}, - {file = "websockets-10.4-cp37-cp37m-win32.whl", hash = "sha256:8a5cc00546e0a701da4639aa0bbcb0ae2bb678c87f46da01ac2d789e1f2d2038"}, - {file = "websockets-10.4-cp37-cp37m-win_amd64.whl", hash = "sha256:a9f9a735deaf9a0cadc2d8c50d1a5bcdbae8b6e539c6e08237bc4082d7c13f28"}, - {file = "websockets-10.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5c1289596042fad2cdceb05e1ebf7aadf9995c928e0da2b7a4e99494953b1b94"}, - {file = "websockets-10.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0cff816f51fb33c26d6e2b16b5c7d48eaa31dae5488ace6aae468b361f422b63"}, - {file = "websockets-10.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:dd9becd5fe29773d140d68d607d66a38f60e31b86df75332703757ee645b6faf"}, - {file = "websockets-10.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45ec8e75b7dbc9539cbfafa570742fe4f676eb8b0d3694b67dabe2f2ceed8aa6"}, - {file = "websockets-10.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f72e5cd0f18f262f5da20efa9e241699e0cf3a766317a17392550c9ad7b37d8"}, - {file = "websockets-10.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:185929b4808b36a79c65b7865783b87b6841e852ef5407a2fb0c03381092fa3b"}, - {file = "websockets-10.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7d27a7e34c313b3a7f91adcd05134315002aaf8540d7b4f90336beafaea6217c"}, - {file = "websockets-10.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:884be66c76a444c59f801ac13f40c76f176f1bfa815ef5b8ed44321e74f1600b"}, - {file = "websockets-10.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:931c039af54fc195fe6ad536fde4b0de04da9d5916e78e55405436348cfb0e56"}, - {file = "websockets-10.4-cp38-cp38-win32.whl", hash = "sha256:db3c336f9eda2532ec0fd8ea49fef7a8df8f6c804cdf4f39e5c5c0d4a4ad9a7a"}, - {file = "websockets-10.4-cp38-cp38-win_amd64.whl", hash = "sha256:48c08473563323f9c9debac781ecf66f94ad5a3680a38fe84dee5388cf5acaf6"}, - {file = "websockets-10.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:40e826de3085721dabc7cf9bfd41682dadc02286d8cf149b3ad05bff89311e4f"}, - {file = "websockets-10.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:56029457f219ade1f2fc12a6504ea61e14ee227a815531f9738e41203a429112"}, - {file = "websockets-10.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f5fc088b7a32f244c519a048c170f14cf2251b849ef0e20cbbb0fdf0fdaf556f"}, - {file = "websockets-10.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fc8709c00704194213d45e455adc106ff9e87658297f72d544220e32029cd3d"}, - {file = "websockets-10.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0154f7691e4fe6c2b2bc275b5701e8b158dae92a1ab229e2b940efe11905dff4"}, - {file = "websockets-10.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c6d2264f485f0b53adf22697ac11e261ce84805c232ed5dbe6b1bcb84b00ff0"}, - {file = "websockets-10.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9bc42e8402dc5e9905fb8b9649f57efcb2056693b7e88faa8fb029256ba9c68c"}, - {file = "websockets-10.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:edc344de4dac1d89300a053ac973299e82d3db56330f3494905643bb68801269"}, - {file = "websockets-10.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:84bc2a7d075f32f6ed98652db3a680a17a4edb21ca7f80fe42e38753a58ee02b"}, - {file = "websockets-10.4-cp39-cp39-win32.whl", hash = "sha256:c94ae4faf2d09f7c81847c63843f84fe47bf6253c9d60b20f25edfd30fb12588"}, - {file = "websockets-10.4-cp39-cp39-win_amd64.whl", hash = "sha256:bbccd847aa0c3a69b5f691a84d2341a4f8a629c6922558f2a70611305f902d74"}, - {file = "websockets-10.4-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:82ff5e1cae4e855147fd57a2863376ed7454134c2bf49ec604dfe71e446e2193"}, - {file = "websockets-10.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d210abe51b5da0ffdbf7b43eed0cfdff8a55a1ab17abbec4301c9ff077dd0342"}, - {file = "websockets-10.4-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:942de28af58f352a6f588bc72490ae0f4ccd6dfc2bd3de5945b882a078e4e179"}, - {file = "websockets-10.4-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9b27d6c1c6cd53dc93614967e9ce00ae7f864a2d9f99fe5ed86706e1ecbf485"}, - {file = "websockets-10.4-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:3d3cac3e32b2c8414f4f87c1b2ab686fa6284a980ba283617404377cd448f631"}, - {file = "websockets-10.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:da39dd03d130162deb63da51f6e66ed73032ae62e74aaccc4236e30edccddbb0"}, - {file = "websockets-10.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:389f8dbb5c489e305fb113ca1b6bdcdaa130923f77485db5b189de343a179393"}, - {file = "websockets-10.4-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09a1814bb15eff7069e51fed0826df0bc0702652b5cb8f87697d469d79c23576"}, - {file = "websockets-10.4-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff64a1d38d156d429404aaa84b27305e957fd10c30e5880d1765c9480bea490f"}, - {file = "websockets-10.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b343f521b047493dc4022dd338fc6db9d9282658862756b4f6fd0e996c1380e1"}, - {file = "websockets-10.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:932af322458da7e4e35df32f050389e13d3d96b09d274b22a7aa1808f292fee4"}, - {file = "websockets-10.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6a4162139374a49eb18ef5b2f4da1dd95c994588f5033d64e0bbfda4b6b6fcf"}, - {file = "websockets-10.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c57e4c1349fbe0e446c9fa7b19ed2f8a4417233b6984277cce392819123142d3"}, - {file = "websockets-10.4-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b627c266f295de9dea86bd1112ed3d5fafb69a348af30a2422e16590a8ecba13"}, - {file = "websockets-10.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:05a7233089f8bd355e8cbe127c2e8ca0b4ea55467861906b80d2ebc7db4d6b72"}, - {file = "websockets-10.4.tar.gz", hash = "sha256:eef610b23933c54d5d921c92578ae5f89813438fded840c2e9809d378dc765d3"}, -] - -[metadata] -lock-version = "2.0" -python-versions = "^3.11" -content-hash = "b8e9edc366451197565f6db35361b281c539f2cd9bd77d48458c1dca5f3d7953" diff --git a/prisma-cli/.gitignore b/prisma-cli/.gitignore new file mode 100644 index 0000000..11ddd8d --- /dev/null +++ b/prisma-cli/.gitignore @@ -0,0 +1,3 @@ +node_modules +# Keep environment variables out of version control +.env diff --git a/prisma-cli/Cargo.lock b/prisma-cli/Cargo.lock new file mode 100644 index 0000000..ad49123 --- /dev/null +++ b/prisma-cli/Cargo.lock @@ -0,0 +1,4622 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom 0.2.10", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +dependencies = [ + "memchr", +] + +[[package]] +name = "aho-corasick" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +dependencies = [ + "memchr", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "ascii" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" + +[[package]] +name = "async-native-tls" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d57d4cec3c647232e1094dc013546c0b33ce785d8aeb251e1f20dfaf8a9a13fe" +dependencies = [ + "futures-util", + "native-tls", + "thiserror", + "url", +] + +[[package]] +name = "async-trait" +version = "0.1.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "asynchronous-codec" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4057f2c32adbb2fc158e22fb38433c8e9bbf76b75a4732c7c0cbaf695fb65568" +dependencies = [ + "bytes", + "futures-sink", + "futures-util", + "memchr", + "pin-project-lite", +] + +[[package]] +name = "atomic-shim" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67cd4b51d303cf3501c301e8125df442128d3c6d7c69f71b27833d253de47e77" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base-x" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" + +[[package]] +name = "base36" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9c26bddc1271f7112e5ec797e8eeba6de2de211c1488e506b9500196dbf77c5" +dependencies = [ + "base-x", + "failure", +] + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" + +[[package]] +name = "bigdecimal" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "bigint" +version = "4.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0e8c8a600052b52482eff2cf4d810e462fdff1f656ac1ecb6232132a1ed7def" +dependencies = [ + "byteorder", + "crunchy", +] + +[[package]] +name = "bindgen" +version = "0.59.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8" +dependencies = [ + "bitflags 1.3.2", + "cexpr", + "clang-sys", + "lazy_static", + "lazycell", + "peeking_take_while", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "borsh" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" +dependencies = [ + "borsh-derive", + "hashbrown 0.13.2", +] + +[[package]] +name = "borsh-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" +dependencies = [ + "borsh-derive-internal", + "borsh-schema-derive-internal", + "proc-macro-crate", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb438156919598d2c7bad7e1c0adf3d26ed3840dbc010db1a882a65583ca2fb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634205cc43f74a1b9046ef87c4540ebda95696ec0f315024860cad7c5b0f5ccd" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "bson" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aeb8bae494e49dbc330dd23cf78f6f7accee22f640ce3ab17841badaa4ce232" +dependencies = [ + "ahash 0.7.6", + "base64 0.13.1", + "bitvec", + "chrono", + "hex", + "indexmap 1.9.3", + "js-sys", + "lazy_static", + "rand 0.8.5", + "serde", + "serde_bytes", + "serde_json", + "time 0.3.23", + "uuid", +] + +[[package]] +name = "builtin-psl-connectors" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "connection-string 0.1.14", + "either", + "enumflags2", + "indoc", + "lsp-types", + "once_cell", + "psl-core", + "regex", +] + +[[package]] +name = "bumpalo" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" + +[[package]] +name = "bytecheck" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" + +[[package]] +name = "cc" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "time 0.1.43", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "clang-sys" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "cmake" +version = "0.1.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" +dependencies = [ + "cc", +] + +[[package]] +name = "colored" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6" +dependencies = [ + "is-terminal", + "lazy_static", + "windows-sys", +] + +[[package]] +name = "combine" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" +dependencies = [ + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", +] + +[[package]] +name = "connection-string" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c4ecb0dc8c35d2c626e45ae70bbfcb1050b302f42bcdf025d913cc0c5a0b443" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "connection-string" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "510ca239cf13b7f8d16a2b48f263de7b4f8c566f0af58d901031473c76afb1e3" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "convert_case" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb4a24b1aaf0fd0ce8b45161144d6f42cd91677fd5940fd431183eb023b3a2b8" + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "cpufeatures" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" +dependencies = [ + "cfg-if", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crunchy" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cuid" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe5d03ac594f5f9cc680b142fff46f3ad9f197e19272042ebf1a40b383fee6fb" +dependencies = [ + "base36", + "bigint", + "cuid2", + "hostname", + "num", + "once_cell", + "rand 0.8.5", +] + +[[package]] +name = "cuid2" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1debbff0c0f0b54e681296c6f064a78f8ecec8e89e7fcc472443d9f85b98ca9a" +dependencies = [ + "num", + "proptest", + "rand 0.8.5", + "sha3", +] + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "data-encoding" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case 0.4.0", + "proc-macro2", + "quote", + "rustc_version 0.4.0", + "syn 1.0.109", +] + +[[package]] +name = "diagnostics" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "colored", + "indoc", + "pest", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "directories" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dml" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "chrono", + "cuid", + "either", + "enumflags2", + "indoc", + "prisma-value", + "psl-core", + "schema-ast", + "serde", + "serde_json", + "uuid", +] + +[[package]] +name = "dmmf" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "bigdecimal", + "indexmap 1.9.3", + "prisma-models", + "psl", + "schema", + "schema-builder", + "serde", + "serde_json", +] + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + +[[package]] +name = "encoding" +version = "0.2.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec" +dependencies = [ + "encoding-index-japanese", + "encoding-index-korean", + "encoding-index-simpchinese", + "encoding-index-singlebyte", + "encoding-index-tradchinese", +] + +[[package]] +name = "encoding-index-japanese" +version = "1.20141219.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91" +dependencies = [ + "encoding_index_tests", +] + +[[package]] +name = "encoding-index-korean" +version = "1.20141219.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81" +dependencies = [ + "encoding_index_tests", +] + +[[package]] +name = "encoding-index-simpchinese" +version = "1.20141219.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7" +dependencies = [ + "encoding_index_tests", +] + +[[package]] +name = "encoding-index-singlebyte" +version = "1.20141219.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a" +dependencies = [ + "encoding_index_tests", +] + +[[package]] +name = "encoding-index-tradchinese" +version = "1.20141219.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18" +dependencies = [ + "encoding_index_tests", +] + +[[package]] +name = "encoding_index_tests" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" + +[[package]] +name = "encoding_rs" +version = "0.8.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + +[[package]] +name = "enum-as-inner" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "enumflags2" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c041f5090df68b32bcd905365fd51769c8b9d553fe87fde0b683534f10c01bd2" +dependencies = [ + "enumflags2_derive", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e9a1f9f7d83e59740248a6e14ecf93929ade55027844dfcea78beafccc15745" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "failure" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" +dependencies = [ + "backtrace", + "failure_derive", +] + +[[package]] +name = "failure_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "synstructure", +] + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "fastrand" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" + +[[package]] +name = "fixedbitset" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33" + +[[package]] +name = "flate2" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +dependencies = [ + "crc32fast", + "libz-sys", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "frunk" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11a351b59e12f97b4176ee78497dff72e4276fb1ceb13e19056aca7fa0206287" +dependencies = [ + "frunk_core", + "frunk_derives", + "frunk_proc_macros", +] + +[[package]] +name = "frunk_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af2469fab0bd07e64ccf0ad57a1438f63160c69b2e57f04a439653d68eb558d6" + +[[package]] +name = "frunk_derives" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fa992f1656e1707946bbba340ad244f0814009ef8c0118eb7b658395f19a2e" +dependencies = [ + "frunk_proc_macro_helpers", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "frunk_proc_macro_helpers" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35b54add839292b743aeda6ebedbd8b11e93404f902c56223e51b9ec18a13d2c" +dependencies = [ + "frunk_core", + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "frunk_proc_macros" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71b85a1d4a9a6b300b41c05e8e13ef2feca03e0334127f29eca9506a7fe13a93" +dependencies = [ + "frunk_core", + "frunk_proc_macro_helpers", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" + +[[package]] +name = "futures-executor" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" + +[[package]] +name = "futures-macro" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "futures-sink" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" + +[[package]] +name = "futures-task" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" + +[[package]] +name = "futures-timer" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" + +[[package]] +name = "futures-util" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gimli" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "graphql-parser" +version = "0.3.0" +source = "git+https://github.com/prisma/graphql-parser#6a3f58bd879065588e710cb02b5bd30c1ce182c3" +dependencies = [ + "combine", + "indexmap 1.9.3", + "thiserror", +] + +[[package]] +name = "h2" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 1.9.3", + "slab", + "tokio", + "tokio-util 0.7.8", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash 0.7.6", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.6", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash 0.8.3", +] + +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" + +[[package]] +name = "hashlink" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7249a3129cbc1ffccd74857f81464a323a152173cdb134e0fd81bc803b29facf" +dependencies = [ + "hashbrown 0.11.2", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "hostname" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +dependencies = [ + "libc", + "match_cfg", + "winapi", +] + +[[package]] +name = "http" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "hyper" +version = "0.14.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.4.9", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls 0.3.1", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", +] + +[[package]] +name = "indoc" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306" + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipconfig" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" +dependencies = [ + "socket2 0.5.3", + "widestring", + "windows-sys", + "winreg 0.50.0", +] + +[[package]] +name = "ipnet" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" + +[[package]] +name = "is-terminal" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +dependencies = [ + "hermit-abi", + "rustix", + "windows-sys", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "js-sys" +version = "0.3.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "keccak" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "lexical" +version = "6.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7aefb36fd43fef7003334742cbf77b243fcd36418a1d1bdd480d613a67968f6" +dependencies = [ + "lexical-core", +] + +[[package]] +name = "lexical-core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" +dependencies = [ + "lexical-parse-float", + "lexical-parse-integer", + "lexical-util", + "lexical-write-float", + "lexical-write-integer", +] + +[[package]] +name = "lexical-parse-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" +dependencies = [ + "lexical-parse-integer", + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-parse-integer" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "lexical-util" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" +dependencies = [ + "static_assertions", +] + +[[package]] +name = "lexical-write-float" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" +dependencies = [ + "lexical-util", + "lexical-write-integer", + "static_assertions", +] + +[[package]] +name = "lexical-write-integer" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" +dependencies = [ + "lexical-util", + "static_assertions", +] + +[[package]] +name = "libc" +version = "0.2.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libm" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" + +[[package]] +name = "libsqlite3-sys" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290b64917f8b0cb885d9de0f9959fe1f775d7fa12f1da2db9001c1c8ab60f89d" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "libz-sys" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ee889ecc9568871456d42f603d6a0ce59ff328d291063a45cbdf0036baf6db" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linux-raw-sys" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" + +[[package]] +name = "lock_api" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" + +[[package]] +name = "lru" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" +dependencies = [ + "hashbrown 0.12.3", +] + +[[package]] +name = "lru-cache" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "lsp-types" +version = "0.91.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2368312c59425dd133cb9a327afee65be0a633a8ce471d248e2202a48f8f68ae" +dependencies = [ + "bitflags 1.3.2", + "serde", + "serde_json", + "serde_repr", + "url", +] + +[[package]] +name = "mach" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +dependencies = [ + "libc", +] + +[[package]] +name = "match_cfg" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "md-5" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +dependencies = [ + "digest", +] + +[[package]] +name = "md5" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e6bcd6433cff03a4bfc3d9834d504467db1f1cf6d0ea765d37d330249ed629d" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "metrics" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e52eb6380b6d2a10eb3434aec0885374490f5b82c8aaf5cd487a183c98be834" +dependencies = [ + "ahash 0.7.6", + "metrics-macros", +] + +[[package]] +name = "metrics" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "142c53885123b68d94108295a09d4afe1a1388ed95b54d5dacd9a454753030f2" +dependencies = [ + "ahash 0.7.6", + "metrics-macros", +] + +[[package]] +name = "metrics-exporter-prometheus" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953cbbb6f9ba4b9304f4df79b98cdc9d14071ed93065a9fca11c00c5d9181b66" +dependencies = [ + "hyper", + "indexmap 1.9.3", + "ipnet", + "metrics 0.19.0", + "metrics-util 0.13.0", + "parking_lot 0.11.2", + "quanta", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "metrics-macros" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49e30813093f757be5cf21e50389a24dc7dbb22c49f23b7e8f51d69b508a5ffa" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "metrics-util" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65a9e83b833e1d2e07010a386b197c13aa199bbd0fca5cf69bfa147972db890a" +dependencies = [ + "aho-corasick 0.7.20", + "atomic-shim", + "crossbeam-epoch", + "crossbeam-utils", + "hashbrown 0.11.2", + "indexmap 1.9.3", + "metrics 0.18.1", + "num_cpus", + "ordered-float", + "parking_lot 0.11.2", + "quanta", + "radix_trie", + "sketches-ddsketch", +] + +[[package]] +name = "metrics-util" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd1f4b69bef1e2b392b2d4a12902f2af90bb438ba4a66aa222d1023fa6561b50" +dependencies = [ + "atomic-shim", + "crossbeam-epoch", + "crossbeam-utils", + "hashbrown 0.11.2", + "metrics 0.19.0", + "num_cpus", + "parking_lot 0.11.2", + "quanta", + "sketches-ddsketch", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", +] + +[[package]] +name = "mobc" +version = "0.7.3" +source = "git+https://github.com/prisma/mobc?tag=1.0.6#80462c4870a2bf6aab49da15c88c021bae531da8" +dependencies = [ + "async-trait", + "futures-channel", + "futures-core", + "futures-timer", + "futures-util", + "log", + "metrics 0.18.1", + "thiserror", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "mongodb" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebcd85ec209a5b84fd9f54b9e381f6fa17462bc74160d018fc94fd8b9f61faa8" +dependencies = [ + "async-trait", + "base64 0.13.1", + "bitflags 1.3.2", + "bson", + "chrono", + "derivative", + "derive_more", + "futures-core", + "futures-executor", + "futures-io", + "futures-util", + "hex", + "hmac", + "lazy_static", + "md-5", + "pbkdf2", + "percent-encoding", + "rand 0.8.5", + "rustc_version_runtime", + "rustls", + "rustls-pemfile", + "serde", + "serde_bytes", + "serde_with", + "sha-1", + "sha2", + "socket2 0.4.9", + "stringprep", + "strsim", + "take_mut", + "thiserror", + "tokio", + "tokio-rustls", + "tokio-util 0.7.8", + "trust-dns-proto", + "trust-dns-resolver", + "typed-builder", + "uuid", + "webpki-roots", +] + +[[package]] +name = "mongodb-client" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "mongodb", + "once_cell", + "percent-encoding", + "thiserror", +] + +[[package]] +name = "mongodb-query-connector" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "anyhow", + "async-trait", + "bigdecimal", + "bson", + "chrono", + "cuid", + "futures", + "indexmap 1.9.3", + "itertools", + "mongodb", + "mongodb-client", + "prisma-models", + "prisma-value", + "psl", + "query-connector", + "query-engine-metrics", + "rand 0.7.3", + "regex", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-futures", + "user-facing-errors", + "uuid", +] + +[[package]] +name = "mysql_async" +version = "0.30.0" +source = "git+https://github.com/prisma/mysql_async?rev=e3f8bdb41d57e769412f53d0f479bf67fdcc0ee3#e3f8bdb41d57e769412f53d0f479bf67fdcc0ee3" +dependencies = [ + "bytes", + "crossbeam", + "flate2", + "futures-core", + "futures-sink", + "futures-util", + "lazy_static", + "lru", + "mio", + "mysql_common", + "native-tls", + "once_cell", + "pem", + "percent-encoding", + "pin-project", + "serde", + "serde_json", + "socket2 0.4.9", + "thiserror", + "tokio", + "tokio-native-tls 0.3.0", + "tokio-util 0.7.8", + "twox-hash", + "url", +] + +[[package]] +name = "mysql_common" +version = "0.29.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9006c95034ccf7b903d955f210469119f6c3477fc9c9e7a7845ce38a3e665c2a" +dependencies = [ + "base64 0.13.1", + "bigdecimal", + "bindgen", + "bitflags 1.3.2", + "bitvec", + "byteorder", + "bytes", + "cc", + "cmake", + "crc32fast", + "flate2", + "frunk", + "lazy_static", + "lexical", + "num-bigint", + "num-traits", + "rand 0.8.5", + "regex", + "rust_decimal", + "saturating", + "serde", + "serde_json", + "sha1", + "sha2", + "smallvec", + "subprocess", + "thiserror", + "time 0.3.23", + "uuid", +] + +[[package]] +name = "native-tls" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "nibble_vec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" +dependencies = [ + "smallvec", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "openssl" +version = "0.10.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "345df152bc43501c5eb9e4654ff05f794effb78d4efe3d53abc158baddc0703d" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-src" +version = "111.26.0+1.1.1u" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efc62c9f12b22b8f5208c23a7200a442b2e5999f8bdf80233852122b5a4f6f37" +dependencies = [ + "cc", +] + +[[package]] +name = "openssl-sys" +version = "0.9.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374533b0e45f3a7ced10fcaeccca020e66656bc03dac384f852e4e5a7a8104a6" +dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "opentelemetry" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "js-sys", + "lazy_static", + "percent-encoding", + "pin-project", + "rand 0.8.5", + "thiserror", + "tokio", +] + +[[package]] +name = "opentls" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f561874f8d6ecfb674fc08863414040c93cc90c0b6963fe679895fab8b65560" +dependencies = [ + "futures-util", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "url", +] + +[[package]] +name = "ordered-float" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87" +dependencies = [ + "num-traits", +] + +[[package]] +name = "ordermap" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.8", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.3.5", + "smallvec", + "windows-targets", +] + +[[package]] +name = "parser-database" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "diagnostics", + "either", + "enumflags2", + "indexmap 1.9.3", + "schema-ast", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest", +] + +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + +[[package]] +name = "pest" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d2d1d55045829d65aad9d389139882ad623b33b904e7c9f1b10c5b8927298e5" +dependencies = [ + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f94bca7e7a599d89dea5dfa309e217e7906c3c007fb9c3299c40b10d6a315d3" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d490fe7e8556575ff6911e45567ab95e71617f43781e5c05490dc8d75c965c" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "pest_meta" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2674c66ebb4b4d9036012091b537aae5878970d6999f81a265034d85b136b341" +dependencies = [ + "once_cell", + "pest", + "sha2", +] + +[[package]] +name = "petgraph" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f" +dependencies = [ + "fixedbitset", + "ordermap", +] + +[[package]] +name = "phf" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "030ad2bc4db10a8944cb0d837f158bdfec4d4a4873ab701a95046770d11f8842" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + +[[package]] +name = "postgres-native-tls" +version = "0.5.0" +source = "git+https://github.com/pimeys/rust-postgres?branch=pgbouncer-mode#74f0847e9a8ac350c48dd65c4c33e9be5fcf6010" +dependencies = [ + "native-tls", + "tokio", + "tokio-native-tls 0.3.1", + "tokio-postgres", +] + +[[package]] +name = "postgres-protocol" +version = "0.6.4" +source = "git+https://github.com/pimeys/rust-postgres?branch=pgbouncer-mode#74f0847e9a8ac350c48dd65c4c33e9be5fcf6010" +dependencies = [ + "base64 0.13.1", + "byteorder", + "bytes", + "fallible-iterator", + "hmac", + "md-5", + "memchr", + "rand 0.8.5", + "sha2", + "stringprep", +] + +[[package]] +name = "postgres-types" +version = "0.2.4" +source = "git+https://github.com/pimeys/rust-postgres?branch=pgbouncer-mode#74f0847e9a8ac350c48dd65c4c33e9be5fcf6010" +dependencies = [ + "bit-vec", + "bytes", + "chrono", + "fallible-iterator", + "postgres-protocol", + "serde", + "serde_json", + "uuid", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "pretty-hex" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6fa0831dd7cc608c38a5e323422a0077678fa5744aa2be4ad91c4ece8eec8d5" + +[[package]] +name = "prisma-cli" +version = "0.1.0" +dependencies = [ + "prisma-client-rust-cli", +] + +[[package]] +name = "prisma-client-rust-cli" +version = "0.6.8" +source = "git+https://github.com/Brendonovich/prisma-client-rust?tag=0.6.8#51f0473b642b16bb78fe0f5f3235aeb56f89300d" +dependencies = [ + "directories", + "flate2", + "http", + "prisma-client-rust-sdk", + "proc-macro2", + "quote", + "regex", + "reqwest", + "serde", + "serde_json", + "serde_path_to_error", + "syn 1.0.109", + "thiserror", +] + +[[package]] +name = "prisma-client-rust-sdk" +version = "0.6.8" +source = "git+https://github.com/Brendonovich/prisma-client-rust?tag=0.6.8#51f0473b642b16bb78fe0f5f3235aeb56f89300d" +dependencies = [ + "convert_case 0.5.0", + "dml", + "dmmf", + "prisma-models", + "proc-macro2", + "psl", + "query-core", + "quote", + "request-handlers", + "serde", + "serde_json", + "serde_path_to_error", + "syn 1.0.109", + "thiserror", +] + +[[package]] +name = "prisma-models" +version = "0.0.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "bigdecimal", + "chrono", + "itertools", + "once_cell", + "prisma-value", + "psl", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "prisma-value" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "base64 0.12.3", + "bigdecimal", + "chrono", + "once_cell", + "regex", + "serde", + "serde_json", + "uuid", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro2" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e35c06b98bf36aba164cc17cb25f7e232f5c4aeea73baa14b8a9f0d92dbfa65" +dependencies = [ + "bit-set", + "bitflags 1.3.2", + "byteorder", + "lazy_static", + "num-traits", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_xorshift", + "regex-syntax 0.6.29", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "psl" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "builtin-psl-connectors", + "dml", + "psl-core", +] + +[[package]] +name = "psl-core" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "bigdecimal", + "chrono", + "diagnostics", + "enumflags2", + "indoc", + "itertools", + "lsp-types", + "once_cell", + "parser-database", + "prisma-value", + "regex", + "schema-ast", + "serde", + "serde_json", + "url", +] + +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "quaint" +version = "0.2.0-alpha.13" +source = "git+https://github.com/Brendonovich/quaint?tag=0.6.5#2bf0c3620f76d83982c17e567b71da6fc9d65d14" +dependencies = [ + "async-trait", + "base64 0.12.3", + "bigdecimal", + "bit-vec", + "byteorder", + "bytes", + "chrono", + "connection-string 0.1.14", + "either", + "futures", + "hex", + "libsqlite3-sys", + "lru-cache", + "metrics 0.18.1", + "mobc", + "mysql_async", + "native-tls", + "num_cpus", + "percent-encoding", + "postgres-native-tls", + "postgres-types", + "rusqlite", + "serde_json", + "sqlformat", + "thiserror", + "tiberius", + "tokio", + "tokio-postgres", + "tokio-util 0.6.10", + "tracing", + "tracing-core", + "url", + "uuid", +] + +[[package]] +name = "quanta" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20afe714292d5e879d8b12740aa223c6a88f118af41870e8b6196e39a02238a8" +dependencies = [ + "crossbeam-utils", + "libc", + "mach", + "once_cell", + "raw-cpuid", + "wasi 0.10.2+wasi-snapshot-preview1", + "web-sys", + "winapi", +] + +[[package]] +name = "query-connector" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "anyhow", + "async-trait", + "chrono", + "futures", + "indexmap 1.9.3", + "itertools", + "prisma-models", + "prisma-value", + "serde", + "serde_json", + "thiserror", + "user-facing-errors", + "uuid", +] + +[[package]] +name = "query-core" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "async-trait", + "base64 0.12.3", + "bigdecimal", + "chrono", + "connection-string 0.1.14", + "crossbeam-queue", + "cuid", + "enumflags2", + "futures", + "indexmap 1.9.3", + "itertools", + "lazy_static", + "lru", + "mongodb-client", + "mongodb-query-connector", + "once_cell", + "opentelemetry", + "parking_lot 0.12.1", + "petgraph", + "pin-utils", + "prisma-models", + "prisma-value", + "psl", + "query-connector", + "query-engine-metrics", + "schema", + "schema-builder", + "serde", + "serde_json", + "sql-query-connector", + "thiserror", + "tokio", + "tracing", + "tracing-futures", + "tracing-opentelemetry", + "tracing-subscriber", + "url", + "user-facing-errors", + "uuid", +] + +[[package]] +name = "query-engine-metrics" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "metrics 0.18.1", + "metrics-exporter-prometheus", + "metrics-util 0.12.1", + "once_cell", + "parking_lot 0.12.1", + "serde", + "serde_json", + "tracing", + "tracing-futures", + "tracing-subscriber", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "radix_trie" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" +dependencies = [ + "endian-type", + "nibble_vec", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.10", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "raw-cpuid" +version = "10.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom 0.2.10", + "redox_syscall 0.2.16", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" +dependencies = [ + "aho-corasick 1.0.2", + "memchr", + "regex-automata", + "regex-syntax 0.7.4", +] + +[[package]] +name = "regex-automata" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310" +dependencies = [ + "aho-corasick 1.0.2", + "memchr", + "regex-syntax 0.7.4", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" + +[[package]] +name = "rend" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581008d2099240d37fb08d77ad713bcaec2c4d89d50b5b21a8bb1996bbab68ab" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "request-handlers" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "bigdecimal", + "connection-string 0.1.14", + "dmmf", + "futures", + "graphql-parser", + "indexmap 1.9.3", + "itertools", + "psl", + "query-core", + "serde", + "serde_json", + "thiserror", + "tracing", + "url", + "user-facing-errors", +] + +[[package]] +name = "reqwest" +version = "0.11.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" +dependencies = [ + "base64 0.21.2", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-tls", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-native-tls 0.3.1", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg 0.10.1", +] + +[[package]] +name = "resolv-conf" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" +dependencies = [ + "hostname", + "quick-error", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi", +] + +[[package]] +name = "rkyv" +version = "0.7.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0200c8230b013893c0b2d6213d6ec64ed2b9be2e0e016682b7224ff82cff5c58" +dependencies = [ + "bitvec", + "bytecheck", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2e06b915b5c230a17d7a736d1e2e63ee753c256a8614ef3f5147b13a4f5541d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rusqlite" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c4b1eaf239b47034fb450ee9cdedd7d0226571689d8823030c4b6c2cb407152" +dependencies = [ + "bitflags 1.3.2", + "chrono", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "memchr", + "smallvec", +] + +[[package]] +name = "rust_decimal" +version = "1.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0446843641c69436765a35a5a77088e28c2e6a12da93e84aa3ab1cd4aa5a042" +dependencies = [ + "arrayvec", + "borsh", + "bytecheck", + "byteorder", + "bytes", + "num-traits", + "rand 0.8.5", + "rkyv", + "serde", + "serde_json", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.18", +] + +[[package]] +name = "rustc_version_runtime" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d31b7153270ebf48bf91c65ae5b0c00e749c4cfad505f66530ac74950249582f" +dependencies = [ + "rustc_version 0.2.3", + "semver 0.9.0", +] + +[[package]] +name = "rustix" +version = "0.38.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5" +dependencies = [ + "bitflags 2.3.3", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + +[[package]] +name = "rustls" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +dependencies = [ + "log", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +dependencies = [ + "base64 0.21.2", +] + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "saturating" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ece8e78b2f38ec51c51f5d475df0a7187ba5111b2a28bdc761ee05b075d40a71" + +[[package]] +name = "schannel" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "schema" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "once_cell", + "prisma-models", + "psl", +] + +[[package]] +name = "schema-ast" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "diagnostics", + "pest", + "pest_derive", +] + +[[package]] +name = "schema-builder" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "itertools", + "lazy_static", + "once_cell", + "prisma-models", + "psl", + "schema", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + +[[package]] +name = "security-framework" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.174" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b88756493a5bd5e5395d53baa70b194b05764ab85b59e43e4b8f4e1192fa9b1" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_bytes" +version = "0.11.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab33ec92f677585af6d88c65593ae2375adde54efdbf16d597f2cbc7a6d368ff" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.174" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e5c3a298c7f978e53536f95a63bdc4c4a64550582f31a0359a9afda6aede62e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "serde_json" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d03b412469450d4404fe8499a268edd7f8b79fecb074b0d812ad64ca21f4031b" +dependencies = [ + "indexmap 2.0.0", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4beec8bce849d58d06238cb50db2e1c417cfeafa4c63f692b15c82b7c80f8335" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e168eaaf71e8f9bd6037feb05190485708e019f4fd87d161b3c0a0d37daf85e5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff" +dependencies = [ + "serde", + "serde_with_macros", +] + +[[package]] +name = "serde_with_macros" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sha-1" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest", + "keccak", +] + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "simdutf8" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" + +[[package]] +name = "siphasher" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" + +[[package]] +name = "sketches-ddsketch" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04d2ecae5fcf33b122e2e6bd520a57ccf152d2dde3b38c71039df1a6867264ee" + +[[package]] +name = "slab" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" + +[[package]] +name = "socket2" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "socket2" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "sql-query-connector" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "anyhow", + "async-trait", + "bigdecimal", + "chrono", + "cuid", + "futures", + "itertools", + "once_cell", + "opentelemetry", + "prisma-models", + "prisma-value", + "psl", + "quaint", + "query-connector", + "rand 0.7.3", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-futures", + "tracing-opentelemetry", + "user-facing-errors", + "uuid", +] + +[[package]] +name = "sqlformat" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c12bc9199d1db8234678b7051747c07f517cdcf019262d1847b94ec8b1aee3e" +dependencies = [ + "itertools", + "nom", + "unicode_categories", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "stringprep" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3737bde7edce97102e0e2b15365bf7a20bfdb5f60f4f9e8d7004258a51a8da" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "subprocess" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c2e86926081dda636c546d8c5e641661049d7562a68f5488be4a1f7f66f6086" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b60f673f44a8255b9c8c657daf66a596d435f2da81a555b06dc644d080ba45e0" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "unicode-xid", +] + +[[package]] +name = "take_mut" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5486094ee78b2e5038a6382ed7645bc084dc2ec433426ca4c3cb61e2007b8998" +dependencies = [ + "cfg-if", + "fastrand", + "redox_syscall 0.3.5", + "rustix", + "windows-sys", +] + +[[package]] +name = "thiserror" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "tiberius" +version = "0.11.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66303a42b7c5daffb95c10cd8f3007a9c29b3e90128cf42b3738f58102aa2516" +dependencies = [ + "async-native-tls", + "async-trait", + "asynchronous-codec", + "bigdecimal", + "byteorder", + "bytes", + "chrono", + "connection-string 0.2.0", + "encoding", + "enumflags2", + "futures", + "futures-sink", + "futures-util", + "num-traits", + "once_cell", + "opentls", + "pin-project-lite", + "pretty-hex", + "thiserror", + "tokio", + "tokio-util 0.7.8", + "tracing", + "uuid", + "winauth", +] + +[[package]] +name = "time" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "time" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59e399c068f43a5d116fedaf73b203fa4f9c519f17e2b34f63221d3792f81446" +dependencies = [ + "itoa", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" + +[[package]] +name = "time-macros" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96ba15a897f3c86766b757e5ac7221554c6750054d74d5b28844fce5fb36a6c4" +dependencies = [ + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" +dependencies = [ + "autocfg", + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot 0.12.1", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.4.9", + "tokio-macros", + "windows-sys", +] + +[[package]] +name = "tokio-macros" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.0" +source = "git+https://github.com/pimeys/tls?branch=vendored-openssl#6d0e6fc7a4bf6f290b1033764b47cb3f26d7fceb" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-postgres" +version = "0.7.7" +source = "git+https://github.com/pimeys/rust-postgres?branch=pgbouncer-mode#74f0847e9a8ac350c48dd65c4c33e9be5fcf6010" +dependencies = [ + "async-trait", + "byteorder", + "bytes", + "fallible-iterator", + "futures-channel", + "futures-util", + "log", + "parking_lot 0.12.1", + "percent-encoding", + "phf", + "pin-project-lite", + "postgres-protocol", + "postgres-types", + "socket2 0.4.9", + "tokio", + "tokio-util 0.7.8", +] + +[[package]] +name = "tokio-rustls" +version = "0.23.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +dependencies = [ + "rustls", + "tokio", + "webpki", +] + +[[package]] +name = "tokio-util" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "log", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.27", +] + +[[package]] +name = "tracing-core" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbbe89715c1dbbb790059e2565353978564924ee85017b5fff365c872ff6721f" +dependencies = [ + "once_cell", + "opentelemetry", + "tracing", + "tracing-core", + "tracing-log", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +dependencies = [ + "nu-ansi-term", + "sharded-slab", + "smallvec", + "thread_local", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "trust-dns-proto" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c31f240f59877c3d4bb3b3ea0ec5a6a0cff07323580ff8c7a605cd7d08b255d" +dependencies = [ + "async-trait", + "cfg-if", + "data-encoding", + "enum-as-inner", + "futures-channel", + "futures-io", + "futures-util", + "idna 0.2.3", + "ipnet", + "lazy_static", + "log", + "rand 0.8.5", + "smallvec", + "thiserror", + "tinyvec", + "tokio", + "url", +] + +[[package]] +name = "trust-dns-resolver" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ba72c2ea84515690c9fcef4c6c660bb9df3036ed1051686de84605b74fd558" +dependencies = [ + "cfg-if", + "futures-util", + "ipconfig", + "lazy_static", + "log", + "lru-cache", + "parking_lot 0.12.1", + "resolv-conf", + "smallvec", + "thiserror", + "tokio", + "trust-dns-proto", +] + +[[package]] +name = "try-lock" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "rand 0.8.5", + "static_assertions", +] + +[[package]] +name = "typed-builder" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89851716b67b937e393b3daa8423e67ddfc4bbbf1654bcf05488e95e0828db0c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "unicode-bidi" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + +[[package]] +name = "unicode-ident" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "unicode_categories" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" + +[[package]] +name = "unreachable" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" +dependencies = [ + "void", +] + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "url" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +dependencies = [ + "form_urlencoded", + "idna 0.4.0", + "percent-encoding", + "serde", +] + +[[package]] +name = "user-facing-error-macros" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "user-facing-errors" +version = "0.1.0" +source = "git+https://github.com/Brendonovich/prisma-engines?tag=pcr-0.6.5#7cc20cc54a7ab0b5e38c81901826939a91a17ba0" +dependencies = [ + "backtrace", + "indoc", + "quaint", + "serde", + "serde_json", + "tracing", + "user-facing-error-macros", +] + +[[package]] +name = "uuid" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +dependencies = [ + "getrandom 0.2.10", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.10.2+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca" +dependencies = [ + "bumpalo", + "lazy_static", + "log", + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb6ec270a31b1d3c7e266b999739109abce8b6c87e4b31fcfcd788b65267395" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" + +[[package]] +name = "web-sys" +version = "0.3.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" +dependencies = [ + "webpki", +] + +[[package]] +name = "widestring" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "winauth" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f820cd208ce9c6b050812dc2d724ba98c6c1e9db5ce9b3f58d925ae5723a5e6" +dependencies = [ + "bitflags 1.3.2", + "byteorder", + "md5", + "rand 0.7.3", + "winapi", +] + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] diff --git a/prisma-cli/Cargo.toml b/prisma-cli/Cargo.toml new file mode 100644 index 0000000..a0a9646 --- /dev/null +++ b/prisma-cli/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "prisma-cli" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +prisma-client-rust-cli = { git = "https://github.com/Brendonovich/prisma-client-rust", tag = "0.6.8", features = ["postgresql"] } diff --git a/prisma-cli/src/main.rs b/prisma-cli/src/main.rs new file mode 100644 index 0000000..f758015 --- /dev/null +++ b/prisma-cli/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + prisma_client_rust_cli::run(); +} diff --git a/prisma/schema.prisma b/prisma/schema.prisma new file mode 100644 index 0000000..1fea64a --- /dev/null +++ b/prisma/schema.prisma @@ -0,0 +1,165 @@ +generator client { + provider = "cargo prisma" + output = "../src/prisma.rs" +} + +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} + +model AuthorAnnotation { + id Int @id @default(autoincrement()) + author_id Int @unique @map("author") + title String @db.VarChar(256) + text String + file String? @db.VarChar(256) + author Author @relation(fields: [author_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "fk_author_annotations_authors_id_author") + + @@map("author_annotations") +} + +model Author { + id Int @id @default(autoincrement()) + source_id Int @map("source") @db.SmallInt + remote_id Int + first_name String @db.VarChar(256) + last_name String @db.VarChar(256) + middle_name String? @db.VarChar(256) + source Source @relation(fields: [source_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "fk_authors_sources_id_source") + author_annotation AuthorAnnotation? + book_authors BookAuthor[] + translations Translator[] + + @@unique([source_id, remote_id], map: "uc_authors_source_remote_id") + @@index([last_name(ops: raw("gin_trgm_ops"))], map: "tgrm_authors_l", type: Gin) + @@map("authors") +} + +model BookAnnotation { + id Int @id @default(autoincrement()) + book_id Int @unique @map("book") + title String @db.VarChar(256) + text String + file String? @db.VarChar(256) + book Book @relation(fields: [book_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "fk_book_annotations_books_id_book") + + @@map("book_annotations") +} + +model BookAuthor { + id Int @id @default(autoincrement()) + author_id Int @map("author") + book_id Int @map("book") + author Author @relation(fields: [author_id], references: [id], onDelete: Cascade, map: "fk_book_authors_authors_author_id") + book Book @relation(fields: [book_id], references: [id], onDelete: Cascade, map: "fk_book_authors_books_book_id") + + @@unique([book_id, author_id], map: "uc_book_authors_book_author") + @@index([author_id], map: "book_authors_author") + @@index([book_id], map: "book_authors_book") + @@map("book_authors") +} + +model BookGenre { + id Int @id @default(autoincrement()) + genre_id Int @map("genre") + book_id Int @map("book") + book Book @relation(fields: [book_id], references: [id], onDelete: Cascade, map: "fk_book_genres_books_book_id") + genre Genre @relation(fields: [genre_id], references: [id], onDelete: Cascade, map: "fk_book_genres_genres_genre_id") + + @@unique([book_id, genre_id], map: "uc_book_genres_book_genre") + @@index([book_id], map: "book_genres_book") + @@index([genre_id], map: "book_genres_genre") + @@map("book_genres") +} + +model BookSequence { + id Int @id @default(autoincrement()) + position Int @db.SmallInt + sequence_id Int @map("sequence") + book_id Int @map("book") + book Book @relation(fields: [book_id], references: [id], onDelete: Cascade, map: "fk_book_sequences_books_book_id") + sequence Sequence @relation(fields: [sequence_id], references: [id], onDelete: Cascade, map: "fk_book_sequences_sequences_sequence_id") + + @@unique([book_id, sequence_id], map: "uc_book_sequences_book_sequence") + @@index([book_id], map: "book_sequences_book") + @@index([sequence_id], map: "book_sequences_sequence") + @@map("book_sequences") +} + +model Book { + id Int @id @default(autoincrement()) + source_id Int @map("source") @db.SmallInt + remote_id Int + title String @db.VarChar(256) + lang String @db.VarChar(3) + file_type String @db.VarChar(4) + uploaded DateTime @db.Date + is_deleted Boolean @default(false) + pages Int? + source Source @relation(fields: [source_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "fk_books_sources_id_source") + book_annotation BookAnnotation? + book_authors BookAuthor[] + book_genres BookGenre[] + book_sequences BookSequence[] + translations Translator[] + + @@unique([source_id, remote_id], map: "uc_books_source_remote_id") + @@index([file_type], map: "ix_books_file_type") + @@index([title], map: "ix_books_title") + @@index([title(ops: raw("gin_trgm_ops"))], map: "trgm_books_title", type: Gin) + @@map("books") +} + +model Genre { + id Int @id @default(autoincrement()) + source_id Int @map("source") @db.SmallInt + remote_id Int + code String @db.VarChar(45) + description String @db.VarChar(99) + meta String @db.VarChar(45) + source Source @relation(fields: [source_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "fk_genres_sources_id_source") + book_genres BookGenre[] + + @@unique([source_id, remote_id], map: "uc_genres_source_remote_id") + @@map("genres") +} + +model Sequence { + id Int @id @default(autoincrement()) + source_id Int @map("source") @db.SmallInt + remote_id Int + name String @db.VarChar(256) + source Source @relation(fields: [source_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "fk_sequences_sources_id_source") + book_sequences BookSequence[] + + @@unique([source_id, remote_id], map: "uc_sequences_source_remote_id") + @@index([name], map: "ix_sequences_name") + @@index([name(ops: raw("gin_trgm_ops"))], map: "tgrm_sequences_name", type: Gin) + @@map("sequences") +} + +model Source { + id Int @id @default(autoincrement()) @db.SmallInt + name String @unique @db.VarChar(32) + authors Author[] + books Book[] + genres Genre[] + sequences Sequence[] + + @@map("sources") +} + +model Translator { + id Int @id @default(autoincrement()) + position Int @db.SmallInt + author_id Int @map("author") + book_id Int @map("book") + author Author @relation(fields: [author_id], references: [id], onDelete: Cascade, map: "fk_translations_authors_author_id") + book Book @relation(fields: [book_id], references: [id], onDelete: Cascade, map: "fk_translations_books_book_id") + + @@unique([book_id, author_id], map: "uc_translations_book_author") + @@index([author_id], map: "translations_author") + @@index([book_id], map: "translations_book") + @@map("translations") +} diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index 2b000b4..0000000 --- a/pyproject.toml +++ /dev/null @@ -1,76 +0,0 @@ -[tool.poetry] -name = "fastapi_book_server" -version = "0.1.0" -description = "" -authors = ["Kurbanov Bulat "] - -[tool.poetry.dependencies] -python = "^3.11" -fastapi = "^0.101.0" -pydantic = "^1.10.4" -uvicorn = {extras = ["standard"], version = "^0.23.2"} -ormar = {extras = ["postgresql"], version = "^0.12.2"} -alembic = "^1.11.2" -fastapi-pagination = {extras = ["ormar"], version = "^0.12.7"} -orjson = "^3.9.4" -httpx = "^0.24.1" -meilisearch = "^0.28.2" -prometheus-fastapi-instrumentator = "^6.1.0" -uvloop = "^0.17.0" -sentry-sdk = "^1.29.2" -redis = {extras = ["hiredis"], version = "^4.6.0"} -gunicorn = "^21.2.0" - -[tool.poetry.group.dev.dependencies] -pre-commit = "^2.21.0" - -[build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" - -[tool.black] -include = '\.pyi?$' -exclude = ''' -/( - \.git - | \.vscode - | \venv - | alembic -)/ -''' - -[tool.ruff] -fix = true -target-version = "py311" -src = ["fastapi_book_server"] -line-length=88 -ignore = [] -select = ["B", "C", "E", "F", "W", "B9", "I001"] -exclude = [ - # No need to traverse our git directory - ".git", - # There's no value in checking cache directories - "__pycache__", - # The conf file is mostly autogenerated, ignore it - "fastapi_book_server/app/alembic", -] - -[tool.ruff.flake8-bugbear] -extend-immutable-calls = ["fastapi.File", "fastapi.Form", "fastapi.Security", "fastapi.Query", "fastapi.Depends"] - -[tool.ruff.mccabe] -max-complexity = 15 - -[tool.ruff.isort] -known-first-party = ["core", "app"] -force-sort-within-sections = true -force-wrap-aliases = true -section-order = ["future", "standard-library", "base_framework", "framework_ext", "third-party", "first-party", "local-folder"] -lines-after-imports = 2 - -[tool.ruff.isort.sections] -base_framework = ["fastapi",] -framework_ext = ["starlette"] - -[tool.ruff.pyupgrade] -keep-runtime-typing = true diff --git a/scripts/healthcheck.py b/scripts/healthcheck.py deleted file mode 100644 index 9938d7c..0000000 --- a/scripts/healthcheck.py +++ /dev/null @@ -1,11 +0,0 @@ -import os - -import httpx - - -CHECK_URL = os.environ.get("HEALTHCHECK_URL", "http://localhost:8080/healthcheck") - -response = httpx.get(CHECK_URL) - -print(f"HEALTHCHECK STATUS: {response.text}") -exit(0 if response.status_code == 200 else 1) diff --git a/scripts/start.sh b/scripts/start.sh deleted file mode 100644 index d7a7c77..0000000 --- a/scripts/start.sh +++ /dev/null @@ -1,8 +0,0 @@ -cd /app - -rm -rf prometheus -mkdir prometheus - -alembic -c ./app/alembic.ini upgrade head - -gunicorn -k uvicorn.workers.UvicornWorker main:app --bind 0.0.0.0:8080 --workers=2 --timeout 30 --max-requests=512000 --max-requests-jitter=3 diff --git a/src/config.rs b/src/config.rs new file mode 100644 index 0000000..475bb79 --- /dev/null +++ b/src/config.rs @@ -0,0 +1,43 @@ +use once_cell::sync::Lazy; + +fn get_env(env: &'static str) -> String { + std::env::var(env).unwrap_or_else(|_| panic!("Cannot get the {} env variable", env)) +} + +pub struct Config { + pub api_key: String, + + pub postgres_user: String, + pub postgres_password: String, + pub postgres_host: String, + pub postgres_port: u32, + pub postgres_db: String, + + pub meili_host: String, + pub meili_master_key: String, + + pub sentry_dsn: String +} + +impl Config { + pub fn load() -> Config { + Config { + api_key: get_env("API_KEY"), + + postgres_user: get_env("POSTGRES_USER"), + postgres_password: get_env("POSTGRES_PASSWORD"), + postgres_host: get_env("POSTGRES_HOST"), + postgres_port: get_env("POSTGRES_PORT").parse().unwrap(), + postgres_db: get_env("POSTGRES_DB"), + + meili_host: get_env("MEILI_HOST"), + meili_master_key: get_env("MEILI_MASTER_KEY"), + + sentry_dsn: get_env("SENTRY_DSN") + } + } +} + +pub static CONFIG: Lazy = Lazy::new(|| { + Config::load() +}); diff --git a/src/db.rs b/src/db.rs new file mode 100644 index 0000000..70a621c --- /dev/null +++ b/src/db.rs @@ -0,0 +1,19 @@ +use crate::{prisma::PrismaClient, config::CONFIG}; + + +pub async fn get_prisma_client() -> PrismaClient { + let database_url: String = format!( + "postgresql://{}:{}@{}:{}/{}?connection_limit=4", + CONFIG.postgres_user, + CONFIG.postgres_password, + CONFIG.postgres_host, + CONFIG.postgres_port, + CONFIG.postgres_db + ); + + PrismaClient::_builder() + .with_url(database_url) + .build() + .await + .unwrap() +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..0ea398e --- /dev/null +++ b/src/main.rs @@ -0,0 +1,41 @@ +pub mod config; +pub mod views; +pub mod prisma; +pub mod db; +pub mod serializers; +pub mod meilisearch; + +use std::{net::SocketAddr, str::FromStr}; +use sentry::{ClientOptions, types::Dsn, integrations::debug_images::DebugImagesIntegration}; +use tracing::info; + +use crate::views::get_router; + + +#[tokio::main] +async fn main() { + let options = ClientOptions { + dsn: Some(Dsn::from_str(&config::CONFIG.sentry_dsn).unwrap()), + default_integrations: false, + ..Default::default() + } + .add_integration(DebugImagesIntegration::new()); + + let _guard = sentry::init(options); + + tracing_subscriber::fmt() + .with_target(false) + .compact() + .init(); + + let addr = SocketAddr::from(([0, 0, 0, 0], 8080)); + + let app = get_router().await; + + info!("Start webserver..."); + axum::Server::bind(&addr) + .serve(app.into_make_service()) + .await + .unwrap(); + info!("Webserver shutdown...") +} diff --git a/src/meilisearch.rs b/src/meilisearch.rs new file mode 100644 index 0000000..21d2272 --- /dev/null +++ b/src/meilisearch.rs @@ -0,0 +1,48 @@ +use meilisearch_sdk::Client; +use serde::Deserialize; + +use crate::config::CONFIG; + + +pub fn get_meili_client() -> Client { + Client::new( + &CONFIG.meili_host, + Some(CONFIG.meili_master_key.clone()) + ) +} + +#[derive(Deserialize)] +pub struct AuthorMeili { + pub id: i32, + pub first_name: String, + pub last_name: String, + pub middle_name: String, + pub author_langs: Vec, + pub translator_langs: Vec, + pub books_count: i32 +} + +#[derive(Deserialize)] +pub struct BookMeili { + pub id: i32, + pub title: String, + pub lang: String, + pub genres: Vec +} + +#[derive(Deserialize)] +pub struct GenreMeili { + pub id: i32, + pub description: String, + pub meta: String, + pub langs: Vec, + pub books_count: i32 +} + +#[derive(Deserialize)] +pub struct SequenceMeili { + pub id: i32, + pub name: String, + pub langs: Vec, + pub books_count: i32 +} diff --git a/src/prisma.rs b/src/prisma.rs new file mode 100644 index 0000000..92162db --- /dev/null +++ b/src/prisma.rs @@ -0,0 +1,16099 @@ +// Code generated by Prisma Client Rust. DO NOT EDIT + +pub static DATAMODEL_STR: &str = + include_str!("../prisma/schema.prisma"); +static DATABASE_STR: &str = "postgresql"; +pub async fn new_client() -> Result { + PrismaClient::_builder().build().await +} +pub async fn new_client_with_url( + url: &str, +) -> Result { + PrismaClient::_builder() + .with_url(url.to_string()) + .build() + .await +} +pub mod author_annotation { + + use super::*; + pub const NAME: &str = "AuthorAnnotation"; + pub mod id { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, UniqueWhereParam, WhereParam, + }; + pub const NAME: &str = "id"; + pub struct Set(pub i32); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetId(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::Id(v) + } + } + pub fn set>(value: i32) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::Id(direction) + } + pub fn equals>(value: i32) -> T { + UniqueWhereParam::IdEquals(value).into() + } + ::prisma_client_rust::scalar_where_param_fns!(_prisma::read_filters::IntFilter, Id, { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: i32) -> Lt; + fn lte(_: i32) -> Lte; + fn gt(_: i32) -> Gt; + fn gte(_: i32) -> Gte; + fn not(_: i32) -> Not; + }); + pub fn increment(value: i32) -> SetParam { + SetParam::IncrementId(value) + } + pub fn decrement(value: i32) -> SetParam { + SetParam::DecrementId(value) + } + pub fn multiply(value: i32) -> SetParam { + SetParam::MultiplyId(value) + } + pub fn divide(value: i32) -> SetParam { + SetParam::DivideId(value) + } + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Id(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::AuthorId(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod title { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "title"; + pub struct Set(pub String); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetTitle(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::Title(v) + } + } + pub fn set>(value: String) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::Title(direction) + } + pub fn equals(value: String) -> WhereParam { + WhereParam::Title(_prisma::read_filters::StringFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!( + _prisma::read_filters::StringFilter, + Title, + { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: String) -> Lt; + fn lte(_: String) -> Lte; + fn gt(_: String) -> Gt; + fn gte(_: String) -> Gte; + fn contains(_: String) -> Contains; + fn starts_with(_: String) -> StartsWith; + fn ends_with(_: String) -> EndsWith; + fn mode(_: super::super::QueryMode) -> Mode; + fn not(_: String) -> Not; + } + ); + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Title(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Text(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod file { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "file"; + pub struct Set(pub Option); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetFile(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::File(v) + } + } + pub fn set>(value: Option) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::File(direction) + } + pub fn equals(value: Option) -> WhereParam { + WhereParam::File(_prisma::read_filters::StringNullableFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!( + _prisma::read_filters::StringNullableFilter, + File, + { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: String) -> Lt; + fn lte(_: String) -> Lte; + fn gt(_: String) -> Gt; + fn gte(_: String) -> Gte; + fn contains(_: String) -> Contains; + fn starts_with(_: String) -> StartsWith; + fn ends_with(_: String) -> EndsWith; + fn mode(_: super::super::QueryMode) -> Mode; + fn not(_: Option) -> Not; + } + ); + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::File(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Author(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let selections = match self { + Self::Select(selections) => { + selections.into_iter().map(|s| s.to_selection()).collect() + } + Self::Include(selections) => { + let mut nested_selections = vec![]; + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + } + Self::Fetch => { + ::scalar_selections() + } + }; + ::prisma_client_rust::Selection::new("author", None, [], selections) + } + pub fn select(nested_selections: Vec) -> Self { + Self::Select(nested_selections) + } + pub fn include(nested_selections: Vec) -> Self { + Self::Include(nested_selections) + } + } + } + pub fn create( + title: String, + text: String, + author: super::author::UniqueWhereParam, + _params: Vec, + ) -> ( + String, + String, + super::author::UniqueWhereParam, + Vec, + ) { + (title, text, author, _params) + } + pub fn create_unchecked( + author_id: i32, + title: String, + text: String, + _params: Vec, + ) -> (i32, String, String, Vec) { + (author_id, title, text, _params) + } + #[macro_export] + macro_rules ! _select_author_annotation { ($ (($ ($ func_arg : ident : $ func_arg_ty : ty) , +) =>) ? $ module_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { # [allow (warnings)] pub mod $ module_name { $crate :: prisma :: author_annotation :: select ! (@ definitions ; $ module_name ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; use super :: * ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: SelectType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: author_annotation :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } pub fn select ($ ($ ($ func_arg : $ func_arg_ty) , +) ?) -> Selection { Selection ([$crate :: prisma :: author_annotation :: select ! (@ selections_to_params ; : select { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () ,] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } } ; ({ $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { { $crate :: prisma :: author_annotation :: select ! (@ definitions ; ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: SelectType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: author_annotation :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } Selection ([$crate :: prisma :: author_annotation :: select ! (@ selections_to_params ; : select { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () ,] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } ; (@ definitions ; $ ($ module_name : ident) ? ; $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) +) => { # [allow (warnings)] enum Fields { id , author_id , title , text , file , author } # [allow (warnings)] impl Fields { fn selections () { $ (let _ = Fields :: $ field ;) + } } # [allow (warnings)] # [derive (std :: fmt :: Debug , Clone)] pub struct Data { $ (pub $ field : crate :: prisma :: author_annotation :: select ! (@ field_type ; $ field $ (: $ selection_mode { $ ($ selections) + }) ?) ,) + } impl :: serde :: Serialize for Data { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : :: serde :: Serializer , { use :: serde :: ser :: SerializeStruct ; let mut state = serializer . serialize_struct ("Data" , [$ (stringify ! ($ field) ,) +] . len ()) ? ; $ (state . serialize_field (crate :: prisma :: author_annotation :: $ field :: NAME , & self . $ field) ? ;) * state . end () } } impl < 'de > :: serde :: Deserialize < 'de > for Data { fn deserialize < D > (deserializer : D) -> Result < Self , D :: Error > where D : :: serde :: Deserializer < 'de > , { # [allow (warnings)] enum Field { $ ($ field) , + , } impl < 'de > :: serde :: Deserialize < 'de > for Field { fn deserialize < D > (deserializer : D) -> Result < Field , D :: Error > where D : :: serde :: Deserializer < 'de > , { struct FieldVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for FieldVisitor { type Value = Field ; fn expecting (& self , formatter : & mut :: std :: fmt :: Formatter) -> :: std :: fmt :: Result { formatter . write_str (& [$ (crate :: prisma :: author_annotation :: $ field :: NAME) , + ,] . into_iter () . collect :: < Vec < _ >> () . join (", ")) } fn visit_str < E > (self , value : & str) -> Result < Field , E > where E : :: serde :: de :: Error , { match value { $ (crate :: prisma :: author_annotation :: $ field :: NAME => Ok (Field :: $ field)) , * , _ => Err (:: serde :: de :: Error :: unknown_field (value , FIELDS)) , } } } deserializer . deserialize_identifier (FieldVisitor) } } struct DataVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for DataVisitor { type Value = Data ; fn expecting (& self , formatter : & mut std :: fmt :: Formatter) -> std :: fmt :: Result { formatter . write_str ("struct Data") } fn visit_map < V > (self , mut map : V) -> Result < Data , V :: Error > where V : :: serde :: de :: MapAccess < 'de > , { $ (let mut $ field = None ;) * while let Some (key) = map . next_key () ? { match key { $ (Field :: $ field => { if $ field . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: author_annotation :: $ field :: NAME)) ; } $ field = Some (map . next_value () ?) ; }) * } } $ (let $ field = $ field . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: author_annotation :: $ field :: NAME)) ? ;) * Ok (Data { $ ($ field) , * }) } } const FIELDS : & 'static [& 'static str] = & ["id" , "author_id" , "title" , "text" , "file" , "author"] ; deserializer . deserialize_struct ("Data" , FIELDS , DataVisitor) } } $ ($ (pub mod $ field { crate :: prisma :: author_annotation :: $ selection_mode ! (@ field_module ; $ field : $ selection_mode { $ ($ selections) + }) ; }) ?) + } ; (@ field_type ; id) => { i32 } ; (@ field_type ; author_id) => { i32 } ; (@ field_type ; title) => { String } ; (@ field_type ; text) => { String } ; (@ field_type ; file) => { Option < String > } ; (@ field_type ; author : $ selection_mode : ident { $ ($ selections : tt) + }) => { author :: Data } ; (@ field_type ; author) => { crate :: prisma :: author :: Data } ; (@ field_type ; $ field : ident $ ($ tokens : tt) *) => { compile_error ! (stringify ! (Cannot include nonexistent relation $ field on model "AuthorAnnotation" , available relations are "id, author_id, title, text, file, author")) } ; (@ field_module ; author : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: author :: select ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; $ ($ tokens : tt) *) => { } ; (@ selection_field_to_selection_param ; id) => { Into :: < crate :: prisma :: author_annotation :: SelectParam > :: into (crate :: prisma :: author_annotation :: id :: Select) } ; (@ selection_field_to_selection_param ; author_id) => { Into :: < crate :: prisma :: author_annotation :: SelectParam > :: into (crate :: prisma :: author_annotation :: author_id :: Select) } ; (@ selection_field_to_selection_param ; title) => { Into :: < crate :: prisma :: author_annotation :: SelectParam > :: into (crate :: prisma :: author_annotation :: title :: Select) } ; (@ selection_field_to_selection_param ; text) => { Into :: < crate :: prisma :: author_annotation :: SelectParam > :: into (crate :: prisma :: author_annotation :: text :: Select) } ; (@ selection_field_to_selection_param ; file) => { Into :: < crate :: prisma :: author_annotation :: SelectParam > :: into (crate :: prisma :: author_annotation :: file :: Select) } ; (@ selection_field_to_selection_param ; author $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: author_annotation :: SelectParam > :: into (crate :: prisma :: author_annotation :: author :: Select :: $ selection_mode (crate :: prisma :: author :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; author $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: author_annotation :: SelectParam > :: into (crate :: prisma :: author_annotation :: author :: Select :: Fetch) } } ; (@ selection_field_to_selection_param ; $ ($ tokens : tt) *) => { compile_error ! (stringify ! ($ ($ tokens) *)) } ; (@ selections_to_params ; : $ macro_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { [$ (crate :: prisma :: author_annotation :: $ macro_name ! (@ selection_field_to_selection_param ; $ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) ,) +] } ; (@ filters_to_args ;) => { vec ! [] } ; (@ filters_to_args ; $ ($ t : tt) *) => { $ ($ t) * } ; (@ field_serde_name ; id) => { "id" } ; (@ field_serde_name ; author_id) => { "author_id" } ; (@ field_serde_name ; title) => { "title" } ; (@ field_serde_name ; text) => { "text" } ; (@ field_serde_name ; file) => { "file" } ; (@ field_serde_name ; author) => { "author" } ; } + pub use _select_author_annotation as select; + pub enum SelectParam { + Id(id::Select), + AuthorId(author_id::Select), + Title(title::Select), + Text(text::Select), + File(file::Select), + Author(author::Select), + } + impl SelectParam { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + match self { + Self::Id(data) => data.to_selection(), + Self::AuthorId(data) => data.to_selection(), + Self::Title(data) => data.to_selection(), + Self::Text(data) => data.to_selection(), + Self::File(data) => data.to_selection(), + Self::Author(data) => data.to_selection(), + } + } + } + #[macro_export] + macro_rules ! _include_author_annotation { ($ (($ ($ func_arg : ident : $ func_arg_ty : ty) , +) =>) ? $ module_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { # [allow (warnings)] pub mod $ module_name { $crate :: prisma :: author_annotation :: include ! (@ definitions ; $ module_name ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; use super :: * ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: IncludeType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: author_annotation :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } pub fn include ($ ($ ($ func_arg : $ func_arg_ty) , +) ?) -> Selection { Selection ([$crate :: prisma :: author_annotation :: include ! (@ selections_to_params ; : include { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () , < $crate :: prisma :: author_annotation :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections ()] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } } ; ({ $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { { $crate :: prisma :: author_annotation :: include ! (@ definitions ; ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: IncludeType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: author_annotation :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } Selection ([crate :: prisma :: author_annotation :: include ! (@ selections_to_params ; : include { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () , < crate :: prisma :: author_annotation :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections ()] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } ; (@ definitions ; $ ($ module_name : ident) ? ; $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) +) => { # [allow (warnings)] enum Fields { author } # [allow (warnings)] impl Fields { fn selections () { $ (let _ = Fields :: $ field ;) + } } # [allow (warnings)] # [derive (std :: fmt :: Debug , Clone)] pub struct Data { pub id : i32 , pub author_id : i32 , pub title : String , pub text : String , pub file : Option < String > , $ (pub $ field : crate :: prisma :: author_annotation :: include ! (@ field_type ; $ field $ (: $ selection_mode { $ ($ selections) + }) ?) ,) + } impl :: serde :: Serialize for Data { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : :: serde :: Serializer , { use :: serde :: ser :: SerializeStruct ; let mut state = serializer . serialize_struct ("Data" , [$ (stringify ! ($ field) ,) + stringify ! (id) , stringify ! (author_id) , stringify ! (title) , stringify ! (text) , stringify ! (file)] . len ()) ? ; $ (state . serialize_field (crate :: prisma :: author_annotation :: $ field :: NAME , & self . $ field) ? ;) * state . serialize_field (crate :: prisma :: author_annotation :: id :: NAME , & self . id) ? ; state . serialize_field (crate :: prisma :: author_annotation :: author_id :: NAME , & self . author_id) ? ; state . serialize_field (crate :: prisma :: author_annotation :: title :: NAME , & self . title) ? ; state . serialize_field (crate :: prisma :: author_annotation :: text :: NAME , & self . text) ? ; state . serialize_field (crate :: prisma :: author_annotation :: file :: NAME , & self . file) ? ; state . end () } } impl < 'de > :: serde :: Deserialize < 'de > for Data { fn deserialize < D > (deserializer : D) -> Result < Self , D :: Error > where D : :: serde :: Deserializer < 'de > , { # [allow (warnings)] enum Field { $ ($ field) , + , id , author_id , title , text , file } impl < 'de > :: serde :: Deserialize < 'de > for Field { fn deserialize < D > (deserializer : D) -> Result < Field , D :: Error > where D : :: serde :: Deserializer < 'de > , { struct FieldVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for FieldVisitor { type Value = Field ; fn expecting (& self , formatter : & mut :: std :: fmt :: Formatter) -> :: std :: fmt :: Result { formatter . write_str (& [$ (crate :: prisma :: author_annotation :: $ field :: NAME) , + , crate :: prisma :: author_annotation :: id :: NAME , crate :: prisma :: author_annotation :: author_id :: NAME , crate :: prisma :: author_annotation :: title :: NAME , crate :: prisma :: author_annotation :: text :: NAME , crate :: prisma :: author_annotation :: file :: NAME] . into_iter () . collect :: < Vec < _ >> () . join (", ")) } fn visit_str < E > (self , value : & str) -> Result < Field , E > where E : :: serde :: de :: Error , { match value { $ (crate :: prisma :: author_annotation :: $ field :: NAME => Ok (Field :: $ field)) , * , crate :: prisma :: author_annotation :: id :: NAME => Ok (Field :: id) , crate :: prisma :: author_annotation :: author_id :: NAME => Ok (Field :: author_id) , crate :: prisma :: author_annotation :: title :: NAME => Ok (Field :: title) , crate :: prisma :: author_annotation :: text :: NAME => Ok (Field :: text) , crate :: prisma :: author_annotation :: file :: NAME => Ok (Field :: file) , _ => Err (:: serde :: de :: Error :: unknown_field (value , FIELDS)) , } } } deserializer . deserialize_identifier (FieldVisitor) } } struct DataVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for DataVisitor { type Value = Data ; fn expecting (& self , formatter : & mut std :: fmt :: Formatter) -> std :: fmt :: Result { formatter . write_str ("struct Data") } fn visit_map < V > (self , mut map : V) -> Result < Data , V :: Error > where V : :: serde :: de :: MapAccess < 'de > , { $ (let mut $ field = None ;) * let mut id = None ; let mut author_id = None ; let mut title = None ; let mut text = None ; let mut file = None ; while let Some (key) = map . next_key () ? { match key { Field :: id => { if id . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: author_annotation :: id :: NAME)) ; } id = Some (map . next_value () ?) ; } Field :: author_id => { if author_id . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: author_annotation :: author_id :: NAME)) ; } author_id = Some (map . next_value () ?) ; } Field :: title => { if title . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: author_annotation :: title :: NAME)) ; } title = Some (map . next_value () ?) ; } Field :: text => { if text . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: author_annotation :: text :: NAME)) ; } text = Some (map . next_value () ?) ; } Field :: file => { if file . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: author_annotation :: file :: NAME)) ; } file = Some (map . next_value () ?) ; } $ (Field :: $ field => { if $ field . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: author_annotation :: $ field :: NAME)) ; } $ field = Some (map . next_value () ?) ; }) * } } $ (let $ field = $ field . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: author_annotation :: $ field :: NAME)) ? ;) * let id = id . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: author_annotation :: id :: NAME)) ? ; let author_id = author_id . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: author_annotation :: author_id :: NAME)) ? ; let title = title . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: author_annotation :: title :: NAME)) ? ; let text = text . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: author_annotation :: text :: NAME)) ? ; let file = file . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: author_annotation :: file :: NAME)) ? ; Ok (Data { id , author_id , title , text , file , $ ($ field) , * }) } } const FIELDS : & 'static [& 'static str] = & ["id" , "author_id" , "title" , "text" , "file" , "author"] ; deserializer . deserialize_struct ("Data" , FIELDS , DataVisitor) } } $ ($ (pub mod $ field { crate :: prisma :: author_annotation :: $ selection_mode ! (@ field_module ; $ field : $ selection_mode { $ ($ selections) + }) ; }) ?) + } ; (@ field_type ; author : $ selection_mode : ident { $ ($ selections : tt) + }) => { author :: Data } ; (@ field_type ; author) => { crate :: prisma :: author :: Data } ; (@ field_type ; $ field : ident $ ($ tokens : tt) *) => { compile_error ! (stringify ! (Cannot include nonexistent relation $ field on model "AuthorAnnotation" , available relations are "author")) } ; (@ field_module ; author : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: author :: include ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; $ ($ tokens : tt) *) => { } ; (@ selection_field_to_selection_param ; author $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: author_annotation :: IncludeParam > :: into (crate :: prisma :: author_annotation :: author :: Include :: $ selection_mode (crate :: prisma :: author :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; author $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: author_annotation :: IncludeParam > :: into (crate :: prisma :: author_annotation :: author :: Include :: Fetch) } } ; (@ selection_field_to_selection_param ; $ ($ tokens : tt) *) => { compile_error ! (stringify ! ($ ($ tokens) *)) } ; (@ selections_to_params ; : $ macro_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { [$ (crate :: prisma :: author_annotation :: $ macro_name ! (@ selection_field_to_selection_param ; $ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) ,) +] } ; (@ filters_to_args ;) => { vec ! [] } ; (@ filters_to_args ; $ ($ t : tt) *) => { $ ($ t) * } ; (@ field_serde_name ; id) => { "id" } ; (@ field_serde_name ; author_id) => { "author_id" } ; (@ field_serde_name ; title) => { "title" } ; (@ field_serde_name ; text) => { "text" } ; (@ field_serde_name ; file) => { "file" } ; (@ field_serde_name ; author) => { "author" } ; } + pub use _include_author_annotation as include; + pub enum IncludeParam { + Id(id::Include), + AuthorId(author_id::Include), + Title(title::Include), + Text(text::Include), + File(file::Include), + Author(author::Include), + } + impl IncludeParam { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + match self { + Self::Id(data) => data.to_selection(), + Self::AuthorId(data) => data.to_selection(), + Self::Title(data) => data.to_selection(), + Self::Text(data) => data.to_selection(), + Self::File(data) => data.to_selection(), + Self::Author(data) => data.to_selection(), + } + } + } + #[macro_export] + macro_rules ! _partial_unchecked_author_annotation { ($ struct_name : ident { $ ($ scalar_field : ident) + }) => { :: prisma_client_rust :: macros :: partial_unchecked ! { $crate :: prisma :: author_annotation struct $ struct_name { # [serde (rename = "id")] pub id : i32 , # [serde (rename = "author_id")] pub author_id : i32 , # [serde (rename = "title")] pub title : String , # [serde (rename = "text")] pub text : String , # [serde (rename = "file")] # [serde (default , with = "::prisma_client_rust::serde::double_option")] pub file : Option < String > } [$ ($ scalar_field) , +] } } ; } + pub use _partial_unchecked_author_annotation as partial_unchecked; + #[derive(Debug, Clone, :: serde :: Serialize, :: serde :: Deserialize)] + pub struct Data { + #[serde(rename = "id")] + pub id: i32, + #[serde(rename = "author_id")] + pub author_id: i32, + #[serde(rename = "title")] + pub title: String, + #[serde(rename = "text")] + pub text: String, + #[serde(rename = "file")] + pub file: Option, + #[serde(rename = "author")] + pub author: Option>, + } + impl Data { + pub fn author( + &self, + ) -> Result<&super::author::Data, ::prisma_client_rust::RelationNotFetchedError> { + self.author + .as_ref() + .ok_or(::prisma_client_rust::RelationNotFetchedError::new( + stringify!(author), + )) + .map(|v| v.as_ref()) + } + } + #[derive(Clone)] + pub enum WithParam { + Author(super::author::UniqueArgs), + } + impl From for ::prisma_client_rust::Selection { + fn from(val: WithParam) -> Self { + match val { + WithParam::Author(args) => { + let mut selections = < super :: author :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections () ; + selections.extend( + args.with_params + .into_iter() + .map(Into::<::prisma_client_rust::Selection>::into), + ); + ::prisma_client_rust::Selection::new(author::NAME, None, [], selections) + } + } + } + } + #[derive(Clone)] + pub enum SetParam { + SetId(i32), + IncrementId(i32), + DecrementId(i32), + MultiplyId(i32), + DivideId(i32), + SetAuthorId(i32), + IncrementAuthorId(i32), + DecrementAuthorId(i32), + MultiplyAuthorId(i32), + DivideAuthorId(i32), + SetTitle(String), + SetText(String), + SetFile(Option), + ConnectAuthor(super::author::UniqueWhereParam), + } + impl From for (String, ::prisma_client_rust::PrismaValue) { + fn from(param: SetParam) -> Self { + match param { + SetParam::SetId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + ), + SetParam::IncrementId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "increment".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DecrementId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "decrement".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::MultiplyId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "multiply".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DivideId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "divide".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::SetAuthorId(value) => ( + author_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + ), + SetParam::IncrementAuthorId(value) => ( + author_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "increment".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DecrementAuthorId(value) => ( + author_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "decrement".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::MultiplyAuthorId(value) => ( + author_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "multiply".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DivideAuthorId(value) => ( + author_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "divide".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::SetTitle(value) => ( + title::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(value), + ), + SetParam::SetText(value) => ( + text::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(value), + ), + SetParam::SetFile(value) => ( + file::NAME.to_string(), + value + .map(::prisma_client_rust::PrismaValue::String) + .unwrap_or_else(|| ::prisma_client_rust::PrismaValue::Null), + ), + SetParam::ConnectAuthor(where_param) => ( + author::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "connect".to_string(), + ::prisma_client_rust::PrismaValue::Object( + [where_param] + .into_iter() + .map(Into::::into) + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + } + } + } + #[derive(Clone)] + pub enum UncheckedSetParam { + Id(i32), + AuthorId(i32), + Title(String), + Text(String), + File(Option), + } + impl From for SetParam { + fn from(param: UncheckedSetParam) -> Self { + match param { + UncheckedSetParam::Id(value) => Self::SetId(value), + UncheckedSetParam::AuthorId(value) => Self::SetAuthorId(value), + UncheckedSetParam::Title(value) => Self::SetTitle(value), + UncheckedSetParam::Text(value) => Self::SetText(value), + UncheckedSetParam::File(value) => Self::SetFile(value), + } + } + } + #[derive(Clone)] + pub enum OrderByParam { + Id(::prisma_client_rust::Direction), + AuthorId(::prisma_client_rust::Direction), + Title(::prisma_client_rust::Direction), + Text(::prisma_client_rust::Direction), + File(::prisma_client_rust::Direction), + } + impl From for (String, ::prisma_client_rust::PrismaValue) { + fn from(val: OrderByParam) -> Self { + match val { + OrderByParam::Id(direction) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + OrderByParam::AuthorId(direction) => ( + author_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + OrderByParam::Title(direction) => ( + title::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + OrderByParam::Text(direction) => ( + text::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + OrderByParam::File(direction) => ( + file::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + } + } + } + #[derive(Clone)] + pub enum WhereParam { + Not(Vec), + Or(Vec), + And(Vec), + Id(_prisma::read_filters::IntFilter), + AuthorId(_prisma::read_filters::IntFilter), + Title(_prisma::read_filters::StringFilter), + Text(_prisma::read_filters::StringFilter), + File(_prisma::read_filters::StringNullableFilter), + AuthorIs(Vec), + AuthorIsNot(Vec), + } + impl ::prisma_client_rust::WhereInput for WhereParam { + fn serialize(self) -> ::prisma_client_rust::SerializedWhereInput { + let (name, value) = match self { + Self::Not(value) => ( + "NOT", + ::prisma_client_rust::SerializedWhereValue::Object( + ::prisma_client_rust::merge_fields( + value + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(Into::into) + .collect(), + ), + ), + ), + Self::Or(value) => ( + "OR", + ::prisma_client_rust::SerializedWhereValue::List( + value + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(Into::into) + .map(|v| vec![v]) + .map(::prisma_client_rust::PrismaValue::Object) + .collect(), + ), + ), + Self::And(value) => ( + "AND", + ::prisma_client_rust::SerializedWhereValue::Object( + ::prisma_client_rust::merge_fields( + value + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(Into::into) + .collect(), + ), + ), + ), + Self::Id(value) => (id::NAME, value.into()), + Self::AuthorId(value) => (author_id::NAME, value.into()), + Self::Title(value) => (title::NAME, value.into()), + Self::Text(value) => (text::NAME, value.into()), + Self::File(value) => (file::NAME, value.into()), + Self::AuthorIs(where_params) => ( + author::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "is".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + Self::AuthorIsNot(where_params) => ( + author::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "isNot".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + }; + ::prisma_client_rust::SerializedWhereInput::new(name, value) + } + } + #[derive(Clone)] + pub enum UniqueWhereParam { + AuthorIdEquals(i32), + IdEquals(i32), + } + impl From for WhereParam { + fn from(value: UniqueWhereParam) -> Self { + match value { + UniqueWhereParam::AuthorIdEquals(value) => { + Self::AuthorId(_prisma::read_filters::IntFilter::Equals(value)) + } + UniqueWhereParam::IdEquals(value) => { + Self::Id(_prisma::read_filters::IntFilter::Equals(value)) + } + } + } + } + impl From<::prisma_client_rust::Operator> for WhereParam { + fn from(op: ::prisma_client_rust::Operator) -> Self { + match op { + ::prisma_client_rust::Operator::Not(value) => Self::Not(value), + ::prisma_client_rust::Operator::And(value) => Self::And(value), + ::prisma_client_rust::Operator::Or(value) => Self::Or(value), + } + } + } + #[derive(Clone)] + pub struct Types; + impl ::prisma_client_rust::ModelTypes for Types { + type Data = Data; + type Where = WhereParam; + type UncheckedSet = UncheckedSetParam; + type Set = SetParam; + type With = WithParam; + type OrderBy = OrderByParam; + type Cursor = UniqueWhereParam; + const MODEL: &'static str = NAME; + fn scalar_selections() -> Vec<::prisma_client_rust::Selection> { + vec![ + ::prisma_client_rust::sel(id::NAME), + ::prisma_client_rust::sel(author_id::NAME), + ::prisma_client_rust::sel(title::NAME), + ::prisma_client_rust::sel(text::NAME), + ::prisma_client_rust::sel(file::NAME), + ] + } + } + pub type UniqueArgs = ::prisma_client_rust::UniqueArgs; + pub type ManyArgs = ::prisma_client_rust::ManyArgs; + pub type Count<'a> = ::prisma_client_rust::Count<'a, Types>; + pub type Create<'a> = ::prisma_client_rust::Create<'a, Types>; + pub type CreateMany<'a> = ::prisma_client_rust::CreateMany<'a, Types>; + pub type FindUnique<'a> = ::prisma_client_rust::FindUnique<'a, Types>; + pub type FindMany<'a> = ::prisma_client_rust::FindMany<'a, Types>; + pub type FindFirst<'a> = ::prisma_client_rust::FindFirst<'a, Types>; + pub type Update<'a> = ::prisma_client_rust::Update<'a, Types>; + pub type UpdateMany<'a> = ::prisma_client_rust::UpdateMany<'a, Types>; + pub type Upsert<'a> = ::prisma_client_rust::Upsert<'a, Types>; + pub type Delete<'a> = ::prisma_client_rust::Delete<'a, Types>; + pub type DeleteMany<'a> = ::prisma_client_rust::DeleteMany<'a, Types>; + #[derive(Clone)] + pub struct Actions<'a> { + pub client: &'a ::prisma_client_rust::PrismaClientInternals, + } + impl<'a> Actions<'a> { + pub fn find_unique(self, _where: UniqueWhereParam) -> FindUnique<'a> { + FindUnique::new(self.client, _where.into()) + } + pub fn find_first(self, _where: Vec) -> FindFirst<'a> { + FindFirst::new(self.client, _where) + } + pub fn find_many(self, _where: Vec) -> FindMany<'a> { + FindMany::new(self.client, _where) + } + pub fn create( + self, + title: String, + text: String, + author: super::author::UniqueWhereParam, + mut _params: Vec, + ) -> Create<'a> { + _params.extend([title::set(title), text::set(text), author::connect(author)]); + Create::new(self.client, _params) + } + pub fn create_unchecked( + self, + author_id: i32, + title: String, + text: String, + mut _params: Vec, + ) -> Create<'a> { + _params.extend([ + author_id::set(author_id), + title::set(title), + text::set(text), + ]); + Create::new(self.client, _params.into_iter().map(Into::into).collect()) + } + pub fn create_many( + self, + data: Vec<(i32, String, String, Vec)>, + ) -> CreateMany<'a> { + let data = data + .into_iter() + .map(|(author_id, title, text, mut _params)| { + _params.extend([ + author_id::set(author_id), + title::set(title), + text::set(text), + ]); + _params + }) + .collect(); + CreateMany::new(self.client, data) + } + pub fn update(self, _where: UniqueWhereParam, _params: Vec) -> Update<'a> { + Update::new(self.client, _where.into(), _params, vec![]) + } + pub fn update_unchecked( + self, + _where: UniqueWhereParam, + _params: Vec, + ) -> Update<'a> { + Update::new( + self.client, + _where.into(), + _params.into_iter().map(Into::into).collect(), + vec![], + ) + } + pub fn update_many( + self, + _where: Vec, + _params: Vec, + ) -> UpdateMany<'a> { + UpdateMany::new(self.client, _where, _params) + } + pub fn upsert( + self, + _where: UniqueWhereParam, + (title, text, author, mut _params): ( + String, + String, + super::author::UniqueWhereParam, + Vec, + ), + _update: Vec, + ) -> Upsert<'a> { + _params.extend([title::set(title), text::set(text), author::connect(author)]); + Upsert::new(self.client, _where.into(), _params, _update) + } + pub fn delete(self, _where: UniqueWhereParam) -> Delete<'a> { + Delete::new(self.client, _where.into(), vec![]) + } + pub fn delete_many(self, _where: Vec) -> DeleteMany<'a> { + DeleteMany::new(self.client, _where) + } + pub fn count(self, _where: Vec) -> Count<'a> { + Count::new(self.client, _where) + } + pub fn find_raw( + self, + ) -> ::prisma_client_rust::FindRaw<'a, Types, T> { + ::prisma_client_rust::FindRaw::new(self.client) + } + pub fn aggregate_raw( + self, + ) -> ::prisma_client_rust::AggregateRaw<'a, Types, T> { + ::prisma_client_rust::AggregateRaw::new(self.client) + } + } +} +pub mod author { + + use super::*; + pub const NAME: &str = "Author"; + pub mod id { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, UniqueWhereParam, WhereParam, + }; + pub const NAME: &str = "id"; + pub struct Set(pub i32); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetId(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::Id(v) + } + } + pub fn set>(value: i32) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::Id(direction) + } + pub fn equals>(value: i32) -> T { + UniqueWhereParam::IdEquals(value).into() + } + ::prisma_client_rust::scalar_where_param_fns!(_prisma::read_filters::IntFilter, Id, { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: i32) -> Lt; + fn lte(_: i32) -> Lte; + fn gt(_: i32) -> Gt; + fn gte(_: i32) -> Gte; + fn not(_: i32) -> Not; + }); + pub fn increment(value: i32) -> SetParam { + SetParam::IncrementId(value) + } + pub fn decrement(value: i32) -> SetParam { + SetParam::DecrementId(value) + } + pub fn multiply(value: i32) -> SetParam { + SetParam::MultiplyId(value) + } + pub fn divide(value: i32) -> SetParam { + SetParam::DivideId(value) + } + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Id(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::SourceId(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod remote_id { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "remote_id"; + pub struct Set(pub i32); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetRemoteId(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::RemoteId(v) + } + } + pub fn set>(value: i32) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::RemoteId(direction) + } + pub fn equals(value: i32) -> WhereParam { + WhereParam::RemoteId(_prisma::read_filters::IntFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!( + _prisma::read_filters::IntFilter, + RemoteId, + { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: i32) -> Lt; + fn lte(_: i32) -> Lte; + fn gt(_: i32) -> Gt; + fn gte(_: i32) -> Gte; + fn not(_: i32) -> Not; + } + ); + pub fn increment(value: i32) -> SetParam { + SetParam::IncrementRemoteId(value) + } + pub fn decrement(value: i32) -> SetParam { + SetParam::DecrementRemoteId(value) + } + pub fn multiply(value: i32) -> SetParam { + SetParam::MultiplyRemoteId(value) + } + pub fn divide(value: i32) -> SetParam { + SetParam::DivideRemoteId(value) + } + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::RemoteId(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::FirstName(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod last_name { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "last_name"; + pub struct Set(pub String); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetLastName(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::LastName(v) + } + } + pub fn set>(value: String) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::LastName(direction) + } + pub fn equals(value: String) -> WhereParam { + WhereParam::LastName(_prisma::read_filters::StringFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!( + _prisma::read_filters::StringFilter, + LastName, + { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: String) -> Lt; + fn lte(_: String) -> Lte; + fn gt(_: String) -> Gt; + fn gte(_: String) -> Gte; + fn contains(_: String) -> Contains; + fn starts_with(_: String) -> StartsWith; + fn ends_with(_: String) -> EndsWith; + fn mode(_: super::super::QueryMode) -> Mode; + fn not(_: String) -> Not; + } + ); + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::LastName(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::MiddleName(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod source { + use super::super::*; + + use super::{ + SetParam, WhereParam, WithParam, + }; + pub const NAME: &str = "source"; + pub struct Fetch(pub source::UniqueArgs); + impl Fetch { + pub fn with(mut self, params: impl Into) -> Self { + self.0 = self.0.with(params.into()); + self + } + } + impl From for WithParam { + fn from(Fetch(v): Fetch) -> Self { + WithParam::Source(v) + } + } + pub fn fetch() -> Fetch { + Fetch(source::UniqueArgs::new()) + } + pub struct Connect(source::UniqueWhereParam); + impl From for SetParam { + fn from(Connect(v): Connect) -> Self { + Self::ConnectSource(v) + } + } + pub fn connect>(value: source::UniqueWhereParam) -> T { + Connect(value).into() + } + pub fn is(value: Vec) -> WhereParam { + WhereParam::SourceIs(value) + } + pub fn is_not(value: Vec) -> WhereParam { + WhereParam::SourceIsNot(value) + } + pub enum Include { + Select(Vec), + Include(Vec), + Fetch, + } + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Source(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let selections = match self { + Self::Select(selections) => { + selections.into_iter().map(|s| s.to_selection()).collect() + } + Self::Include(selections) => { + let mut nested_selections = + ::scalar_selections( + ); + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + } + Self::Fetch => { + ::scalar_selections() + } + }; + ::prisma_client_rust::Selection::new("source", None, [], selections) + } + pub fn select(nested_selections: Vec) -> Self { + Self::Select(nested_selections) + } + pub fn include(nested_selections: Vec) -> Self { + Self::Include(nested_selections) + } + } + pub enum Select { + Select(Vec), + Include(Vec), + Fetch, + } + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::AuthorAnnotation(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let selections = match self { Self :: Select (selections) => { selections . into_iter () . map (| s | s . to_selection ()) . collect () } , Self :: Include (selections) => { let mut nested_selections = vec ! [] ; nested_selections . extend (selections . into_iter () . map (| s | s . to_selection ())) ; nested_selections } , Self :: Fetch => { < author_annotation :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections () } } ; + ::prisma_client_rust::Selection::new("author_annotation", None, [], selections) + } + pub fn select(nested_selections: Vec) -> Self { + Self::Select(nested_selections) + } + pub fn include(nested_selections: Vec) -> Self { + Self::Include(nested_selections) + } + } + } + pub mod book_authors { + use super::super::*; + + use super::{ + SetParam, WhereParam, WithParam, + }; + pub const NAME: &str = "book_authors"; + pub struct Fetch(pub book_author::ManyArgs); + impl Fetch { + pub fn with(mut self, params: impl Into) -> Self { + self.0 = self.0.with(params.into()); + self + } + pub fn order_by(mut self, param: book_author::OrderByParam) -> Self { + self.0 = self.0.order_by(param); + self + } + pub fn skip(mut self, value: i64) -> Self { + self.0 = self.0.skip(value); + self + } + pub fn take(mut self, value: i64) -> Self { + self.0 = self.0.take(value); + self + } + pub fn cursor(mut self, value: book_author::UniqueWhereParam) -> Self { + self.0 = self.0.cursor(value); + self + } + } + impl From for WithParam { + fn from(Fetch(v): Fetch) -> Self { + WithParam::BookAuthors(v) + } + } + pub fn fetch(params: Vec) -> Fetch { + Fetch(book_author::ManyArgs::new(params)) + } + pub struct Connect(pub Vec); + impl From for SetParam { + fn from(Connect(v): Connect) -> Self { + Self::ConnectBookAuthors(v) + } + } + pub fn connect>(params: Vec) -> T { + Connect(params).into() + } + pub fn disconnect(params: Vec) -> SetParam { + SetParam::DisconnectBookAuthors(params) + } + pub fn set(params: Vec) -> SetParam { + SetParam::SetBookAuthors(params) + } + pub fn some(value: Vec) -> WhereParam { + WhereParam::BookAuthorsSome(value) + } + pub fn every(value: Vec) -> WhereParam { + WhereParam::BookAuthorsEvery(value) + } + pub fn none(value: Vec) -> WhereParam { + WhereParam::BookAuthorsNone(value) + } + pub enum Include { + Select(book_author::ManyArgs, Vec), + Include(book_author::ManyArgs, Vec), + Fetch(book_author::ManyArgs), + } + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::BookAuthors(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let (args, selections) = match self { + Self::Select(args, selections) => ( + args.to_graphql().0, + selections.into_iter().map(|s| s.to_selection()).collect(), + ), + Self::Include(args, selections) => (args.to_graphql().0, { + let mut nested_selections = < book_author :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections () ; + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + }), + Self::Fetch(args) => ( + args.to_graphql().0, + ::scalar_selections( + ), + ), + }; + ::prisma_client_rust::Selection::new(NAME, None, args, selections) + } + pub fn select( + args: book_author::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Select(args, nested_selections) + } + pub fn include( + args: book_author::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Include(args, nested_selections) + } + } + pub enum Select { + Select(book_author::ManyArgs, Vec), + Include(book_author::ManyArgs, Vec), + Fetch(book_author::ManyArgs), + } + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Translations(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let (args, selections) = match self { + Self::Select(args, selections) => ( + args.to_graphql().0, + selections.into_iter().map(|s| s.to_selection()).collect(), + ), + Self::Include(args, selections) => (args.to_graphql().0, { + let mut nested_selections = vec![]; + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + }), + Self::Fetch(args) => ( + args.to_graphql().0, + ::scalar_selections( + ), + ), + }; + ::prisma_client_rust::Selection::new(NAME, None, args, selections) + } + pub fn select( + args: translator::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Select(args, nested_selections) + } + pub fn include( + args: translator::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Include(args, nested_selections) + } + } + } + pub fn source_id_remote_id>(source_id: i32, remote_id: i32) -> T { + UniqueWhereParam::SourceIdRemoteIdEquals(source_id, remote_id).into() + } + pub fn create( + remote_id: i32, + first_name: String, + last_name: String, + source: super::source::UniqueWhereParam, + _params: Vec, + ) -> ( + i32, + String, + String, + super::source::UniqueWhereParam, + Vec, + ) { + (remote_id, first_name, last_name, source, _params) + } + pub fn create_unchecked( + source_id: i32, + remote_id: i32, + first_name: String, + last_name: String, + _params: Vec, + ) -> (i32, i32, String, String, Vec) { + (source_id, remote_id, first_name, last_name, _params) + } + #[macro_export] + macro_rules ! _select_author { ($ (($ ($ func_arg : ident : $ func_arg_ty : ty) , +) =>) ? $ module_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { # [allow (warnings)] pub mod $ module_name { $crate :: prisma :: author :: select ! (@ definitions ; $ module_name ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; use super :: * ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: SelectType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: author :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } pub fn select ($ ($ ($ func_arg : $ func_arg_ty) , +) ?) -> Selection { Selection ([$crate :: prisma :: author :: select ! (@ selections_to_params ; : select { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () ,] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } } ; ({ $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { { $crate :: prisma :: author :: select ! (@ definitions ; ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: SelectType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: author :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } Selection ([$crate :: prisma :: author :: select ! (@ selections_to_params ; : select { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () ,] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } ; (@ definitions ; $ ($ module_name : ident) ? ; $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) +) => { # [allow (warnings)] enum Fields { id , source_id , remote_id , first_name , last_name , middle_name , source , author_annotation , book_authors , translations } # [allow (warnings)] impl Fields { fn selections () { $ (let _ = Fields :: $ field ;) + } } # [allow (warnings)] # [derive (std :: fmt :: Debug , Clone)] pub struct Data { $ (pub $ field : crate :: prisma :: author :: select ! (@ field_type ; $ field $ (: $ selection_mode { $ ($ selections) + }) ?) ,) + } impl :: serde :: Serialize for Data { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : :: serde :: Serializer , { use :: serde :: ser :: SerializeStruct ; let mut state = serializer . serialize_struct ("Data" , [$ (stringify ! ($ field) ,) +] . len ()) ? ; $ (state . serialize_field (crate :: prisma :: author :: $ field :: NAME , & self . $ field) ? ;) * state . end () } } impl < 'de > :: serde :: Deserialize < 'de > for Data { fn deserialize < D > (deserializer : D) -> Result < Self , D :: Error > where D : :: serde :: Deserializer < 'de > , { # [allow (warnings)] enum Field { $ ($ field) , + , } impl < 'de > :: serde :: Deserialize < 'de > for Field { fn deserialize < D > (deserializer : D) -> Result < Field , D :: Error > where D : :: serde :: Deserializer < 'de > , { struct FieldVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for FieldVisitor { type Value = Field ; fn expecting (& self , formatter : & mut :: std :: fmt :: Formatter) -> :: std :: fmt :: Result { formatter . write_str (& [$ (crate :: prisma :: author :: $ field :: NAME) , + ,] . into_iter () . collect :: < Vec < _ >> () . join (", ")) } fn visit_str < E > (self , value : & str) -> Result < Field , E > where E : :: serde :: de :: Error , { match value { $ (crate :: prisma :: author :: $ field :: NAME => Ok (Field :: $ field)) , * , _ => Err (:: serde :: de :: Error :: unknown_field (value , FIELDS)) , } } } deserializer . deserialize_identifier (FieldVisitor) } } struct DataVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for DataVisitor { type Value = Data ; fn expecting (& self , formatter : & mut std :: fmt :: Formatter) -> std :: fmt :: Result { formatter . write_str ("struct Data") } fn visit_map < V > (self , mut map : V) -> Result < Data , V :: Error > where V : :: serde :: de :: MapAccess < 'de > , { $ (let mut $ field = None ;) * while let Some (key) = map . next_key () ? { match key { $ (Field :: $ field => { if $ field . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: author :: $ field :: NAME)) ; } $ field = Some (map . next_value () ?) ; }) * } } $ (let $ field = $ field . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: author :: $ field :: NAME)) ? ;) * Ok (Data { $ ($ field) , * }) } } const FIELDS : & 'static [& 'static str] = & ["id" , "source_id" , "remote_id" , "first_name" , "last_name" , "middle_name" , "source" , "author_annotation" , "book_authors" , "translations"] ; deserializer . deserialize_struct ("Data" , FIELDS , DataVisitor) } } $ ($ (pub mod $ field { crate :: prisma :: author :: $ selection_mode ! (@ field_module ; $ field : $ selection_mode { $ ($ selections) + }) ; }) ?) + } ; (@ field_type ; id) => { i32 } ; (@ field_type ; source_id) => { i32 } ; (@ field_type ; remote_id) => { i32 } ; (@ field_type ; first_name) => { String } ; (@ field_type ; last_name) => { String } ; (@ field_type ; middle_name) => { Option < String > } ; (@ field_type ; source : $ selection_mode : ident { $ ($ selections : tt) + }) => { source :: Data } ; (@ field_type ; source) => { crate :: prisma :: source :: Data } ; (@ field_type ; author_annotation : $ selection_mode : ident { $ ($ selections : tt) + }) => { Option < author_annotation :: Data > } ; (@ field_type ; author_annotation) => { Option < crate :: prisma :: author_annotation :: Data > } ; (@ field_type ; book_authors : $ selection_mode : ident { $ ($ selections : tt) + }) => { Vec < book_authors :: Data > } ; (@ field_type ; book_authors) => { Vec < crate :: prisma :: book_author :: Data > } ; (@ field_type ; translations : $ selection_mode : ident { $ ($ selections : tt) + }) => { Vec < translations :: Data > } ; (@ field_type ; translations) => { Vec < crate :: prisma :: translator :: Data > } ; (@ field_type ; $ field : ident $ ($ tokens : tt) *) => { compile_error ! (stringify ! (Cannot include nonexistent relation $ field on model "Author" , available relations are "id, source_id, remote_id, first_name, last_name, middle_name, source, author_annotation, book_authors, translations")) } ; (@ field_module ; source : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: source :: select ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; author_annotation : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: author_annotation :: select ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; book_authors : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: book_author :: select ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; translations : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: translator :: select ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; $ ($ tokens : tt) *) => { } ; (@ selection_field_to_selection_param ; id) => { Into :: < crate :: prisma :: author :: SelectParam > :: into (crate :: prisma :: author :: id :: Select) } ; (@ selection_field_to_selection_param ; source_id) => { Into :: < crate :: prisma :: author :: SelectParam > :: into (crate :: prisma :: author :: source_id :: Select) } ; (@ selection_field_to_selection_param ; remote_id) => { Into :: < crate :: prisma :: author :: SelectParam > :: into (crate :: prisma :: author :: remote_id :: Select) } ; (@ selection_field_to_selection_param ; first_name) => { Into :: < crate :: prisma :: author :: SelectParam > :: into (crate :: prisma :: author :: first_name :: Select) } ; (@ selection_field_to_selection_param ; last_name) => { Into :: < crate :: prisma :: author :: SelectParam > :: into (crate :: prisma :: author :: last_name :: Select) } ; (@ selection_field_to_selection_param ; middle_name) => { Into :: < crate :: prisma :: author :: SelectParam > :: into (crate :: prisma :: author :: middle_name :: Select) } ; (@ selection_field_to_selection_param ; source $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: author :: SelectParam > :: into (crate :: prisma :: author :: source :: Select :: $ selection_mode (crate :: prisma :: source :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; source $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: author :: SelectParam > :: into (crate :: prisma :: author :: source :: Select :: Fetch) } } ; (@ selection_field_to_selection_param ; author_annotation $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: author :: SelectParam > :: into (crate :: prisma :: author :: author_annotation :: Select :: $ selection_mode (crate :: prisma :: author_annotation :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; author_annotation $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: author :: SelectParam > :: into (crate :: prisma :: author :: author_annotation :: Select :: Fetch) } } ; (@ selection_field_to_selection_param ; book_authors $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: author :: SelectParam > :: into (crate :: prisma :: author :: book_authors :: Select :: $ selection_mode (crate :: prisma :: book_author :: ManyArgs :: new (crate :: prisma :: book_author :: select ! (@ filters_to_args ; $ ($ ($ filters) +) ?)) $ ($ (. $ arg ($ ($ arg_params) *)) *) ? , crate :: prisma :: book_author :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; book_authors $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: author :: SelectParam > :: into (crate :: prisma :: author :: book_authors :: Select :: Fetch (crate :: prisma :: book_author :: ManyArgs :: new (crate :: prisma :: book_author :: select ! (@ filters_to_args ; $ ($ ($ filters) +) ?)) $ ($ (. $ arg ($ ($ arg_params) *)) *) ?) ,) } } ; (@ selection_field_to_selection_param ; translations $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: author :: SelectParam > :: into (crate :: prisma :: author :: translations :: Select :: $ selection_mode (crate :: prisma :: translator :: ManyArgs :: new (crate :: prisma :: translator :: select ! (@ filters_to_args ; $ ($ ($ filters) +) ?)) $ ($ (. $ arg ($ ($ arg_params) *)) *) ? , crate :: prisma :: translator :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; translations $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: author :: SelectParam > :: into (crate :: prisma :: author :: translations :: Select :: Fetch (crate :: prisma :: translator :: ManyArgs :: new (crate :: prisma :: translator :: select ! (@ filters_to_args ; $ ($ ($ filters) +) ?)) $ ($ (. $ arg ($ ($ arg_params) *)) *) ?) ,) } } ; (@ selection_field_to_selection_param ; $ ($ tokens : tt) *) => { compile_error ! (stringify ! ($ ($ tokens) *)) } ; (@ selections_to_params ; : $ macro_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { [$ (crate :: prisma :: author :: $ macro_name ! (@ selection_field_to_selection_param ; $ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) ,) +] } ; (@ filters_to_args ;) => { vec ! [] } ; (@ filters_to_args ; $ ($ t : tt) *) => { $ ($ t) * } ; (@ field_serde_name ; id) => { "id" } ; (@ field_serde_name ; source_id) => { "source_id" } ; (@ field_serde_name ; remote_id) => { "remote_id" } ; (@ field_serde_name ; first_name) => { "first_name" } ; (@ field_serde_name ; last_name) => { "last_name" } ; (@ field_serde_name ; middle_name) => { "middle_name" } ; (@ field_serde_name ; source) => { "source" } ; (@ field_serde_name ; author_annotation) => { "author_annotation" } ; (@ field_serde_name ; book_authors) => { "book_authors" } ; (@ field_serde_name ; translations) => { "translations" } ; } + pub use _select_author as select; + pub enum SelectParam { + Id(id::Select), + SourceId(source_id::Select), + RemoteId(remote_id::Select), + FirstName(first_name::Select), + LastName(last_name::Select), + MiddleName(middle_name::Select), + Source(source::Select), + AuthorAnnotation(author_annotation::Select), + BookAuthors(book_authors::Select), + Translations(translations::Select), + } + impl SelectParam { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + match self { + Self::Id(data) => data.to_selection(), + Self::SourceId(data) => data.to_selection(), + Self::RemoteId(data) => data.to_selection(), + Self::FirstName(data) => data.to_selection(), + Self::LastName(data) => data.to_selection(), + Self::MiddleName(data) => data.to_selection(), + Self::Source(data) => data.to_selection(), + Self::AuthorAnnotation(data) => data.to_selection(), + Self::BookAuthors(data) => data.to_selection(), + Self::Translations(data) => data.to_selection(), + } + } + } + #[macro_export] + macro_rules ! _include_author { ($ (($ ($ func_arg : ident : $ func_arg_ty : ty) , +) =>) ? $ module_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { # [allow (warnings)] pub mod $ module_name { $crate :: prisma :: author :: include ! (@ definitions ; $ module_name ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; use super :: * ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: IncludeType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: author :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } pub fn include ($ ($ ($ func_arg : $ func_arg_ty) , +) ?) -> Selection { Selection ([$crate :: prisma :: author :: include ! (@ selections_to_params ; : include { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () , < $crate :: prisma :: author :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections ()] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } } ; ({ $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { { $crate :: prisma :: author :: include ! (@ definitions ; ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: IncludeType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: author :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } Selection ([crate :: prisma :: author :: include ! (@ selections_to_params ; : include { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () , < crate :: prisma :: author :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections ()] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } ; (@ definitions ; $ ($ module_name : ident) ? ; $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) +) => { # [allow (warnings)] enum Fields { source , author_annotation , book_authors , translations } # [allow (warnings)] impl Fields { fn selections () { $ (let _ = Fields :: $ field ;) + } } # [allow (warnings)] # [derive (std :: fmt :: Debug , Clone)] pub struct Data { pub id : i32 , pub source_id : i32 , pub remote_id : i32 , pub first_name : String , pub last_name : String , pub middle_name : Option < String > , $ (pub $ field : crate :: prisma :: author :: include ! (@ field_type ; $ field $ (: $ selection_mode { $ ($ selections) + }) ?) ,) + } impl :: serde :: Serialize for Data { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : :: serde :: Serializer , { use :: serde :: ser :: SerializeStruct ; let mut state = serializer . serialize_struct ("Data" , [$ (stringify ! ($ field) ,) + stringify ! (id) , stringify ! (source_id) , stringify ! (remote_id) , stringify ! (first_name) , stringify ! (last_name) , stringify ! (middle_name)] . len ()) ? ; $ (state . serialize_field (crate :: prisma :: author :: $ field :: NAME , & self . $ field) ? ;) * state . serialize_field (crate :: prisma :: author :: id :: NAME , & self . id) ? ; state . serialize_field (crate :: prisma :: author :: source_id :: NAME , & self . source_id) ? ; state . serialize_field (crate :: prisma :: author :: remote_id :: NAME , & self . remote_id) ? ; state . serialize_field (crate :: prisma :: author :: first_name :: NAME , & self . first_name) ? ; state . serialize_field (crate :: prisma :: author :: last_name :: NAME , & self . last_name) ? ; state . serialize_field (crate :: prisma :: author :: middle_name :: NAME , & self . middle_name) ? ; state . end () } } impl < 'de > :: serde :: Deserialize < 'de > for Data { fn deserialize < D > (deserializer : D) -> Result < Self , D :: Error > where D : :: serde :: Deserializer < 'de > , { # [allow (warnings)] enum Field { $ ($ field) , + , id , source_id , remote_id , first_name , last_name , middle_name } impl < 'de > :: serde :: Deserialize < 'de > for Field { fn deserialize < D > (deserializer : D) -> Result < Field , D :: Error > where D : :: serde :: Deserializer < 'de > , { struct FieldVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for FieldVisitor { type Value = Field ; fn expecting (& self , formatter : & mut :: std :: fmt :: Formatter) -> :: std :: fmt :: Result { formatter . write_str (& [$ (crate :: prisma :: author :: $ field :: NAME) , + , crate :: prisma :: author :: id :: NAME , crate :: prisma :: author :: source_id :: NAME , crate :: prisma :: author :: remote_id :: NAME , crate :: prisma :: author :: first_name :: NAME , crate :: prisma :: author :: last_name :: NAME , crate :: prisma :: author :: middle_name :: NAME] . into_iter () . collect :: < Vec < _ >> () . join (", ")) } fn visit_str < E > (self , value : & str) -> Result < Field , E > where E : :: serde :: de :: Error , { match value { $ (crate :: prisma :: author :: $ field :: NAME => Ok (Field :: $ field)) , * , crate :: prisma :: author :: id :: NAME => Ok (Field :: id) , crate :: prisma :: author :: source_id :: NAME => Ok (Field :: source_id) , crate :: prisma :: author :: remote_id :: NAME => Ok (Field :: remote_id) , crate :: prisma :: author :: first_name :: NAME => Ok (Field :: first_name) , crate :: prisma :: author :: last_name :: NAME => Ok (Field :: last_name) , crate :: prisma :: author :: middle_name :: NAME => Ok (Field :: middle_name) , _ => Err (:: serde :: de :: Error :: unknown_field (value , FIELDS)) , } } } deserializer . deserialize_identifier (FieldVisitor) } } struct DataVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for DataVisitor { type Value = Data ; fn expecting (& self , formatter : & mut std :: fmt :: Formatter) -> std :: fmt :: Result { formatter . write_str ("struct Data") } fn visit_map < V > (self , mut map : V) -> Result < Data , V :: Error > where V : :: serde :: de :: MapAccess < 'de > , { $ (let mut $ field = None ;) * let mut id = None ; let mut source_id = None ; let mut remote_id = None ; let mut first_name = None ; let mut last_name = None ; let mut middle_name = None ; while let Some (key) = map . next_key () ? { match key { Field :: id => { if id . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: author :: id :: NAME)) ; } id = Some (map . next_value () ?) ; } Field :: source_id => { if source_id . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: author :: source_id :: NAME)) ; } source_id = Some (map . next_value () ?) ; } Field :: remote_id => { if remote_id . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: author :: remote_id :: NAME)) ; } remote_id = Some (map . next_value () ?) ; } Field :: first_name => { if first_name . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: author :: first_name :: NAME)) ; } first_name = Some (map . next_value () ?) ; } Field :: last_name => { if last_name . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: author :: last_name :: NAME)) ; } last_name = Some (map . next_value () ?) ; } Field :: middle_name => { if middle_name . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: author :: middle_name :: NAME)) ; } middle_name = Some (map . next_value () ?) ; } $ (Field :: $ field => { if $ field . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: author :: $ field :: NAME)) ; } $ field = Some (map . next_value () ?) ; }) * } } $ (let $ field = $ field . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: author :: $ field :: NAME)) ? ;) * let id = id . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: author :: id :: NAME)) ? ; let source_id = source_id . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: author :: source_id :: NAME)) ? ; let remote_id = remote_id . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: author :: remote_id :: NAME)) ? ; let first_name = first_name . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: author :: first_name :: NAME)) ? ; let last_name = last_name . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: author :: last_name :: NAME)) ? ; let middle_name = middle_name . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: author :: middle_name :: NAME)) ? ; Ok (Data { id , source_id , remote_id , first_name , last_name , middle_name , $ ($ field) , * }) } } const FIELDS : & 'static [& 'static str] = & ["id" , "source_id" , "remote_id" , "first_name" , "last_name" , "middle_name" , "source" , "author_annotation" , "book_authors" , "translations"] ; deserializer . deserialize_struct ("Data" , FIELDS , DataVisitor) } } $ ($ (pub mod $ field { crate :: prisma :: author :: $ selection_mode ! (@ field_module ; $ field : $ selection_mode { $ ($ selections) + }) ; }) ?) + } ; (@ field_type ; source : $ selection_mode : ident { $ ($ selections : tt) + }) => { source :: Data } ; (@ field_type ; source) => { crate :: prisma :: source :: Data } ; (@ field_type ; author_annotation : $ selection_mode : ident { $ ($ selections : tt) + }) => { Option < author_annotation :: Data > } ; (@ field_type ; author_annotation) => { Option < crate :: prisma :: author_annotation :: Data > } ; (@ field_type ; book_authors : $ selection_mode : ident { $ ($ selections : tt) + }) => { Vec < book_authors :: Data > } ; (@ field_type ; book_authors) => { Vec < crate :: prisma :: book_author :: Data > } ; (@ field_type ; translations : $ selection_mode : ident { $ ($ selections : tt) + }) => { Vec < translations :: Data > } ; (@ field_type ; translations) => { Vec < crate :: prisma :: translator :: Data > } ; (@ field_type ; $ field : ident $ ($ tokens : tt) *) => { compile_error ! (stringify ! (Cannot include nonexistent relation $ field on model "Author" , available relations are "source, author_annotation, book_authors, translations")) } ; (@ field_module ; source : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: source :: include ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; author_annotation : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: author_annotation :: include ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; book_authors : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: book_author :: include ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; translations : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: translator :: include ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; $ ($ tokens : tt) *) => { } ; (@ selection_field_to_selection_param ; source $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: author :: IncludeParam > :: into (crate :: prisma :: author :: source :: Include :: $ selection_mode (crate :: prisma :: source :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; source $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: author :: IncludeParam > :: into (crate :: prisma :: author :: source :: Include :: Fetch) } } ; (@ selection_field_to_selection_param ; author_annotation $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: author :: IncludeParam > :: into (crate :: prisma :: author :: author_annotation :: Include :: $ selection_mode (crate :: prisma :: author_annotation :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; author_annotation $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: author :: IncludeParam > :: into (crate :: prisma :: author :: author_annotation :: Include :: Fetch) } } ; (@ selection_field_to_selection_param ; book_authors $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: author :: IncludeParam > :: into (crate :: prisma :: author :: book_authors :: Include :: $ selection_mode (crate :: prisma :: book_author :: ManyArgs :: new (crate :: prisma :: book_author :: include ! (@ filters_to_args ; $ ($ ($ filters) +) ?)) $ ($ (. $ arg ($ ($ arg_params) *)) *) ? , crate :: prisma :: book_author :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; book_authors $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: author :: IncludeParam > :: into (crate :: prisma :: author :: book_authors :: Include :: Fetch (crate :: prisma :: book_author :: ManyArgs :: new (crate :: prisma :: book_author :: include ! (@ filters_to_args ; $ ($ ($ filters) +) ?)) $ ($ (. $ arg ($ ($ arg_params) *)) *) ?) ,) } } ; (@ selection_field_to_selection_param ; translations $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: author :: IncludeParam > :: into (crate :: prisma :: author :: translations :: Include :: $ selection_mode (crate :: prisma :: translator :: ManyArgs :: new (crate :: prisma :: translator :: include ! (@ filters_to_args ; $ ($ ($ filters) +) ?)) $ ($ (. $ arg ($ ($ arg_params) *)) *) ? , crate :: prisma :: translator :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; translations $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: author :: IncludeParam > :: into (crate :: prisma :: author :: translations :: Include :: Fetch (crate :: prisma :: translator :: ManyArgs :: new (crate :: prisma :: translator :: include ! (@ filters_to_args ; $ ($ ($ filters) +) ?)) $ ($ (. $ arg ($ ($ arg_params) *)) *) ?) ,) } } ; (@ selection_field_to_selection_param ; $ ($ tokens : tt) *) => { compile_error ! (stringify ! ($ ($ tokens) *)) } ; (@ selections_to_params ; : $ macro_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { [$ (crate :: prisma :: author :: $ macro_name ! (@ selection_field_to_selection_param ; $ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) ,) +] } ; (@ filters_to_args ;) => { vec ! [] } ; (@ filters_to_args ; $ ($ t : tt) *) => { $ ($ t) * } ; (@ field_serde_name ; id) => { "id" } ; (@ field_serde_name ; source_id) => { "source_id" } ; (@ field_serde_name ; remote_id) => { "remote_id" } ; (@ field_serde_name ; first_name) => { "first_name" } ; (@ field_serde_name ; last_name) => { "last_name" } ; (@ field_serde_name ; middle_name) => { "middle_name" } ; (@ field_serde_name ; source) => { "source" } ; (@ field_serde_name ; author_annotation) => { "author_annotation" } ; (@ field_serde_name ; book_authors) => { "book_authors" } ; (@ field_serde_name ; translations) => { "translations" } ; } + pub use _include_author as include; + pub enum IncludeParam { + Id(id::Include), + SourceId(source_id::Include), + RemoteId(remote_id::Include), + FirstName(first_name::Include), + LastName(last_name::Include), + MiddleName(middle_name::Include), + Source(source::Include), + AuthorAnnotation(author_annotation::Include), + BookAuthors(book_authors::Include), + Translations(translations::Include), + } + impl IncludeParam { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + match self { + Self::Id(data) => data.to_selection(), + Self::SourceId(data) => data.to_selection(), + Self::RemoteId(data) => data.to_selection(), + Self::FirstName(data) => data.to_selection(), + Self::LastName(data) => data.to_selection(), + Self::MiddleName(data) => data.to_selection(), + Self::Source(data) => data.to_selection(), + Self::AuthorAnnotation(data) => data.to_selection(), + Self::BookAuthors(data) => data.to_selection(), + Self::Translations(data) => data.to_selection(), + } + } + } + #[macro_export] + macro_rules ! _partial_unchecked_author { ($ struct_name : ident { $ ($ scalar_field : ident) + }) => { :: prisma_client_rust :: macros :: partial_unchecked ! { $crate :: prisma :: author struct $ struct_name { # [serde (rename = "id")] pub id : i32 , # [serde (rename = "source_id")] pub source_id : i32 , # [serde (rename = "remote_id")] pub remote_id : i32 , # [serde (rename = "first_name")] pub first_name : String , # [serde (rename = "last_name")] pub last_name : String , # [serde (rename = "middle_name")] # [serde (default , with = "::prisma_client_rust::serde::double_option")] pub middle_name : Option < String > } [$ ($ scalar_field) , +] } } ; } + pub use _partial_unchecked_author as partial_unchecked; + #[derive(Debug, Clone, :: serde :: Serialize, :: serde :: Deserialize)] + pub struct Data { + #[serde(rename = "id")] + pub id: i32, + #[serde(rename = "source_id")] + pub source_id: i32, + #[serde(rename = "remote_id")] + pub remote_id: i32, + #[serde(rename = "first_name")] + pub first_name: String, + #[serde(rename = "last_name")] + pub last_name: String, + #[serde(rename = "middle_name")] + pub middle_name: Option, + #[serde(rename = "source")] + pub source: Option>, + #[serde( + rename = "author_annotation", + default, + skip_serializing_if = "Option::is_none", + with = "prisma_client_rust::serde::double_option" + )] + pub author_annotation: Option>>, + #[serde(rename = "book_authors")] + pub book_authors: Option>, + #[serde(rename = "translations")] + pub translations: Option>, + } + impl Data { + pub fn source( + &self, + ) -> Result<&super::source::Data, ::prisma_client_rust::RelationNotFetchedError> { + self.source + .as_ref() + .ok_or(::prisma_client_rust::RelationNotFetchedError::new( + stringify!(source), + )) + .map(|v| v.as_ref()) + } + pub fn author_annotation( + &self, + ) -> Result< + Option<&super::author_annotation::Data>, + ::prisma_client_rust::RelationNotFetchedError, + > { + self.author_annotation + .as_ref() + .ok_or(::prisma_client_rust::RelationNotFetchedError::new( + stringify!(author_annotation), + )) + .map(|v| v.as_ref().map(|v| v.as_ref())) + } + pub fn book_authors( + &self, + ) -> Result<&Vec, ::prisma_client_rust::RelationNotFetchedError> + { + self.book_authors + .as_ref() + .ok_or(::prisma_client_rust::RelationNotFetchedError::new( + stringify!(book_authors), + )) + } + pub fn translations( + &self, + ) -> Result<&Vec, ::prisma_client_rust::RelationNotFetchedError> + { + self.translations + .as_ref() + .ok_or(::prisma_client_rust::RelationNotFetchedError::new( + stringify!(translations), + )) + } + } + #[derive(Clone)] + pub enum WithParam { + Source(super::source::UniqueArgs), + AuthorAnnotation(super::author_annotation::UniqueArgs), + BookAuthors(super::book_author::ManyArgs), + Translations(super::translator::ManyArgs), + } + impl From for ::prisma_client_rust::Selection { + fn from(val: WithParam) -> Self { + match val { + WithParam::Source(args) => { + let mut selections = < super :: source :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections () ; + selections.extend( + args.with_params + .into_iter() + .map(Into::<::prisma_client_rust::Selection>::into), + ); + ::prisma_client_rust::Selection::new(source::NAME, None, [], selections) + } + WithParam::AuthorAnnotation(args) => { + let mut selections = < super :: author_annotation :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections () ; + selections.extend( + args.with_params + .into_iter() + .map(Into::<::prisma_client_rust::Selection>::into), + ); + ::prisma_client_rust::Selection::new( + author_annotation::NAME, + None, + [], + selections, + ) + } + WithParam::BookAuthors(args) => { + let (arguments, mut nested_selections) = args.to_graphql(); + nested_selections . extend (< super :: book_author :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections ()) ; + ::prisma_client_rust::Selection::new( + book_authors::NAME, + None, + arguments, + nested_selections, + ) + } + WithParam::Translations(args) => { + let (arguments, mut nested_selections) = args.to_graphql(); + nested_selections . extend (< super :: translator :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections ()) ; + ::prisma_client_rust::Selection::new( + translations::NAME, + None, + arguments, + nested_selections, + ) + } + } + } + } + #[derive(Clone)] + pub enum SetParam { + SetId(i32), + IncrementId(i32), + DecrementId(i32), + MultiplyId(i32), + DivideId(i32), + SetSourceId(i32), + IncrementSourceId(i32), + DecrementSourceId(i32), + MultiplySourceId(i32), + DivideSourceId(i32), + SetRemoteId(i32), + IncrementRemoteId(i32), + DecrementRemoteId(i32), + MultiplyRemoteId(i32), + DivideRemoteId(i32), + SetFirstName(String), + SetLastName(String), + SetMiddleName(Option), + ConnectSource(super::source::UniqueWhereParam), + ConnectAuthorAnnotation(super::author_annotation::UniqueWhereParam), + DisconnectAuthorAnnotation, + ConnectBookAuthors(Vec), + DisconnectBookAuthors(Vec), + SetBookAuthors(Vec), + ConnectTranslations(Vec), + DisconnectTranslations(Vec), + SetTranslations(Vec), + } + impl From for (String, ::prisma_client_rust::PrismaValue) { + fn from(param: SetParam) -> Self { + match param { + SetParam::SetId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + ), + SetParam::IncrementId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "increment".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DecrementId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "decrement".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::MultiplyId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "multiply".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DivideId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "divide".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::SetSourceId(value) => ( + source_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + ), + SetParam::IncrementSourceId(value) => ( + source_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "increment".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DecrementSourceId(value) => ( + source_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "decrement".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::MultiplySourceId(value) => ( + source_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "multiply".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DivideSourceId(value) => ( + source_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "divide".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::SetRemoteId(value) => ( + remote_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + ), + SetParam::IncrementRemoteId(value) => ( + remote_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "increment".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DecrementRemoteId(value) => ( + remote_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "decrement".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::MultiplyRemoteId(value) => ( + remote_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "multiply".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DivideRemoteId(value) => ( + remote_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "divide".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::SetFirstName(value) => ( + first_name::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(value), + ), + SetParam::SetLastName(value) => ( + last_name::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(value), + ), + SetParam::SetMiddleName(value) => ( + middle_name::NAME.to_string(), + value + .map(::prisma_client_rust::PrismaValue::String) + .unwrap_or_else(|| ::prisma_client_rust::PrismaValue::Null), + ), + SetParam::ConnectSource(where_param) => ( + source::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "connect".to_string(), + ::prisma_client_rust::PrismaValue::Object( + [where_param] + .into_iter() + .map(Into::::into) + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + SetParam::ConnectAuthorAnnotation(where_param) => ( + author_annotation::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "connect".to_string(), + ::prisma_client_rust::PrismaValue::Object( + [where_param] + .into_iter() + .map(Into::::into) + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + SetParam::DisconnectAuthorAnnotation => ( + author_annotation::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "disconnect".to_string(), + ::prisma_client_rust::PrismaValue::Boolean(true), + )]), + ), + SetParam::ConnectBookAuthors(where_params) => ( + book_authors::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "connect".to_string(), + ::prisma_client_rust::PrismaValue::List( + where_params + .into_iter() + .map(Into::::into) + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .map(|v| ::prisma_client_rust::PrismaValue::Object(vec![v])) + .collect(), + ), + )]), + ), + SetParam::DisconnectBookAuthors(where_params) => ( + book_authors::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "disconnect".to_string(), + ::prisma_client_rust::PrismaValue::List( + where_params + .into_iter() + .map(Into::::into) + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .map(|v| ::prisma_client_rust::PrismaValue::Object(vec![v])) + .collect(), + ), + )]), + ), + SetParam::SetBookAuthors(where_params) => ( + book_authors::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "set".to_string(), + ::prisma_client_rust::PrismaValue::List( + where_params + .into_iter() + .map(Into::::into) + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .map(|v| ::prisma_client_rust::PrismaValue::Object(vec![v])) + .collect(), + ), + )]), + ), + SetParam::ConnectTranslations(where_params) => ( + translations::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "connect".to_string(), + ::prisma_client_rust::PrismaValue::List( + where_params + .into_iter() + .map(Into::::into) + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .map(|v| ::prisma_client_rust::PrismaValue::Object(vec![v])) + .collect(), + ), + )]), + ), + SetParam::DisconnectTranslations(where_params) => ( + translations::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "disconnect".to_string(), + ::prisma_client_rust::PrismaValue::List( + where_params + .into_iter() + .map(Into::::into) + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .map(|v| ::prisma_client_rust::PrismaValue::Object(vec![v])) + .collect(), + ), + )]), + ), + SetParam::SetTranslations(where_params) => ( + translations::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "set".to_string(), + ::prisma_client_rust::PrismaValue::List( + where_params + .into_iter() + .map(Into::::into) + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .map(|v| ::prisma_client_rust::PrismaValue::Object(vec![v])) + .collect(), + ), + )]), + ), + } + } + } + #[derive(Clone)] + pub enum UncheckedSetParam { + Id(i32), + SourceId(i32), + RemoteId(i32), + FirstName(String), + LastName(String), + MiddleName(Option), + } + impl From for SetParam { + fn from(param: UncheckedSetParam) -> Self { + match param { + UncheckedSetParam::Id(value) => Self::SetId(value), + UncheckedSetParam::SourceId(value) => Self::SetSourceId(value), + UncheckedSetParam::RemoteId(value) => Self::SetRemoteId(value), + UncheckedSetParam::FirstName(value) => Self::SetFirstName(value), + UncheckedSetParam::LastName(value) => Self::SetLastName(value), + UncheckedSetParam::MiddleName(value) => Self::SetMiddleName(value), + } + } + } + #[derive(Clone)] + pub enum OrderByParam { + Id(::prisma_client_rust::Direction), + SourceId(::prisma_client_rust::Direction), + RemoteId(::prisma_client_rust::Direction), + FirstName(::prisma_client_rust::Direction), + LastName(::prisma_client_rust::Direction), + MiddleName(::prisma_client_rust::Direction), + } + impl From for (String, ::prisma_client_rust::PrismaValue) { + fn from(val: OrderByParam) -> Self { + match val { + OrderByParam::Id(direction) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + OrderByParam::SourceId(direction) => ( + source_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + OrderByParam::RemoteId(direction) => ( + remote_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + OrderByParam::FirstName(direction) => ( + first_name::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + OrderByParam::LastName(direction) => ( + last_name::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + OrderByParam::MiddleName(direction) => ( + middle_name::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + } + } + } + #[derive(Clone)] + pub enum WhereParam { + Not(Vec), + Or(Vec), + And(Vec), + SourceIdRemoteIdEquals(i32, i32), + Id(_prisma::read_filters::IntFilter), + SourceId(_prisma::read_filters::IntFilter), + RemoteId(_prisma::read_filters::IntFilter), + FirstName(_prisma::read_filters::StringFilter), + LastName(_prisma::read_filters::StringFilter), + MiddleName(_prisma::read_filters::StringNullableFilter), + SourceIs(Vec), + SourceIsNot(Vec), + AuthorAnnotationIsNull, + AuthorAnnotationIs(Vec), + AuthorAnnotationIsNot(Vec), + BookAuthorsSome(Vec), + BookAuthorsEvery(Vec), + BookAuthorsNone(Vec), + TranslationsSome(Vec), + TranslationsEvery(Vec), + TranslationsNone(Vec), + } + impl ::prisma_client_rust::WhereInput for WhereParam { + fn serialize(self) -> ::prisma_client_rust::SerializedWhereInput { + let (name, value) = match self { + Self::Not(value) => ( + "NOT", + ::prisma_client_rust::SerializedWhereValue::Object( + ::prisma_client_rust::merge_fields( + value + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(Into::into) + .collect(), + ), + ), + ), + Self::Or(value) => ( + "OR", + ::prisma_client_rust::SerializedWhereValue::List( + value + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(Into::into) + .map(|v| vec![v]) + .map(::prisma_client_rust::PrismaValue::Object) + .collect(), + ), + ), + Self::And(value) => ( + "AND", + ::prisma_client_rust::SerializedWhereValue::Object( + ::prisma_client_rust::merge_fields( + value + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(Into::into) + .collect(), + ), + ), + ), + Self::SourceIdRemoteIdEquals(source_id, remote_id) => ( + "source_id_remote_id", + ::prisma_client_rust::SerializedWhereValue::Object(vec![ + ( + source_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(source_id as i64), + ), + ( + remote_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(remote_id as i64), + ), + ]), + ), + Self::Id(value) => (id::NAME, value.into()), + Self::SourceId(value) => (source_id::NAME, value.into()), + Self::RemoteId(value) => (remote_id::NAME, value.into()), + Self::FirstName(value) => (first_name::NAME, value.into()), + Self::LastName(value) => (last_name::NAME, value.into()), + Self::MiddleName(value) => (middle_name::NAME, value.into()), + Self::SourceIs(where_params) => ( + source::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "is".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + Self::SourceIsNot(where_params) => ( + source::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "isNot".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + Self::AuthorAnnotationIsNull => ( + author_annotation::NAME, + ::prisma_client_rust::SerializedWhereValue::Value( + ::prisma_client_rust::PrismaValue::Null, + ), + ), + Self::AuthorAnnotationIs(where_params) => ( + author_annotation::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "is".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + Self::AuthorAnnotationIsNot(where_params) => ( + author_annotation::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "isNot".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + Self::BookAuthorsSome(where_params) => ( + book_authors::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "some".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + Self::BookAuthorsEvery(where_params) => ( + book_authors::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "every".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + Self::BookAuthorsNone(where_params) => ( + book_authors::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "none".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + Self::TranslationsSome(where_params) => ( + translations::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "some".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + Self::TranslationsEvery(where_params) => ( + translations::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "every".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + Self::TranslationsNone(where_params) => ( + translations::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "none".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + }; + ::prisma_client_rust::SerializedWhereInput::new(name, value) + } + } + #[derive(Clone)] + pub enum UniqueWhereParam { + SourceIdRemoteIdEquals(i32, i32), + IdEquals(i32), + } + impl From for WhereParam { + fn from(value: UniqueWhereParam) -> Self { + match value { + UniqueWhereParam::SourceIdRemoteIdEquals(source_id, remote_id) => { + Self::SourceIdRemoteIdEquals(source_id, remote_id) + } + UniqueWhereParam::IdEquals(value) => { + Self::Id(_prisma::read_filters::IntFilter::Equals(value)) + } + } + } + } + impl From<::prisma_client_rust::Operator> for WhereParam { + fn from(op: ::prisma_client_rust::Operator) -> Self { + match op { + ::prisma_client_rust::Operator::Not(value) => Self::Not(value), + ::prisma_client_rust::Operator::And(value) => Self::And(value), + ::prisma_client_rust::Operator::Or(value) => Self::Or(value), + } + } + } + #[derive(Clone)] + pub struct Types; + impl ::prisma_client_rust::ModelTypes for Types { + type Data = Data; + type Where = WhereParam; + type UncheckedSet = UncheckedSetParam; + type Set = SetParam; + type With = WithParam; + type OrderBy = OrderByParam; + type Cursor = UniqueWhereParam; + const MODEL: &'static str = NAME; + fn scalar_selections() -> Vec<::prisma_client_rust::Selection> { + vec![ + ::prisma_client_rust::sel(id::NAME), + ::prisma_client_rust::sel(source_id::NAME), + ::prisma_client_rust::sel(remote_id::NAME), + ::prisma_client_rust::sel(first_name::NAME), + ::prisma_client_rust::sel(last_name::NAME), + ::prisma_client_rust::sel(middle_name::NAME), + ] + } + } + pub type UniqueArgs = ::prisma_client_rust::UniqueArgs; + pub type ManyArgs = ::prisma_client_rust::ManyArgs; + pub type Count<'a> = ::prisma_client_rust::Count<'a, Types>; + pub type Create<'a> = ::prisma_client_rust::Create<'a, Types>; + pub type CreateMany<'a> = ::prisma_client_rust::CreateMany<'a, Types>; + pub type FindUnique<'a> = ::prisma_client_rust::FindUnique<'a, Types>; + pub type FindMany<'a> = ::prisma_client_rust::FindMany<'a, Types>; + pub type FindFirst<'a> = ::prisma_client_rust::FindFirst<'a, Types>; + pub type Update<'a> = ::prisma_client_rust::Update<'a, Types>; + pub type UpdateMany<'a> = ::prisma_client_rust::UpdateMany<'a, Types>; + pub type Upsert<'a> = ::prisma_client_rust::Upsert<'a, Types>; + pub type Delete<'a> = ::prisma_client_rust::Delete<'a, Types>; + pub type DeleteMany<'a> = ::prisma_client_rust::DeleteMany<'a, Types>; + #[derive(Clone)] + pub struct Actions<'a> { + pub client: &'a ::prisma_client_rust::PrismaClientInternals, + } + impl<'a> Actions<'a> { + pub fn find_unique(self, _where: UniqueWhereParam) -> FindUnique<'a> { + FindUnique::new(self.client, _where.into()) + } + pub fn find_first(self, _where: Vec) -> FindFirst<'a> { + FindFirst::new(self.client, _where) + } + pub fn find_many(self, _where: Vec) -> FindMany<'a> { + FindMany::new(self.client, _where) + } + pub fn create( + self, + remote_id: i32, + first_name: String, + last_name: String, + source: super::source::UniqueWhereParam, + mut _params: Vec, + ) -> Create<'a> { + _params.extend([ + remote_id::set(remote_id), + first_name::set(first_name), + last_name::set(last_name), + source::connect(source), + ]); + Create::new(self.client, _params) + } + pub fn create_unchecked( + self, + source_id: i32, + remote_id: i32, + first_name: String, + last_name: String, + mut _params: Vec, + ) -> Create<'a> { + _params.extend([ + source_id::set(source_id), + remote_id::set(remote_id), + first_name::set(first_name), + last_name::set(last_name), + ]); + Create::new(self.client, _params.into_iter().map(Into::into).collect()) + } + pub fn create_many( + self, + data: Vec<(i32, i32, String, String, Vec)>, + ) -> CreateMany<'a> { + let data = data + .into_iter() + .map( + |(source_id, remote_id, first_name, last_name, mut _params)| { + _params.extend([ + source_id::set(source_id), + remote_id::set(remote_id), + first_name::set(first_name), + last_name::set(last_name), + ]); + _params + }, + ) + .collect(); + CreateMany::new(self.client, data) + } + pub fn update(self, _where: UniqueWhereParam, _params: Vec) -> Update<'a> { + Update::new(self.client, _where.into(), _params, vec![]) + } + pub fn update_unchecked( + self, + _where: UniqueWhereParam, + _params: Vec, + ) -> Update<'a> { + Update::new( + self.client, + _where.into(), + _params.into_iter().map(Into::into).collect(), + vec![], + ) + } + pub fn update_many( + self, + _where: Vec, + _params: Vec, + ) -> UpdateMany<'a> { + UpdateMany::new(self.client, _where, _params) + } + pub fn upsert( + self, + _where: UniqueWhereParam, + (remote_id, first_name, last_name, source, mut _params): ( + i32, + String, + String, + super::source::UniqueWhereParam, + Vec, + ), + _update: Vec, + ) -> Upsert<'a> { + _params.extend([ + remote_id::set(remote_id), + first_name::set(first_name), + last_name::set(last_name), + source::connect(source), + ]); + Upsert::new(self.client, _where.into(), _params, _update) + } + pub fn delete(self, _where: UniqueWhereParam) -> Delete<'a> { + Delete::new(self.client, _where.into(), vec![]) + } + pub fn delete_many(self, _where: Vec) -> DeleteMany<'a> { + DeleteMany::new(self.client, _where) + } + pub fn count(self, _where: Vec) -> Count<'a> { + Count::new(self.client, _where) + } + pub fn find_raw( + self, + ) -> ::prisma_client_rust::FindRaw<'a, Types, T> { + ::prisma_client_rust::FindRaw::new(self.client) + } + pub fn aggregate_raw( + self, + ) -> ::prisma_client_rust::AggregateRaw<'a, Types, T> { + ::prisma_client_rust::AggregateRaw::new(self.client) + } + } +} +pub mod book_annotation { + + use super::*; + pub const NAME: &str = "BookAnnotation"; + pub mod id { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, UniqueWhereParam, WhereParam, + }; + pub const NAME: &str = "id"; + pub struct Set(pub i32); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetId(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::Id(v) + } + } + pub fn set>(value: i32) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::Id(direction) + } + pub fn equals>(value: i32) -> T { + UniqueWhereParam::IdEquals(value).into() + } + ::prisma_client_rust::scalar_where_param_fns!(_prisma::read_filters::IntFilter, Id, { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: i32) -> Lt; + fn lte(_: i32) -> Lte; + fn gt(_: i32) -> Gt; + fn gte(_: i32) -> Gte; + fn not(_: i32) -> Not; + }); + pub fn increment(value: i32) -> SetParam { + SetParam::IncrementId(value) + } + pub fn decrement(value: i32) -> SetParam { + SetParam::DecrementId(value) + } + pub fn multiply(value: i32) -> SetParam { + SetParam::MultiplyId(value) + } + pub fn divide(value: i32) -> SetParam { + SetParam::DivideId(value) + } + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Id(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::BookId(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod title { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "title"; + pub struct Set(pub String); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetTitle(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::Title(v) + } + } + pub fn set>(value: String) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::Title(direction) + } + pub fn equals(value: String) -> WhereParam { + WhereParam::Title(_prisma::read_filters::StringFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!( + _prisma::read_filters::StringFilter, + Title, + { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: String) -> Lt; + fn lte(_: String) -> Lte; + fn gt(_: String) -> Gt; + fn gte(_: String) -> Gte; + fn contains(_: String) -> Contains; + fn starts_with(_: String) -> StartsWith; + fn ends_with(_: String) -> EndsWith; + fn mode(_: super::super::QueryMode) -> Mode; + fn not(_: String) -> Not; + } + ); + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Title(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Text(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod file { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "file"; + pub struct Set(pub Option); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetFile(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::File(v) + } + } + pub fn set>(value: Option) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::File(direction) + } + pub fn equals(value: Option) -> WhereParam { + WhereParam::File(_prisma::read_filters::StringNullableFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!( + _prisma::read_filters::StringNullableFilter, + File, + { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: String) -> Lt; + fn lte(_: String) -> Lte; + fn gt(_: String) -> Gt; + fn gte(_: String) -> Gte; + fn contains(_: String) -> Contains; + fn starts_with(_: String) -> StartsWith; + fn ends_with(_: String) -> EndsWith; + fn mode(_: super::super::QueryMode) -> Mode; + fn not(_: Option) -> Not; + } + ); + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::File(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Book(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let selections = match self { + Self::Select(selections) => { + selections.into_iter().map(|s| s.to_selection()).collect() + } + Self::Include(selections) => { + let mut nested_selections = vec![]; + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + } + Self::Fetch => { + ::scalar_selections() + } + }; + ::prisma_client_rust::Selection::new("book", None, [], selections) + } + pub fn select(nested_selections: Vec) -> Self { + Self::Select(nested_selections) + } + pub fn include(nested_selections: Vec) -> Self { + Self::Include(nested_selections) + } + } + } + pub fn create( + title: String, + text: String, + book: super::book::UniqueWhereParam, + _params: Vec, + ) -> (String, String, super::book::UniqueWhereParam, Vec) { + (title, text, book, _params) + } + pub fn create_unchecked( + book_id: i32, + title: String, + text: String, + _params: Vec, + ) -> (i32, String, String, Vec) { + (book_id, title, text, _params) + } + #[macro_export] + macro_rules ! _select_book_annotation { ($ (($ ($ func_arg : ident : $ func_arg_ty : ty) , +) =>) ? $ module_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { # [allow (warnings)] pub mod $ module_name { $crate :: prisma :: book_annotation :: select ! (@ definitions ; $ module_name ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; use super :: * ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: SelectType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: book_annotation :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } pub fn select ($ ($ ($ func_arg : $ func_arg_ty) , +) ?) -> Selection { Selection ([$crate :: prisma :: book_annotation :: select ! (@ selections_to_params ; : select { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () ,] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } } ; ({ $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { { $crate :: prisma :: book_annotation :: select ! (@ definitions ; ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: SelectType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: book_annotation :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } Selection ([$crate :: prisma :: book_annotation :: select ! (@ selections_to_params ; : select { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () ,] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } ; (@ definitions ; $ ($ module_name : ident) ? ; $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) +) => { # [allow (warnings)] enum Fields { id , book_id , title , text , file , book } # [allow (warnings)] impl Fields { fn selections () { $ (let _ = Fields :: $ field ;) + } } # [allow (warnings)] # [derive (std :: fmt :: Debug , Clone)] pub struct Data { $ (pub $ field : crate :: prisma :: book_annotation :: select ! (@ field_type ; $ field $ (: $ selection_mode { $ ($ selections) + }) ?) ,) + } impl :: serde :: Serialize for Data { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : :: serde :: Serializer , { use :: serde :: ser :: SerializeStruct ; let mut state = serializer . serialize_struct ("Data" , [$ (stringify ! ($ field) ,) +] . len ()) ? ; $ (state . serialize_field (crate :: prisma :: book_annotation :: $ field :: NAME , & self . $ field) ? ;) * state . end () } } impl < 'de > :: serde :: Deserialize < 'de > for Data { fn deserialize < D > (deserializer : D) -> Result < Self , D :: Error > where D : :: serde :: Deserializer < 'de > , { # [allow (warnings)] enum Field { $ ($ field) , + , } impl < 'de > :: serde :: Deserialize < 'de > for Field { fn deserialize < D > (deserializer : D) -> Result < Field , D :: Error > where D : :: serde :: Deserializer < 'de > , { struct FieldVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for FieldVisitor { type Value = Field ; fn expecting (& self , formatter : & mut :: std :: fmt :: Formatter) -> :: std :: fmt :: Result { formatter . write_str (& [$ (crate :: prisma :: book_annotation :: $ field :: NAME) , + ,] . into_iter () . collect :: < Vec < _ >> () . join (", ")) } fn visit_str < E > (self , value : & str) -> Result < Field , E > where E : :: serde :: de :: Error , { match value { $ (crate :: prisma :: book_annotation :: $ field :: NAME => Ok (Field :: $ field)) , * , _ => Err (:: serde :: de :: Error :: unknown_field (value , FIELDS)) , } } } deserializer . deserialize_identifier (FieldVisitor) } } struct DataVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for DataVisitor { type Value = Data ; fn expecting (& self , formatter : & mut std :: fmt :: Formatter) -> std :: fmt :: Result { formatter . write_str ("struct Data") } fn visit_map < V > (self , mut map : V) -> Result < Data , V :: Error > where V : :: serde :: de :: MapAccess < 'de > , { $ (let mut $ field = None ;) * while let Some (key) = map . next_key () ? { match key { $ (Field :: $ field => { if $ field . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: book_annotation :: $ field :: NAME)) ; } $ field = Some (map . next_value () ?) ; }) * } } $ (let $ field = $ field . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: book_annotation :: $ field :: NAME)) ? ;) * Ok (Data { $ ($ field) , * }) } } const FIELDS : & 'static [& 'static str] = & ["id" , "book_id" , "title" , "text" , "file" , "book"] ; deserializer . deserialize_struct ("Data" , FIELDS , DataVisitor) } } $ ($ (pub mod $ field { crate :: prisma :: book_annotation :: $ selection_mode ! (@ field_module ; $ field : $ selection_mode { $ ($ selections) + }) ; }) ?) + } ; (@ field_type ; id) => { i32 } ; (@ field_type ; book_id) => { i32 } ; (@ field_type ; title) => { String } ; (@ field_type ; text) => { String } ; (@ field_type ; file) => { Option < String > } ; (@ field_type ; book : $ selection_mode : ident { $ ($ selections : tt) + }) => { book :: Data } ; (@ field_type ; book) => { crate :: prisma :: book :: Data } ; (@ field_type ; $ field : ident $ ($ tokens : tt) *) => { compile_error ! (stringify ! (Cannot include nonexistent relation $ field on model "BookAnnotation" , available relations are "id, book_id, title, text, file, book")) } ; (@ field_module ; book : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: book :: select ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; $ ($ tokens : tt) *) => { } ; (@ selection_field_to_selection_param ; id) => { Into :: < crate :: prisma :: book_annotation :: SelectParam > :: into (crate :: prisma :: book_annotation :: id :: Select) } ; (@ selection_field_to_selection_param ; book_id) => { Into :: < crate :: prisma :: book_annotation :: SelectParam > :: into (crate :: prisma :: book_annotation :: book_id :: Select) } ; (@ selection_field_to_selection_param ; title) => { Into :: < crate :: prisma :: book_annotation :: SelectParam > :: into (crate :: prisma :: book_annotation :: title :: Select) } ; (@ selection_field_to_selection_param ; text) => { Into :: < crate :: prisma :: book_annotation :: SelectParam > :: into (crate :: prisma :: book_annotation :: text :: Select) } ; (@ selection_field_to_selection_param ; file) => { Into :: < crate :: prisma :: book_annotation :: SelectParam > :: into (crate :: prisma :: book_annotation :: file :: Select) } ; (@ selection_field_to_selection_param ; book $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: book_annotation :: SelectParam > :: into (crate :: prisma :: book_annotation :: book :: Select :: $ selection_mode (crate :: prisma :: book :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; book $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: book_annotation :: SelectParam > :: into (crate :: prisma :: book_annotation :: book :: Select :: Fetch) } } ; (@ selection_field_to_selection_param ; $ ($ tokens : tt) *) => { compile_error ! (stringify ! ($ ($ tokens) *)) } ; (@ selections_to_params ; : $ macro_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { [$ (crate :: prisma :: book_annotation :: $ macro_name ! (@ selection_field_to_selection_param ; $ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) ,) +] } ; (@ filters_to_args ;) => { vec ! [] } ; (@ filters_to_args ; $ ($ t : tt) *) => { $ ($ t) * } ; (@ field_serde_name ; id) => { "id" } ; (@ field_serde_name ; book_id) => { "book_id" } ; (@ field_serde_name ; title) => { "title" } ; (@ field_serde_name ; text) => { "text" } ; (@ field_serde_name ; file) => { "file" } ; (@ field_serde_name ; book) => { "book" } ; } + pub use _select_book_annotation as select; + pub enum SelectParam { + Id(id::Select), + BookId(book_id::Select), + Title(title::Select), + Text(text::Select), + File(file::Select), + Book(book::Select), + } + impl SelectParam { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + match self { + Self::Id(data) => data.to_selection(), + Self::BookId(data) => data.to_selection(), + Self::Title(data) => data.to_selection(), + Self::Text(data) => data.to_selection(), + Self::File(data) => data.to_selection(), + Self::Book(data) => data.to_selection(), + } + } + } + #[macro_export] + macro_rules ! _include_book_annotation { ($ (($ ($ func_arg : ident : $ func_arg_ty : ty) , +) =>) ? $ module_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { # [allow (warnings)] pub mod $ module_name { $crate :: prisma :: book_annotation :: include ! (@ definitions ; $ module_name ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; use super :: * ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: IncludeType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: book_annotation :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } pub fn include ($ ($ ($ func_arg : $ func_arg_ty) , +) ?) -> Selection { Selection ([$crate :: prisma :: book_annotation :: include ! (@ selections_to_params ; : include { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () , < $crate :: prisma :: book_annotation :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections ()] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } } ; ({ $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { { $crate :: prisma :: book_annotation :: include ! (@ definitions ; ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: IncludeType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: book_annotation :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } Selection ([crate :: prisma :: book_annotation :: include ! (@ selections_to_params ; : include { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () , < crate :: prisma :: book_annotation :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections ()] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } ; (@ definitions ; $ ($ module_name : ident) ? ; $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) +) => { # [allow (warnings)] enum Fields { book } # [allow (warnings)] impl Fields { fn selections () { $ (let _ = Fields :: $ field ;) + } } # [allow (warnings)] # [derive (std :: fmt :: Debug , Clone)] pub struct Data { pub id : i32 , pub book_id : i32 , pub title : String , pub text : String , pub file : Option < String > , $ (pub $ field : crate :: prisma :: book_annotation :: include ! (@ field_type ; $ field $ (: $ selection_mode { $ ($ selections) + }) ?) ,) + } impl :: serde :: Serialize for Data { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : :: serde :: Serializer , { use :: serde :: ser :: SerializeStruct ; let mut state = serializer . serialize_struct ("Data" , [$ (stringify ! ($ field) ,) + stringify ! (id) , stringify ! (book_id) , stringify ! (title) , stringify ! (text) , stringify ! (file)] . len ()) ? ; $ (state . serialize_field (crate :: prisma :: book_annotation :: $ field :: NAME , & self . $ field) ? ;) * state . serialize_field (crate :: prisma :: book_annotation :: id :: NAME , & self . id) ? ; state . serialize_field (crate :: prisma :: book_annotation :: book_id :: NAME , & self . book_id) ? ; state . serialize_field (crate :: prisma :: book_annotation :: title :: NAME , & self . title) ? ; state . serialize_field (crate :: prisma :: book_annotation :: text :: NAME , & self . text) ? ; state . serialize_field (crate :: prisma :: book_annotation :: file :: NAME , & self . file) ? ; state . end () } } impl < 'de > :: serde :: Deserialize < 'de > for Data { fn deserialize < D > (deserializer : D) -> Result < Self , D :: Error > where D : :: serde :: Deserializer < 'de > , { # [allow (warnings)] enum Field { $ ($ field) , + , id , book_id , title , text , file } impl < 'de > :: serde :: Deserialize < 'de > for Field { fn deserialize < D > (deserializer : D) -> Result < Field , D :: Error > where D : :: serde :: Deserializer < 'de > , { struct FieldVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for FieldVisitor { type Value = Field ; fn expecting (& self , formatter : & mut :: std :: fmt :: Formatter) -> :: std :: fmt :: Result { formatter . write_str (& [$ (crate :: prisma :: book_annotation :: $ field :: NAME) , + , crate :: prisma :: book_annotation :: id :: NAME , crate :: prisma :: book_annotation :: book_id :: NAME , crate :: prisma :: book_annotation :: title :: NAME , crate :: prisma :: book_annotation :: text :: NAME , crate :: prisma :: book_annotation :: file :: NAME] . into_iter () . collect :: < Vec < _ >> () . join (", ")) } fn visit_str < E > (self , value : & str) -> Result < Field , E > where E : :: serde :: de :: Error , { match value { $ (crate :: prisma :: book_annotation :: $ field :: NAME => Ok (Field :: $ field)) , * , crate :: prisma :: book_annotation :: id :: NAME => Ok (Field :: id) , crate :: prisma :: book_annotation :: book_id :: NAME => Ok (Field :: book_id) , crate :: prisma :: book_annotation :: title :: NAME => Ok (Field :: title) , crate :: prisma :: book_annotation :: text :: NAME => Ok (Field :: text) , crate :: prisma :: book_annotation :: file :: NAME => Ok (Field :: file) , _ => Err (:: serde :: de :: Error :: unknown_field (value , FIELDS)) , } } } deserializer . deserialize_identifier (FieldVisitor) } } struct DataVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for DataVisitor { type Value = Data ; fn expecting (& self , formatter : & mut std :: fmt :: Formatter) -> std :: fmt :: Result { formatter . write_str ("struct Data") } fn visit_map < V > (self , mut map : V) -> Result < Data , V :: Error > where V : :: serde :: de :: MapAccess < 'de > , { $ (let mut $ field = None ;) * let mut id = None ; let mut book_id = None ; let mut title = None ; let mut text = None ; let mut file = None ; while let Some (key) = map . next_key () ? { match key { Field :: id => { if id . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: book_annotation :: id :: NAME)) ; } id = Some (map . next_value () ?) ; } Field :: book_id => { if book_id . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: book_annotation :: book_id :: NAME)) ; } book_id = Some (map . next_value () ?) ; } Field :: title => { if title . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: book_annotation :: title :: NAME)) ; } title = Some (map . next_value () ?) ; } Field :: text => { if text . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: book_annotation :: text :: NAME)) ; } text = Some (map . next_value () ?) ; } Field :: file => { if file . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: book_annotation :: file :: NAME)) ; } file = Some (map . next_value () ?) ; } $ (Field :: $ field => { if $ field . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: book_annotation :: $ field :: NAME)) ; } $ field = Some (map . next_value () ?) ; }) * } } $ (let $ field = $ field . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: book_annotation :: $ field :: NAME)) ? ;) * let id = id . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: book_annotation :: id :: NAME)) ? ; let book_id = book_id . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: book_annotation :: book_id :: NAME)) ? ; let title = title . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: book_annotation :: title :: NAME)) ? ; let text = text . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: book_annotation :: text :: NAME)) ? ; let file = file . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: book_annotation :: file :: NAME)) ? ; Ok (Data { id , book_id , title , text , file , $ ($ field) , * }) } } const FIELDS : & 'static [& 'static str] = & ["id" , "book_id" , "title" , "text" , "file" , "book"] ; deserializer . deserialize_struct ("Data" , FIELDS , DataVisitor) } } $ ($ (pub mod $ field { crate :: prisma :: book_annotation :: $ selection_mode ! (@ field_module ; $ field : $ selection_mode { $ ($ selections) + }) ; }) ?) + } ; (@ field_type ; book : $ selection_mode : ident { $ ($ selections : tt) + }) => { book :: Data } ; (@ field_type ; book) => { crate :: prisma :: book :: Data } ; (@ field_type ; $ field : ident $ ($ tokens : tt) *) => { compile_error ! (stringify ! (Cannot include nonexistent relation $ field on model "BookAnnotation" , available relations are "book")) } ; (@ field_module ; book : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: book :: include ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; $ ($ tokens : tt) *) => { } ; (@ selection_field_to_selection_param ; book $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: book_annotation :: IncludeParam > :: into (crate :: prisma :: book_annotation :: book :: Include :: $ selection_mode (crate :: prisma :: book :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; book $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: book_annotation :: IncludeParam > :: into (crate :: prisma :: book_annotation :: book :: Include :: Fetch) } } ; (@ selection_field_to_selection_param ; $ ($ tokens : tt) *) => { compile_error ! (stringify ! ($ ($ tokens) *)) } ; (@ selections_to_params ; : $ macro_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { [$ (crate :: prisma :: book_annotation :: $ macro_name ! (@ selection_field_to_selection_param ; $ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) ,) +] } ; (@ filters_to_args ;) => { vec ! [] } ; (@ filters_to_args ; $ ($ t : tt) *) => { $ ($ t) * } ; (@ field_serde_name ; id) => { "id" } ; (@ field_serde_name ; book_id) => { "book_id" } ; (@ field_serde_name ; title) => { "title" } ; (@ field_serde_name ; text) => { "text" } ; (@ field_serde_name ; file) => { "file" } ; (@ field_serde_name ; book) => { "book" } ; } + pub use _include_book_annotation as include; + pub enum IncludeParam { + Id(id::Include), + BookId(book_id::Include), + Title(title::Include), + Text(text::Include), + File(file::Include), + Book(book::Include), + } + impl IncludeParam { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + match self { + Self::Id(data) => data.to_selection(), + Self::BookId(data) => data.to_selection(), + Self::Title(data) => data.to_selection(), + Self::Text(data) => data.to_selection(), + Self::File(data) => data.to_selection(), + Self::Book(data) => data.to_selection(), + } + } + } + #[macro_export] + macro_rules ! _partial_unchecked_book_annotation { ($ struct_name : ident { $ ($ scalar_field : ident) + }) => { :: prisma_client_rust :: macros :: partial_unchecked ! { $crate :: prisma :: book_annotation struct $ struct_name { # [serde (rename = "id")] pub id : i32 , # [serde (rename = "book_id")] pub book_id : i32 , # [serde (rename = "title")] pub title : String , # [serde (rename = "text")] pub text : String , # [serde (rename = "file")] # [serde (default , with = "::prisma_client_rust::serde::double_option")] pub file : Option < String > } [$ ($ scalar_field) , +] } } ; } + pub use _partial_unchecked_book_annotation as partial_unchecked; + #[derive(Debug, Clone, :: serde :: Serialize, :: serde :: Deserialize)] + pub struct Data { + #[serde(rename = "id")] + pub id: i32, + #[serde(rename = "book_id")] + pub book_id: i32, + #[serde(rename = "title")] + pub title: String, + #[serde(rename = "text")] + pub text: String, + #[serde(rename = "file")] + pub file: Option, + #[serde(rename = "book")] + pub book: Option>, + } + impl Data { + pub fn book( + &self, + ) -> Result<&super::book::Data, ::prisma_client_rust::RelationNotFetchedError> { + self.book + .as_ref() + .ok_or(::prisma_client_rust::RelationNotFetchedError::new( + stringify!(book), + )) + .map(|v| v.as_ref()) + } + } + #[derive(Clone)] + pub enum WithParam { + Book(super::book::UniqueArgs), + } + impl From for ::prisma_client_rust::Selection { + fn from(val: WithParam) -> Self { + match val { + WithParam::Book(args) => { + let mut selections = + ::scalar_selections( + ); + selections.extend( + args.with_params + .into_iter() + .map(Into::<::prisma_client_rust::Selection>::into), + ); + ::prisma_client_rust::Selection::new(book::NAME, None, [], selections) + } + } + } + } + #[derive(Clone)] + pub enum SetParam { + SetId(i32), + IncrementId(i32), + DecrementId(i32), + MultiplyId(i32), + DivideId(i32), + SetBookId(i32), + IncrementBookId(i32), + DecrementBookId(i32), + MultiplyBookId(i32), + DivideBookId(i32), + SetTitle(String), + SetText(String), + SetFile(Option), + ConnectBook(super::book::UniqueWhereParam), + } + impl From for (String, ::prisma_client_rust::PrismaValue) { + fn from(param: SetParam) -> Self { + match param { + SetParam::SetId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + ), + SetParam::IncrementId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "increment".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DecrementId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "decrement".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::MultiplyId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "multiply".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DivideId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "divide".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::SetBookId(value) => ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + ), + SetParam::IncrementBookId(value) => ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "increment".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DecrementBookId(value) => ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "decrement".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::MultiplyBookId(value) => ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "multiply".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DivideBookId(value) => ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "divide".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::SetTitle(value) => ( + title::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(value), + ), + SetParam::SetText(value) => ( + text::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(value), + ), + SetParam::SetFile(value) => ( + file::NAME.to_string(), + value + .map(::prisma_client_rust::PrismaValue::String) + .unwrap_or_else(|| ::prisma_client_rust::PrismaValue::Null), + ), + SetParam::ConnectBook(where_param) => ( + book::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "connect".to_string(), + ::prisma_client_rust::PrismaValue::Object( + [where_param] + .into_iter() + .map(Into::::into) + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + } + } + } + #[derive(Clone)] + pub enum UncheckedSetParam { + Id(i32), + BookId(i32), + Title(String), + Text(String), + File(Option), + } + impl From for SetParam { + fn from(param: UncheckedSetParam) -> Self { + match param { + UncheckedSetParam::Id(value) => Self::SetId(value), + UncheckedSetParam::BookId(value) => Self::SetBookId(value), + UncheckedSetParam::Title(value) => Self::SetTitle(value), + UncheckedSetParam::Text(value) => Self::SetText(value), + UncheckedSetParam::File(value) => Self::SetFile(value), + } + } + } + #[derive(Clone)] + pub enum OrderByParam { + Id(::prisma_client_rust::Direction), + BookId(::prisma_client_rust::Direction), + Title(::prisma_client_rust::Direction), + Text(::prisma_client_rust::Direction), + File(::prisma_client_rust::Direction), + } + impl From for (String, ::prisma_client_rust::PrismaValue) { + fn from(val: OrderByParam) -> Self { + match val { + OrderByParam::Id(direction) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + OrderByParam::BookId(direction) => ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + OrderByParam::Title(direction) => ( + title::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + OrderByParam::Text(direction) => ( + text::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + OrderByParam::File(direction) => ( + file::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + } + } + } + #[derive(Clone)] + pub enum WhereParam { + Not(Vec), + Or(Vec), + And(Vec), + Id(_prisma::read_filters::IntFilter), + BookId(_prisma::read_filters::IntFilter), + Title(_prisma::read_filters::StringFilter), + Text(_prisma::read_filters::StringFilter), + File(_prisma::read_filters::StringNullableFilter), + BookIs(Vec), + BookIsNot(Vec), + } + impl ::prisma_client_rust::WhereInput for WhereParam { + fn serialize(self) -> ::prisma_client_rust::SerializedWhereInput { + let (name, value) = match self { + Self::Not(value) => ( + "NOT", + ::prisma_client_rust::SerializedWhereValue::Object( + ::prisma_client_rust::merge_fields( + value + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(Into::into) + .collect(), + ), + ), + ), + Self::Or(value) => ( + "OR", + ::prisma_client_rust::SerializedWhereValue::List( + value + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(Into::into) + .map(|v| vec![v]) + .map(::prisma_client_rust::PrismaValue::Object) + .collect(), + ), + ), + Self::And(value) => ( + "AND", + ::prisma_client_rust::SerializedWhereValue::Object( + ::prisma_client_rust::merge_fields( + value + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(Into::into) + .collect(), + ), + ), + ), + Self::Id(value) => (id::NAME, value.into()), + Self::BookId(value) => (book_id::NAME, value.into()), + Self::Title(value) => (title::NAME, value.into()), + Self::Text(value) => (text::NAME, value.into()), + Self::File(value) => (file::NAME, value.into()), + Self::BookIs(where_params) => ( + book::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "is".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + Self::BookIsNot(where_params) => ( + book::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "isNot".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + }; + ::prisma_client_rust::SerializedWhereInput::new(name, value) + } + } + #[derive(Clone)] + pub enum UniqueWhereParam { + BookIdEquals(i32), + IdEquals(i32), + } + impl From for WhereParam { + fn from(value: UniqueWhereParam) -> Self { + match value { + UniqueWhereParam::BookIdEquals(value) => { + Self::BookId(_prisma::read_filters::IntFilter::Equals(value)) + } + UniqueWhereParam::IdEquals(value) => { + Self::Id(_prisma::read_filters::IntFilter::Equals(value)) + } + } + } + } + impl From<::prisma_client_rust::Operator> for WhereParam { + fn from(op: ::prisma_client_rust::Operator) -> Self { + match op { + ::prisma_client_rust::Operator::Not(value) => Self::Not(value), + ::prisma_client_rust::Operator::And(value) => Self::And(value), + ::prisma_client_rust::Operator::Or(value) => Self::Or(value), + } + } + } + #[derive(Clone)] + pub struct Types; + impl ::prisma_client_rust::ModelTypes for Types { + type Data = Data; + type Where = WhereParam; + type UncheckedSet = UncheckedSetParam; + type Set = SetParam; + type With = WithParam; + type OrderBy = OrderByParam; + type Cursor = UniqueWhereParam; + const MODEL: &'static str = NAME; + fn scalar_selections() -> Vec<::prisma_client_rust::Selection> { + vec![ + ::prisma_client_rust::sel(id::NAME), + ::prisma_client_rust::sel(book_id::NAME), + ::prisma_client_rust::sel(title::NAME), + ::prisma_client_rust::sel(text::NAME), + ::prisma_client_rust::sel(file::NAME), + ] + } + } + pub type UniqueArgs = ::prisma_client_rust::UniqueArgs; + pub type ManyArgs = ::prisma_client_rust::ManyArgs; + pub type Count<'a> = ::prisma_client_rust::Count<'a, Types>; + pub type Create<'a> = ::prisma_client_rust::Create<'a, Types>; + pub type CreateMany<'a> = ::prisma_client_rust::CreateMany<'a, Types>; + pub type FindUnique<'a> = ::prisma_client_rust::FindUnique<'a, Types>; + pub type FindMany<'a> = ::prisma_client_rust::FindMany<'a, Types>; + pub type FindFirst<'a> = ::prisma_client_rust::FindFirst<'a, Types>; + pub type Update<'a> = ::prisma_client_rust::Update<'a, Types>; + pub type UpdateMany<'a> = ::prisma_client_rust::UpdateMany<'a, Types>; + pub type Upsert<'a> = ::prisma_client_rust::Upsert<'a, Types>; + pub type Delete<'a> = ::prisma_client_rust::Delete<'a, Types>; + pub type DeleteMany<'a> = ::prisma_client_rust::DeleteMany<'a, Types>; + #[derive(Clone)] + pub struct Actions<'a> { + pub client: &'a ::prisma_client_rust::PrismaClientInternals, + } + impl<'a> Actions<'a> { + pub fn find_unique(self, _where: UniqueWhereParam) -> FindUnique<'a> { + FindUnique::new(self.client, _where.into()) + } + pub fn find_first(self, _where: Vec) -> FindFirst<'a> { + FindFirst::new(self.client, _where) + } + pub fn find_many(self, _where: Vec) -> FindMany<'a> { + FindMany::new(self.client, _where) + } + pub fn create( + self, + title: String, + text: String, + book: super::book::UniqueWhereParam, + mut _params: Vec, + ) -> Create<'a> { + _params.extend([title::set(title), text::set(text), book::connect(book)]); + Create::new(self.client, _params) + } + pub fn create_unchecked( + self, + book_id: i32, + title: String, + text: String, + mut _params: Vec, + ) -> Create<'a> { + _params.extend([book_id::set(book_id), title::set(title), text::set(text)]); + Create::new(self.client, _params.into_iter().map(Into::into).collect()) + } + pub fn create_many( + self, + data: Vec<(i32, String, String, Vec)>, + ) -> CreateMany<'a> { + let data = data + .into_iter() + .map(|(book_id, title, text, mut _params)| { + _params.extend([book_id::set(book_id), title::set(title), text::set(text)]); + _params + }) + .collect(); + CreateMany::new(self.client, data) + } + pub fn update(self, _where: UniqueWhereParam, _params: Vec) -> Update<'a> { + Update::new(self.client, _where.into(), _params, vec![]) + } + pub fn update_unchecked( + self, + _where: UniqueWhereParam, + _params: Vec, + ) -> Update<'a> { + Update::new( + self.client, + _where.into(), + _params.into_iter().map(Into::into).collect(), + vec![], + ) + } + pub fn update_many( + self, + _where: Vec, + _params: Vec, + ) -> UpdateMany<'a> { + UpdateMany::new(self.client, _where, _params) + } + pub fn upsert( + self, + _where: UniqueWhereParam, + (title, text, book, mut _params): ( + String, + String, + super::book::UniqueWhereParam, + Vec, + ), + _update: Vec, + ) -> Upsert<'a> { + _params.extend([title::set(title), text::set(text), book::connect(book)]); + Upsert::new(self.client, _where.into(), _params, _update) + } + pub fn delete(self, _where: UniqueWhereParam) -> Delete<'a> { + Delete::new(self.client, _where.into(), vec![]) + } + pub fn delete_many(self, _where: Vec) -> DeleteMany<'a> { + DeleteMany::new(self.client, _where) + } + pub fn count(self, _where: Vec) -> Count<'a> { + Count::new(self.client, _where) + } + pub fn find_raw( + self, + ) -> ::prisma_client_rust::FindRaw<'a, Types, T> { + ::prisma_client_rust::FindRaw::new(self.client) + } + pub fn aggregate_raw( + self, + ) -> ::prisma_client_rust::AggregateRaw<'a, Types, T> { + ::prisma_client_rust::AggregateRaw::new(self.client) + } + } +} +pub mod book_author { + + use super::*; + pub const NAME: &str = "BookAuthor"; + pub mod id { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, UniqueWhereParam, WhereParam, + }; + pub const NAME: &str = "id"; + pub struct Set(pub i32); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetId(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::Id(v) + } + } + pub fn set>(value: i32) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::Id(direction) + } + pub fn equals>(value: i32) -> T { + UniqueWhereParam::IdEquals(value).into() + } + ::prisma_client_rust::scalar_where_param_fns!(_prisma::read_filters::IntFilter, Id, { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: i32) -> Lt; + fn lte(_: i32) -> Lte; + fn gt(_: i32) -> Gt; + fn gte(_: i32) -> Gte; + fn not(_: i32) -> Not; + }); + pub fn increment(value: i32) -> SetParam { + SetParam::IncrementId(value) + } + pub fn decrement(value: i32) -> SetParam { + SetParam::DecrementId(value) + } + pub fn multiply(value: i32) -> SetParam { + SetParam::MultiplyId(value) + } + pub fn divide(value: i32) -> SetParam { + SetParam::DivideId(value) + } + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Id(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::AuthorId(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod book_id { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "book_id"; + pub struct Set(pub i32); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetBookId(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::BookId(v) + } + } + pub fn set>(value: i32) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::BookId(direction) + } + pub fn equals(value: i32) -> WhereParam { + WhereParam::BookId(_prisma::read_filters::IntFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!(_prisma::read_filters::IntFilter, BookId, { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: i32) -> Lt; + fn lte(_: i32) -> Lte; + fn gt(_: i32) -> Gt; + fn gte(_: i32) -> Gte; + fn not(_: i32) -> Not; + }); + pub fn increment(value: i32) -> SetParam { + SetParam::IncrementBookId(value) + } + pub fn decrement(value: i32) -> SetParam { + SetParam::DecrementBookId(value) + } + pub fn multiply(value: i32) -> SetParam { + SetParam::MultiplyBookId(value) + } + pub fn divide(value: i32) -> SetParam { + SetParam::DivideBookId(value) + } + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::BookId(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Author(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let selections = match self { + Self::Select(selections) => { + selections.into_iter().map(|s| s.to_selection()).collect() + } + Self::Include(selections) => { + let mut nested_selections = vec![]; + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + } + Self::Fetch => { + ::scalar_selections() + } + }; + ::prisma_client_rust::Selection::new("author", None, [], selections) + } + pub fn select(nested_selections: Vec) -> Self { + Self::Select(nested_selections) + } + pub fn include(nested_selections: Vec) -> Self { + Self::Include(nested_selections) + } + } + } + pub mod book { + use super::super::*; + + use super::{ + SetParam, WhereParam, WithParam, + }; + pub const NAME: &str = "book"; + pub struct Fetch(pub book::UniqueArgs); + impl Fetch { + pub fn with(mut self, params: impl Into) -> Self { + self.0 = self.0.with(params.into()); + self + } + } + impl From for WithParam { + fn from(Fetch(v): Fetch) -> Self { + WithParam::Book(v) + } + } + pub fn fetch() -> Fetch { + Fetch(book::UniqueArgs::new()) + } + pub struct Connect(book::UniqueWhereParam); + impl From for SetParam { + fn from(Connect(v): Connect) -> Self { + Self::ConnectBook(v) + } + } + pub fn connect>(value: book::UniqueWhereParam) -> T { + Connect(value).into() + } + pub fn is(value: Vec) -> WhereParam { + WhereParam::BookIs(value) + } + pub fn is_not(value: Vec) -> WhereParam { + WhereParam::BookIsNot(value) + } + pub enum Include { + Select(Vec), + Include(Vec), + Fetch, + } + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Book(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let selections = match self { + Self::Select(selections) => { + selections.into_iter().map(|s| s.to_selection()).collect() + } + Self::Include(selections) => { + let mut nested_selections = + ::scalar_selections(); + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + } + Self::Fetch => { + ::scalar_selections() + } + }; + ::prisma_client_rust::Selection::new("book", None, [], selections) + } + pub fn select(nested_selections: Vec) -> Self { + Self::Select(nested_selections) + } + pub fn include(nested_selections: Vec) -> Self { + Self::Include(nested_selections) + } + } + pub enum Select { + Select(Vec), + Include(Vec), + Fetch, + } + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Id(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod genre_id { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "genre_id"; + pub struct Set(pub i32); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetGenreId(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::GenreId(v) + } + } + pub fn set>(value: i32) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::GenreId(direction) + } + pub fn equals(value: i32) -> WhereParam { + WhereParam::GenreId(_prisma::read_filters::IntFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!(_prisma::read_filters::IntFilter, GenreId, { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: i32) -> Lt; + fn lte(_: i32) -> Lte; + fn gt(_: i32) -> Gt; + fn gte(_: i32) -> Gte; + fn not(_: i32) -> Not; + }); + pub fn increment(value: i32) -> SetParam { + SetParam::IncrementGenreId(value) + } + pub fn decrement(value: i32) -> SetParam { + SetParam::DecrementGenreId(value) + } + pub fn multiply(value: i32) -> SetParam { + SetParam::MultiplyGenreId(value) + } + pub fn divide(value: i32) -> SetParam { + SetParam::DivideGenreId(value) + } + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::GenreId(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::BookId(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod book { + use super::super::*; + + use super::{ + SetParam, WhereParam, WithParam, + }; + pub const NAME: &str = "book"; + pub struct Fetch(pub book::UniqueArgs); + impl Fetch { + pub fn with(mut self, params: impl Into) -> Self { + self.0 = self.0.with(params.into()); + self + } + } + impl From for WithParam { + fn from(Fetch(v): Fetch) -> Self { + WithParam::Book(v) + } + } + pub fn fetch() -> Fetch { + Fetch(book::UniqueArgs::new()) + } + pub struct Connect(book::UniqueWhereParam); + impl From for SetParam { + fn from(Connect(v): Connect) -> Self { + Self::ConnectBook(v) + } + } + pub fn connect>(value: book::UniqueWhereParam) -> T { + Connect(value).into() + } + pub fn is(value: Vec) -> WhereParam { + WhereParam::BookIs(value) + } + pub fn is_not(value: Vec) -> WhereParam { + WhereParam::BookIsNot(value) + } + pub enum Include { + Select(Vec), + Include(Vec), + Fetch, + } + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Book(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let selections = match self { + Self::Select(selections) => { + selections.into_iter().map(|s| s.to_selection()).collect() + } + Self::Include(selections) => { + let mut nested_selections = + ::scalar_selections(); + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + } + Self::Fetch => { + ::scalar_selections() + } + }; + ::prisma_client_rust::Selection::new("book", None, [], selections) + } + pub fn select(nested_selections: Vec) -> Self { + Self::Select(nested_selections) + } + pub fn include(nested_selections: Vec) -> Self { + Self::Include(nested_selections) + } + } + pub enum Select { + Select(Vec), + Include(Vec), + Fetch, + } + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Genre(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let selections = match self { + Self::Select(selections) => { + selections.into_iter().map(|s| s.to_selection()).collect() + } + Self::Include(selections) => { + let mut nested_selections = vec![]; + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + } + Self::Fetch => { + ::scalar_selections() + } + }; + ::prisma_client_rust::Selection::new("genre", None, [], selections) + } + pub fn select(nested_selections: Vec) -> Self { + Self::Select(nested_selections) + } + pub fn include(nested_selections: Vec) -> Self { + Self::Include(nested_selections) + } + } + } + pub fn book_id_genre_id>(book_id: i32, genre_id: i32) -> T { + UniqueWhereParam::BookIdGenreIdEquals(book_id, genre_id).into() + } + pub fn create( + book: super::book::UniqueWhereParam, + genre: super::genre::UniqueWhereParam, + _params: Vec, + ) -> ( + super::book::UniqueWhereParam, + super::genre::UniqueWhereParam, + Vec, + ) { + (book, genre, _params) + } + pub fn create_unchecked( + genre_id: i32, + book_id: i32, + _params: Vec, + ) -> (i32, i32, Vec) { + (genre_id, book_id, _params) + } + #[macro_export] + macro_rules ! _select_book_genre { ($ (($ ($ func_arg : ident : $ func_arg_ty : ty) , +) =>) ? $ module_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { # [allow (warnings)] pub mod $ module_name { $crate :: prisma :: book_genre :: select ! (@ definitions ; $ module_name ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; use super :: * ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: SelectType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: book_genre :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } pub fn select ($ ($ ($ func_arg : $ func_arg_ty) , +) ?) -> Selection { Selection ([$crate :: prisma :: book_genre :: select ! (@ selections_to_params ; : select { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () ,] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } } ; ({ $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { { $crate :: prisma :: book_genre :: select ! (@ definitions ; ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: SelectType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: book_genre :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } Selection ([$crate :: prisma :: book_genre :: select ! (@ selections_to_params ; : select { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () ,] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } ; (@ definitions ; $ ($ module_name : ident) ? ; $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) +) => { # [allow (warnings)] enum Fields { id , genre_id , book_id , book , genre } # [allow (warnings)] impl Fields { fn selections () { $ (let _ = Fields :: $ field ;) + } } # [allow (warnings)] # [derive (std :: fmt :: Debug , Clone)] pub struct Data { $ (pub $ field : crate :: prisma :: book_genre :: select ! (@ field_type ; $ field $ (: $ selection_mode { $ ($ selections) + }) ?) ,) + } impl :: serde :: Serialize for Data { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : :: serde :: Serializer , { use :: serde :: ser :: SerializeStruct ; let mut state = serializer . serialize_struct ("Data" , [$ (stringify ! ($ field) ,) +] . len ()) ? ; $ (state . serialize_field (crate :: prisma :: book_genre :: $ field :: NAME , & self . $ field) ? ;) * state . end () } } impl < 'de > :: serde :: Deserialize < 'de > for Data { fn deserialize < D > (deserializer : D) -> Result < Self , D :: Error > where D : :: serde :: Deserializer < 'de > , { # [allow (warnings)] enum Field { $ ($ field) , + , } impl < 'de > :: serde :: Deserialize < 'de > for Field { fn deserialize < D > (deserializer : D) -> Result < Field , D :: Error > where D : :: serde :: Deserializer < 'de > , { struct FieldVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for FieldVisitor { type Value = Field ; fn expecting (& self , formatter : & mut :: std :: fmt :: Formatter) -> :: std :: fmt :: Result { formatter . write_str (& [$ (crate :: prisma :: book_genre :: $ field :: NAME) , + ,] . into_iter () . collect :: < Vec < _ >> () . join (", ")) } fn visit_str < E > (self , value : & str) -> Result < Field , E > where E : :: serde :: de :: Error , { match value { $ (crate :: prisma :: book_genre :: $ field :: NAME => Ok (Field :: $ field)) , * , _ => Err (:: serde :: de :: Error :: unknown_field (value , FIELDS)) , } } } deserializer . deserialize_identifier (FieldVisitor) } } struct DataVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for DataVisitor { type Value = Data ; fn expecting (& self , formatter : & mut std :: fmt :: Formatter) -> std :: fmt :: Result { formatter . write_str ("struct Data") } fn visit_map < V > (self , mut map : V) -> Result < Data , V :: Error > where V : :: serde :: de :: MapAccess < 'de > , { $ (let mut $ field = None ;) * while let Some (key) = map . next_key () ? { match key { $ (Field :: $ field => { if $ field . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: book_genre :: $ field :: NAME)) ; } $ field = Some (map . next_value () ?) ; }) * } } $ (let $ field = $ field . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: book_genre :: $ field :: NAME)) ? ;) * Ok (Data { $ ($ field) , * }) } } const FIELDS : & 'static [& 'static str] = & ["id" , "genre_id" , "book_id" , "book" , "genre"] ; deserializer . deserialize_struct ("Data" , FIELDS , DataVisitor) } } $ ($ (pub mod $ field { crate :: prisma :: book_genre :: $ selection_mode ! (@ field_module ; $ field : $ selection_mode { $ ($ selections) + }) ; }) ?) + } ; (@ field_type ; id) => { i32 } ; (@ field_type ; genre_id) => { i32 } ; (@ field_type ; book_id) => { i32 } ; (@ field_type ; book : $ selection_mode : ident { $ ($ selections : tt) + }) => { book :: Data } ; (@ field_type ; book) => { crate :: prisma :: book :: Data } ; (@ field_type ; genre : $ selection_mode : ident { $ ($ selections : tt) + }) => { genre :: Data } ; (@ field_type ; genre) => { crate :: prisma :: genre :: Data } ; (@ field_type ; $ field : ident $ ($ tokens : tt) *) => { compile_error ! (stringify ! (Cannot include nonexistent relation $ field on model "BookGenre" , available relations are "id, genre_id, book_id, book, genre")) } ; (@ field_module ; book : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: book :: select ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; genre : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: genre :: select ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; $ ($ tokens : tt) *) => { } ; (@ selection_field_to_selection_param ; id) => { Into :: < crate :: prisma :: book_genre :: SelectParam > :: into (crate :: prisma :: book_genre :: id :: Select) } ; (@ selection_field_to_selection_param ; genre_id) => { Into :: < crate :: prisma :: book_genre :: SelectParam > :: into (crate :: prisma :: book_genre :: genre_id :: Select) } ; (@ selection_field_to_selection_param ; book_id) => { Into :: < crate :: prisma :: book_genre :: SelectParam > :: into (crate :: prisma :: book_genre :: book_id :: Select) } ; (@ selection_field_to_selection_param ; book $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: book_genre :: SelectParam > :: into (crate :: prisma :: book_genre :: book :: Select :: $ selection_mode (crate :: prisma :: book :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; book $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: book_genre :: SelectParam > :: into (crate :: prisma :: book_genre :: book :: Select :: Fetch) } } ; (@ selection_field_to_selection_param ; genre $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: book_genre :: SelectParam > :: into (crate :: prisma :: book_genre :: genre :: Select :: $ selection_mode (crate :: prisma :: genre :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; genre $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: book_genre :: SelectParam > :: into (crate :: prisma :: book_genre :: genre :: Select :: Fetch) } } ; (@ selection_field_to_selection_param ; $ ($ tokens : tt) *) => { compile_error ! (stringify ! ($ ($ tokens) *)) } ; (@ selections_to_params ; : $ macro_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { [$ (crate :: prisma :: book_genre :: $ macro_name ! (@ selection_field_to_selection_param ; $ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) ,) +] } ; (@ filters_to_args ;) => { vec ! [] } ; (@ filters_to_args ; $ ($ t : tt) *) => { $ ($ t) * } ; (@ field_serde_name ; id) => { "id" } ; (@ field_serde_name ; genre_id) => { "genre_id" } ; (@ field_serde_name ; book_id) => { "book_id" } ; (@ field_serde_name ; book) => { "book" } ; (@ field_serde_name ; genre) => { "genre" } ; } + pub use _select_book_genre as select; + pub enum SelectParam { + Id(id::Select), + GenreId(genre_id::Select), + BookId(book_id::Select), + Book(book::Select), + Genre(genre::Select), + } + impl SelectParam { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + match self { + Self::Id(data) => data.to_selection(), + Self::GenreId(data) => data.to_selection(), + Self::BookId(data) => data.to_selection(), + Self::Book(data) => data.to_selection(), + Self::Genre(data) => data.to_selection(), + } + } + } + #[macro_export] + macro_rules ! _include_book_genre { ($ (($ ($ func_arg : ident : $ func_arg_ty : ty) , +) =>) ? $ module_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { # [allow (warnings)] pub mod $ module_name { $crate :: prisma :: book_genre :: include ! (@ definitions ; $ module_name ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; use super :: * ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: IncludeType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: book_genre :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } pub fn include ($ ($ ($ func_arg : $ func_arg_ty) , +) ?) -> Selection { Selection ([$crate :: prisma :: book_genre :: include ! (@ selections_to_params ; : include { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () , < $crate :: prisma :: book_genre :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections ()] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } } ; ({ $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { { $crate :: prisma :: book_genre :: include ! (@ definitions ; ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: IncludeType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: book_genre :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } Selection ([crate :: prisma :: book_genre :: include ! (@ selections_to_params ; : include { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () , < crate :: prisma :: book_genre :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections ()] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } ; (@ definitions ; $ ($ module_name : ident) ? ; $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) +) => { # [allow (warnings)] enum Fields { book , genre } # [allow (warnings)] impl Fields { fn selections () { $ (let _ = Fields :: $ field ;) + } } # [allow (warnings)] # [derive (std :: fmt :: Debug , Clone)] pub struct Data { pub id : i32 , pub genre_id : i32 , pub book_id : i32 , $ (pub $ field : crate :: prisma :: book_genre :: include ! (@ field_type ; $ field $ (: $ selection_mode { $ ($ selections) + }) ?) ,) + } impl :: serde :: Serialize for Data { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : :: serde :: Serializer , { use :: serde :: ser :: SerializeStruct ; let mut state = serializer . serialize_struct ("Data" , [$ (stringify ! ($ field) ,) + stringify ! (id) , stringify ! (genre_id) , stringify ! (book_id)] . len ()) ? ; $ (state . serialize_field (crate :: prisma :: book_genre :: $ field :: NAME , & self . $ field) ? ;) * state . serialize_field (crate :: prisma :: book_genre :: id :: NAME , & self . id) ? ; state . serialize_field (crate :: prisma :: book_genre :: genre_id :: NAME , & self . genre_id) ? ; state . serialize_field (crate :: prisma :: book_genre :: book_id :: NAME , & self . book_id) ? ; state . end () } } impl < 'de > :: serde :: Deserialize < 'de > for Data { fn deserialize < D > (deserializer : D) -> Result < Self , D :: Error > where D : :: serde :: Deserializer < 'de > , { # [allow (warnings)] enum Field { $ ($ field) , + , id , genre_id , book_id } impl < 'de > :: serde :: Deserialize < 'de > for Field { fn deserialize < D > (deserializer : D) -> Result < Field , D :: Error > where D : :: serde :: Deserializer < 'de > , { struct FieldVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for FieldVisitor { type Value = Field ; fn expecting (& self , formatter : & mut :: std :: fmt :: Formatter) -> :: std :: fmt :: Result { formatter . write_str (& [$ (crate :: prisma :: book_genre :: $ field :: NAME) , + , crate :: prisma :: book_genre :: id :: NAME , crate :: prisma :: book_genre :: genre_id :: NAME , crate :: prisma :: book_genre :: book_id :: NAME] . into_iter () . collect :: < Vec < _ >> () . join (", ")) } fn visit_str < E > (self , value : & str) -> Result < Field , E > where E : :: serde :: de :: Error , { match value { $ (crate :: prisma :: book_genre :: $ field :: NAME => Ok (Field :: $ field)) , * , crate :: prisma :: book_genre :: id :: NAME => Ok (Field :: id) , crate :: prisma :: book_genre :: genre_id :: NAME => Ok (Field :: genre_id) , crate :: prisma :: book_genre :: book_id :: NAME => Ok (Field :: book_id) , _ => Err (:: serde :: de :: Error :: unknown_field (value , FIELDS)) , } } } deserializer . deserialize_identifier (FieldVisitor) } } struct DataVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for DataVisitor { type Value = Data ; fn expecting (& self , formatter : & mut std :: fmt :: Formatter) -> std :: fmt :: Result { formatter . write_str ("struct Data") } fn visit_map < V > (self , mut map : V) -> Result < Data , V :: Error > where V : :: serde :: de :: MapAccess < 'de > , { $ (let mut $ field = None ;) * let mut id = None ; let mut genre_id = None ; let mut book_id = None ; while let Some (key) = map . next_key () ? { match key { Field :: id => { if id . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: book_genre :: id :: NAME)) ; } id = Some (map . next_value () ?) ; } Field :: genre_id => { if genre_id . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: book_genre :: genre_id :: NAME)) ; } genre_id = Some (map . next_value () ?) ; } Field :: book_id => { if book_id . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: book_genre :: book_id :: NAME)) ; } book_id = Some (map . next_value () ?) ; } $ (Field :: $ field => { if $ field . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: book_genre :: $ field :: NAME)) ; } $ field = Some (map . next_value () ?) ; }) * } } $ (let $ field = $ field . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: book_genre :: $ field :: NAME)) ? ;) * let id = id . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: book_genre :: id :: NAME)) ? ; let genre_id = genre_id . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: book_genre :: genre_id :: NAME)) ? ; let book_id = book_id . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: book_genre :: book_id :: NAME)) ? ; Ok (Data { id , genre_id , book_id , $ ($ field) , * }) } } const FIELDS : & 'static [& 'static str] = & ["id" , "genre_id" , "book_id" , "book" , "genre"] ; deserializer . deserialize_struct ("Data" , FIELDS , DataVisitor) } } $ ($ (pub mod $ field { crate :: prisma :: book_genre :: $ selection_mode ! (@ field_module ; $ field : $ selection_mode { $ ($ selections) + }) ; }) ?) + } ; (@ field_type ; book : $ selection_mode : ident { $ ($ selections : tt) + }) => { book :: Data } ; (@ field_type ; book) => { crate :: prisma :: book :: Data } ; (@ field_type ; genre : $ selection_mode : ident { $ ($ selections : tt) + }) => { genre :: Data } ; (@ field_type ; genre) => { crate :: prisma :: genre :: Data } ; (@ field_type ; $ field : ident $ ($ tokens : tt) *) => { compile_error ! (stringify ! (Cannot include nonexistent relation $ field on model "BookGenre" , available relations are "book, genre")) } ; (@ field_module ; book : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: book :: include ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; genre : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: genre :: include ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; $ ($ tokens : tt) *) => { } ; (@ selection_field_to_selection_param ; book $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: book_genre :: IncludeParam > :: into (crate :: prisma :: book_genre :: book :: Include :: $ selection_mode (crate :: prisma :: book :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; book $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: book_genre :: IncludeParam > :: into (crate :: prisma :: book_genre :: book :: Include :: Fetch) } } ; (@ selection_field_to_selection_param ; genre $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: book_genre :: IncludeParam > :: into (crate :: prisma :: book_genre :: genre :: Include :: $ selection_mode (crate :: prisma :: genre :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; genre $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: book_genre :: IncludeParam > :: into (crate :: prisma :: book_genre :: genre :: Include :: Fetch) } } ; (@ selection_field_to_selection_param ; $ ($ tokens : tt) *) => { compile_error ! (stringify ! ($ ($ tokens) *)) } ; (@ selections_to_params ; : $ macro_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { [$ (crate :: prisma :: book_genre :: $ macro_name ! (@ selection_field_to_selection_param ; $ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) ,) +] } ; (@ filters_to_args ;) => { vec ! [] } ; (@ filters_to_args ; $ ($ t : tt) *) => { $ ($ t) * } ; (@ field_serde_name ; id) => { "id" } ; (@ field_serde_name ; genre_id) => { "genre_id" } ; (@ field_serde_name ; book_id) => { "book_id" } ; (@ field_serde_name ; book) => { "book" } ; (@ field_serde_name ; genre) => { "genre" } ; } + pub use _include_book_genre as include; + pub enum IncludeParam { + Id(id::Include), + GenreId(genre_id::Include), + BookId(book_id::Include), + Book(book::Include), + Genre(genre::Include), + } + impl IncludeParam { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + match self { + Self::Id(data) => data.to_selection(), + Self::GenreId(data) => data.to_selection(), + Self::BookId(data) => data.to_selection(), + Self::Book(data) => data.to_selection(), + Self::Genre(data) => data.to_selection(), + } + } + } + #[macro_export] + macro_rules ! _partial_unchecked_book_genre { ($ struct_name : ident { $ ($ scalar_field : ident) + }) => { :: prisma_client_rust :: macros :: partial_unchecked ! { $crate :: prisma :: book_genre struct $ struct_name { # [serde (rename = "id")] pub id : i32 , # [serde (rename = "genre_id")] pub genre_id : i32 , # [serde (rename = "book_id")] pub book_id : i32 } [$ ($ scalar_field) , +] } } ; } + pub use _partial_unchecked_book_genre as partial_unchecked; + #[derive(Debug, Clone, :: serde :: Serialize, :: serde :: Deserialize)] + pub struct Data { + #[serde(rename = "id")] + pub id: i32, + #[serde(rename = "genre_id")] + pub genre_id: i32, + #[serde(rename = "book_id")] + pub book_id: i32, + #[serde(rename = "book")] + pub book: Option>, + #[serde(rename = "genre")] + pub genre: Option>, + } + impl Data { + pub fn book( + &self, + ) -> Result<&super::book::Data, ::prisma_client_rust::RelationNotFetchedError> { + self.book + .as_ref() + .ok_or(::prisma_client_rust::RelationNotFetchedError::new( + stringify!(book), + )) + .map(|v| v.as_ref()) + } + pub fn genre( + &self, + ) -> Result<&super::genre::Data, ::prisma_client_rust::RelationNotFetchedError> { + self.genre + .as_ref() + .ok_or(::prisma_client_rust::RelationNotFetchedError::new( + stringify!(genre), + )) + .map(|v| v.as_ref()) + } + } + #[derive(Clone)] + pub enum WithParam { + Book(super::book::UniqueArgs), + Genre(super::genre::UniqueArgs), + } + impl From for ::prisma_client_rust::Selection { + fn from(val: WithParam) -> Self { + match val { + WithParam::Book(args) => { + let mut selections = + ::scalar_selections( + ); + selections.extend( + args.with_params + .into_iter() + .map(Into::<::prisma_client_rust::Selection>::into), + ); + ::prisma_client_rust::Selection::new(book::NAME, None, [], selections) + } + WithParam::Genre(args) => { + let mut selections = < super :: genre :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections () ; + selections.extend( + args.with_params + .into_iter() + .map(Into::<::prisma_client_rust::Selection>::into), + ); + ::prisma_client_rust::Selection::new(genre::NAME, None, [], selections) + } + } + } + } + #[derive(Clone)] + pub enum SetParam { + SetId(i32), + IncrementId(i32), + DecrementId(i32), + MultiplyId(i32), + DivideId(i32), + SetGenreId(i32), + IncrementGenreId(i32), + DecrementGenreId(i32), + MultiplyGenreId(i32), + DivideGenreId(i32), + SetBookId(i32), + IncrementBookId(i32), + DecrementBookId(i32), + MultiplyBookId(i32), + DivideBookId(i32), + ConnectBook(super::book::UniqueWhereParam), + ConnectGenre(super::genre::UniqueWhereParam), + } + impl From for (String, ::prisma_client_rust::PrismaValue) { + fn from(param: SetParam) -> Self { + match param { + SetParam::SetId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + ), + SetParam::IncrementId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "increment".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DecrementId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "decrement".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::MultiplyId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "multiply".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DivideId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "divide".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::SetGenreId(value) => ( + genre_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + ), + SetParam::IncrementGenreId(value) => ( + genre_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "increment".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DecrementGenreId(value) => ( + genre_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "decrement".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::MultiplyGenreId(value) => ( + genre_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "multiply".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DivideGenreId(value) => ( + genre_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "divide".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::SetBookId(value) => ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + ), + SetParam::IncrementBookId(value) => ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "increment".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DecrementBookId(value) => ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "decrement".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::MultiplyBookId(value) => ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "multiply".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DivideBookId(value) => ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "divide".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::ConnectBook(where_param) => ( + book::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "connect".to_string(), + ::prisma_client_rust::PrismaValue::Object( + [where_param] + .into_iter() + .map(Into::::into) + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + SetParam::ConnectGenre(where_param) => ( + genre::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "connect".to_string(), + ::prisma_client_rust::PrismaValue::Object( + [where_param] + .into_iter() + .map(Into::::into) + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + } + } + } + #[derive(Clone)] + pub enum UncheckedSetParam { + Id(i32), + GenreId(i32), + BookId(i32), + } + impl From for SetParam { + fn from(param: UncheckedSetParam) -> Self { + match param { + UncheckedSetParam::Id(value) => Self::SetId(value), + UncheckedSetParam::GenreId(value) => Self::SetGenreId(value), + UncheckedSetParam::BookId(value) => Self::SetBookId(value), + } + } + } + #[derive(Clone)] + pub enum OrderByParam { + Id(::prisma_client_rust::Direction), + GenreId(::prisma_client_rust::Direction), + BookId(::prisma_client_rust::Direction), + } + impl From for (String, ::prisma_client_rust::PrismaValue) { + fn from(val: OrderByParam) -> Self { + match val { + OrderByParam::Id(direction) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + OrderByParam::GenreId(direction) => ( + genre_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + OrderByParam::BookId(direction) => ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + } + } + } + #[derive(Clone)] + pub enum WhereParam { + Not(Vec), + Or(Vec), + And(Vec), + BookIdGenreIdEquals(i32, i32), + Id(_prisma::read_filters::IntFilter), + GenreId(_prisma::read_filters::IntFilter), + BookId(_prisma::read_filters::IntFilter), + BookIs(Vec), + BookIsNot(Vec), + GenreIs(Vec), + GenreIsNot(Vec), + } + impl ::prisma_client_rust::WhereInput for WhereParam { + fn serialize(self) -> ::prisma_client_rust::SerializedWhereInput { + let (name, value) = match self { + Self::Not(value) => ( + "NOT", + ::prisma_client_rust::SerializedWhereValue::Object( + ::prisma_client_rust::merge_fields( + value + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(Into::into) + .collect(), + ), + ), + ), + Self::Or(value) => ( + "OR", + ::prisma_client_rust::SerializedWhereValue::List( + value + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(Into::into) + .map(|v| vec![v]) + .map(::prisma_client_rust::PrismaValue::Object) + .collect(), + ), + ), + Self::And(value) => ( + "AND", + ::prisma_client_rust::SerializedWhereValue::Object( + ::prisma_client_rust::merge_fields( + value + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(Into::into) + .collect(), + ), + ), + ), + Self::BookIdGenreIdEquals(book_id, genre_id) => ( + "book_id_genre_id", + ::prisma_client_rust::SerializedWhereValue::Object(vec![ + ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(book_id as i64), + ), + ( + genre_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(genre_id as i64), + ), + ]), + ), + Self::Id(value) => (id::NAME, value.into()), + Self::GenreId(value) => (genre_id::NAME, value.into()), + Self::BookId(value) => (book_id::NAME, value.into()), + Self::BookIs(where_params) => ( + book::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "is".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + Self::BookIsNot(where_params) => ( + book::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "isNot".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + Self::GenreIs(where_params) => ( + genre::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "is".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + Self::GenreIsNot(where_params) => ( + genre::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "isNot".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + }; + ::prisma_client_rust::SerializedWhereInput::new(name, value) + } + } + #[derive(Clone)] + pub enum UniqueWhereParam { + BookIdGenreIdEquals(i32, i32), + IdEquals(i32), + } + impl From for WhereParam { + fn from(value: UniqueWhereParam) -> Self { + match value { + UniqueWhereParam::BookIdGenreIdEquals(book_id, genre_id) => { + Self::BookIdGenreIdEquals(book_id, genre_id) + } + UniqueWhereParam::IdEquals(value) => { + Self::Id(_prisma::read_filters::IntFilter::Equals(value)) + } + } + } + } + impl From<::prisma_client_rust::Operator> for WhereParam { + fn from(op: ::prisma_client_rust::Operator) -> Self { + match op { + ::prisma_client_rust::Operator::Not(value) => Self::Not(value), + ::prisma_client_rust::Operator::And(value) => Self::And(value), + ::prisma_client_rust::Operator::Or(value) => Self::Or(value), + } + } + } + #[derive(Clone)] + pub struct Types; + impl ::prisma_client_rust::ModelTypes for Types { + type Data = Data; + type Where = WhereParam; + type UncheckedSet = UncheckedSetParam; + type Set = SetParam; + type With = WithParam; + type OrderBy = OrderByParam; + type Cursor = UniqueWhereParam; + const MODEL: &'static str = NAME; + fn scalar_selections() -> Vec<::prisma_client_rust::Selection> { + vec![ + ::prisma_client_rust::sel(id::NAME), + ::prisma_client_rust::sel(genre_id::NAME), + ::prisma_client_rust::sel(book_id::NAME), + ] + } + } + pub type UniqueArgs = ::prisma_client_rust::UniqueArgs; + pub type ManyArgs = ::prisma_client_rust::ManyArgs; + pub type Count<'a> = ::prisma_client_rust::Count<'a, Types>; + pub type Create<'a> = ::prisma_client_rust::Create<'a, Types>; + pub type CreateMany<'a> = ::prisma_client_rust::CreateMany<'a, Types>; + pub type FindUnique<'a> = ::prisma_client_rust::FindUnique<'a, Types>; + pub type FindMany<'a> = ::prisma_client_rust::FindMany<'a, Types>; + pub type FindFirst<'a> = ::prisma_client_rust::FindFirst<'a, Types>; + pub type Update<'a> = ::prisma_client_rust::Update<'a, Types>; + pub type UpdateMany<'a> = ::prisma_client_rust::UpdateMany<'a, Types>; + pub type Upsert<'a> = ::prisma_client_rust::Upsert<'a, Types>; + pub type Delete<'a> = ::prisma_client_rust::Delete<'a, Types>; + pub type DeleteMany<'a> = ::prisma_client_rust::DeleteMany<'a, Types>; + #[derive(Clone)] + pub struct Actions<'a> { + pub client: &'a ::prisma_client_rust::PrismaClientInternals, + } + impl<'a> Actions<'a> { + pub fn find_unique(self, _where: UniqueWhereParam) -> FindUnique<'a> { + FindUnique::new(self.client, _where.into()) + } + pub fn find_first(self, _where: Vec) -> FindFirst<'a> { + FindFirst::new(self.client, _where) + } + pub fn find_many(self, _where: Vec) -> FindMany<'a> { + FindMany::new(self.client, _where) + } + pub fn create( + self, + book: super::book::UniqueWhereParam, + genre: super::genre::UniqueWhereParam, + mut _params: Vec, + ) -> Create<'a> { + _params.extend([book::connect(book), genre::connect(genre)]); + Create::new(self.client, _params) + } + pub fn create_unchecked( + self, + genre_id: i32, + book_id: i32, + mut _params: Vec, + ) -> Create<'a> { + _params.extend([genre_id::set(genre_id), book_id::set(book_id)]); + Create::new(self.client, _params.into_iter().map(Into::into).collect()) + } + pub fn create_many(self, data: Vec<(i32, i32, Vec)>) -> CreateMany<'a> { + let data = data + .into_iter() + .map(|(genre_id, book_id, mut _params)| { + _params.extend([genre_id::set(genre_id), book_id::set(book_id)]); + _params + }) + .collect(); + CreateMany::new(self.client, data) + } + pub fn update(self, _where: UniqueWhereParam, _params: Vec) -> Update<'a> { + Update::new(self.client, _where.into(), _params, vec![]) + } + pub fn update_unchecked( + self, + _where: UniqueWhereParam, + _params: Vec, + ) -> Update<'a> { + Update::new( + self.client, + _where.into(), + _params.into_iter().map(Into::into).collect(), + vec![], + ) + } + pub fn update_many( + self, + _where: Vec, + _params: Vec, + ) -> UpdateMany<'a> { + UpdateMany::new(self.client, _where, _params) + } + pub fn upsert( + self, + _where: UniqueWhereParam, + (book, genre, mut _params): ( + super::book::UniqueWhereParam, + super::genre::UniqueWhereParam, + Vec, + ), + _update: Vec, + ) -> Upsert<'a> { + _params.extend([book::connect(book), genre::connect(genre)]); + Upsert::new(self.client, _where.into(), _params, _update) + } + pub fn delete(self, _where: UniqueWhereParam) -> Delete<'a> { + Delete::new(self.client, _where.into(), vec![]) + } + pub fn delete_many(self, _where: Vec) -> DeleteMany<'a> { + DeleteMany::new(self.client, _where) + } + pub fn count(self, _where: Vec) -> Count<'a> { + Count::new(self.client, _where) + } + pub fn find_raw( + self, + ) -> ::prisma_client_rust::FindRaw<'a, Types, T> { + ::prisma_client_rust::FindRaw::new(self.client) + } + pub fn aggregate_raw( + self, + ) -> ::prisma_client_rust::AggregateRaw<'a, Types, T> { + ::prisma_client_rust::AggregateRaw::new(self.client) + } + } +} +pub mod book_sequence { + + use super::*; + pub const NAME: &str = "BookSequence"; + pub mod id { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, UniqueWhereParam, WhereParam, + }; + pub const NAME: &str = "id"; + pub struct Set(pub i32); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetId(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::Id(v) + } + } + pub fn set>(value: i32) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::Id(direction) + } + pub fn equals>(value: i32) -> T { + UniqueWhereParam::IdEquals(value).into() + } + ::prisma_client_rust::scalar_where_param_fns!(_prisma::read_filters::IntFilter, Id, { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: i32) -> Lt; + fn lte(_: i32) -> Lte; + fn gt(_: i32) -> Gt; + fn gte(_: i32) -> Gte; + fn not(_: i32) -> Not; + }); + pub fn increment(value: i32) -> SetParam { + SetParam::IncrementId(value) + } + pub fn decrement(value: i32) -> SetParam { + SetParam::DecrementId(value) + } + pub fn multiply(value: i32) -> SetParam { + SetParam::MultiplyId(value) + } + pub fn divide(value: i32) -> SetParam { + SetParam::DivideId(value) + } + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Id(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Position(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod sequence_id { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "sequence_id"; + pub struct Set(pub i32); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetSequenceId(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::SequenceId(v) + } + } + pub fn set>(value: i32) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::SequenceId(direction) + } + pub fn equals(value: i32) -> WhereParam { + WhereParam::SequenceId(_prisma::read_filters::IntFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!( + _prisma::read_filters::IntFilter, + SequenceId, + { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: i32) -> Lt; + fn lte(_: i32) -> Lte; + fn gt(_: i32) -> Gt; + fn gte(_: i32) -> Gte; + fn not(_: i32) -> Not; + } + ); + pub fn increment(value: i32) -> SetParam { + SetParam::IncrementSequenceId(value) + } + pub fn decrement(value: i32) -> SetParam { + SetParam::DecrementSequenceId(value) + } + pub fn multiply(value: i32) -> SetParam { + SetParam::MultiplySequenceId(value) + } + pub fn divide(value: i32) -> SetParam { + SetParam::DivideSequenceId(value) + } + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::SequenceId(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::BookId(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod book { + use super::super::*; + + use super::{ + SetParam, WhereParam, WithParam, + }; + pub const NAME: &str = "book"; + pub struct Fetch(pub book::UniqueArgs); + impl Fetch { + pub fn with(mut self, params: impl Into) -> Self { + self.0 = self.0.with(params.into()); + self + } + } + impl From for WithParam { + fn from(Fetch(v): Fetch) -> Self { + WithParam::Book(v) + } + } + pub fn fetch() -> Fetch { + Fetch(book::UniqueArgs::new()) + } + pub struct Connect(book::UniqueWhereParam); + impl From for SetParam { + fn from(Connect(v): Connect) -> Self { + Self::ConnectBook(v) + } + } + pub fn connect>(value: book::UniqueWhereParam) -> T { + Connect(value).into() + } + pub fn is(value: Vec) -> WhereParam { + WhereParam::BookIs(value) + } + pub fn is_not(value: Vec) -> WhereParam { + WhereParam::BookIsNot(value) + } + pub enum Include { + Select(Vec), + Include(Vec), + Fetch, + } + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Book(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let selections = match self { + Self::Select(selections) => { + selections.into_iter().map(|s| s.to_selection()).collect() + } + Self::Include(selections) => { + let mut nested_selections = + ::scalar_selections(); + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + } + Self::Fetch => { + ::scalar_selections() + } + }; + ::prisma_client_rust::Selection::new("book", None, [], selections) + } + pub fn select(nested_selections: Vec) -> Self { + Self::Select(nested_selections) + } + pub fn include(nested_selections: Vec) -> Self { + Self::Include(nested_selections) + } + } + pub enum Select { + Select(Vec), + Include(Vec), + Fetch, + } + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Sequence(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let selections = match self { + Self::Select(selections) => { + selections.into_iter().map(|s| s.to_selection()).collect() + } + Self::Include(selections) => { + let mut nested_selections = vec![]; + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + } + Self::Fetch => { + ::scalar_selections() + } + }; + ::prisma_client_rust::Selection::new("sequence", None, [], selections) + } + pub fn select(nested_selections: Vec) -> Self { + Self::Select(nested_selections) + } + pub fn include(nested_selections: Vec) -> Self { + Self::Include(nested_selections) + } + } + } + pub fn book_id_sequence_id>(book_id: i32, sequence_id: i32) -> T { + UniqueWhereParam::BookIdSequenceIdEquals(book_id, sequence_id).into() + } + pub fn create( + position: i32, + book: super::book::UniqueWhereParam, + sequence: super::sequence::UniqueWhereParam, + _params: Vec, + ) -> ( + i32, + super::book::UniqueWhereParam, + super::sequence::UniqueWhereParam, + Vec, + ) { + (position, book, sequence, _params) + } + pub fn create_unchecked( + position: i32, + sequence_id: i32, + book_id: i32, + _params: Vec, + ) -> (i32, i32, i32, Vec) { + (position, sequence_id, book_id, _params) + } + #[macro_export] + macro_rules ! _select_book_sequence { ($ (($ ($ func_arg : ident : $ func_arg_ty : ty) , +) =>) ? $ module_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { # [allow (warnings)] pub mod $ module_name { $crate :: prisma :: book_sequence :: select ! (@ definitions ; $ module_name ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; use super :: * ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: SelectType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: book_sequence :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } pub fn select ($ ($ ($ func_arg : $ func_arg_ty) , +) ?) -> Selection { Selection ([$crate :: prisma :: book_sequence :: select ! (@ selections_to_params ; : select { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () ,] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } } ; ({ $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { { $crate :: prisma :: book_sequence :: select ! (@ definitions ; ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: SelectType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: book_sequence :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } Selection ([$crate :: prisma :: book_sequence :: select ! (@ selections_to_params ; : select { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () ,] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } ; (@ definitions ; $ ($ module_name : ident) ? ; $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) +) => { # [allow (warnings)] enum Fields { id , position , sequence_id , book_id , book , sequence } # [allow (warnings)] impl Fields { fn selections () { $ (let _ = Fields :: $ field ;) + } } # [allow (warnings)] # [derive (std :: fmt :: Debug , Clone)] pub struct Data { $ (pub $ field : crate :: prisma :: book_sequence :: select ! (@ field_type ; $ field $ (: $ selection_mode { $ ($ selections) + }) ?) ,) + } impl :: serde :: Serialize for Data { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : :: serde :: Serializer , { use :: serde :: ser :: SerializeStruct ; let mut state = serializer . serialize_struct ("Data" , [$ (stringify ! ($ field) ,) +] . len ()) ? ; $ (state . serialize_field (crate :: prisma :: book_sequence :: $ field :: NAME , & self . $ field) ? ;) * state . end () } } impl < 'de > :: serde :: Deserialize < 'de > for Data { fn deserialize < D > (deserializer : D) -> Result < Self , D :: Error > where D : :: serde :: Deserializer < 'de > , { # [allow (warnings)] enum Field { $ ($ field) , + , } impl < 'de > :: serde :: Deserialize < 'de > for Field { fn deserialize < D > (deserializer : D) -> Result < Field , D :: Error > where D : :: serde :: Deserializer < 'de > , { struct FieldVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for FieldVisitor { type Value = Field ; fn expecting (& self , formatter : & mut :: std :: fmt :: Formatter) -> :: std :: fmt :: Result { formatter . write_str (& [$ (crate :: prisma :: book_sequence :: $ field :: NAME) , + ,] . into_iter () . collect :: < Vec < _ >> () . join (", ")) } fn visit_str < E > (self , value : & str) -> Result < Field , E > where E : :: serde :: de :: Error , { match value { $ (crate :: prisma :: book_sequence :: $ field :: NAME => Ok (Field :: $ field)) , * , _ => Err (:: serde :: de :: Error :: unknown_field (value , FIELDS)) , } } } deserializer . deserialize_identifier (FieldVisitor) } } struct DataVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for DataVisitor { type Value = Data ; fn expecting (& self , formatter : & mut std :: fmt :: Formatter) -> std :: fmt :: Result { formatter . write_str ("struct Data") } fn visit_map < V > (self , mut map : V) -> Result < Data , V :: Error > where V : :: serde :: de :: MapAccess < 'de > , { $ (let mut $ field = None ;) * while let Some (key) = map . next_key () ? { match key { $ (Field :: $ field => { if $ field . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: book_sequence :: $ field :: NAME)) ; } $ field = Some (map . next_value () ?) ; }) * } } $ (let $ field = $ field . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: book_sequence :: $ field :: NAME)) ? ;) * Ok (Data { $ ($ field) , * }) } } const FIELDS : & 'static [& 'static str] = & ["id" , "position" , "sequence_id" , "book_id" , "book" , "sequence"] ; deserializer . deserialize_struct ("Data" , FIELDS , DataVisitor) } } $ ($ (pub mod $ field { crate :: prisma :: book_sequence :: $ selection_mode ! (@ field_module ; $ field : $ selection_mode { $ ($ selections) + }) ; }) ?) + } ; (@ field_type ; id) => { i32 } ; (@ field_type ; position) => { i32 } ; (@ field_type ; sequence_id) => { i32 } ; (@ field_type ; book_id) => { i32 } ; (@ field_type ; book : $ selection_mode : ident { $ ($ selections : tt) + }) => { book :: Data } ; (@ field_type ; book) => { crate :: prisma :: book :: Data } ; (@ field_type ; sequence : $ selection_mode : ident { $ ($ selections : tt) + }) => { sequence :: Data } ; (@ field_type ; sequence) => { crate :: prisma :: sequence :: Data } ; (@ field_type ; $ field : ident $ ($ tokens : tt) *) => { compile_error ! (stringify ! (Cannot include nonexistent relation $ field on model "BookSequence" , available relations are "id, position, sequence_id, book_id, book, sequence")) } ; (@ field_module ; book : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: book :: select ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; sequence : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: sequence :: select ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; $ ($ tokens : tt) *) => { } ; (@ selection_field_to_selection_param ; id) => { Into :: < crate :: prisma :: book_sequence :: SelectParam > :: into (crate :: prisma :: book_sequence :: id :: Select) } ; (@ selection_field_to_selection_param ; position) => { Into :: < crate :: prisma :: book_sequence :: SelectParam > :: into (crate :: prisma :: book_sequence :: position :: Select) } ; (@ selection_field_to_selection_param ; sequence_id) => { Into :: < crate :: prisma :: book_sequence :: SelectParam > :: into (crate :: prisma :: book_sequence :: sequence_id :: Select) } ; (@ selection_field_to_selection_param ; book_id) => { Into :: < crate :: prisma :: book_sequence :: SelectParam > :: into (crate :: prisma :: book_sequence :: book_id :: Select) } ; (@ selection_field_to_selection_param ; book $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: book_sequence :: SelectParam > :: into (crate :: prisma :: book_sequence :: book :: Select :: $ selection_mode (crate :: prisma :: book :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; book $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: book_sequence :: SelectParam > :: into (crate :: prisma :: book_sequence :: book :: Select :: Fetch) } } ; (@ selection_field_to_selection_param ; sequence $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: book_sequence :: SelectParam > :: into (crate :: prisma :: book_sequence :: sequence :: Select :: $ selection_mode (crate :: prisma :: sequence :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; sequence $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: book_sequence :: SelectParam > :: into (crate :: prisma :: book_sequence :: sequence :: Select :: Fetch) } } ; (@ selection_field_to_selection_param ; $ ($ tokens : tt) *) => { compile_error ! (stringify ! ($ ($ tokens) *)) } ; (@ selections_to_params ; : $ macro_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { [$ (crate :: prisma :: book_sequence :: $ macro_name ! (@ selection_field_to_selection_param ; $ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) ,) +] } ; (@ filters_to_args ;) => { vec ! [] } ; (@ filters_to_args ; $ ($ t : tt) *) => { $ ($ t) * } ; (@ field_serde_name ; id) => { "id" } ; (@ field_serde_name ; position) => { "position" } ; (@ field_serde_name ; sequence_id) => { "sequence_id" } ; (@ field_serde_name ; book_id) => { "book_id" } ; (@ field_serde_name ; book) => { "book" } ; (@ field_serde_name ; sequence) => { "sequence" } ; } + pub use _select_book_sequence as select; + pub enum SelectParam { + Id(id::Select), + Position(position::Select), + SequenceId(sequence_id::Select), + BookId(book_id::Select), + Book(book::Select), + Sequence(sequence::Select), + } + impl SelectParam { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + match self { + Self::Id(data) => data.to_selection(), + Self::Position(data) => data.to_selection(), + Self::SequenceId(data) => data.to_selection(), + Self::BookId(data) => data.to_selection(), + Self::Book(data) => data.to_selection(), + Self::Sequence(data) => data.to_selection(), + } + } + } + #[macro_export] + macro_rules ! _include_book_sequence { ($ (($ ($ func_arg : ident : $ func_arg_ty : ty) , +) =>) ? $ module_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { # [allow (warnings)] pub mod $ module_name { $crate :: prisma :: book_sequence :: include ! (@ definitions ; $ module_name ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; use super :: * ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: IncludeType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: book_sequence :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } pub fn include ($ ($ ($ func_arg : $ func_arg_ty) , +) ?) -> Selection { Selection ([$crate :: prisma :: book_sequence :: include ! (@ selections_to_params ; : include { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () , < $crate :: prisma :: book_sequence :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections ()] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } } ; ({ $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { { $crate :: prisma :: book_sequence :: include ! (@ definitions ; ; $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) +) ; pub struct Selection (Vec < :: prisma_client_rust :: Selection >) ; impl :: prisma_client_rust :: IncludeType for Selection { type Data = Data ; type ModelData = $crate :: prisma :: book_sequence :: Data ; fn to_selections (self) -> Vec < :: prisma_client_rust :: Selection > { self . 0 } } Selection ([crate :: prisma :: book_sequence :: include ! (@ selections_to_params ; : include { $ ($ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) + }) . into_iter () . map (| p | p . to_selection ()) . collect :: < Vec < _ >> () , < crate :: prisma :: book_sequence :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections ()] . into_iter () . flatten () . collect :: < Vec < _ >> ()) } } ; (@ definitions ; $ ($ module_name : ident) ? ; $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) +) => { # [allow (warnings)] enum Fields { book , sequence } # [allow (warnings)] impl Fields { fn selections () { $ (let _ = Fields :: $ field ;) + } } # [allow (warnings)] # [derive (std :: fmt :: Debug , Clone)] pub struct Data { pub id : i32 , pub position : i32 , pub sequence_id : i32 , pub book_id : i32 , $ (pub $ field : crate :: prisma :: book_sequence :: include ! (@ field_type ; $ field $ (: $ selection_mode { $ ($ selections) + }) ?) ,) + } impl :: serde :: Serialize for Data { fn serialize < S > (& self , serializer : S) -> Result < S :: Ok , S :: Error > where S : :: serde :: Serializer , { use :: serde :: ser :: SerializeStruct ; let mut state = serializer . serialize_struct ("Data" , [$ (stringify ! ($ field) ,) + stringify ! (id) , stringify ! (position) , stringify ! (sequence_id) , stringify ! (book_id)] . len ()) ? ; $ (state . serialize_field (crate :: prisma :: book_sequence :: $ field :: NAME , & self . $ field) ? ;) * state . serialize_field (crate :: prisma :: book_sequence :: id :: NAME , & self . id) ? ; state . serialize_field (crate :: prisma :: book_sequence :: position :: NAME , & self . position) ? ; state . serialize_field (crate :: prisma :: book_sequence :: sequence_id :: NAME , & self . sequence_id) ? ; state . serialize_field (crate :: prisma :: book_sequence :: book_id :: NAME , & self . book_id) ? ; state . end () } } impl < 'de > :: serde :: Deserialize < 'de > for Data { fn deserialize < D > (deserializer : D) -> Result < Self , D :: Error > where D : :: serde :: Deserializer < 'de > , { # [allow (warnings)] enum Field { $ ($ field) , + , id , position , sequence_id , book_id } impl < 'de > :: serde :: Deserialize < 'de > for Field { fn deserialize < D > (deserializer : D) -> Result < Field , D :: Error > where D : :: serde :: Deserializer < 'de > , { struct FieldVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for FieldVisitor { type Value = Field ; fn expecting (& self , formatter : & mut :: std :: fmt :: Formatter) -> :: std :: fmt :: Result { formatter . write_str (& [$ (crate :: prisma :: book_sequence :: $ field :: NAME) , + , crate :: prisma :: book_sequence :: id :: NAME , crate :: prisma :: book_sequence :: position :: NAME , crate :: prisma :: book_sequence :: sequence_id :: NAME , crate :: prisma :: book_sequence :: book_id :: NAME] . into_iter () . collect :: < Vec < _ >> () . join (", ")) } fn visit_str < E > (self , value : & str) -> Result < Field , E > where E : :: serde :: de :: Error , { match value { $ (crate :: prisma :: book_sequence :: $ field :: NAME => Ok (Field :: $ field)) , * , crate :: prisma :: book_sequence :: id :: NAME => Ok (Field :: id) , crate :: prisma :: book_sequence :: position :: NAME => Ok (Field :: position) , crate :: prisma :: book_sequence :: sequence_id :: NAME => Ok (Field :: sequence_id) , crate :: prisma :: book_sequence :: book_id :: NAME => Ok (Field :: book_id) , _ => Err (:: serde :: de :: Error :: unknown_field (value , FIELDS)) , } } } deserializer . deserialize_identifier (FieldVisitor) } } struct DataVisitor ; impl < 'de > :: serde :: de :: Visitor < 'de > for DataVisitor { type Value = Data ; fn expecting (& self , formatter : & mut std :: fmt :: Formatter) -> std :: fmt :: Result { formatter . write_str ("struct Data") } fn visit_map < V > (self , mut map : V) -> Result < Data , V :: Error > where V : :: serde :: de :: MapAccess < 'de > , { $ (let mut $ field = None ;) * let mut id = None ; let mut position = None ; let mut sequence_id = None ; let mut book_id = None ; while let Some (key) = map . next_key () ? { match key { Field :: id => { if id . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: book_sequence :: id :: NAME)) ; } id = Some (map . next_value () ?) ; } Field :: position => { if position . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: book_sequence :: position :: NAME)) ; } position = Some (map . next_value () ?) ; } Field :: sequence_id => { if sequence_id . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: book_sequence :: sequence_id :: NAME)) ; } sequence_id = Some (map . next_value () ?) ; } Field :: book_id => { if book_id . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: book_sequence :: book_id :: NAME)) ; } book_id = Some (map . next_value () ?) ; } $ (Field :: $ field => { if $ field . is_some () { return Err (:: serde :: de :: Error :: duplicate_field (crate :: prisma :: book_sequence :: $ field :: NAME)) ; } $ field = Some (map . next_value () ?) ; }) * } } $ (let $ field = $ field . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: book_sequence :: $ field :: NAME)) ? ;) * let id = id . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: book_sequence :: id :: NAME)) ? ; let position = position . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: book_sequence :: position :: NAME)) ? ; let sequence_id = sequence_id . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: book_sequence :: sequence_id :: NAME)) ? ; let book_id = book_id . ok_or_else (|| serde :: de :: Error :: missing_field (crate :: prisma :: book_sequence :: book_id :: NAME)) ? ; Ok (Data { id , position , sequence_id , book_id , $ ($ field) , * }) } } const FIELDS : & 'static [& 'static str] = & ["id" , "position" , "sequence_id" , "book_id" , "book" , "sequence"] ; deserializer . deserialize_struct ("Data" , FIELDS , DataVisitor) } } $ ($ (pub mod $ field { crate :: prisma :: book_sequence :: $ selection_mode ! (@ field_module ; $ field : $ selection_mode { $ ($ selections) + }) ; }) ?) + } ; (@ field_type ; book : $ selection_mode : ident { $ ($ selections : tt) + }) => { book :: Data } ; (@ field_type ; book) => { crate :: prisma :: book :: Data } ; (@ field_type ; sequence : $ selection_mode : ident { $ ($ selections : tt) + }) => { sequence :: Data } ; (@ field_type ; sequence) => { crate :: prisma :: sequence :: Data } ; (@ field_type ; $ field : ident $ ($ tokens : tt) *) => { compile_error ! (stringify ! (Cannot include nonexistent relation $ field on model "BookSequence" , available relations are "book, sequence")) } ; (@ field_module ; book : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: book :: include ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; sequence : $ selection_mode : ident { $ ($ selections : tt) + }) => { crate :: prisma :: sequence :: include ! (@ definitions ; ; $ ($ selections) +) ; } ; (@ field_module ; $ ($ tokens : tt) *) => { } ; (@ selection_field_to_selection_param ; book $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: book_sequence :: IncludeParam > :: into (crate :: prisma :: book_sequence :: book :: Include :: $ selection_mode (crate :: prisma :: book :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; book $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: book_sequence :: IncludeParam > :: into (crate :: prisma :: book_sequence :: book :: Include :: Fetch) } } ; (@ selection_field_to_selection_param ; sequence $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? : $ selection_mode : ident { $ ($ selections : tt) + }) => { { Into :: < crate :: prisma :: book_sequence :: IncludeParam > :: into (crate :: prisma :: book_sequence :: sequence :: Include :: $ selection_mode (crate :: prisma :: sequence :: select ! (@ selections_to_params ; : $ selection_mode { $ ($ selections) + }) . into_iter () . collect ())) } } ; (@ selection_field_to_selection_param ; sequence $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ?) => { { Into :: < crate :: prisma :: book_sequence :: IncludeParam > :: into (crate :: prisma :: book_sequence :: sequence :: Include :: Fetch) } } ; (@ selection_field_to_selection_param ; $ ($ tokens : tt) *) => { compile_error ! (stringify ! ($ ($ tokens) *)) } ; (@ selections_to_params ; : $ macro_name : ident { $ ($ field : ident $ (($ ($ filters : tt) +) $ (. $ arg : ident ($ ($ arg_params : tt) *)) *) ? $ (: $ selection_mode : ident { $ ($ selections : tt) + }) ?) + }) => { [$ (crate :: prisma :: book_sequence :: $ macro_name ! (@ selection_field_to_selection_param ; $ field $ (($ ($ filters) +) $ (. $ arg ($ ($ arg_params) *)) *) ? $ (: $ selection_mode { $ ($ selections) + }) ?) ,) +] } ; (@ filters_to_args ;) => { vec ! [] } ; (@ filters_to_args ; $ ($ t : tt) *) => { $ ($ t) * } ; (@ field_serde_name ; id) => { "id" } ; (@ field_serde_name ; position) => { "position" } ; (@ field_serde_name ; sequence_id) => { "sequence_id" } ; (@ field_serde_name ; book_id) => { "book_id" } ; (@ field_serde_name ; book) => { "book" } ; (@ field_serde_name ; sequence) => { "sequence" } ; } + pub use _include_book_sequence as include; + pub enum IncludeParam { + Id(id::Include), + Position(position::Include), + SequenceId(sequence_id::Include), + BookId(book_id::Include), + Book(book::Include), + Sequence(sequence::Include), + } + impl IncludeParam { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + match self { + Self::Id(data) => data.to_selection(), + Self::Position(data) => data.to_selection(), + Self::SequenceId(data) => data.to_selection(), + Self::BookId(data) => data.to_selection(), + Self::Book(data) => data.to_selection(), + Self::Sequence(data) => data.to_selection(), + } + } + } + #[macro_export] + macro_rules ! _partial_unchecked_book_sequence { ($ struct_name : ident { $ ($ scalar_field : ident) + }) => { :: prisma_client_rust :: macros :: partial_unchecked ! { $crate :: prisma :: book_sequence struct $ struct_name { # [serde (rename = "id")] pub id : i32 , # [serde (rename = "position")] pub position : i32 , # [serde (rename = "sequence_id")] pub sequence_id : i32 , # [serde (rename = "book_id")] pub book_id : i32 } [$ ($ scalar_field) , +] } } ; } + pub use _partial_unchecked_book_sequence as partial_unchecked; + #[derive(Debug, Clone, :: serde :: Serialize, :: serde :: Deserialize)] + pub struct Data { + #[serde(rename = "id")] + pub id: i32, + #[serde(rename = "position")] + pub position: i32, + #[serde(rename = "sequence_id")] + pub sequence_id: i32, + #[serde(rename = "book_id")] + pub book_id: i32, + #[serde(rename = "book")] + pub book: Option>, + #[serde(rename = "sequence")] + pub sequence: Option>, + } + impl Data { + pub fn book( + &self, + ) -> Result<&super::book::Data, ::prisma_client_rust::RelationNotFetchedError> { + self.book + .as_ref() + .ok_or(::prisma_client_rust::RelationNotFetchedError::new( + stringify!(book), + )) + .map(|v| v.as_ref()) + } + pub fn sequence( + &self, + ) -> Result<&super::sequence::Data, ::prisma_client_rust::RelationNotFetchedError> { + self.sequence + .as_ref() + .ok_or(::prisma_client_rust::RelationNotFetchedError::new( + stringify!(sequence), + )) + .map(|v| v.as_ref()) + } + } + #[derive(Clone)] + pub enum WithParam { + Book(super::book::UniqueArgs), + Sequence(super::sequence::UniqueArgs), + } + impl From for ::prisma_client_rust::Selection { + fn from(val: WithParam) -> Self { + match val { + WithParam::Book(args) => { + let mut selections = + ::scalar_selections( + ); + selections.extend( + args.with_params + .into_iter() + .map(Into::<::prisma_client_rust::Selection>::into), + ); + ::prisma_client_rust::Selection::new(book::NAME, None, [], selections) + } + WithParam::Sequence(args) => { + let mut selections = < super :: sequence :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections () ; + selections.extend( + args.with_params + .into_iter() + .map(Into::<::prisma_client_rust::Selection>::into), + ); + ::prisma_client_rust::Selection::new(sequence::NAME, None, [], selections) + } + } + } + } + #[derive(Clone)] + pub enum SetParam { + SetId(i32), + IncrementId(i32), + DecrementId(i32), + MultiplyId(i32), + DivideId(i32), + SetPosition(i32), + IncrementPosition(i32), + DecrementPosition(i32), + MultiplyPosition(i32), + DividePosition(i32), + SetSequenceId(i32), + IncrementSequenceId(i32), + DecrementSequenceId(i32), + MultiplySequenceId(i32), + DivideSequenceId(i32), + SetBookId(i32), + IncrementBookId(i32), + DecrementBookId(i32), + MultiplyBookId(i32), + DivideBookId(i32), + ConnectBook(super::book::UniqueWhereParam), + ConnectSequence(super::sequence::UniqueWhereParam), + } + impl From for (String, ::prisma_client_rust::PrismaValue) { + fn from(param: SetParam) -> Self { + match param { + SetParam::SetId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + ), + SetParam::IncrementId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "increment".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DecrementId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "decrement".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::MultiplyId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "multiply".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DivideId(value) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "divide".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::SetPosition(value) => ( + position::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + ), + SetParam::IncrementPosition(value) => ( + position::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "increment".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DecrementPosition(value) => ( + position::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "decrement".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::MultiplyPosition(value) => ( + position::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "multiply".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DividePosition(value) => ( + position::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "divide".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::SetSequenceId(value) => ( + sequence_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + ), + SetParam::IncrementSequenceId(value) => ( + sequence_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "increment".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DecrementSequenceId(value) => ( + sequence_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "decrement".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::MultiplySequenceId(value) => ( + sequence_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "multiply".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DivideSequenceId(value) => ( + sequence_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "divide".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::SetBookId(value) => ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + ), + SetParam::IncrementBookId(value) => ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "increment".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DecrementBookId(value) => ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "decrement".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::MultiplyBookId(value) => ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "multiply".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::DivideBookId(value) => ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "divide".to_string(), + ::prisma_client_rust::PrismaValue::Int(value as i64), + )]), + ), + SetParam::ConnectBook(where_param) => ( + book::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "connect".to_string(), + ::prisma_client_rust::PrismaValue::Object( + [where_param] + .into_iter() + .map(Into::::into) + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + SetParam::ConnectSequence(where_param) => ( + sequence::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Object(vec![( + "connect".to_string(), + ::prisma_client_rust::PrismaValue::Object( + [where_param] + .into_iter() + .map(Into::::into) + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + } + } + } + #[derive(Clone)] + pub enum UncheckedSetParam { + Id(i32), + Position(i32), + SequenceId(i32), + BookId(i32), + } + impl From for SetParam { + fn from(param: UncheckedSetParam) -> Self { + match param { + UncheckedSetParam::Id(value) => Self::SetId(value), + UncheckedSetParam::Position(value) => Self::SetPosition(value), + UncheckedSetParam::SequenceId(value) => Self::SetSequenceId(value), + UncheckedSetParam::BookId(value) => Self::SetBookId(value), + } + } + } + #[derive(Clone)] + pub enum OrderByParam { + Id(::prisma_client_rust::Direction), + Position(::prisma_client_rust::Direction), + SequenceId(::prisma_client_rust::Direction), + BookId(::prisma_client_rust::Direction), + } + impl From for (String, ::prisma_client_rust::PrismaValue) { + fn from(val: OrderByParam) -> Self { + match val { + OrderByParam::Id(direction) => ( + id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + OrderByParam::Position(direction) => ( + position::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + OrderByParam::SequenceId(direction) => ( + sequence_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + OrderByParam::BookId(direction) => ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::String(direction.to_string()), + ), + } + } + } + #[derive(Clone)] + pub enum WhereParam { + Not(Vec), + Or(Vec), + And(Vec), + BookIdSequenceIdEquals(i32, i32), + Id(_prisma::read_filters::IntFilter), + Position(_prisma::read_filters::IntFilter), + SequenceId(_prisma::read_filters::IntFilter), + BookId(_prisma::read_filters::IntFilter), + BookIs(Vec), + BookIsNot(Vec), + SequenceIs(Vec), + SequenceIsNot(Vec), + } + impl ::prisma_client_rust::WhereInput for WhereParam { + fn serialize(self) -> ::prisma_client_rust::SerializedWhereInput { + let (name, value) = match self { + Self::Not(value) => ( + "NOT", + ::prisma_client_rust::SerializedWhereValue::Object( + ::prisma_client_rust::merge_fields( + value + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(Into::into) + .collect(), + ), + ), + ), + Self::Or(value) => ( + "OR", + ::prisma_client_rust::SerializedWhereValue::List( + value + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(Into::into) + .map(|v| vec![v]) + .map(::prisma_client_rust::PrismaValue::Object) + .collect(), + ), + ), + Self::And(value) => ( + "AND", + ::prisma_client_rust::SerializedWhereValue::Object( + ::prisma_client_rust::merge_fields( + value + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(Into::into) + .collect(), + ), + ), + ), + Self::BookIdSequenceIdEquals(book_id, sequence_id) => ( + "book_id_sequence_id", + ::prisma_client_rust::SerializedWhereValue::Object(vec![ + ( + book_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(book_id as i64), + ), + ( + sequence_id::NAME.to_string(), + ::prisma_client_rust::PrismaValue::Int(sequence_id as i64), + ), + ]), + ), + Self::Id(value) => (id::NAME, value.into()), + Self::Position(value) => (position::NAME, value.into()), + Self::SequenceId(value) => (sequence_id::NAME, value.into()), + Self::BookId(value) => (book_id::NAME, value.into()), + Self::BookIs(where_params) => ( + book::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "is".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + Self::BookIsNot(where_params) => ( + book::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "isNot".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + Self::SequenceIs(where_params) => ( + sequence::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "is".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + Self::SequenceIsNot(where_params) => ( + sequence::NAME, + ::prisma_client_rust::SerializedWhereValue::Object(vec![( + "isNot".to_string(), + ::prisma_client_rust::PrismaValue::Object( + where_params + .into_iter() + .map(::prisma_client_rust::WhereInput::serialize) + .map(::prisma_client_rust::SerializedWhereInput::transform_equals) + .collect(), + ), + )]), + ), + }; + ::prisma_client_rust::SerializedWhereInput::new(name, value) + } + } + #[derive(Clone)] + pub enum UniqueWhereParam { + BookIdSequenceIdEquals(i32, i32), + IdEquals(i32), + } + impl From for WhereParam { + fn from(value: UniqueWhereParam) -> Self { + match value { + UniqueWhereParam::BookIdSequenceIdEquals(book_id, sequence_id) => { + Self::BookIdSequenceIdEquals(book_id, sequence_id) + } + UniqueWhereParam::IdEquals(value) => { + Self::Id(_prisma::read_filters::IntFilter::Equals(value)) + } + } + } + } + impl From<::prisma_client_rust::Operator> for WhereParam { + fn from(op: ::prisma_client_rust::Operator) -> Self { + match op { + ::prisma_client_rust::Operator::Not(value) => Self::Not(value), + ::prisma_client_rust::Operator::And(value) => Self::And(value), + ::prisma_client_rust::Operator::Or(value) => Self::Or(value), + } + } + } + #[derive(Clone)] + pub struct Types; + impl ::prisma_client_rust::ModelTypes for Types { + type Data = Data; + type Where = WhereParam; + type UncheckedSet = UncheckedSetParam; + type Set = SetParam; + type With = WithParam; + type OrderBy = OrderByParam; + type Cursor = UniqueWhereParam; + const MODEL: &'static str = NAME; + fn scalar_selections() -> Vec<::prisma_client_rust::Selection> { + vec![ + ::prisma_client_rust::sel(id::NAME), + ::prisma_client_rust::sel(position::NAME), + ::prisma_client_rust::sel(sequence_id::NAME), + ::prisma_client_rust::sel(book_id::NAME), + ] + } + } + pub type UniqueArgs = ::prisma_client_rust::UniqueArgs; + pub type ManyArgs = ::prisma_client_rust::ManyArgs; + pub type Count<'a> = ::prisma_client_rust::Count<'a, Types>; + pub type Create<'a> = ::prisma_client_rust::Create<'a, Types>; + pub type CreateMany<'a> = ::prisma_client_rust::CreateMany<'a, Types>; + pub type FindUnique<'a> = ::prisma_client_rust::FindUnique<'a, Types>; + pub type FindMany<'a> = ::prisma_client_rust::FindMany<'a, Types>; + pub type FindFirst<'a> = ::prisma_client_rust::FindFirst<'a, Types>; + pub type Update<'a> = ::prisma_client_rust::Update<'a, Types>; + pub type UpdateMany<'a> = ::prisma_client_rust::UpdateMany<'a, Types>; + pub type Upsert<'a> = ::prisma_client_rust::Upsert<'a, Types>; + pub type Delete<'a> = ::prisma_client_rust::Delete<'a, Types>; + pub type DeleteMany<'a> = ::prisma_client_rust::DeleteMany<'a, Types>; + #[derive(Clone)] + pub struct Actions<'a> { + pub client: &'a ::prisma_client_rust::PrismaClientInternals, + } + impl<'a> Actions<'a> { + pub fn find_unique(self, _where: UniqueWhereParam) -> FindUnique<'a> { + FindUnique::new(self.client, _where.into()) + } + pub fn find_first(self, _where: Vec) -> FindFirst<'a> { + FindFirst::new(self.client, _where) + } + pub fn find_many(self, _where: Vec) -> FindMany<'a> { + FindMany::new(self.client, _where) + } + pub fn create( + self, + position: i32, + book: super::book::UniqueWhereParam, + sequence: super::sequence::UniqueWhereParam, + mut _params: Vec, + ) -> Create<'a> { + _params.extend([ + position::set(position), + book::connect(book), + sequence::connect(sequence), + ]); + Create::new(self.client, _params) + } + pub fn create_unchecked( + self, + position: i32, + sequence_id: i32, + book_id: i32, + mut _params: Vec, + ) -> Create<'a> { + _params.extend([ + position::set(position), + sequence_id::set(sequence_id), + book_id::set(book_id), + ]); + Create::new(self.client, _params.into_iter().map(Into::into).collect()) + } + pub fn create_many(self, data: Vec<(i32, i32, i32, Vec)>) -> CreateMany<'a> { + let data = data + .into_iter() + .map(|(position, sequence_id, book_id, mut _params)| { + _params.extend([ + position::set(position), + sequence_id::set(sequence_id), + book_id::set(book_id), + ]); + _params + }) + .collect(); + CreateMany::new(self.client, data) + } + pub fn update(self, _where: UniqueWhereParam, _params: Vec) -> Update<'a> { + Update::new(self.client, _where.into(), _params, vec![]) + } + pub fn update_unchecked( + self, + _where: UniqueWhereParam, + _params: Vec, + ) -> Update<'a> { + Update::new( + self.client, + _where.into(), + _params.into_iter().map(Into::into).collect(), + vec![], + ) + } + pub fn update_many( + self, + _where: Vec, + _params: Vec, + ) -> UpdateMany<'a> { + UpdateMany::new(self.client, _where, _params) + } + pub fn upsert( + self, + _where: UniqueWhereParam, + (position, book, sequence, mut _params): ( + i32, + super::book::UniqueWhereParam, + super::sequence::UniqueWhereParam, + Vec, + ), + _update: Vec, + ) -> Upsert<'a> { + _params.extend([ + position::set(position), + book::connect(book), + sequence::connect(sequence), + ]); + Upsert::new(self.client, _where.into(), _params, _update) + } + pub fn delete(self, _where: UniqueWhereParam) -> Delete<'a> { + Delete::new(self.client, _where.into(), vec![]) + } + pub fn delete_many(self, _where: Vec) -> DeleteMany<'a> { + DeleteMany::new(self.client, _where) + } + pub fn count(self, _where: Vec) -> Count<'a> { + Count::new(self.client, _where) + } + pub fn find_raw( + self, + ) -> ::prisma_client_rust::FindRaw<'a, Types, T> { + ::prisma_client_rust::FindRaw::new(self.client) + } + pub fn aggregate_raw( + self, + ) -> ::prisma_client_rust::AggregateRaw<'a, Types, T> { + ::prisma_client_rust::AggregateRaw::new(self.client) + } + } +} +pub mod book { + + use super::*; + pub const NAME: &str = "Book"; + pub mod id { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, UniqueWhereParam, WhereParam, + }; + pub const NAME: &str = "id"; + pub struct Set(pub i32); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetId(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::Id(v) + } + } + pub fn set>(value: i32) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::Id(direction) + } + pub fn equals>(value: i32) -> T { + UniqueWhereParam::IdEquals(value).into() + } + ::prisma_client_rust::scalar_where_param_fns!(_prisma::read_filters::IntFilter, Id, { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: i32) -> Lt; + fn lte(_: i32) -> Lte; + fn gt(_: i32) -> Gt; + fn gte(_: i32) -> Gte; + fn not(_: i32) -> Not; + }); + pub fn increment(value: i32) -> SetParam { + SetParam::IncrementId(value) + } + pub fn decrement(value: i32) -> SetParam { + SetParam::DecrementId(value) + } + pub fn multiply(value: i32) -> SetParam { + SetParam::MultiplyId(value) + } + pub fn divide(value: i32) -> SetParam { + SetParam::DivideId(value) + } + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Id(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::SourceId(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod remote_id { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "remote_id"; + pub struct Set(pub i32); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetRemoteId(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::RemoteId(v) + } + } + pub fn set>(value: i32) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::RemoteId(direction) + } + pub fn equals(value: i32) -> WhereParam { + WhereParam::RemoteId(_prisma::read_filters::IntFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!( + _prisma::read_filters::IntFilter, + RemoteId, + { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: i32) -> Lt; + fn lte(_: i32) -> Lte; + fn gt(_: i32) -> Gt; + fn gte(_: i32) -> Gte; + fn not(_: i32) -> Not; + } + ); + pub fn increment(value: i32) -> SetParam { + SetParam::IncrementRemoteId(value) + } + pub fn decrement(value: i32) -> SetParam { + SetParam::DecrementRemoteId(value) + } + pub fn multiply(value: i32) -> SetParam { + SetParam::MultiplyRemoteId(value) + } + pub fn divide(value: i32) -> SetParam { + SetParam::DivideRemoteId(value) + } + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::RemoteId(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Title(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod lang { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "lang"; + pub struct Set(pub String); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetLang(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::Lang(v) + } + } + pub fn set>(value: String) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::Lang(direction) + } + pub fn equals(value: String) -> WhereParam { + WhereParam::Lang(_prisma::read_filters::StringFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!(_prisma::read_filters::StringFilter, Lang, { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: String) -> Lt; + fn lte(_: String) -> Lte; + fn gt(_: String) -> Gt; + fn gte(_: String) -> Gte; + fn contains(_: String) -> Contains; + fn starts_with(_: String) -> StartsWith; + fn ends_with(_: String) -> EndsWith; + fn mode(_: super::super::QueryMode) -> Mode; + fn not(_: String) -> Not; + }); + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Lang(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::FileType(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod uploaded { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "uploaded"; + pub struct Set( + pub ::prisma_client_rust::chrono::DateTime<::prisma_client_rust::chrono::FixedOffset>, + ); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetUploaded(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::Uploaded(v) + } + } + pub fn set>( + value: ::prisma_client_rust::chrono::DateTime< + ::prisma_client_rust::chrono::FixedOffset, + >, + ) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::Uploaded(direction) + } + pub fn equals( + value: ::prisma_client_rust::chrono::DateTime< + ::prisma_client_rust::chrono::FixedOffset, + >, + ) -> WhereParam { + WhereParam::Uploaded(_prisma::read_filters::DateTimeFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!( + _prisma::read_filters::DateTimeFilter, + Uploaded, + { + fn in_vec( + _: Vec< + ::prisma_client_rust::chrono::DateTime< + ::prisma_client_rust::chrono::FixedOffset, + >, + >, + ) -> InVec; + fn not_in_vec( + _: Vec< + ::prisma_client_rust::chrono::DateTime< + ::prisma_client_rust::chrono::FixedOffset, + >, + >, + ) -> NotInVec; + fn lt( + _: ::prisma_client_rust::chrono::DateTime< + ::prisma_client_rust::chrono::FixedOffset, + >, + ) -> Lt; + fn lte( + _: ::prisma_client_rust::chrono::DateTime< + ::prisma_client_rust::chrono::FixedOffset, + >, + ) -> Lte; + fn gt( + _: ::prisma_client_rust::chrono::DateTime< + ::prisma_client_rust::chrono::FixedOffset, + >, + ) -> Gt; + fn gte( + _: ::prisma_client_rust::chrono::DateTime< + ::prisma_client_rust::chrono::FixedOffset, + >, + ) -> Gte; + fn not( + _: ::prisma_client_rust::chrono::DateTime< + ::prisma_client_rust::chrono::FixedOffset, + >, + ) -> Not; + } + ); + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Uploaded(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::IsDeleted(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod pages { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "pages"; + pub struct Set(pub Option); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetPages(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::Pages(v) + } + } + pub fn set>(value: Option) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::Pages(direction) + } + pub fn equals(value: Option) -> WhereParam { + WhereParam::Pages(_prisma::read_filters::IntNullableFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!( + _prisma::read_filters::IntNullableFilter, + Pages, + { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: i32) -> Lt; + fn lte(_: i32) -> Lte; + fn gt(_: i32) -> Gt; + fn gte(_: i32) -> Gte; + fn not(_: Option) -> Not; + } + ); + pub fn increment(value: i32) -> SetParam { + SetParam::IncrementPages(value) + } + pub fn decrement(value: i32) -> SetParam { + SetParam::DecrementPages(value) + } + pub fn multiply(value: i32) -> SetParam { + SetParam::MultiplyPages(value) + } + pub fn divide(value: i32) -> SetParam { + SetParam::DividePages(value) + } + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Pages(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Source(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let selections = match self { + Self::Select(selections) => { + selections.into_iter().map(|s| s.to_selection()).collect() + } + Self::Include(selections) => { + let mut nested_selections = vec![]; + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + } + Self::Fetch => { + ::scalar_selections() + } + }; + ::prisma_client_rust::Selection::new("source", None, [], selections) + } + pub fn select(nested_selections: Vec) -> Self { + Self::Select(nested_selections) + } + pub fn include(nested_selections: Vec) -> Self { + Self::Include(nested_selections) + } + } + } + pub mod book_annotation { + use super::super::*; + + use super::{ + SetParam, WhereParam, WithParam, + }; + pub const NAME: &str = "book_annotation"; + pub struct Fetch(pub book_annotation::UniqueArgs); + impl Fetch { + pub fn with(mut self, params: impl Into) -> Self { + self.0 = self.0.with(params.into()); + self + } + } + impl From for WithParam { + fn from(Fetch(v): Fetch) -> Self { + WithParam::BookAnnotation(v) + } + } + pub fn fetch() -> Fetch { + Fetch(book_annotation::UniqueArgs::new()) + } + pub struct Connect(book_annotation::UniqueWhereParam); + impl From for SetParam { + fn from(Connect(v): Connect) -> Self { + Self::ConnectBookAnnotation(v) + } + } + pub fn connect>(value: book_annotation::UniqueWhereParam) -> T { + Connect(value).into() + } + pub fn disconnect() -> SetParam { + SetParam::DisconnectBookAnnotation + } + pub fn is_null() -> WhereParam { + WhereParam::BookAnnotationIsNull + } + pub fn is(value: Vec) -> WhereParam { + WhereParam::BookAnnotationIs(value) + } + pub fn is_not(value: Vec) -> WhereParam { + WhereParam::BookAnnotationIsNot(value) + } + pub enum Include { + Select(Vec), + Include(Vec), + Fetch, + } + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::BookAnnotation(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let selections = match self { Self :: Select (selections) => { selections . into_iter () . map (| s | s . to_selection ()) . collect () } , Self :: Include (selections) => { let mut nested_selections = < book_annotation :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections () ; nested_selections . extend (selections . into_iter () . map (| s | s . to_selection ())) ; nested_selections } , Self :: Fetch => { < book_annotation :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections () } } ; + ::prisma_client_rust::Selection::new("book_annotation", None, [], selections) + } + pub fn select(nested_selections: Vec) -> Self { + Self::Select(nested_selections) + } + pub fn include(nested_selections: Vec) -> Self { + Self::Include(nested_selections) + } + } + pub enum Select { + Select(Vec), + Include(Vec), + Fetch, + } + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::BookAuthors(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let (args, selections) = match self { + Self::Select(args, selections) => ( + args.to_graphql().0, + selections.into_iter().map(|s| s.to_selection()).collect(), + ), + Self::Include(args, selections) => (args.to_graphql().0, { + let mut nested_selections = vec![]; + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + }), + Self::Fetch(args) => ( + args.to_graphql().0, + ::scalar_selections( + ), + ), + }; + ::prisma_client_rust::Selection::new(NAME, None, args, selections) + } + pub fn select( + args: book_author::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Select(args, nested_selections) + } + pub fn include( + args: book_author::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Include(args, nested_selections) + } + } + } + pub mod book_genres { + use super::super::*; + + use super::{ + SetParam, WhereParam, WithParam, + }; + pub const NAME: &str = "book_genres"; + pub struct Fetch(pub book_genre::ManyArgs); + impl Fetch { + pub fn with(mut self, params: impl Into) -> Self { + self.0 = self.0.with(params.into()); + self + } + pub fn order_by(mut self, param: book_genre::OrderByParam) -> Self { + self.0 = self.0.order_by(param); + self + } + pub fn skip(mut self, value: i64) -> Self { + self.0 = self.0.skip(value); + self + } + pub fn take(mut self, value: i64) -> Self { + self.0 = self.0.take(value); + self + } + pub fn cursor(mut self, value: book_genre::UniqueWhereParam) -> Self { + self.0 = self.0.cursor(value); + self + } + } + impl From for WithParam { + fn from(Fetch(v): Fetch) -> Self { + WithParam::BookGenres(v) + } + } + pub fn fetch(params: Vec) -> Fetch { + Fetch(book_genre::ManyArgs::new(params)) + } + pub struct Connect(pub Vec); + impl From for SetParam { + fn from(Connect(v): Connect) -> Self { + Self::ConnectBookGenres(v) + } + } + pub fn connect>(params: Vec) -> T { + Connect(params).into() + } + pub fn disconnect(params: Vec) -> SetParam { + SetParam::DisconnectBookGenres(params) + } + pub fn set(params: Vec) -> SetParam { + SetParam::SetBookGenres(params) + } + pub fn some(value: Vec) -> WhereParam { + WhereParam::BookGenresSome(value) + } + pub fn every(value: Vec) -> WhereParam { + WhereParam::BookGenresEvery(value) + } + pub fn none(value: Vec) -> WhereParam { + WhereParam::BookGenresNone(value) + } + pub enum Include { + Select(book_genre::ManyArgs, Vec), + Include(book_genre::ManyArgs, Vec), + Fetch(book_genre::ManyArgs), + } + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::BookGenres(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let (args, selections) = match self { + Self::Select(args, selections) => ( + args.to_graphql().0, + selections.into_iter().map(|s| s.to_selection()).collect(), + ), + Self::Include(args, selections) => (args.to_graphql().0, { + let mut nested_selections = < book_genre :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections () ; + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + }), + Self::Fetch(args) => ( + args.to_graphql().0, + ::scalar_selections( + ), + ), + }; + ::prisma_client_rust::Selection::new(NAME, None, args, selections) + } + pub fn select( + args: book_genre::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Select(args, nested_selections) + } + pub fn include( + args: book_genre::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Include(args, nested_selections) + } + } + pub enum Select { + Select(book_genre::ManyArgs, Vec), + Include(book_genre::ManyArgs, Vec), + Fetch(book_genre::ManyArgs), + } + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::BookSequences(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let (args , selections) = match self { Self :: Select (args , selections) => (args . to_graphql () . 0 , selections . into_iter () . map (| s | s . to_selection ()) . collect ()) , Self :: Include (args , selections) => (args . to_graphql () . 0 , { let mut nested_selections = vec ! [] ; nested_selections . extend (selections . into_iter () . map (| s | s . to_selection ())) ; nested_selections }) , Self :: Fetch (args) => (args . to_graphql () . 0 , < book_sequence :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections ()) } ; + ::prisma_client_rust::Selection::new(NAME, None, args, selections) + } + pub fn select( + args: book_sequence::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Select(args, nested_selections) + } + pub fn include( + args: book_sequence::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Include(args, nested_selections) + } + } + } + pub mod translations { + use super::super::*; + + use super::{ + SetParam, WhereParam, WithParam, + }; + pub const NAME: &str = "translations"; + pub struct Fetch(pub translator::ManyArgs); + impl Fetch { + pub fn with(mut self, params: impl Into) -> Self { + self.0 = self.0.with(params.into()); + self + } + pub fn order_by(mut self, param: translator::OrderByParam) -> Self { + self.0 = self.0.order_by(param); + self + } + pub fn skip(mut self, value: i64) -> Self { + self.0 = self.0.skip(value); + self + } + pub fn take(mut self, value: i64) -> Self { + self.0 = self.0.take(value); + self + } + pub fn cursor(mut self, value: translator::UniqueWhereParam) -> Self { + self.0 = self.0.cursor(value); + self + } + } + impl From for WithParam { + fn from(Fetch(v): Fetch) -> Self { + WithParam::Translations(v) + } + } + pub fn fetch(params: Vec) -> Fetch { + Fetch(translator::ManyArgs::new(params)) + } + pub struct Connect(pub Vec); + impl From for SetParam { + fn from(Connect(v): Connect) -> Self { + Self::ConnectTranslations(v) + } + } + pub fn connect>(params: Vec) -> T { + Connect(params).into() + } + pub fn disconnect(params: Vec) -> SetParam { + SetParam::DisconnectTranslations(params) + } + pub fn set(params: Vec) -> SetParam { + SetParam::SetTranslations(params) + } + pub fn some(value: Vec) -> WhereParam { + WhereParam::TranslationsSome(value) + } + pub fn every(value: Vec) -> WhereParam { + WhereParam::TranslationsEvery(value) + } + pub fn none(value: Vec) -> WhereParam { + WhereParam::TranslationsNone(value) + } + pub enum Include { + Select(translator::ManyArgs, Vec), + Include(translator::ManyArgs, Vec), + Fetch(translator::ManyArgs), + } + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Translations(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let (args, selections) = match self { + Self::Select(args, selections) => ( + args.to_graphql().0, + selections.into_iter().map(|s| s.to_selection()).collect(), + ), + Self::Include(args, selections) => (args.to_graphql().0, { + let mut nested_selections = < translator :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections () ; + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + }), + Self::Fetch(args) => ( + args.to_graphql().0, + ::scalar_selections( + ), + ), + }; + ::prisma_client_rust::Selection::new(NAME, None, args, selections) + } + pub fn select( + args: translator::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Select(args, nested_selections) + } + pub fn include( + args: translator::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Include(args, nested_selections) + } + } + pub enum Select { + Select(translator::ManyArgs, Vec), + Include(translator::ManyArgs, Vec), + Fetch(translator::ManyArgs), + } + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Id(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod source_id { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "source_id"; + pub struct Set(pub i32); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetSourceId(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::SourceId(v) + } + } + pub fn set>(value: i32) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::SourceId(direction) + } + pub fn equals(value: i32) -> WhereParam { + WhereParam::SourceId(_prisma::read_filters::IntFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!( + _prisma::read_filters::IntFilter, + SourceId, + { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: i32) -> Lt; + fn lte(_: i32) -> Lte; + fn gt(_: i32) -> Gt; + fn gte(_: i32) -> Gte; + fn not(_: i32) -> Not; + } + ); + pub fn increment(value: i32) -> SetParam { + SetParam::IncrementSourceId(value) + } + pub fn decrement(value: i32) -> SetParam { + SetParam::DecrementSourceId(value) + } + pub fn multiply(value: i32) -> SetParam { + SetParam::MultiplySourceId(value) + } + pub fn divide(value: i32) -> SetParam { + SetParam::DivideSourceId(value) + } + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::SourceId(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::RemoteId(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod code { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "code"; + pub struct Set(pub String); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetCode(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::Code(v) + } + } + pub fn set>(value: String) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::Code(direction) + } + pub fn equals(value: String) -> WhereParam { + WhereParam::Code(_prisma::read_filters::StringFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!(_prisma::read_filters::StringFilter, Code, { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: String) -> Lt; + fn lte(_: String) -> Lte; + fn gt(_: String) -> Gt; + fn gte(_: String) -> Gte; + fn contains(_: String) -> Contains; + fn starts_with(_: String) -> StartsWith; + fn ends_with(_: String) -> EndsWith; + fn mode(_: super::super::QueryMode) -> Mode; + fn not(_: String) -> Not; + }); + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Code(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Description(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod meta { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "meta"; + pub struct Set(pub String); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetMeta(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::Meta(v) + } + } + pub fn set>(value: String) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::Meta(direction) + } + pub fn equals(value: String) -> WhereParam { + WhereParam::Meta(_prisma::read_filters::StringFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!(_prisma::read_filters::StringFilter, Meta, { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: String) -> Lt; + fn lte(_: String) -> Lte; + fn gt(_: String) -> Gt; + fn gte(_: String) -> Gte; + fn contains(_: String) -> Contains; + fn starts_with(_: String) -> StartsWith; + fn ends_with(_: String) -> EndsWith; + fn mode(_: super::super::QueryMode) -> Mode; + fn not(_: String) -> Not; + }); + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Meta(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Source(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let selections = match self { + Self::Select(selections) => { + selections.into_iter().map(|s| s.to_selection()).collect() + } + Self::Include(selections) => { + let mut nested_selections = vec![]; + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + } + Self::Fetch => { + ::scalar_selections() + } + }; + ::prisma_client_rust::Selection::new("source", None, [], selections) + } + pub fn select(nested_selections: Vec) -> Self { + Self::Select(nested_selections) + } + pub fn include(nested_selections: Vec) -> Self { + Self::Include(nested_selections) + } + } + } + pub mod book_genres { + use super::super::*; + + use super::{ + SetParam, WhereParam, WithParam, + }; + pub const NAME: &str = "book_genres"; + pub struct Fetch(pub book_genre::ManyArgs); + impl Fetch { + pub fn with(mut self, params: impl Into) -> Self { + self.0 = self.0.with(params.into()); + self + } + pub fn order_by(mut self, param: book_genre::OrderByParam) -> Self { + self.0 = self.0.order_by(param); + self + } + pub fn skip(mut self, value: i64) -> Self { + self.0 = self.0.skip(value); + self + } + pub fn take(mut self, value: i64) -> Self { + self.0 = self.0.take(value); + self + } + pub fn cursor(mut self, value: book_genre::UniqueWhereParam) -> Self { + self.0 = self.0.cursor(value); + self + } + } + impl From for WithParam { + fn from(Fetch(v): Fetch) -> Self { + WithParam::BookGenres(v) + } + } + pub fn fetch(params: Vec) -> Fetch { + Fetch(book_genre::ManyArgs::new(params)) + } + pub struct Connect(pub Vec); + impl From for SetParam { + fn from(Connect(v): Connect) -> Self { + Self::ConnectBookGenres(v) + } + } + pub fn connect>(params: Vec) -> T { + Connect(params).into() + } + pub fn disconnect(params: Vec) -> SetParam { + SetParam::DisconnectBookGenres(params) + } + pub fn set(params: Vec) -> SetParam { + SetParam::SetBookGenres(params) + } + pub fn some(value: Vec) -> WhereParam { + WhereParam::BookGenresSome(value) + } + pub fn every(value: Vec) -> WhereParam { + WhereParam::BookGenresEvery(value) + } + pub fn none(value: Vec) -> WhereParam { + WhereParam::BookGenresNone(value) + } + pub enum Include { + Select(book_genre::ManyArgs, Vec), + Include(book_genre::ManyArgs, Vec), + Fetch(book_genre::ManyArgs), + } + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::BookGenres(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let (args, selections) = match self { + Self::Select(args, selections) => ( + args.to_graphql().0, + selections.into_iter().map(|s| s.to_selection()).collect(), + ), + Self::Include(args, selections) => (args.to_graphql().0, { + let mut nested_selections = < book_genre :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections () ; + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + }), + Self::Fetch(args) => ( + args.to_graphql().0, + ::scalar_selections( + ), + ), + }; + ::prisma_client_rust::Selection::new(NAME, None, args, selections) + } + pub fn select( + args: book_genre::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Select(args, nested_selections) + } + pub fn include( + args: book_genre::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Include(args, nested_selections) + } + } + pub enum Select { + Select(book_genre::ManyArgs, Vec), + Include(book_genre::ManyArgs, Vec), + Fetch(book_genre::ManyArgs), + } + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Id(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod source_id { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "source_id"; + pub struct Set(pub i32); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetSourceId(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::SourceId(v) + } + } + pub fn set>(value: i32) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::SourceId(direction) + } + pub fn equals(value: i32) -> WhereParam { + WhereParam::SourceId(_prisma::read_filters::IntFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!( + _prisma::read_filters::IntFilter, + SourceId, + { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: i32) -> Lt; + fn lte(_: i32) -> Lte; + fn gt(_: i32) -> Gt; + fn gte(_: i32) -> Gte; + fn not(_: i32) -> Not; + } + ); + pub fn increment(value: i32) -> SetParam { + SetParam::IncrementSourceId(value) + } + pub fn decrement(value: i32) -> SetParam { + SetParam::DecrementSourceId(value) + } + pub fn multiply(value: i32) -> SetParam { + SetParam::MultiplySourceId(value) + } + pub fn divide(value: i32) -> SetParam { + SetParam::DivideSourceId(value) + } + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::SourceId(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::RemoteId(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod name { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "name"; + pub struct Set(pub String); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetName(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::Name(v) + } + } + pub fn set>(value: String) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::Name(direction) + } + pub fn equals(value: String) -> WhereParam { + WhereParam::Name(_prisma::read_filters::StringFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!(_prisma::read_filters::StringFilter, Name, { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: String) -> Lt; + fn lte(_: String) -> Lte; + fn gt(_: String) -> Gt; + fn gte(_: String) -> Gte; + fn contains(_: String) -> Contains; + fn starts_with(_: String) -> StartsWith; + fn ends_with(_: String) -> EndsWith; + fn mode(_: super::super::QueryMode) -> Mode; + fn not(_: String) -> Not; + }); + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Name(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Source(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let selections = match self { + Self::Select(selections) => { + selections.into_iter().map(|s| s.to_selection()).collect() + } + Self::Include(selections) => { + let mut nested_selections = vec![]; + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + } + Self::Fetch => { + ::scalar_selections() + } + }; + ::prisma_client_rust::Selection::new("source", None, [], selections) + } + pub fn select(nested_selections: Vec) -> Self { + Self::Select(nested_selections) + } + pub fn include(nested_selections: Vec) -> Self { + Self::Include(nested_selections) + } + } + } + pub mod book_sequences { + use super::super::*; + + use super::{ + SetParam, WhereParam, WithParam, + }; + pub const NAME: &str = "book_sequences"; + pub struct Fetch(pub book_sequence::ManyArgs); + impl Fetch { + pub fn with(mut self, params: impl Into) -> Self { + self.0 = self.0.with(params.into()); + self + } + pub fn order_by(mut self, param: book_sequence::OrderByParam) -> Self { + self.0 = self.0.order_by(param); + self + } + pub fn skip(mut self, value: i64) -> Self { + self.0 = self.0.skip(value); + self + } + pub fn take(mut self, value: i64) -> Self { + self.0 = self.0.take(value); + self + } + pub fn cursor(mut self, value: book_sequence::UniqueWhereParam) -> Self { + self.0 = self.0.cursor(value); + self + } + } + impl From for WithParam { + fn from(Fetch(v): Fetch) -> Self { + WithParam::BookSequences(v) + } + } + pub fn fetch(params: Vec) -> Fetch { + Fetch(book_sequence::ManyArgs::new(params)) + } + pub struct Connect(pub Vec); + impl From for SetParam { + fn from(Connect(v): Connect) -> Self { + Self::ConnectBookSequences(v) + } + } + pub fn connect>(params: Vec) -> T { + Connect(params).into() + } + pub fn disconnect(params: Vec) -> SetParam { + SetParam::DisconnectBookSequences(params) + } + pub fn set(params: Vec) -> SetParam { + SetParam::SetBookSequences(params) + } + pub fn some(value: Vec) -> WhereParam { + WhereParam::BookSequencesSome(value) + } + pub fn every(value: Vec) -> WhereParam { + WhereParam::BookSequencesEvery(value) + } + pub fn none(value: Vec) -> WhereParam { + WhereParam::BookSequencesNone(value) + } + pub enum Include { + Select(book_sequence::ManyArgs, Vec), + Include(book_sequence::ManyArgs, Vec), + Fetch(book_sequence::ManyArgs), + } + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::BookSequences(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let (args , selections) = match self { Self :: Select (args , selections) => (args . to_graphql () . 0 , selections . into_iter () . map (| s | s . to_selection ()) . collect ()) , Self :: Include (args , selections) => (args . to_graphql () . 0 , { let mut nested_selections = < book_sequence :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections () ; nested_selections . extend (selections . into_iter () . map (| s | s . to_selection ())) ; nested_selections }) , Self :: Fetch (args) => (args . to_graphql () . 0 , < book_sequence :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections ()) } ; + ::prisma_client_rust::Selection::new(NAME, None, args, selections) + } + pub fn select( + args: book_sequence::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Select(args, nested_selections) + } + pub fn include( + args: book_sequence::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Include(args, nested_selections) + } + } + pub enum Select { + Select(book_sequence::ManyArgs, Vec), + Include(book_sequence::ManyArgs, Vec), + Fetch(book_sequence::ManyArgs), + } + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Id(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod name { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, UniqueWhereParam, WhereParam, + }; + pub const NAME: &str = "name"; + pub struct Set(pub String); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetName(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::Name(v) + } + } + pub fn set>(value: String) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::Name(direction) + } + pub fn equals>(value: String) -> T { + UniqueWhereParam::NameEquals(value).into() + } + ::prisma_client_rust::scalar_where_param_fns!(_prisma::read_filters::StringFilter, Name, { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: String) -> Lt; + fn lte(_: String) -> Lte; + fn gt(_: String) -> Gt; + fn gte(_: String) -> Gte; + fn contains(_: String) -> Contains; + fn starts_with(_: String) -> StartsWith; + fn ends_with(_: String) -> EndsWith; + fn mode(_: super::super::QueryMode) -> Mode; + fn not(_: String) -> Not; + }); + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Name(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Authors(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let (args, selections) = match self { + Self::Select(args, selections) => ( + args.to_graphql().0, + selections.into_iter().map(|s| s.to_selection()).collect(), + ), + Self::Include(args, selections) => (args.to_graphql().0, { + let mut nested_selections = vec![]; + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + }), + Self::Fetch(args) => ( + args.to_graphql().0, + ::scalar_selections(), + ), + }; + ::prisma_client_rust::Selection::new(NAME, None, args, selections) + } + pub fn select( + args: author::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Select(args, nested_selections) + } + pub fn include( + args: author::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Include(args, nested_selections) + } + } + } + pub mod books { + use super::super::*; + + use super::{ + SetParam, WhereParam, WithParam, + }; + pub const NAME: &str = "books"; + pub struct Fetch(pub book::ManyArgs); + impl Fetch { + pub fn with(mut self, params: impl Into) -> Self { + self.0 = self.0.with(params.into()); + self + } + pub fn order_by(mut self, param: book::OrderByParam) -> Self { + self.0 = self.0.order_by(param); + self + } + pub fn skip(mut self, value: i64) -> Self { + self.0 = self.0.skip(value); + self + } + pub fn take(mut self, value: i64) -> Self { + self.0 = self.0.take(value); + self + } + pub fn cursor(mut self, value: book::UniqueWhereParam) -> Self { + self.0 = self.0.cursor(value); + self + } + } + impl From for WithParam { + fn from(Fetch(v): Fetch) -> Self { + WithParam::Books(v) + } + } + pub fn fetch(params: Vec) -> Fetch { + Fetch(book::ManyArgs::new(params)) + } + pub struct Connect(pub Vec); + impl From for SetParam { + fn from(Connect(v): Connect) -> Self { + Self::ConnectBooks(v) + } + } + pub fn connect>(params: Vec) -> T { + Connect(params).into() + } + pub fn disconnect(params: Vec) -> SetParam { + SetParam::DisconnectBooks(params) + } + pub fn set(params: Vec) -> SetParam { + SetParam::SetBooks(params) + } + pub fn some(value: Vec) -> WhereParam { + WhereParam::BooksSome(value) + } + pub fn every(value: Vec) -> WhereParam { + WhereParam::BooksEvery(value) + } + pub fn none(value: Vec) -> WhereParam { + WhereParam::BooksNone(value) + } + pub enum Include { + Select(book::ManyArgs, Vec), + Include(book::ManyArgs, Vec), + Fetch(book::ManyArgs), + } + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Books(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let (args, selections) = match self { + Self::Select(args, selections) => ( + args.to_graphql().0, + selections.into_iter().map(|s| s.to_selection()).collect(), + ), + Self::Include(args, selections) => (args.to_graphql().0, { + let mut nested_selections = + ::scalar_selections(); + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + }), + Self::Fetch(args) => ( + args.to_graphql().0, + ::scalar_selections(), + ), + }; + ::prisma_client_rust::Selection::new(NAME, None, args, selections) + } + pub fn select(args: book::ManyArgs, nested_selections: Vec) -> Self { + Self::Select(args, nested_selections) + } + pub fn include( + args: book::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Include(args, nested_selections) + } + } + pub enum Select { + Select(book::ManyArgs, Vec), + Include(book::ManyArgs, Vec), + Fetch(book::ManyArgs), + } + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Genres(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let (args, selections) = match self { + Self::Select(args, selections) => ( + args.to_graphql().0, + selections.into_iter().map(|s| s.to_selection()).collect(), + ), + Self::Include(args, selections) => (args.to_graphql().0, { + let mut nested_selections = vec![]; + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + }), + Self::Fetch(args) => ( + args.to_graphql().0, + ::scalar_selections(), + ), + }; + ::prisma_client_rust::Selection::new(NAME, None, args, selections) + } + pub fn select( + args: genre::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Select(args, nested_selections) + } + pub fn include( + args: genre::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Include(args, nested_selections) + } + } + } + pub mod sequences { + use super::super::*; + + use super::{ + SetParam, WhereParam, WithParam, + }; + pub const NAME: &str = "sequences"; + pub struct Fetch(pub sequence::ManyArgs); + impl Fetch { + pub fn with(mut self, params: impl Into) -> Self { + self.0 = self.0.with(params.into()); + self + } + pub fn order_by(mut self, param: sequence::OrderByParam) -> Self { + self.0 = self.0.order_by(param); + self + } + pub fn skip(mut self, value: i64) -> Self { + self.0 = self.0.skip(value); + self + } + pub fn take(mut self, value: i64) -> Self { + self.0 = self.0.take(value); + self + } + pub fn cursor(mut self, value: sequence::UniqueWhereParam) -> Self { + self.0 = self.0.cursor(value); + self + } + } + impl From for WithParam { + fn from(Fetch(v): Fetch) -> Self { + WithParam::Sequences(v) + } + } + pub fn fetch(params: Vec) -> Fetch { + Fetch(sequence::ManyArgs::new(params)) + } + pub struct Connect(pub Vec); + impl From for SetParam { + fn from(Connect(v): Connect) -> Self { + Self::ConnectSequences(v) + } + } + pub fn connect>(params: Vec) -> T { + Connect(params).into() + } + pub fn disconnect(params: Vec) -> SetParam { + SetParam::DisconnectSequences(params) + } + pub fn set(params: Vec) -> SetParam { + SetParam::SetSequences(params) + } + pub fn some(value: Vec) -> WhereParam { + WhereParam::SequencesSome(value) + } + pub fn every(value: Vec) -> WhereParam { + WhereParam::SequencesEvery(value) + } + pub fn none(value: Vec) -> WhereParam { + WhereParam::SequencesNone(value) + } + pub enum Include { + Select(sequence::ManyArgs, Vec), + Include(sequence::ManyArgs, Vec), + Fetch(sequence::ManyArgs), + } + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Sequences(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let (args, selections) = match self { + Self::Select(args, selections) => ( + args.to_graphql().0, + selections.into_iter().map(|s| s.to_selection()).collect(), + ), + Self::Include(args, selections) => (args.to_graphql().0, { + let mut nested_selections = < sequence :: Types as :: prisma_client_rust :: ModelTypes > :: scalar_selections () ; + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + }), + Self::Fetch(args) => ( + args.to_graphql().0, + ::scalar_selections(), + ), + }; + ::prisma_client_rust::Selection::new(NAME, None, args, selections) + } + pub fn select( + args: sequence::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Select(args, nested_selections) + } + pub fn include( + args: sequence::ManyArgs, + nested_selections: Vec, + ) -> Self { + Self::Include(args, nested_selections) + } + } + pub enum Select { + Select(sequence::ManyArgs, Vec), + Include(sequence::ManyArgs, Vec), + Fetch(sequence::ManyArgs), + } + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Id(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod position { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "position"; + pub struct Set(pub i32); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetPosition(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::Position(v) + } + } + pub fn set>(value: i32) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::Position(direction) + } + pub fn equals(value: i32) -> WhereParam { + WhereParam::Position(_prisma::read_filters::IntFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!( + _prisma::read_filters::IntFilter, + Position, + { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: i32) -> Lt; + fn lte(_: i32) -> Lte; + fn gt(_: i32) -> Gt; + fn gte(_: i32) -> Gte; + fn not(_: i32) -> Not; + } + ); + pub fn increment(value: i32) -> SetParam { + SetParam::IncrementPosition(value) + } + pub fn decrement(value: i32) -> SetParam { + SetParam::DecrementPosition(value) + } + pub fn multiply(value: i32) -> SetParam { + SetParam::MultiplyPosition(value) + } + pub fn divide(value: i32) -> SetParam { + SetParam::DividePosition(value) + } + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Position(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::AuthorId(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + } + pub mod book_id { + use super::super::*; + + use super::{ + OrderByParam, SetParam, UncheckedSetParam, WhereParam, + }; + pub const NAME: &str = "book_id"; + pub struct Set(pub i32); + impl From for SetParam { + fn from(Set(v): Set) -> Self { + Self::SetBookId(v) + } + } + impl From for UncheckedSetParam { + fn from(Set(v): Set) -> Self { + Self::BookId(v) + } + } + pub fn set>(value: i32) -> T { + Set(value).into() + } + pub fn order(direction: ::prisma_client_rust::Direction) -> OrderByParam { + OrderByParam::BookId(direction) + } + pub fn equals(value: i32) -> WhereParam { + WhereParam::BookId(_prisma::read_filters::IntFilter::Equals(value)) + } + ::prisma_client_rust::scalar_where_param_fns!(_prisma::read_filters::IntFilter, BookId, { + fn in_vec(_: Vec) -> InVec; + fn not_in_vec(_: Vec) -> NotInVec; + fn lt(_: i32) -> Lt; + fn lte(_: i32) -> Lte; + fn gt(_: i32) -> Gt; + fn gte(_: i32) -> Gte; + fn not(_: i32) -> Not; + }); + pub fn increment(value: i32) -> SetParam { + SetParam::IncrementBookId(value) + } + pub fn decrement(value: i32) -> SetParam { + SetParam::DecrementBookId(value) + } + pub fn multiply(value: i32) -> SetParam { + SetParam::MultiplyBookId(value) + } + pub fn divide(value: i32) -> SetParam { + SetParam::DivideBookId(value) + } + pub struct Include; + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::BookId(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + ::prisma_client_rust::sel(NAME) + } + } + pub struct Select; + impl From for super::SelectParam { + fn from(val: Select) -> Self { + super::SelectParam::Author(val) + } + } + impl Select { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let selections = match self { + Self::Select(selections) => { + selections.into_iter().map(|s| s.to_selection()).collect() + } + Self::Include(selections) => { + let mut nested_selections = vec![]; + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + } + Self::Fetch => { + ::scalar_selections() + } + }; + ::prisma_client_rust::Selection::new("author", None, [], selections) + } + pub fn select(nested_selections: Vec) -> Self { + Self::Select(nested_selections) + } + pub fn include(nested_selections: Vec) -> Self { + Self::Include(nested_selections) + } + } + } + pub mod book { + use super::super::*; + + use super::{ + SetParam, WhereParam, WithParam, + }; + pub const NAME: &str = "book"; + pub struct Fetch(pub book::UniqueArgs); + impl Fetch { + pub fn with(mut self, params: impl Into) -> Self { + self.0 = self.0.with(params.into()); + self + } + } + impl From for WithParam { + fn from(Fetch(v): Fetch) -> Self { + WithParam::Book(v) + } + } + pub fn fetch() -> Fetch { + Fetch(book::UniqueArgs::new()) + } + pub struct Connect(book::UniqueWhereParam); + impl From for SetParam { + fn from(Connect(v): Connect) -> Self { + Self::ConnectBook(v) + } + } + pub fn connect>(value: book::UniqueWhereParam) -> T { + Connect(value).into() + } + pub fn is(value: Vec) -> WhereParam { + WhereParam::BookIs(value) + } + pub fn is_not(value: Vec) -> WhereParam { + WhereParam::BookIsNot(value) + } + pub enum Include { + Select(Vec), + Include(Vec), + Fetch, + } + impl From for super::IncludeParam { + fn from(val: Include) -> Self { + super::IncludeParam::Book(val) + } + } + impl Include { + pub fn to_selection(self) -> ::prisma_client_rust::Selection { + let selections = match self { + Self::Select(selections) => { + selections.into_iter().map(|s| s.to_selection()).collect() + } + Self::Include(selections) => { + let mut nested_selections = + ::scalar_selections(); + nested_selections.extend(selections.into_iter().map(|s| s.to_selection())); + nested_selections + } + Self::Fetch => { + ::scalar_selections() + } + }; + ::prisma_client_rust::Selection::new("book", None, [], selections) + } + pub fn select(nested_selections: Vec) -> Self { + Self::Select(nested_selections) + } + pub fn include(nested_selections: Vec) -> Self { + Self::Include(nested_selections) + } + } + pub enum Select { + Select(Vec), + Include(Vec), + Fetch, + } + impl From