diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index bc3a39ce3c..87aced3408 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -71,6 +71,7 @@ repos: args: - --maxkb=768 - id: check-ast + exclude: tests/runtimes/python/py_fail/.*\.py - id: check-json exclude: .vscode/.*\.json - id: check-toml @@ -137,8 +138,12 @@ repos: rev: "v0.5.1" hooks: - id: ruff + exclude: tests/runtimes/python/py_fail/.*\.py - id: ruff-format - exclude: "tests/metagen/typegraphs/sample/py/client.py" + exclude: (?x)( + tests/metagen/typegraphs/sample/py/client.py"| + tests/runtimes/python/py_fail/.*\.py + ) - repo: https://github.com/commitizen-tools/commitizen rev: v3.27.0 hooks: diff --git a/Cargo.lock b/Cargo.lock index e9c137b78b..0880f02b1b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1591,7 +1591,7 @@ dependencies = [ [[package]] name = "common" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" dependencies = [ "anyhow", "async-trait", @@ -5078,6 +5078,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "getopts" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" +dependencies = [ + "unicode-width", +] + [[package]] name = "getrandom" version = "0.1.16" @@ -6338,6 +6347,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.12.1" @@ -6561,6 +6579,12 @@ dependencies = [ "urlencoding", ] +[[package]] +name = "lalrpop-util" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" + [[package]] name = "lazy-regex" version = "3.1.0" @@ -6925,6 +6949,64 @@ dependencies = [ "libc", ] +[[package]] +name = "malachite" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5616515d632967cd329b6f6db96be9a03ea0b3a49cdbc45b0016803dad8a77b7" +dependencies = [ + "malachite-base", + "malachite-nz", + "malachite-q", +] + +[[package]] +name = "malachite-base" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46059721011b0458b7bd6d9179be5d0b60294281c23320c207adceaecc54d13b" +dependencies = [ + "hashbrown 0.14.5", + "itertools 0.11.0", + "libm", + "ryu", +] + +[[package]] +name = "malachite-bigint" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17703a19c80bbdd0b7919f0f104f3b0597f7de4fc4e90a477c15366a5ba03faa" +dependencies = [ + "derive_more 0.99.17", + "malachite", + "num-integer", + "num-traits", + "paste", +] + +[[package]] +name = "malachite-nz" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1503b27e825cabd1c3d0ff1e95a39fb2ec9eab6fd3da6cfa41aec7091d273e78" +dependencies = [ + "itertools 0.11.0", + "libm", + "malachite-base", +] + +[[package]] +name = "malachite-q" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a475503a70a3679dbe3b9b230a23622516742528ba614a7b2490f180ea9cb514" +dependencies = [ + "itertools 0.11.0", + "malachite-base", + "malachite-nz", +] + [[package]] name = "malloc_buf" version = "0.0.6" @@ -7062,7 +7144,7 @@ dependencies = [ [[package]] name = "meta-cli" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" dependencies = [ "actix", "assert_cmd", @@ -7129,7 +7211,7 @@ dependencies = [ [[package]] name = "metagen" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" dependencies = [ "color-eyre", "common", @@ -7152,7 +7234,7 @@ dependencies = [ [[package]] name = "metagen-client" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" dependencies = [ "derive_more 1.0.0", "futures", @@ -7503,7 +7585,7 @@ dependencies = [ [[package]] name = "mt_deno" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" dependencies = [ "anyhow", "deno", @@ -8623,6 +8705,16 @@ dependencies = [ "phf_shared", ] +[[package]] +name = "phf_codegen" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +dependencies = [ + "phf_generator", + "phf_shared", +] + [[package]] name = "phf_generator" version = "0.11.2" @@ -10314,6 +10406,63 @@ dependencies = [ "untrusted 0.9.0", ] +[[package]] +name = "rustpython-ast" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cdaf8ee5c1473b993b398c174641d3aa9da847af36e8d5eb8291930b72f31a5" +dependencies = [ + "is-macro", + "malachite-bigint", + "rustpython-parser-core", + "static_assertions", +] + +[[package]] +name = "rustpython-parser" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "868f724daac0caf9bd36d38caf45819905193a901e8f1c983345a68e18fb2abb" +dependencies = [ + "anyhow", + "is-macro", + "itertools 0.11.0", + "lalrpop-util", + "log", + "malachite-bigint", + "num-traits", + "phf", + "phf_codegen", + "rustc-hash 1.1.0", + "rustpython-ast", + "rustpython-parser-core", + "tiny-keccak", + "unic-emoji-char", + "unic-ucd-ident", + "unicode_names2", +] + +[[package]] +name = "rustpython-parser-core" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4b6c12fa273825edc7bccd9a734f0ad5ba4b8a2f4da5ff7efe946f066d0f4ad" +dependencies = [ + "is-macro", + "memchr", + "rustpython-parser-vendored", +] + +[[package]] +name = "rustpython-parser-vendored" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04fcea49a4630a3a5d940f4d514dc4f575ed63c14c3e3ed07146634aed7f67a6" +dependencies = [ + "memchr", + "once_cell", +] + [[package]] name = "rustversion" version = "1.0.17" @@ -10395,7 +10544,7 @@ dependencies = [ [[package]] name = "sample_client" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" dependencies = [ "metagen-client", "serde", @@ -10405,7 +10554,7 @@ dependencies = [ [[package]] name = "sample_client_upload" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" dependencies = [ "metagen-client", "serde", @@ -11578,7 +11727,7 @@ dependencies = [ [[package]] name = "substantial" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" dependencies = [ "anyhow", "chrono", @@ -13011,7 +13160,7 @@ dependencies = [ [[package]] name = "typegate" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" dependencies = [ "colored", "env_logger 0.11.0", @@ -13024,7 +13173,7 @@ dependencies = [ [[package]] name = "typegate_engine" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" dependencies = [ "anyhow", "base64 0.22.1", @@ -13048,6 +13197,7 @@ dependencies = [ "query-engine-metrics", "regex", "request-handlers", + "rustpython-parser", "schema-connector", "schema-core", "serde", @@ -13069,7 +13219,7 @@ dependencies = [ [[package]] name = "typegraph_core" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" dependencies = [ "anyhow", "color-eyre", @@ -13195,6 +13345,17 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" +[[package]] +name = "unic-emoji-char" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b07221e68897210270a38bde4babb655869637af0f69407f96053a34f76494d" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + [[package]] name = "unic-segment" version = "0.9.0" @@ -13313,6 +13474,28 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" +[[package]] +name = "unicode_names2" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1673eca9782c84de5f81b82e4109dcfb3611c8ba0d52930ec4a9478f547b2dd" +dependencies = [ + "phf", + "unicode_names2_generator", +] + +[[package]] +name = "unicode_names2_generator" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91e5b84611016120197efd7dc93ef76774f4e084cd73c9fb3ea4a86c570c56e" +dependencies = [ + "getopts", + "log", + "phf_codegen", + "rand 0.8.5", +] + [[package]] name = "unindent" version = "0.2.3" @@ -14897,7 +15080,7 @@ checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" [[package]] name = "xtask" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" dependencies = [ "anyhow", "clap", diff --git a/Cargo.toml b/Cargo.toml index 1b96270545..c596d4dd82 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,7 @@ members = [ "src/metagen-client-rs", "tests/metagen/typegraphs/sample/rs", "tests/metagen/typegraphs/sample/rs_upload", - ] +] exclude = [ "tests/runtimes/wasm_reflected/rust", @@ -24,7 +24,7 @@ exclude = [ ] [workspace.package] -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" edition = "2021" [workspace.dependencies] @@ -72,19 +72,19 @@ sha2 = "0.10.8" seahash = "4.1.0" # patterns -anyhow = "1.0.89" # FIXME: replace anyhow with eyre +anyhow = "1.0.89" # FIXME: replace anyhow with eyre color-eyre = "0.6.3" -eyre = "0.6.12" # NOTE: keep in sync with verison used by color-eyre +eyre = "0.6.12" # NOTE: keep in sync with verison used by color-eyre thiserror = "1.0.64" indoc = "2.0.5" unindent = "0.2.3" itertools = "0.13.0" -lazy_static = "1.5.0" # FIXME: replace with Lazy Cell +lazy_static = "1.5.0" # FIXME: replace with Lazy Cell crossbeam-channel = "0.5.13" enum_dispatch = "0.3.13" tap = "1.0.1" derive_more = { version = "1", features = ["from"] } -cached = "0.53.1" # FIXME: replace usage with a Lazy Cell + dashmap +cached = "0.53.1" # FIXME: replace usage with a Lazy Cell + dashmap garde = "0.20" paste = "1.0.15" @@ -119,11 +119,12 @@ indexmap = { version = "2.6.0", features = ["serde"] } semver = "1.0.23" dashmap = "6.1.0" connection-string = "0.2.0" -chrono = { version = "0.4.38", features = ["serde"] } +chrono = { version = "0.4.38", features = ["serde"] } tera = { version = "1.20", default-features = false } ordered-float = "4.3.0" graphql-parser = "0.4.0" uuid = "1.10.0" +rustpython-parser = "0.4.0" # wasm wasmtime = "25.0.2" @@ -153,7 +154,7 @@ tracing-unwrap = { version = "1.0.1", features = ["log-location"] } tracing-appender = "0.2.3" # async -futures = "=0.3.30" # pinned due to bug with .31 with zeromq (deno) +futures = "=0.3.30" # pinned due to bug with .31 with zeromq (deno) futures-concurrency = "7.6" futures-lite = "2.3" tokio = { version = "1", features = ["parking_lot"] } @@ -167,7 +168,9 @@ temporal-sdk-core-protos = { git = "https://github.com/temporalio/sdk-core", rev # prisma query-core = { git = "https://github.com/metatypedev/prisma-engines", branch = "fix/version-compat" } query-connector = { git = "https://github.com/metatypedev/prisma-engines", branch = "fix/version-compat" } -request-handlers = { git = "https://github.com/metatypedev/prisma-engines", features = ["all"], branch = "fix/version-compat" } +request-handlers = { git = "https://github.com/metatypedev/prisma-engines", features = [ + "all", +], branch = "fix/version-compat" } datamodel-renderer = { git = "https://github.com/metatypedev/prisma-engines", branch = "fix/version-compat" } user-facing-errors = { git = "https://github.com/metatypedev/prisma-engines", branch = "fix/version-compat" } query-engine-metrics = { git = "https://github.com/metatypedev/prisma-engines", branch = "fix/version-compat" } diff --git a/docs/metatype.dev/docs/concepts/mental-model/index.mdx b/docs/metatype.dev/docs/concepts/mental-model/index.mdx index 4d1032b73c..fb947e7f1d 100644 --- a/docs/metatype.dev/docs/concepts/mental-model/index.mdx +++ b/docs/metatype.dev/docs/concepts/mental-model/index.mdx @@ -91,9 +91,9 @@ Policies are a special type of function `t.func(t.struct({...}), t.boolean().opt The policy decision can be: -- `true`: the access is authorized -- `false`: the access is denied -- `null`: the access in inherited from the parent types +- `ALLOW`: Grants access to the current type and all its descendants. +- `DENY`: Restricts access to the current type and all its descendants. +- `PASS`: Grants access to the current type while requiring individual checks for all its descendants (similar to the absence of policies). { diff --git a/docs/metatype.dev/docs/reference/policies/index.mdx b/docs/metatype.dev/docs/reference/policies/index.mdx index 8bc5ace886..e5f49035c5 100644 --- a/docs/metatype.dev/docs/reference/policies/index.mdx +++ b/docs/metatype.dev/docs/reference/policies/index.mdx @@ -17,8 +17,8 @@ The Deno runtime enable to understand the last abstraction. Policies are a way t Metatype comes with some built-in policies, but you can use the Deno runtime to define your own: -- `policies.public()` is an alias for `Policy(PureFunMat("() => true"))` providing everyone open access. -- `policies.ctx("role_value", "role_field")` is a companion policy for the authentication strategy you learned in the previous section. It will verify the context and give adequate access to the user. +- `policies.public()` is an alias for `deno.policy("public", "() => 'PASS'")` providing everyone open access while still allowing field level custom access. +- `Policy.context("role_value", "role_field")` is a companion policy for the authentication strategy you learned in the previous section. It will verify the context and give adequate access to the user. Policies are hierarchical in the sense that the request starts with a denial, and the root functions must explicitly provide an access or not. Once access granted, any further types can either inherit or override the access. Policies evaluate in order in case multiple ones are defined. @@ -28,3 +28,17 @@ Policies are hierarchical in the sense that the request starts with a denial, an typescript={require("!!code-loader!../../../../../examples/typegraphs/policies.ts")} query={require("./policies.graphql")} /> + +## Composition rules + +### Traversal order + +- `ALLOW`: Allows access to the parent and all its descendants, disregarding inner policies. +- `DENY`: Denies access to the parent and all its descendants, disregarding inner policies. +- `PASS`: Allows access to the parent, each descendant will still be evaluated individually (equivalent to having no policies set). + +### Chaining policies + +If you have `foo.with_policy(A, B).with_policy(C)` for example, it will evaluated in batch as `[A, B, C]`. + +If one or more policies fail (`DENY`), the type will be inaccessible. diff --git a/docs/metatype.dev/docs/reference/typegate/synchronization/index.mdx b/docs/metatype.dev/docs/reference/typegate/synchronization/index.mdx index b6b6c6740a..ae8dc18923 100644 --- a/docs/metatype.dev/docs/reference/typegate/synchronization/index.mdx +++ b/docs/metatype.dev/docs/reference/typegate/synchronization/index.mdx @@ -57,16 +57,18 @@ Synchronization variable names start with `SYNC_`. ::: -| Variable | Description | -| --------------------------------- | ------------------------------------------------------------ | -| SYNC*REDIS_URL (\_Required*) | URL to the Redis database. Must include the database number. | -| SYNC*REDIS_PASSWORD (\_Optional*) | Redis database password, can be included in SYNC_REDIS_URL; | -| SYNC*S3_HOST (\_Required*) | Hostname of the S3 store; | -| SYNC*S3_REGION (\_Required*) | S3 region; | -| SYNC*S3_ACCESS_KEY (\_Required*) | Access key for the S3 store credentials; | -| SYNC*S3_SECRET_KEY (\_Required*) | Access key secret for the S3 store credentials; | -| SYNC*S3_PATH_STYLE (\_Optional*) | `true` or `false`, force path style if `true`. | -| SYNC*S3_BUCKET (\_Required*) | The bucket to be used for the system (dedicated). | + + +| Variable | Description | +| ----------------------------------- | ------------------------------------------------------------ | +| SYNC\__REDIS_URL (\_Required_) | URL to the Redis database. Must include the database number. | +| SYNC\__REDIS_PASSWORD (\_Optional_) | Redis database password, can be included in SYNC_REDIS_URL; | +| SYNC\__S3_HOST (\_Required_) | Hostname of the S3 store; | +| SYNC\__S3_REGION (\_Required_) | S3 region; | +| SYNC\__S3_ACCESS_KEY (\_Required_) | Access key for the S3 store credentials; | +| SYNC\__S3_SECRET_KEY (\_Required_) | Access key secret for the S3 store credentials; | +| SYNC\__S3_PATH_STYLE (\_Optional_) | `true` or `false`, force path style if `true`. | +| SYNC\__S3_BUCKET (\_Required_) | The bucket to be used for the system (dedicated). | ## Synchronized mode features diff --git a/docs/metatype.dev/docs/tutorials/metatype-basics/index.mdx b/docs/metatype.dev/docs/tutorials/metatype-basics/index.mdx index 228bdd8709..d3f87ac184 100644 --- a/docs/metatype.dev/docs/tutorials/metatype-basics/index.mdx +++ b/docs/metatype.dev/docs/tutorials/metatype-basics/index.mdx @@ -581,7 +581,7 @@ typegraph("roadmap", (g) => { const admins = deno.policy( "admins", ` - (_args, { context }) => !!context.username + (_args, { context }) => !!context.username ? 'ALLOW' : 'DENY' `, ); @@ -619,7 +619,7 @@ def roadmap(g: Graph): # the username value is only available if the basic # extractor was successful admins = deno.policy("admins", """ - (_args, { context }) => !!context.username + (_args, { context }) => !!context.username ? 'ALLOW' : 'DENY' """) g.expose( diff --git a/examples/templates/deno/api/example.ts b/examples/templates/deno/api/example.ts index 619718849f..84ed8f73f0 100644 --- a/examples/templates/deno/api/example.ts +++ b/examples/templates/deno/api/example.ts @@ -1,6 +1,6 @@ import { Policy, t, typegraph } from "jsr:@typegraph/sdk@0.5.0-rc.7"; -import { PythonRuntime } from "jsr:@typegraph/sdk@0.5.0-rc.7/runtimes/python"; -import { DenoRuntime } from "jsr:@typegraph/sdk@0.5.0-rc.7/runtimes/deno"; +import { PythonRuntime } from "jsr:@typegraph/sdk@0.5.0-rc.9/runtimes/python"; +import { DenoRuntime } from "jsr:@typegraph/sdk@0.5.0-rc.9/runtimes/deno"; await typegraph("example", (g) => { const pub = Policy.public(); diff --git a/examples/templates/deno/compose.yml b/examples/templates/deno/compose.yml index 59fea7b88a..53edad51d0 100644 --- a/examples/templates/deno/compose.yml +++ b/examples/templates/deno/compose.yml @@ -1,6 +1,6 @@ services: typegate: - image: ghcr.io/metatypedev/typegate:v0.5.0-rc.7 + image: ghcr.io/metatypedev/typegate:v0.5.0-rc.9 restart: always ports: - "7890:7890" diff --git a/examples/templates/node/compose.yml b/examples/templates/node/compose.yml index b70ef9ac43..9aabef09c2 100644 --- a/examples/templates/node/compose.yml +++ b/examples/templates/node/compose.yml @@ -1,6 +1,6 @@ services: typegate: - image: ghcr.io/metatypedev/typegate:v0.5.0-rc.7 + image: ghcr.io/metatypedev/typegate:v0.5.0-rc.9 restart: always ports: - "7890:7890" diff --git a/examples/templates/node/package.json b/examples/templates/node/package.json index e00c998b89..db711383a9 100644 --- a/examples/templates/node/package.json +++ b/examples/templates/node/package.json @@ -6,7 +6,7 @@ "dev": "MCLI_LOADER_CMD='npm x tsx' meta dev" }, "dependencies": { - "@typegraph/sdk": "^0.5.0-rc.7" + "@typegraph/sdk": "^0.5.0-rc.9" }, "devDependencies": { "tsx": "^3.13.0", diff --git a/examples/templates/python/compose.yml b/examples/templates/python/compose.yml index b70ef9ac43..9aabef09c2 100644 --- a/examples/templates/python/compose.yml +++ b/examples/templates/python/compose.yml @@ -1,6 +1,6 @@ services: typegate: - image: ghcr.io/metatypedev/typegate:v0.5.0-rc.7 + image: ghcr.io/metatypedev/typegate:v0.5.0-rc.9 restart: always ports: - "7890:7890" diff --git a/examples/templates/python/pyproject.toml b/examples/templates/python/pyproject.toml index 024d214ef5..15596621e4 100644 --- a/examples/templates/python/pyproject.toml +++ b/examples/templates/python/pyproject.toml @@ -1,12 +1,12 @@ [tool.poetry] name = "example" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" description = "" authors = [] [tool.poetry.dependencies] python = ">=3.8,<4.0" -typegraph = "0.5.0-rc.7" +typegraph = "0.5.0-rc.9" [build-system] requires = ["poetry-core"] diff --git a/examples/typegraphs/execute.py b/examples/typegraphs/execute.py index ed46b99712..84284fa0a0 100644 --- a/examples/typegraphs/execute.py +++ b/examples/typegraphs/execute.py @@ -53,7 +53,7 @@ def roadmap(g: Graph): admins = deno.policy( "admins", """ - (_args, { context }) => !!context.username + (_args, { context }) => !!context.username ? 'PASS' : 'DENY' """, ) diff --git a/examples/typegraphs/execute.ts b/examples/typegraphs/execute.ts index b78951bbe8..1e61d05056 100644 --- a/examples/typegraphs/execute.ts +++ b/examples/typegraphs/execute.ts @@ -52,7 +52,7 @@ await typegraph( const admins = deno.policy( "admins", ` - (_args, { context }) => !!context.username + (_args, { context }) => !!context.username ? 'PASS' : 'DENY' `, ); diff --git a/examples/typegraphs/func.py b/examples/typegraphs/func.py index 5ad86ba026..cfc4cda609 100644 --- a/examples/typegraphs/func.py +++ b/examples/typegraphs/func.py @@ -58,7 +58,7 @@ def roadmap(g: Graph): admins = deno.policy( "admins", - "(_args, { context }) => !!context.username", + "(_args, { context }) => !!context.username ? 'PASS' : 'DENY'", ) # skip:end diff --git a/examples/typegraphs/func.ts b/examples/typegraphs/func.ts index 944d6d7c9a..90ccdfb287 100644 --- a/examples/typegraphs/func.ts +++ b/examples/typegraphs/func.ts @@ -56,7 +56,7 @@ await typegraph( const admins = deno.policy( "admins", - "(_args, { context }) => !!context.username", + "(_args, { context }) => !!context.username ? 'PASS' : 'DENY'", ); // skip:end diff --git a/examples/typegraphs/math.py b/examples/typegraphs/math.py index 054954b87e..90fe78a26a 100644 --- a/examples/typegraphs/math.py +++ b/examples/typegraphs/math.py @@ -27,7 +27,7 @@ def math(g: Graph): # the policy implementation is based on functions as well restrict_referer = deno.policy( "restrict_referer_policy", - '(_, context) => context.headers.referer && ["localhost", "metatype.dev"].includes(new URL(context.headers.referer).hostname)', + '(_, context) => context.headers.referer && ["localhost", "metatype.dev"].includes(new URL(context.headers.referer).hostname) ? "ALLOW" : "DENY"', ) g.expose( diff --git a/examples/typegraphs/math.ts b/examples/typegraphs/math.ts index 3c7879c5e7..c0bc7f8153 100644 --- a/examples/typegraphs/math.ts +++ b/examples/typegraphs/math.ts @@ -24,7 +24,7 @@ await typegraph( // the policy implementation is based on functions itself const restrict_referer = deno.policy( "restrict_referer_policy", - '(_, context) => context.headers.referer && ["localhost", "metatype.dev"].includes(new URL(context.headers.referer).hostname)', + '(_, context) => context.headers.referer && ["localhost", "metatype.dev"].includes(new URL(context.headers.referer).hostname) ? "ALLOW" : "DENY"', ); // or we can point to a local file that's accessible to the meta-cli diff --git a/examples/typegraphs/metagen/rs/fdk.rs b/examples/typegraphs/metagen/rs/fdk.rs index c03038436c..a67d003e41 100644 --- a/examples/typegraphs/metagen/rs/fdk.rs +++ b/examples/typegraphs/metagen/rs/fdk.rs @@ -109,7 +109,7 @@ impl Router { } pub fn init(&self, args: InitArgs) -> Result { - static MT_VERSION: &str = "0.5.0-rc.6"; + static MT_VERSION: &str = "0.5.0-rc.8"; if args.metatype_version != MT_VERSION { return Err(InitError::VersionMismatch(MT_VERSION.into())); } diff --git a/examples/typegraphs/policies-example.py b/examples/typegraphs/policies-example.py index 749f540f5f..cc3a2ff25f 100644 --- a/examples/typegraphs/policies-example.py +++ b/examples/typegraphs/policies-example.py @@ -10,5 +10,8 @@ def policies_example(g): # skip:end deno = DenoRuntime() - public = deno.policy("public", "() => true") # noqa - team_only = deno.policy("team", "(ctx) => ctx.user.role === 'admin'") # noqa + public = deno.policy("public", "() => 'PASS'") # noqa + allow_all = deno.policy("allow_all", "() => 'ALLOW'") # noqa + team_only = deno.policy( # noqa + "team", "(ctx) => ctx.user.role === 'admin' ? 'ALLOW' : 'DENY' " + ) diff --git a/examples/typegraphs/policies.py b/examples/typegraphs/policies.py index 35a53d0773..a2557ba663 100644 --- a/examples/typegraphs/policies.py +++ b/examples/typegraphs/policies.py @@ -15,17 +15,17 @@ def policies(g: Graph): deno = DenoRuntime() random = RandomRuntime(seed=0, reset=None) - # `public` is sugar for to `() => true` + # `public` is sugar for to `(_args, _ctx) => "PASS"` public = Policy.public() admin_only = deno.policy( "admin_only", - # note: policies either return true | false | null - "(args, { context }) => context.username ? context.username === 'admin' : null", + # note: policies either return "ALLOW" | "DENY" | "PASS" + "(args, { context }) => context?.username === 'admin' ? 'ALLOW' : 'DENY'", ) user_only = deno.policy( "user_only", - "(args, { context }) => context.username ? context.username === 'user' : null", + "(args, { context }) => context?.username === 'user' ? 'PASS' : 'DENY'", ) g.auth(Auth.basic(["admin", "user"])) diff --git a/examples/typegraphs/policies.ts b/examples/typegraphs/policies.ts index 1517a4d791..17c9394b26 100644 --- a/examples/typegraphs/policies.ts +++ b/examples/typegraphs/policies.ts @@ -13,17 +13,17 @@ typegraph( // skip:end const deno = new DenoRuntime(); const random = new RandomRuntime({ seed: 0 }); - // `public` is sugar for `(_args, _ctx) => true` + // `public` is sugar for `(_args, _ctx) => "PASS"` const pub = Policy.public(); const admin_only = deno.policy( "admin_only", - // note: policies either return true | false | null - "(args, { context }) => context.username ? context.username === 'admin' : null", + // note: policies either return "ALLOW" | "DENY" | "PASS" + "(args, { context }) => context?.username === 'admin' ? 'ALLOW' : 'DENY'", ); const user_only = deno.policy( "user_only", - "(args, { context }) => context.username ? context.username === 'user' : null", + "(args, { context }) => context?.username === 'user' ? 'PASS' : 'DENY'", ); g.auth(Auth.basic(["admin", "user"])); diff --git a/examples/typegraphs/programmable-api-gateway.py b/examples/typegraphs/programmable-api-gateway.py index 284c01b0d9..f788260583 100644 --- a/examples/typegraphs/programmable-api-gateway.py +++ b/examples/typegraphs/programmable-api-gateway.py @@ -17,7 +17,9 @@ def programmable_api_gateway(g: Graph): deno = DenoRuntime() public = Policy.public() - roulette_access = deno.policy("roulette", "() => Math.random() < 0.5") + roulette_access = deno.policy( + "roulette", "() => Math.random() < 0.5 ? 'PASS' : 'DENY'" + ) my_api_format = """ static_a: diff --git a/examples/typegraphs/programmable-api-gateway.ts b/examples/typegraphs/programmable-api-gateway.ts index 08b5fd0038..ebaf52df37 100644 --- a/examples/typegraphs/programmable-api-gateway.ts +++ b/examples/typegraphs/programmable-api-gateway.ts @@ -17,7 +17,7 @@ typegraph( const pub = Policy.public(); const roulette_access = deno.policy( "roulette", - "() => Math.random() < 0.5", + "() => Math.random() < 0.5 ? 'PASS' : 'DENY'", ); // skip:next-line diff --git a/examples/typegraphs/reduce.py b/examples/typegraphs/reduce.py index f8e0993216..62afe9c6f9 100644 --- a/examples/typegraphs/reduce.py +++ b/examples/typegraphs/reduce.py @@ -51,7 +51,7 @@ def roadmap(g: Graph): admins = deno.policy( "admins", - "(_args, { context }) => !!context.username", + "(_args, { context }) => !!context.username ? 'PASS' : 'DENY'", ) g.expose( diff --git a/examples/typegraphs/reduce.ts b/examples/typegraphs/reduce.ts index b485e7ac83..0460066d8b 100644 --- a/examples/typegraphs/reduce.ts +++ b/examples/typegraphs/reduce.ts @@ -49,7 +49,7 @@ typegraph( const admins = deno.policy( "admins", - "(_args, { context }) => !!context.username", + "(_args, { context }) => !!context.username ? 'PASS' : 'DENY'", ); g.expose( diff --git a/examples/typegraphs/rest.py b/examples/typegraphs/rest.py index c0b62c8dce..1b3aff97d5 100644 --- a/examples/typegraphs/rest.py +++ b/examples/typegraphs/rest.py @@ -51,7 +51,7 @@ def roadmap(g: Graph): admins = deno.policy( "admins", - "(_args, { context }) => !!context.username", + "(_args, { context }) => !!context.username ? 'PASS' : 'DENY'", ) g.expose( diff --git a/examples/typegraphs/rest.ts b/examples/typegraphs/rest.ts index 75e4bd3e79..ec242e798b 100644 --- a/examples/typegraphs/rest.ts +++ b/examples/typegraphs/rest.ts @@ -49,7 +49,7 @@ typegraph( const admins = deno.policy( "admins", - "(_args, { context }) => !!context.username", + "(_args, { context }) => !!context.username ? 'PASS' : 'DENY'", ); g.expose( diff --git a/examples/typegraphs/roadmap-policies.py b/examples/typegraphs/roadmap-policies.py index 791355c2b6..dde6b51f98 100644 --- a/examples/typegraphs/roadmap-policies.py +++ b/examples/typegraphs/roadmap-policies.py @@ -56,7 +56,7 @@ def roadmap(g: Graph): # highlight-start admins = deno.policy( "admins", - "(_args, { context }) => !!context.username", + "(_args, { context }) => !!context.username ? 'PASS' : 'DENY'", ) # highlight-end diff --git a/examples/typegraphs/roadmap-policies.ts b/examples/typegraphs/roadmap-policies.ts index 6cb0ef1858..458ebd9dbf 100644 --- a/examples/typegraphs/roadmap-policies.ts +++ b/examples/typegraphs/roadmap-policies.ts @@ -50,7 +50,7 @@ typegraph( const admins = deno.policy( "admins", - "(_args, { context }) => !!context.username", + "(_args, { context }) => !!context.username ? 'PASS' : 'DENY'", ); g.expose( diff --git a/pyproject.toml b/pyproject.toml index 857224f5f3..3ed96e97d8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ [tool.poetry] name = "metatype" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" description = "" authors = [] diff --git a/src/common/src/typegraph/types.rs b/src/common/src/typegraph/types.rs index 22d2b3da75..1cd144886d 100644 --- a/src/common/src/typegraph/types.rs +++ b/src/common/src/typegraph/types.rs @@ -63,7 +63,6 @@ pub enum Injection { #[derive(Serialize, Deserialize, Clone, Debug)] pub struct TypeNodeBase { pub title: String, - pub policies: Vec, #[serde(default)] pub description: Option, #[serde(default, rename = "enum")] @@ -158,6 +157,9 @@ pub struct ObjectTypeData { pub id: Vec, #[serde(default)] pub required: Vec, + #[serde(skip_serializing_if = "IndexMap::is_empty")] + #[serde(default)] + pub policies: IndexMap>, } #[skip_serializing_none] diff --git a/src/common/src/typegraph/visitor2.rs b/src/common/src/typegraph/visitor2.rs index 82804b8445..f1dc96723d 100644 --- a/src/common/src/typegraph/visitor2.rs +++ b/src/common/src/typegraph/visitor2.rs @@ -78,6 +78,7 @@ pub struct CurrentNode<'tg> { pub type_node: &'tg TypeNode, pub type_idx: u32, pub path: SharedPath, + pub in_cycle: bool, } fn traverse_types_with_path<'tg, A, V, E>( @@ -91,7 +92,6 @@ where V: Fn(VisitorContext<'tg>, &mut A) -> Result, { let type_node = &tg.types[type_idx as usize]; - // TODO check for cycles // visit current { @@ -99,6 +99,7 @@ where type_node, type_idx, path: path.clone(), + in_cycle: path.borrow().iter().any(|seg| seg.from == type_idx), }; let cx = VisitorContext { tg, current_node }; match visit_fn(cx, &mut accumulator)? { diff --git a/src/metagen/src/fdk_rust/stubs.rs b/src/metagen/src/fdk_rust/stubs.rs index ad636ef45b..ed91fea2ef 100644 --- a/src/metagen/src/fdk_rust/stubs.rs +++ b/src/metagen/src/fdk_rust/stubs.rs @@ -113,6 +113,7 @@ mod test { TypeNode::Object { data: ObjectTypeData { properties: Default::default(), + policies: Default::default(), id: vec![], required: vec![], }, diff --git a/src/metagen/src/fdk_rust/types.rs b/src/metagen/src/fdk_rust/types.rs index 9d7d2db91a..417b6aeddf 100644 --- a/src/metagen/src/fdk_rust/types.rs +++ b/src/metagen/src/fdk_rust/types.rs @@ -438,6 +438,7 @@ mod test { ] .into_iter() .collect(), + policies: Default::default(), id: vec![], // FIXME: remove required required: vec![], @@ -615,6 +616,7 @@ pub enum MyUnion { properties: [("obj_b".to_string(), 1)].into_iter().collect(), id: vec![], required: ["obj_b"].into_iter().map(Into::into).collect(), + policies: Default::default(), }, base: TypeNodeBase { title: "ObjA".into(), @@ -624,6 +626,7 @@ pub enum MyUnion { TypeNode::Object { data: ObjectTypeData { properties: [("obj_c".to_string(), 2)].into_iter().collect(), + policies: Default::default(), id: vec![], required: ["obj_c"].into_iter().map(Into::into).collect(), }, @@ -635,6 +638,7 @@ pub enum MyUnion { TypeNode::Object { data: ObjectTypeData { properties: [("obj_a".to_string(), 0)].into_iter().collect(), + policies: Default::default(), id: vec![], required: ["obj_a"].into_iter().map(Into::into).collect(), }, @@ -665,6 +669,7 @@ pub struct ObjC { TypeNode::Object { data: ObjectTypeData { properties: [("obj_b".to_string(), 1)].into_iter().collect(), + policies: Default::default(), id: vec![], required: ["obj_b"].into_iter().map(Into::into).collect(), }, @@ -676,6 +681,7 @@ pub struct ObjC { TypeNode::Object { data: ObjectTypeData { properties: [("union_c".to_string(), 2)].into_iter().collect(), + policies: Default::default(), id: vec![], required: ["union_c"].into_iter().map(Into::into).collect(), }, @@ -714,6 +720,7 @@ pub enum CUnion { TypeNode::Object { data: ObjectTypeData { properties: [("obj_b".to_string(), 1)].into_iter().collect(), + policies: Default::default(), id: vec![], required: ["obj_b"].into_iter().map(Into::into).collect(), }, @@ -725,6 +732,7 @@ pub enum CUnion { TypeNode::Object { data: ObjectTypeData { properties: [("either_c".to_string(), 2)].into_iter().collect(), + policies: Default::default(), id: vec![], required: ["either_c"].into_iter().map(Into::into).collect(), }, diff --git a/src/metagen/src/shared/files.rs b/src/metagen/src/shared/files.rs index 2de61113b1..f2e5230bf9 100644 --- a/src/metagen/src/shared/files.rs +++ b/src/metagen/src/shared/files.rs @@ -100,6 +100,9 @@ pub fn get_path_to_files(tg: &Typegraph, root: u32) -> Result Result { + if cx.current_node.in_cycle { + return Ok(visitor2::VisitNext::Stop); + } match cx.current_node.type_node { TypeNode::File { .. } => { let nearest_fn = cx.current_node.nearest_function(); diff --git a/src/metagen/src/tests/fixtures.rs b/src/metagen/src/tests/fixtures.rs index 7dcb060b22..2e70a56707 100644 --- a/src/metagen/src/tests/fixtures.rs +++ b/src/metagen/src/tests/fixtures.rs @@ -55,6 +55,7 @@ pub fn test_typegraph_2() -> Typegraph { TypeNode::Object { data: ObjectTypeData { properties: Default::default(), + policies: Default::default(), id: vec![], required: vec![], }, @@ -99,7 +100,6 @@ pub fn test_typegraph_2() -> Typegraph { pub fn default_type_node_base() -> TypeNodeBase { TypeNodeBase { title: String::new(), - policies: vec![], description: None, enumeration: None, } diff --git a/src/metagen/src/tests/mod.rs b/src/metagen/src/tests/mod.rs index f890974715..634e5450a7 100644 --- a/src/metagen/src/tests/mod.rs +++ b/src/metagen/src/tests/mod.rs @@ -101,6 +101,7 @@ pub async fn e2e_test(cases: Vec) -> anyhow::Result<()> { let test_cx = TestCtx { typegraphs: typegraphs.clone(), }; + // SAFETY: this only runs in tests unsafe { std::env::set_var("METAGEN_CLIENT_RS_TEST", "1"); std::env::set_var("METAGEN_BIN_PATH", "main.rs"); diff --git a/src/pyrt_wit_wire/pyproject.toml b/src/pyrt_wit_wire/pyproject.toml index 843af3bc7f..d7033da20e 100644 --- a/src/pyrt_wit_wire/pyproject.toml +++ b/src/pyrt_wit_wire/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "pyrt_wit_wire" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" description = "Wasm component implementing the PythonRuntime host using wit_wire protocol." license = "MPL-2.0" readme = "README.md" diff --git a/src/typegate/engine/00_runtime.js b/src/typegate/engine/00_runtime.js index caf7bb7e74..80b6d867d4 100644 --- a/src/typegate/engine/00_runtime.js +++ b/src/typegate/engine/00_runtime.js @@ -85,6 +85,9 @@ const Meta = { unregister: getOp("op_grpc_unregister"), callGrpcMethod: getOp("op_call_grpc_method"), }, + py_validation: { + validate: getOp("op_validate"), + }, }; globalThis.Meta = Meta; diff --git a/src/typegate/engine/Cargo.toml b/src/typegate/engine/Cargo.toml index 6567b7cfb1..86d29bfd9d 100644 --- a/src/typegate/engine/Cargo.toml +++ b/src/typegate/engine/Cargo.toml @@ -67,6 +67,7 @@ tonic.workspace = true bytes.workspace = true protobuf.workspace = true protobuf-json-mapping.workspace = true +rustpython-parser.workspace = true [dev-dependencies] env_logger.workspace = true diff --git a/src/typegate/engine/runtime.d.ts b/src/typegate/engine/runtime.d.ts index 9b482ccd1b..4114b4c8ab 100644 --- a/src/typegate/engine/runtime.d.ts +++ b/src/typegate/engine/runtime.d.ts @@ -86,6 +86,10 @@ export type MetaNS = { inp: EnumerateAllChildrenInput, ) => Promise>; }; + + py_validation: { + validate: (inp: string) => void; + }; }; interface WasmInput { @@ -116,16 +120,16 @@ interface PrismaDevInp { } type PrismaApplyOut = | { - ResetRequired: { - reset_reason: string; - }; - } + ResetRequired: { + reset_reason: string; + }; + } | { - Ok: { - applied_migrations: Array; - reset_reason: string | undefined | null; + Ok: { + applied_migrations: Array; + reset_reason: string | undefined | null; + }; }; - }; interface PrismaDeployOut { migration_count: number; applied_migrations: Array; @@ -237,14 +241,14 @@ export type WitWireReq = { export type WitWireHandleError = | { - InstanceNotFound: string; - } + InstanceNotFound: string; + } | { - ModuleErr: string; - } + ModuleErr: string; + } | { - MatErr: string; - }; + MatErr: string; + }; export type WitWireMatInfo = { op_name: string; @@ -261,29 +265,29 @@ export type WitWireInitArgs = { export type WitWireInitResponse = object; export type WitWireInitError = | { - VersionMismatch: string; - } + VersionMismatch: string; + } | { - UnexpectedMat: string; - } + UnexpectedMat: string; + } | { - ModuleErr: string; - } + ModuleErr: string; + } | { - Other: string; - }; + Other: string; + }; export type WitWireHandleResponse = | { - Ok: string; - } + Ok: string; + } | "NoHandler" | { - InJsonErr: string; - } + InJsonErr: string; + } | { - HandlerErr: string; - }; + HandlerErr: string; + }; export type GrpcRegisterInput = { proto_file_content: string; @@ -301,20 +305,20 @@ export type Backend = | { type: "fs" } | { type: "memory" } | { - type: "redis"; - connection_string: string; - }; + type: "redis"; + connection_string: string; + }; export type OperationEvent = | { type: "Sleep"; id: number; start: string; end: string } | { - type: "Save"; - id: number; - value: - | { type: "Retry"; wait_until: string; counter: number } - | { type: "Resolved"; payload: unknown } - | { type: "Failed"; err: unknown }; - } + type: "Save"; + id: number; + value: + | { type: "Retry"; wait_until: string; counter: number } + | { type: "Resolved"; payload: unknown } + | { type: "Failed"; err: unknown }; + } | { type: "Send"; event_name: string; value: unknown } | { type: "Stop"; result: unknown } | { type: "Start"; kwargs: Record } diff --git a/src/typegate/engine/src/ext.rs b/src/typegate/engine/src/ext.rs index 5b96d4b7a3..8b9e93eb72 100644 --- a/src/typegate/engine/src/ext.rs +++ b/src/typegate/engine/src/ext.rs @@ -3,6 +3,7 @@ use crate::interlude::*; use crate::{ + py_validation, runtimes::{grpc, prisma, substantial, temporal, wasm, wit_wire}, typegraph, }; @@ -59,6 +60,7 @@ deno_core::extension!( substantial::op_sub_metadata_write_workflow_link, substantial::op_sub_metadata_write_parent_child_link, substantial::op_sub_metadata_enumerate_all_children, + py_validation::op_validate, // FIXME(yohe): this test broke and has proven difficult to fix // #[cfg(test)] diff --git a/src/typegate/engine/src/lib.rs b/src/typegate/engine/src/lib.rs index bd277e92cb..f0b725f9ef 100644 --- a/src/typegate/engine/src/lib.rs +++ b/src/typegate/engine/src/lib.rs @@ -2,6 +2,7 @@ // SPDX-License-Identifier: MPL-2.0 mod ext; +mod py_validation; mod runtimes; // mod snapshot; mod typegraph; diff --git a/src/typegate/engine/src/py_validation.rs b/src/typegate/engine/src/py_validation.rs new file mode 100644 index 0000000000..107645aebe --- /dev/null +++ b/src/typegate/engine/src/py_validation.rs @@ -0,0 +1,24 @@ +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +use std::{fs::File, io::Read}; + +use anyhow::Result; +use rustpython_parser::{ast, Parse}; + +#[rustfmt::skip] +use deno_core as deno_core; + +fn read_file(path: &str) -> Result { + let mut output = String::new(); + let mut file = File::open(path)?; + file.read_to_string(&mut output)?; + Ok(output) +} + +#[deno_core::op2(fast)] +pub fn op_validate(#[string] input: String) -> Result<()> { + let python_source = read_file(&input)?; + ast::Suite::parse(&python_source, "")?; + Ok(()) +} diff --git a/src/typegate/src/config.ts b/src/typegate/src/config.ts index 4d3fd33c87..dd32d7e767 100644 --- a/src/typegate/src/config.ts +++ b/src/typegate/src/config.ts @@ -19,6 +19,10 @@ import type { TypegateConfig } from "./config/types.ts"; export type { SyncConfigX as SyncConfig, TypegateConfig, TypegateConfigBase }; async function getHostname() { + const envHostname = Deno.env.get("HOSTNAME") + if (envHostname) { + return envHostname; + } try { const { stdout } = await new Deno.Command("hostname", { stdout: "piped", @@ -26,9 +30,9 @@ async function getHostname() { return new TextDecoder().decode(stdout).trim(); } catch (_e) { console.debug( - `Not hostname binary found, falling back to env var HOSTNAME`, + `Not hostname binary found, unable to resolve hostname`, ); - return Deno.env.get("HOSTNAME") ?? "UNKNOWN_HOSTNAME"; + return "UNKNOWN_HOSTNAME"; } } diff --git a/src/typegate/src/engine/planner/args.ts b/src/typegate/src/engine/planner/args.ts index f8d441c09b..7c0c52de18 100644 --- a/src/typegate/src/engine/planner/args.ts +++ b/src/typegate/src/engine/planner/args.ts @@ -29,6 +29,7 @@ import type { FunctionNode, Injection, InjectionNode, + PolicyIndices, } from "../../typegraph/types.ts"; import { getChildTypes, visitTypes } from "../../typegraph/visitor.ts"; @@ -82,6 +83,7 @@ interface CollectNode { path: string[]; astNode: ast.ArgumentNode | ast.ObjectFieldNode | undefined; typeIdx: number; + policies: PolicyIndices[]; } interface CollectedArgs { @@ -120,6 +122,7 @@ export function collectArgs( path: [argName], astNode: astNodes[argName], typeIdx: argTypeIdx, + policies: argTypeNode.policies?.[argName] ?? [], }); } @@ -298,7 +301,7 @@ class ArgumentCollector { const typ: TypeNode = this.tg.type(typeIdx); - this.addPoliciesFrom(typeIdx); + this.addPoliciesFrom(typeIdx, node.policies); const injection = this.#getInjection(node.path); if (injection != null) { @@ -319,7 +322,6 @@ class ArgumentCollector { // try to get a default value for it, else throw an error if (astNode == null) { if (typ.type === Type.OPTIONAL) { - this.addPoliciesFrom(typ.item); const itemType = this.tg.type(typ.item); const { default_value: defaultValue } = typ; if (defaultValue != null) { @@ -332,6 +334,7 @@ class ArgumentCollector { this.collectDefaults( itemType.properties, node.path, + itemType.policies ?? {}, ), true, ); @@ -349,6 +352,7 @@ class ArgumentCollector { this.collectDefaults( variantType.properties, node.path, + variantType.policies ?? {}, ), true, ); @@ -372,6 +376,7 @@ class ArgumentCollector { compute = this.collectDefaults( variantType.properties, node.path, + variantType.policies ?? {}, ); break; } catch (_e) { @@ -390,7 +395,7 @@ class ArgumentCollector { if (typ.type === Type.OBJECT) { const props = typ.properties; - return this.collectDefaults(props, node.path); + return this.collectDefaults(props, node.path, typ.policies ?? {}); } throw new MandatoryArgumentError(this.currentNodeDetails); @@ -689,12 +694,14 @@ class ArgumentCollector { private collectDefaults( props: Record, path: string[], + policies: Record, ): ComputeArg> { const computes: Record = {}; for (const [name, idx] of Object.entries(props)) { path.push(name); computes[name] = this.collectDefault(idx, path); + this.addPoliciesFrom(idx, policies[name] ?? []); path.pop(); } @@ -723,7 +730,6 @@ class ArgumentCollector { path: string[], ): ComputeArg { const typ = this.tg.type(typeIdx); - this.addPoliciesFrom(typeIdx); const injection = this.#getInjection(path); if (injection != null) { @@ -737,13 +743,12 @@ class ArgumentCollector { switch (typ.type) { case Type.OPTIONAL: { - this.addPoliciesFrom(typ.item); const { default_value: defaultValue = null } = typ; return () => defaultValue; } case Type.OBJECT: { - return this.collectDefaults(typ.properties, path); + return this.collectDefaults(typ.properties, path, typ.policies ?? {}); } default: @@ -756,8 +761,12 @@ class ArgumentCollector { typ: TypeNode, injection: Injection, ): ComputeArg | null { - visitTypes(this.tg.tg, getChildTypes(typ), (node) => { - this.addPoliciesFrom(node.idx); + visitTypes(this.tg.tg, getChildTypes(typ), ({ type: typeNode }) => { + if (typeNode.type === Type.OBJECT) { + for (const [name, idx] of Object.entries(typeNode.properties)) { + this.addPoliciesFrom(idx, typeNode.policies?.[name] ?? []); + } + } return true; }); @@ -840,8 +849,12 @@ class ArgumentCollector { } this.deps.parent.add(key); - visitTypes(this.tg.tg, getChildTypes(typ), (node) => { - this.addPoliciesFrom(node.idx); + visitTypes(this.tg.tg, getChildTypes(typ), ({ type: typeNode }) => { + if (typeNode.type === Type.OBJECT) { + for (const [name, idx] of Object.entries(typeNode.properties)) { + this.addPoliciesFrom(idx, typeNode.policies?.[name] ?? []); + } + } return true; }); @@ -863,11 +876,14 @@ class ArgumentCollector { }; } - private addPoliciesFrom(typeIdx: TypeIdx) { - const typ = this.tg.type(typeIdx); + private addPoliciesFrom(typeIdx: TypeIdx, policies: PolicyIndices[]) { + if (policies.length === 0) { + return; + } + // TODO we might have to check for duplicate indices this.policies.set(typeIdx, { argDetails: this.currentNodeDetails, - policyIndices: typ.policies.map((p) => { + policyIndices: policies.map((p) => { if (typeof p === "number") { return p; } diff --git a/src/typegate/src/engine/planner/mod.ts b/src/typegate/src/engine/planner/mod.ts index aadabf533c..59d77e2a66 100644 --- a/src/typegate/src/engine/planner/mod.ts +++ b/src/typegate/src/engine/planner/mod.ts @@ -18,10 +18,7 @@ import { } from "../../typegraph/type_node.ts"; import { closestWord, unparse } from "../../utils.ts"; import { collectArgs, type ComputeArg } from "./args.ts"; -import { - type OperationPolicies, - OperationPoliciesBuilder, -} from "./policies.ts"; +import { OperationPolicies, StageMetadata } from "./policies.ts"; import { getLogger } from "../../log.ts"; import { generateVariantMatcher } from "../typecheck/matching_variant.ts"; import { mapValues } from "@std/collections/map-values"; @@ -29,7 +26,6 @@ import { DependencyResolver } from "./dependency_resolver.ts"; import { Runtime } from "../../runtimes/Runtime.ts"; import { getInjection } from "../../typegraph/utils.ts"; import { Injection } from "../../typegraph/types.ts"; -import { getInjectionValues } from "./injection_utils.ts"; const logger = getLogger(import.meta); @@ -70,7 +66,6 @@ export interface Plan { */ export class Planner { rawArgs: Record = {}; - policiesBuilder: OperationPoliciesBuilder; constructor( readonly operation: ast.OperationDefinitionNode, @@ -78,10 +73,6 @@ export class Planner { private readonly tg: TypeGraph, private readonly verbose: boolean, ) { - const { timer_policy_eval_retries } = tg.typegate.config.base; - this.policiesBuilder = new OperationPoliciesBuilder(tg, { - timer_policy_eval_retries, - }); } getPlan(): Plan { @@ -112,13 +103,31 @@ export class Planner { {} as Record, ); + const orderedStageMetadata = [] as Array; for (const stage of stages) { stage.varTypes = varTypes; + const stageId = stage.id(); + if (stageId.startsWith("__")) { + // TODO: allow and reuse previous stage policy? + continue; + } + + orderedStageMetadata.push({ + stageId, + typeIdx: stage.props.typeIdx, + isTopLevel: stage.props.parent ? false : true, + node: stage.props.node // actual non aliased name + }); } + const { timer_policy_eval_retries } = this.tg.typegate.config.base; + const operationPolicies = new OperationPolicies(this.tg, orderedStageMetadata, { + timer_policy_eval_retries + }); + return { stages, - policies: this.policiesBuilder.build(), + policies: operationPolicies, }; } @@ -329,7 +338,10 @@ export class Planner { * @param field {FieldNode} The selection field for node * @param node */ - private traverseField(node: Node, field: ast.FieldNode): ComputeStage[] { + private traverseField( + node: Node, + field: ast.FieldNode, + ): ComputeStage[] { const { parent, path, name } = node; if (parent == null) { @@ -395,7 +407,6 @@ export class Planner { } const fieldType = this.tg.type(node.typeIdx); - const stages = fieldType.type !== Type.FUNCTION ? this.traverseValueField(node) : this.traverseFuncField( @@ -429,9 +440,10 @@ export class Planner { * Create `ComputeStage`s for `node` and its child nodes, * where `node` corresponds to a selection field for a value (non-function type). * @param node - * @param policies */ - private traverseValueField(node: Node): ComputeStage[] { + private traverseValueField( + node: Node, + ): ComputeStage[] { const outjection = node.scope && this.#getOutjection(node.scope!); if (outjection) { return [ @@ -461,10 +473,6 @@ export class Planner { rateCalls: true, rateWeight: 0, }); - const types = this.policiesBuilder.setReferencedTypes( - stage.id(), - node.typeIdx, - ); stages.push(stage); @@ -474,7 +482,6 @@ export class Planner { while (isQuantifier(nestedSchema)) { nestedTypeIdx = getWrappedType(nestedSchema); nestedSchema = this.tg.type(nestedTypeIdx); - types.push(nestedTypeIdx); } stages.push(...this.traverse({ ...node, typeIdx: nestedTypeIdx }, stage)); @@ -560,31 +567,21 @@ export class Planner { }); stages.push(stage); - this.policiesBuilder.push(stage.id(), node.typeIdx, collected.policies); - const types = this.policiesBuilder.setReferencedTypes( - stage.id(), - node.typeIdx, - outputIdx, - inputIdx, - ); - // nested quantifiers - let wrappedTypeIdx = outputIdx; - let wrappedType = this.tg.type(wrappedTypeIdx); + let wrappedOutputIdx = outputIdx; + let wrappedType = this.tg.type(wrappedOutputIdx); while (isQuantifier(wrappedType)) { - wrappedTypeIdx = getWrappedType(wrappedType); - wrappedType = this.tg.type(wrappedTypeIdx); - types.push(wrappedTypeIdx); + wrappedOutputIdx = getWrappedType(wrappedType); + wrappedType = this.tg.type(wrappedOutputIdx); } stages.push( ...this.traverse( - { ...node, typeIdx: wrappedTypeIdx, parentStage: stage }, + { ...node, typeIdx: wrappedOutputIdx, parentStage: stage }, stage, ), ); - this.policiesBuilder.pop(stage.id()); return stages; } diff --git a/src/typegate/src/engine/planner/policies.ts b/src/typegate/src/engine/planner/policies.ts index d82cbcd8cc..9a6c358d51 100644 --- a/src/typegate/src/engine/planner/policies.ts +++ b/src/typegate/src/engine/planner/policies.ts @@ -1,13 +1,13 @@ // Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. // SPDX-License-Identifier: MPL-2.0 +import { type Logger } from "@std/log"; import { DenoRuntime } from "../../runtimes/deno/deno.ts"; import type { TypeGraph } from "../../typegraph/mod.ts"; import type { Context, Info, PolicyIdx, - PolicyList, Resolver, StageId, TypeIdx, @@ -15,70 +15,97 @@ import type { import type { EffectType, PolicyIndices } from "../../typegraph/types.ts"; import { ensure } from "../../utils.ts"; import { getLogger } from "../../log.ts"; -import { Type } from "../../typegraph/type_node.ts"; -import type { ArgPolicies } from "./args.ts"; +import { + getWrappedType, + isEither, + isFunction, + isQuantifier, + isUnion, + Type, +} from "../../typegraph/type_node.ts"; import { BadContext } from "../../errors.ts"; -export interface FunctionSubtreeData { +export type PolicyResolverOutput = "DENY" | "ALLOW" | "PASS" | (unknown & any); +type GetResolverResult = ( + polIdx: PolicyIdx, + effect: EffectType, +) => Promise; + +export interface StageMetadata { + stageId: string; typeIdx: TypeIdx; isTopLevel: boolean; - // types referenced in descendant nodes (that is not a descendent of a descendent function) - referencedTypes: Map>; + node: string; } -interface GetResolverResult { - (polIdx: PolicyIdx, effect: EffectType): Promise; +interface ComposePolicyOperand { + /** Field name according to the underlying struct on the typegraph */ + canonFieldName: string; + /** The actual policy index selected against a given effect */ + index: PolicyIdx; } type CheckResult = - | { authorized: true } + | { authorized: "ALLOW" } + | { authorized: "PASS" } | { - authorized: false; - policyIdx: PolicyIdx | null; + authorized: "DENY"; + policiesFailed: Array; }; export type OperationPoliciesConfig = { timer_policy_eval_retries: number; }; +interface PolicyForStage { + /** Field name according to the underlying struct on the typegraph */ + canonFieldName: string; + /** Each item is either a PolicyIndicesByEffect or a number */ + indices: Array; +} + +// This is arbitrary, but must be unique in such a way that the user produced +// stages do not share the same id. +const EXPOSE_STAGE_ID = ""; + export class OperationPolicies { - // should be private -- but would not be testable - functions: Map; - private policyLists: Map; - private resolvers: Map; + #stageToPolicies: Map> = new Map(); + #resolvers: Map = new Map(); constructor( private tg: TypeGraph, - builder: OperationPoliciesBuilder, - config: OperationPoliciesConfig, + private orderedStageMetadata: Array, + private config: OperationPoliciesConfig, ) { - this.functions = builder.subtrees; + this.#prepareStageToPolicies(); + this.#preallocateResolvers(); + } - this.policyLists = new Map(); - for (const [stageId, subtree] of this.functions.entries()) { - const { funcTypeIdx, topLevel, referencedTypes } = subtree; - ensure( - referencedTypes.has(stageId) && - referencedTypes.get(stageId)!.includes(funcTypeIdx), - "unexpected", - ); - for (const types of referencedTypes.values()) { - // set policyLists - for (const typeIdx of types) { - if (this.policyLists.has(typeIdx)) { - continue; - } - const policies = this.tg.type(typeIdx).policies; - if (policies.length > 0) { - this.policyLists.set(typeIdx, policies); - } - } - } + #prepareStageToPolicies() { + this.#stageToPolicies = new Map(); + + // Note: policies for exposed functions are hoisted on the root struct (index 0) + // If a function has a policy it overrides the definition on the root + const exposePolicies = this.#getPolicies(0); + const funcWithPolicies = exposePolicies + .filter(({ indices }) => indices.length > 0) + .map(({ canonFieldName }) => canonFieldName); + + this.#stageToPolicies.set(EXPOSE_STAGE_ID, exposePolicies); + + for ( + const { stageId, typeIdx: maybeWrappedIdx, node } of this + .orderedStageMetadata + ) { + const policies = this.#getPolicies(maybeWrappedIdx); + this.#stageToPolicies.set(stageId, policies); + // console.log("> found", stageId, policies, node, this.#findSelectedFields(stageId)); // top-level functions must have policies - if (topLevel && !this.policyLists.has(funcTypeIdx)) { + const isTopLevel = stageId.split(".").length == 1; + if (isTopLevel && !funcWithPolicies.includes(node)) { const details = [ - `top-level function '${this.tg.type(funcTypeIdx).title}'`, + `top-level function '${this.tg.type(maybeWrappedIdx).title}'`, `at '${stageId}'`, ].join(" "); throw new Error( @@ -86,264 +113,349 @@ export class OperationPolicies { ); } } + } + + #preallocateResolvers() { + this.#resolvers = new Map(); + const policyIndicesWithDup = Array.from(this.#stageToPolicies.values()) + .map((policyPerName) => { + const indices = policyPerName.map(({ indices }) => indices); + return indices.flat(); + }) + .flat(); + + const policyIndices = new Set(policyIndicesWithDup); + + for (const indicesData of policyIndices) { + let toPrepare = [] as Array; + if (typeof indicesData == "number") { + toPrepare = [indicesData]; + } else { + toPrepare = Object.values(indicesData); + } - this.resolvers = new Map(); - const policies = new Set([...this.policyLists.values()].flat()); - for (const idx of policies) { - for (const polIdx of iterIndices(idx)) { + for (const polIdx of toPrepare) { const mat = this.tg.policyMaterializer(this.tg.policy(polIdx)); const runtime = this.tg.runtimeReferences[mat.runtime] as DenoRuntime; ensure( runtime.constructor === DenoRuntime, "Policies must run on a Deno Runtime", ); - if (!this.resolvers.has(polIdx)) { - this.resolvers.set( + if (!this.#resolvers.has(polIdx)) { + this.#resolvers.set( polIdx, - runtime.delegate(mat, false, config.timer_policy_eval_retries), + runtime.delegate(mat, false, this.config.timer_policy_eval_retries), ); } } } } + /** + * Evaluate each stage policy in traversal order + * + * - `PASS`: continue further, same as no policies + * - `ALLOW`: stops evaluation for parent, and skip any child stage + * - `DENY`: throw an error and stopping everything + */ public async authorize(context: Context, info: Info, verbose: boolean) { const logger = getLogger("policies"); - const authorizedTypes: Record> = { - read: new Set(), - create: new Set(), - update: new Set(), - delete: new Set(), + + const outputCache = new Map(); + const getResolverResult = this.#createPolicyEvaluator( + { context, info }, + outputCache, + verbose, + logger, + ); + + const resolvedPolicyCachePerStage: Map = + new Map(); + + const fakeStageMeta = { + isTopLevel: true, + stageId: EXPOSE_STAGE_ID, + typeIdx: 0, + } as StageMetadata; + const stageMetaList = [fakeStageMeta, ...this.orderedStageMetadata]; + + let activeEffect = this.#getEffectOrNull(fakeStageMeta.typeIdx) ?? "read"; // root + + traversal: for (const { stageId, typeIdx } of stageMetaList) { + const newEffect = this.#getEffectOrNull(typeIdx); + if (newEffect != null) { + activeEffect = newEffect; + } + + for ( + const [priorStageId, verdict] of resolvedPolicyCachePerStage.entries() + ) { + const globalAllows = priorStageId == EXPOSE_STAGE_ID && + verdict == "ALLOW"; + if (globalAllows) { + break traversal; + } + + const parentAllows = stageId.startsWith(priorStageId) && + verdict == "ALLOW"; + if (parentAllows) { + continue traversal; + } // elif deny => already thrown + } + + const res = await this.#checkStageAuthorization( + stageId, + activeEffect, + getResolverResult, + ); + + switch (res.authorized) { + case "ALLOW": { + resolvedPolicyCachePerStage.set(stageId, "ALLOW"); + continue; + } + case "PASS": { + resolvedPolicyCachePerStage.set(stageId, "PASS"); + continue; + } + default: { + resolvedPolicyCachePerStage.set(stageId, res.authorized); + const policyNames = res.policiesFailed.map((operand) => ({ + name: this.tg.policy(operand.index).name, + concernedField: operand.canonFieldName, + })); + + throw new BadContext( + this.#getRejectionReason(stageId, activeEffect, policyNames), + ); + } + } + } + } + + #getRejectionReason( + stageId: StageId, + effect: EffectType, + policiesData: Array<{ name: string; concernedField: string }>, + ): string { + const getPath = (concernedField: string) => { + if (stageId == EXPOSE_STAGE_ID) { + return [EXPOSE_STAGE_ID, concernedField].join("."); + } + return [EXPOSE_STAGE_ID, stageId, concernedField].join("."); }; - const cache = new Map(); + const detailsPerPolicy = policiesData + .map(({ name, concernedField }) => + [ + `policy '${name}'`, + `with effect '${effect}'`, + `at '${getPath(concernedField)}'`, + ].join(" ") + ); + return `Authorization failed for ${detailsPerPolicy.join("; ")}`; + } - const getResolverResult = async ( - idx: PolicyIdx, + #createPolicyEvaluator( + partialResolverInput: { context: Context; info: Info }, + outputCache: Map, + verbose: boolean, + logger: Logger, + ): GetResolverResult { + return async ( + polIdx: PolicyIdx, effect: EffectType, - ): Promise => { + ): Promise => { verbose && logger.info( `checking policy '${ - this.tg.policy(idx).name - }'[${idx}] with effect '${effect}'...`, + this.tg.policy(polIdx).name + }'[${polIdx}] with effect '${effect}'...`, ); - if (cache.has(idx)) { - return cache.get(idx) as boolean | null; + if (outputCache.has(polIdx)) { + return outputCache.get(polIdx); } - const resolver = this.resolvers.get(idx); + const resolver = this.#resolvers.get(polIdx); ensure( resolver != null, `Could not find resolver for the policy '${ - this.tg.policy(idx).name + this.tg.policy(polIdx).name }'; effect=${effect}`, ); const res = (await resolver!({ _: { parent: {}, - context, - info, + context: partialResolverInput.context, + info: partialResolverInput.info, variables: {}, effect: effect === "read" ? null : effect, }, - })) as boolean | null; - cache.set(idx, res); + })) as PolicyResolverOutput; + outputCache.set(polIdx, res); verbose && logger.info(`> authorize: ${res}`); return res; }; + } - // TODO refactor: too much indentation - for (const [_stageId, subtree] of this.functions) { - const effect = this.tg.materializer( - this.tg.type(subtree.funcTypeIdx, Type.FUNCTION).materializer, - ).effect.effect ?? "read"; - - this.authorizeArgs( - subtree.argPolicies, - effect, - getResolverResult, - authorizedTypes[effect], - ); - - for (const [stageId, types] of subtree.referencedTypes) { - for (const typeIdx of types) { - if (authorizedTypes[effect].has(typeIdx)) { - continue; - } - const policies = (this.policyLists.get(typeIdx) ?? []).map((p) => - typeof p === "number" ? p : p[effect] ?? null - ); - - if (policies.some((idx) => idx == null)) { - throw new BadContext( - this.getRejectionReason(stageId, typeIdx, effect, "__deny"), - ); - } - - const res = await this.checkTypePolicies( - policies as number[], - effect, - getResolverResult, - ); - - if (res.authorized) { - continue; - } - - if (res.policyIdx == null) { - const typ = this.tg.type(typeIdx); - throw new Error( - `No policy took decision on type '${typ.title}' ('${typ.type}') at '.${stageId}'`, - ); - } - - const policyName = this.tg.policy(res.policyIdx).name; - throw new BadContext( - this.getRejectionReason(stageId, typeIdx, effect, policyName), + /** + * A single type may hold multiple policies + * + * - `ALLOW`: ALLOW & P = P + * - `DENY`: DENY & P = DENY + * + * DENY and ALLOW combine just like booleans with the AND gate + * + * PASS does not participate. + */ + async #composePolicies( + policies: Array, + effect: EffectType, + getResolverResult: GetResolverResult, + ): Promise { + const operands = []; + const deniersIdx = []; + for (const policyOperand of policies) { + const res = await getResolverResult(policyOperand.index, effect); + + switch (res) { + case "ALLOW": { + operands.push(true); + break; + } + case "DENY": { + // We can fail fast here with a throw + // but we can assume policies are reused accross + // types (so high cache hit) + operands.push(false); + deniersIdx.push(policyOperand); + break; + } + case "PASS": { + continue; + } + default: { + throw new Error( + `Could not take decision on value: ${ + JSON.stringify(res) + }, policy must return either "ALLOW", "DENY" or "PASS"`, ); } } } - } - getRejectionReason( - stageId: StageId, - typeIdx: TypeIdx, - effect: EffectType, - policyName: string, - ): string { - const typ = this.tg.type(typeIdx); - const details = [ - `policy '${policyName}'`, - `with effect '${effect}'`, - `on type '${typ.title}' ('${typ.type}')`, - `at '.${stageId}'`, - ].join(" "); - return `Authorization failed for ${details}`; + if (operands.length == 0) { + return { authorized: "PASS" }; + } else { + if (operands.every((_bool) => _bool)) { + return { authorized: "ALLOW" }; + } else { + return { authorized: "DENY", policiesFailed: deniersIdx }; + } + } } - private async authorizeArgs( - argPolicies: ArgPolicies, - effect: EffectType, - getResolverResult: GetResolverResult, - authorizedTypes: Set, - ) { - for (const [typeIdx, { argDetails, policyIndices }] of argPolicies) { - if (authorizedTypes.has(typeIdx)) { - continue; - } - authorizedTypes.add(typeIdx); + #getPolicies(typeIdx: number): Array { + let nestedTypeIdx = typeIdx; + let nestedSchema = this.tg.type(nestedTypeIdx); - const res = await this.checkTypePolicies( - policyIndices, - effect, - getResolverResult, - ); - if (!res.authorized) { - // unauthorized or no decision - throw new Error(`Unexpected argument ${argDetails}`); - } + if (isFunction(nestedSchema)) { + nestedTypeIdx = nestedSchema.output; + nestedSchema = this.tg.type(nestedTypeIdx); } - } - private async checkTypePolicies( - policies: PolicyIdx[], - effect: EffectType, - getResolverResult: GetResolverResult, - ): Promise { - if (policies.length === 0) { - return { authorized: true }; + while (isQuantifier(nestedSchema)) { + nestedTypeIdx = getWrappedType(nestedSchema); + nestedSchema = this.tg.type(nestedTypeIdx); } - for (const polIdx of policies) { - const res = await getResolverResult(polIdx, effect); - if (res == null) { - continue; - } - if (res) { - return { authorized: true }; - } + if (isEither(nestedSchema) || isUnion(nestedSchema)) { + const variantIndices = isEither(nestedSchema) + ? nestedSchema.oneOf + : nestedSchema.anyOf; + const policies = variantIndices.map((idx) => this.#getPolicies(idx)) + .flat(); + return policies; + } - return { authorized: false, policyIdx: polIdx }; + let out: Record> = {}; + if (nestedSchema.type == "object") { + out = nestedSchema.policies ?? {}; } - return { authorized: false, policyIdx: null }; + return Object.entries(out).map(([k, v]) => ({ + canonFieldName: k, + indices: v, + })); } -} -interface SubtreeData { - stageId: StageId; - funcTypeIdx: TypeIdx; - argPolicies: ArgPolicies; - topLevel: boolean; - referencedTypes: Map; -} - -export class OperationPoliciesBuilder { - // stack of function stages - stack: SubtreeData[] = []; - subtrees: Map = new Map(); - current: SubtreeData | null = null; + #getEffectOrNull(typeIdx: number) { + let effect = null; + const node = this.tg.type(typeIdx); + if (isFunction(node)) { + const matIdx = this.tg.type(typeIdx, Type.FUNCTION).materializer; + effect = this.tg.materializer(matIdx).effect.effect ?? effect; + } - constructor( - private tg: TypeGraph, - private config: OperationPoliciesConfig, - ) {} - - // set current function stage - push(stageId: StageId, funcTypeIdx: TypeIdx, argPolicies: ArgPolicies) { - const subtreeData = { - stageId, - funcTypeIdx, - argPolicies, - topLevel: this.stack.length === 0, - referencedTypes: new Map(), - }; - this.current = subtreeData; - this.stack.push(subtreeData); - this.subtrees.set(stageId, subtreeData); + return effect; } - // set current function stage to parent function stage - pop(stageId: StageId) { - ensure(this.stack.pop()!.stageId === stageId, "unexpected: invalid state"); - const top = this.stack.pop(); - if (top == null) { - this.current == null; - } else { - this.stack.push(top); - this.current = top; - } - } + async #checkStageAuthorization( + stageId: string, + effect: EffectType, + getResolverResult: GetResolverResult, + ) { + const selectedFields = this.#findSelectedFields(stageId); - #isNamespace(typeIdx: TypeIdx): boolean { - return this.tg.tg.meta.namespaces!.includes(typeIdx); - } + const policiesForStage = this.#stageToPolicies.get(stageId) ?? []; + const policies = []; + for (const { canonFieldName, indices } of policiesForStage) { + // Note: canonFieldName is the field on the type (but not the alias if any!) + if (!selectedFields.includes(canonFieldName)) { + continue; + } - setReferencedTypes(stageId: StageId, ...types: TypeIdx[]): TypeIdx[] { - if (this.current == null) { - if (this.tg.tg.meta.namespaces!.includes(types[0])) { - return types; + for (const index of indices) { + if (typeof index == "number") { + policies.push({ canonFieldName, index }); + } else { + const actualIndex = index[effect] ?? null; + if (actualIndex == null) { + throw new BadContext( + this.#getRejectionReason(stageId, effect, [{ + name: "__deny", + concernedField: canonFieldName, + }]), + ); + } + + policies.push({ canonFieldName, index: actualIndex }); + } } - throw new Error("unexpected state"); } - this.current.referencedTypes.set(stageId, types); - return types; + + return await this.#composePolicies( + policies, + effect, + getResolverResult, + ); } - build(): OperationPolicies { - return new OperationPolicies(this.tg, this, this.config); + #findSelectedFields(targetStageId: string) { + return this.orderedStageMetadata.map(({ stageId, node }) => { + const chunks = stageId.split("."); + const parent = chunks.slice(0, -1).join("."); + if (parent == "" && targetStageId == EXPOSE_STAGE_ID) { + return node; + } + + return targetStageId == parent ? node : null; + }).filter((name) => name != null); } -} -function* iterIndices(indices: PolicyIndices): IterableIterator { - if (typeof indices === "number") { - yield indices; - } else { - for (const idx of Object.values(indices) as number[]) { - yield idx; - } + // for testing + get stageToPolicies() { + return this.#stageToPolicies; } } diff --git a/src/typegate/src/engine/typecheck/result.ts b/src/typegate/src/engine/typecheck/result.ts index 3cae058621..b76f753246 100644 --- a/src/typegate/src/engine/typecheck/result.ts +++ b/src/typegate/src/engine/typecheck/result.ts @@ -108,7 +108,6 @@ export class ResultValidationCompiler { cg.generateStringValidator({ type: "string", title: "__TypeName", - policies: [], }); } else if (isScalar(typeNode)) { if (entry.selectionSet != null) { diff --git a/src/typegate/src/runtimes/deno/deno.ts b/src/typegate/src/runtimes/deno/deno.ts index d05392b5e4..322f937363 100644 --- a/src/typegate/src/runtimes/deno/deno.ts +++ b/src/typegate/src/runtimes/deno/deno.ts @@ -23,6 +23,7 @@ import type { Task } from "./shared_types.ts"; import { path } from "compress/deps.ts"; import { globalConfig as config } from "../../config.ts"; import { createArtifactMeta } from "../utils/deno.ts"; +import { PolicyResolverOutput } from "../../engine/planner/policies.ts"; import { getInjectionValues } from "../../engine/planner/injection_utils.ts"; import DynamicInjection from "../../engine/injection/dynamic.ts"; import { getLogger } from "../../log.ts"; @@ -33,7 +34,10 @@ const predefinedFuncs: Record>> = { identity: ({ _, ...args }) => args, true: () => true, false: () => false, - internal_policy: ({ _: { context } }) => context.provider === "internal", + allow: () => "ALLOW" as PolicyResolverOutput, + deny: () => "DENY" as PolicyResolverOutput, + pass: () => "PASS" as PolicyResolverOutput, + internal_policy: ({ _: { context } }) => context.provider === "internal" ? "ALLOW" : "PASS" as PolicyResolverOutput, }; export class DenoRuntime extends Runtime { @@ -69,13 +73,13 @@ export class DenoRuntime extends Runtime { const secrets: Record = {}; for (const m of materializers) { - let secrets = (m.data.secrets as string[]) ?? []; + let matSecrets = (m.data.secrets as string[]) ?? []; if (m.name === "outjection") { - secrets = m.data.source === "secret" + matSecrets = m.data.source === "secret" ? [...getInjectionValues(m.data)] : []; } - for (const secretName of (m.data.secrets as []) ?? []) { + for (const secretName of matSecrets) { secrets[secretName] = secretManager.secretOrFail(secretName); } } diff --git a/src/typegate/src/runtimes/deno/hooks/worker.ts b/src/typegate/src/runtimes/deno/hooks/worker.ts index b660c7d455..06fe23a179 100644 --- a/src/typegate/src/runtimes/deno/hooks/worker.ts +++ b/src/typegate/src/runtimes/deno/hooks/worker.ts @@ -1,9 +1,11 @@ // Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. // SPDX-License-Identifier: MPL-2.0 +import { toFileUrl } from "@std/path/to-file-url"; + self.onmessage = async ({ data }: MessageEvent<{ import: string }>) => { try { - await import(data.import); + await import(toFileUrl(data.import).toString()); self.postMessage({ success: true }); } catch (error) { self.postMessage({ error }); diff --git a/src/typegate/src/runtimes/python/hooks/mod.ts b/src/typegate/src/runtimes/python/hooks/mod.ts new file mode 100644 index 0000000000..9241432fdf --- /dev/null +++ b/src/typegate/src/runtimes/python/hooks/mod.ts @@ -0,0 +1,68 @@ +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +import { getLogger } from "../../../log.ts"; +import { PushFailure, PushHandler } from "../../../typegate/hooks.ts"; +import { createArtifactMeta } from "../../utils/deno.ts"; + +const logger = getLogger("typegate"); + +export class ValidationFailure extends Error { + failure: PushFailure; + + constructor(message: string) { + super(message); + this.failure = { reason: "ValidationError", message }; + } +} + +export const codeValidations: PushHandler = async ( + typegraph, + _secretManager, + _response, + artifactStore, +) => { + const { title } = typegraph.types[0]; + const { artifacts } = typegraph.meta; + + for (const mat of typegraph.materializers) { + if (mat.name === "import_function") { + const pyModMat = typegraph.materializers[mat.data.mod as number]; + const entryPoint = artifacts[pyModMat.data.entryPoint as string]; + const moduleMeta = createArtifactMeta(title, entryPoint); + const depMetas = (pyModMat.data.deps as string[]).map((dep) => + createArtifactMeta(title, artifacts[dep]) + ); + const entryModulePath = await artifactStore.getLocalPath( + moduleMeta, + depMetas, + ); + + if (entryModulePath.split(".").slice(-1)[0] == "py") { + try { + logger.info( + `Validating Python code at entry point: ${entryPoint.path}`, + ); + Meta.py_validation.validate(entryModulePath); + + for (const dep of depMetas) { + const depPath = await artifactStore.getLocalPath(dep); + logger.info(`Validating Python code for dependency: ${depPath}`); + Meta.py_validation.validate(depPath); + } + + logger.info( + `Successfully validated Python code at entry point: ${entryPoint.path}`, + ); + } catch (err: any) { + console.error({ err }); + throw new ValidationFailure( + `Python code validation error at entry point '${entryPoint.path}': ${err.message}`, + ); + } + } + } + } + + return typegraph; +}; diff --git a/src/typegate/src/runtimes/typegate.ts b/src/typegate/src/runtimes/typegate.ts index 975cbcddf8..091f32acb3 100644 --- a/src/typegate/src/runtimes/typegate.ts +++ b/src/typegate/src/runtimes/typegate.ts @@ -554,6 +554,33 @@ function walkPath( ); node = resNode; + const getPolicies = (node: TypeNode) => { + const fieldToPolicies = node.type == "object" + ? Object.entries(node.policies ?? []) + : []; + const ret = []; + for (const [fieldName, indices] of fieldToPolicies) { + const fmtedIndices = indices.map((index) => { + if (typeof index === "number") { + return tg.policy(index).name; + } + + return mapValues(index as Record, (value: number) => { + if (value === null) { + return null; + } + return tg.policy(value).name; + }); + }); + + ret.push( + { fieldName, policies: JSON.stringify(fmtedIndices) }, + ); + } + + return ret; + }; + return { optional: isOptional, title: node.title, @@ -563,18 +590,6 @@ function walkPath( format: format ?? null, fields: node.type == "object" ? collectObjectFields(tg, parent) : null, // TODO enum type on typegraph typegate.py - policies: node.policies.map((policy) => { - if (typeof policy === "number") { - return JSON.stringify(tg.policy(policy).name); - } - return JSON.stringify( - mapValues(policy as Record, (value: number) => { - if (value === null) { - return null; - } - return tg.policy(value).name; - }), - ); - }), + policies: getPolicies(node), }; } diff --git a/src/typegate/src/runtimes/typegraph.ts b/src/typegate/src/runtimes/typegraph.ts index aa4d8cf83f..b9b14c985a 100644 --- a/src/typegate/src/runtimes/typegraph.ts +++ b/src/typegate/src/runtimes/typegraph.ts @@ -58,6 +58,12 @@ function generateCustomScalar(type: TypeNode, idx: number) { throw `"${type.title}" of type "${type.type}" is not a scalar`; } +type FieldInfo = { + name: string; + typeIdx: number; + policies: PolicyIndices[]; +}; + export class TypeGraphRuntime extends Runtime { tg: TypeGraphDS; private scalarIndex = new Map(); @@ -400,7 +406,13 @@ export class TypeGraphRuntime extends Runtime { name: () => `${type.title}Inp`, description: () => `${type.title} input type`, inputFields: () => { - return Object.entries(type.properties).map(this.formatField(true)); + return Object.entries(type.properties).map(([name, typeIdx]) => + this.formatField(true)({ + name, + typeIdx, + policies: type.policies?.[name] ?? [], + }) + ); }, interfaces: () => [], }; @@ -413,7 +425,13 @@ export class TypeGraphRuntime extends Runtime { fields: () => { let entries = Object.entries(type.properties); entries = entries.sort((a, b) => b[1] - a[1]); - return entries.map(this.formatField(false)); + return entries.map(([name, typeIdx]) => + this.formatField(false)({ + name, + typeIdx, + policies: type.policies?.[name] ?? [], + }) + ); }, interfaces: () => [], }; @@ -477,7 +495,7 @@ export class TypeGraphRuntime extends Runtime { // enum: enumValues }; - policyDescription(type: TypeNode): string { + policyDescription(policies: PolicyIndices[]): string { const describeOne = (p: number) => this.tg.policies[p].name; const describe = (p: PolicyIndices) => { if (typeof p === "number") { @@ -487,12 +505,12 @@ export class TypeGraphRuntime extends Runtime { .map(([eff, polIdx]) => `${eff}:${describeOne(polIdx)}`) .join("; "); }; - const policies = type.policies.map(describe); + const policyNames = policies.map(describe); let ret = "\n\nPolicies:\n"; - if (policies.length > 0) { - ret += policies.map((p: string) => `- ${p}`).join("\n"); + if (policyNames.length > 0) { + ret += policyNames.map((p: string) => `- ${p}`).join("\n"); } else { ret += "- inherit"; } @@ -500,51 +518,52 @@ export class TypeGraphRuntime extends Runtime { return ret; } - formatField = (asInput: boolean) => ([name, typeIdx]: [string, number]) => { - const type = this.tg.types[typeIdx]; - const common = { - // https://github.com/graphql/graphql-js/blob/main/src/type/introspection.ts#L329 - name: () => name, - description: () => `${name} field${this.policyDescription(type)}`, - isDeprecated: () => false, - deprecationReason: () => null, - }; + formatField = + (asInput: boolean) => ({ name, typeIdx, policies }: FieldInfo) => { + const type = this.tg.types[typeIdx]; + const common = { + // https://github.com/graphql/graphql-js/blob/main/src/type/introspection.ts#L329 + name: () => name, + description: () => `${name} field${this.policyDescription(policies)}`, + isDeprecated: () => false, + deprecationReason: () => null, + }; + + if (isFunction(type)) { + return { + ...common, + args: (_: DeprecatedArg = {}) => { + const inp = this.tg.types[type.input as number]; + ensure( + isObject(inp), + `${type} cannot be an input field, require struct`, + ); + let entries = Object.entries((inp as ObjectNode).properties); + entries = entries.sort((a, b) => b[1] - a[1]); + return entries + .map((entry) => + this.formatInputFields( + entry, + (type.injections ?? {})[entry[0]] ?? null, + ) + ) + .filter((f) => f !== null); + }, + type: () => { + const output = this.tg.types[type.output as number]; + return this.formatType(output, true, false); + }, + }; + } - if (isFunction(type)) { return { ...common, - args: (_: DeprecatedArg = {}) => { - const inp = this.tg.types[type.input as number]; - ensure( - isObject(inp), - `${type} cannot be an input field, require struct`, - ); - let entries = Object.entries((inp as ObjectNode).properties); - entries = entries.sort((a, b) => b[1] - a[1]); - return entries - .map((entry) => - this.formatInputFields( - entry, - (type.injections ?? {})[entry[0]] ?? null, - ) - ) - .filter((f) => f !== null); - }, + args: () => [], type: () => { - const output = this.tg.types[type.output as number]; - return this.formatType(output, true, false); + return this.formatType(type, true, asInput); }, }; - } - - return { - ...common, - args: () => [], - type: () => { - return this.formatType(type, true, asInput); - }, }; - }; } function emptyObjectScalar() { diff --git a/src/typegate/src/runtimes/wit_wire/mod.ts b/src/typegate/src/runtimes/wit_wire/mod.ts index bdcecc910c..4174b2f9f8 100644 --- a/src/typegate/src/runtimes/wit_wire/mod.ts +++ b/src/typegate/src/runtimes/wit_wire/mod.ts @@ -9,7 +9,7 @@ import { getLogger } from "../../log.ts"; const logger = getLogger(import.meta); -const METATYPE_VERSION = "0.5.0-rc.7"; +const METATYPE_VERSION = "0.5.0-rc.9"; export class WitWireMessenger { static async init( diff --git a/src/typegate/src/transports/graphql/typegraph.ts b/src/typegate/src/transports/graphql/typegraph.ts index 9c2f1ba890..b504a6cb95 100644 --- a/src/typegate/src/transports/graphql/typegraph.ts +++ b/src/typegate/src/transports/graphql/typegraph.ts @@ -3,19 +3,33 @@ import type { TypeGraphDS } from "../../typegraph/mod.ts"; import type { ObjectNode } from "../../typegraph/type_node.ts"; +import { PolicyIndices } from "../../typegraph/types.ts"; import { addNode } from "./utils.ts"; type PropertiesTable = Record; +type SplitResult = { + queries: { + properties: PropertiesTable; + policies: Record; + }; + mutations: { + properties: PropertiesTable; + policies: Record; + }; +}; + /** * Splits a TypeGraph into GraphQL `queries` and `mutations` */ function splitGraphQLOperations( typegraph: TypeGraphDS, node: ObjectNode, -): [PropertiesTable, PropertiesTable] { - const queryProperties: PropertiesTable = {}; - const mutationProperties: PropertiesTable = {}; +): SplitResult { + const res: SplitResult = { + queries: { properties: {}, policies: {} }, + mutations: { properties: {}, policies: {} }, + }; if (typegraph.meta.namespaces == null) { typegraph.meta.namespaces = []; @@ -25,37 +39,38 @@ function splitGraphQLOperations( for (const [propertyName, typeIndex] of Object.entries(node.properties)) { const childNode = typegraph.types[typeIndex]; - // if the leaf node of a path its a function - // with a materializer that has an effect, + // if the leaf node of a path is a function + // with a materializer that has an effect other than `read`, // classify the root node of this path as a `mutation` // otherwise as a `query` switch (childNode.type) { case "object": { - const [childQueryProperties, childMutationProperties] = - splitGraphQLOperations( - typegraph, - childNode, - ); - - if (Object.keys(childQueryProperties).length === 0) { - mutationProperties[propertyName] = typeIndex; + const child = splitGraphQLOperations( + typegraph, + childNode, + ); + + if (Object.keys(child.queries.properties).length === 0) { + res.mutations.properties[propertyName] = typeIndex; namespaces.push(typeIndex); - } else if (Object.keys(childMutationProperties).length === 0) { - queryProperties[propertyName] = typeIndex; + } else if (Object.keys(child.mutations.properties).length === 0) { + res.queries.properties[propertyName] = typeIndex; namespaces.push(typeIndex); } else { - queryProperties[propertyName] = addNode(typegraph, { + res.queries.properties[propertyName] = addNode(typegraph, { ...node, title: `${node.title}_q`, - properties: childQueryProperties, + properties: child.queries.properties, + policies: child.queries.policies, }); - namespaces.push(queryProperties[propertyName]); - mutationProperties[propertyName] = addNode(typegraph, { + namespaces.push(res.queries.properties[propertyName]); + res.mutations.properties[propertyName] = addNode(typegraph, { ...node, title: `${node.title}_m`, - properties: childMutationProperties, + properties: child.mutations.properties, + policies: child.mutations.policies, }); - namespaces.push(mutationProperties[propertyName]); + namespaces.push(res.mutations.properties[propertyName]); } break; } @@ -69,10 +84,16 @@ function splitGraphQLOperations( childMaterializer.effect.effect === null || childMaterializer.effect.effect === "read" ) { - queryProperties[propertyName] = typeIndex; + res.queries.properties[propertyName] = typeIndex; + if (propertyName in (node.policies ?? {})) { + res.queries.policies[propertyName] = node.policies![propertyName]; + } // TODO additional checks } else { - mutationProperties[propertyName] = typeIndex; + res.mutations.properties[propertyName] = typeIndex; + if (propertyName in (node.policies ?? {})) { + res.mutations.policies[propertyName] = node.policies![propertyName]; + } // TODO additional checks } @@ -81,7 +102,7 @@ function splitGraphQLOperations( } } - return [queryProperties, mutationProperties]; + return res; } export function parseGraphQLTypeGraph(tgOrig: TypeGraphDS): TypeGraphDS { @@ -94,7 +115,7 @@ export function parseGraphQLTypeGraph(tgOrig: TypeGraphDS): TypeGraphDS { types: [...tgOrig.types], }; - const [queryProperties, mutationProperties] = splitGraphQLOperations( + const { queries, mutations } = splitGraphQLOperations( typegraph, rootNode, ); @@ -106,16 +127,16 @@ export function parseGraphQLTypeGraph(tgOrig: TypeGraphDS): TypeGraphDS { const queryIndex = addNode(typegraph, { ...rootNode, title: "Query", - properties: queryProperties, + ...queries, }); typegraph.meta.namespaces!.push(queryIndex); rootNode.properties.query = queryIndex; - if (Object.keys(mutationProperties).length > 0) { + if (Object.keys(mutations.properties).length > 0) { const mutationIndex = addNode(typegraph, { ...rootNode, title: "Mutation", - properties: mutationProperties, + ...mutations, }); typegraph.meta.namespaces!.push(mutationIndex); rootNode.properties.mutation = mutationIndex; diff --git a/src/typegate/src/typegate/hooks.ts b/src/typegate/src/typegate/hooks.ts index 1802d61575..3b72a619d2 100644 --- a/src/typegate/src/typegate/hooks.ts +++ b/src/typegate/src/typegate/hooks.ts @@ -13,25 +13,29 @@ const Message = { export type PushFailure = | { - reason: "DatabaseResetRequired"; - message: string; - runtimeName: string; - } + reason: "DatabaseResetRequired"; + message: string; + runtimeName: string; + } | { - reason: "NullConstraintViolation"; - message: string; - runtimeName: string; - column: string; - table: string; - } + reason: "NullConstraintViolation"; + message: string; + runtimeName: string; + column: string; + table: string; + } | { - reason: "DenoImportError"; - message: string; - } + reason: "DenoImportError"; + message: string; + } + | { + reason: "ValidationError"; + message: string; + } | { - reason: "Unknown"; - message: string; - }; + reason: "Unknown"; + message: string; + }; export class PushResponse { tgName?: string; diff --git a/src/typegate/src/typegate/mod.ts b/src/typegate/src/typegate/mod.ts index f53816fceb..0a09b615ad 100644 --- a/src/typegate/src/typegate/mod.ts +++ b/src/typegate/src/typegate/mod.ts @@ -20,6 +20,7 @@ import { upgradeTypegraph } from "../typegraph/versions.ts"; import { parseGraphQLTypeGraph } from "../transports/graphql/typegraph.ts"; import * as PrismaHooks from "../runtimes/prisma/hooks/mod.ts"; import * as DenoHooks from "../runtimes/deno/hooks/mod.ts"; +import * as PythonHooks from "../runtimes/python/hooks/mod.ts"; import { type RuntimeResolver, SecretManager, @@ -33,6 +34,7 @@ import { handleGraphQL } from "../services/graphql_service.ts"; import { getLogger } from "../log.ts"; import { MigrationFailure } from "../runtimes/prisma/hooks/run_migrations.ts"; import { DenoFailure } from "../runtimes/deno/hooks/mod.ts"; +import { ValidationFailure } from "../runtimes/python/hooks/mod.ts"; import introspectionJson from "../typegraphs/introspection.json" with { type: "json", }; @@ -173,6 +175,7 @@ export class Typegate implements AsyncDisposable { this.#onPush(PrismaHooks.generateSchema); this.#onPush(PrismaHooks.runMigrations); this.#onPush(DenoHooks.cacheModules); + this.#onPush(PythonHooks.codeValidations); this.#artifactService = new ArtifactService(artifactStore); } @@ -204,6 +207,8 @@ export class Typegate implements AsyncDisposable { response.setFailure(err.errors[0]); } else if (err instanceof DenoFailure) { response.setFailure(err.failure); + } else if (err instanceof ValidationFailure) { + response.setFailure(err.failure); } else { response.setFailure({ reason: "Unknown", diff --git a/src/typegate/src/typegraph/mod.ts b/src/typegate/src/typegraph/mod.ts index 1a0156dcc6..dc093036a4 100644 --- a/src/typegate/src/typegraph/mod.ts +++ b/src/typegate/src/typegraph/mod.ts @@ -97,7 +97,6 @@ export class TypeGraph implements AsyncDisposable { static typenameType: TypeNode = { title: "string", type: "string", - policies: [], }; root: TypeNode; diff --git a/src/typegate/src/typegraph/types.ts b/src/typegate/src/typegraph/types.ts index 84cd5570a7..ce2d855bcb 100644 --- a/src/typegate/src/typegraph/types.ts +++ b/src/typegate/src/typegraph/types.ts @@ -6,7 +6,6 @@ export type OptionalNode = { type: "optional"; title: string; - policies: PolicyIndices[]; description?: string | null; enum?: string[] | null; item: number; @@ -15,14 +14,12 @@ export type OptionalNode = { export type BooleanNode = { type: "boolean"; title: string; - policies: PolicyIndices[]; description?: string | null; enum?: string[] | null; }; export type FloatNode = { type: "float"; title: string; - policies: PolicyIndices[]; description?: string | null; enum?: string[] | null; minimum?: number | null; @@ -34,7 +31,6 @@ export type FloatNode = { export type IntegerNode = { type: "integer"; title: string; - policies: PolicyIndices[]; description?: string | null; enum?: string[] | null; minimum?: number | null; @@ -46,7 +42,6 @@ export type IntegerNode = { export type StringNode = { type: "string"; title: string; - policies: PolicyIndices[]; description?: string | null; enum?: string[] | null; minLength?: number | null; @@ -57,7 +52,6 @@ export type StringNode = { export type FileNode = { type: "file"; title: string; - policies: PolicyIndices[]; description?: string | null; enum?: string[] | null; minSize?: number | null; @@ -67,7 +61,7 @@ export type FileNode = { export type ObjectNode = { type: "object"; title: string; - policies: PolicyIndices[]; + policies?: Record; description?: string | null; enum?: string[] | null; properties: { @@ -79,7 +73,6 @@ export type ObjectNode = { export type ListNode = { type: "list"; title: string; - policies: PolicyIndices[]; description?: string | null; enum?: string[] | null; items: number; @@ -93,7 +86,6 @@ export type InjectionNode = export type FunctionNode = { type: "function"; title: string; - policies: PolicyIndices[]; description?: string | null; enum?: string[] | null; input: number; @@ -109,7 +101,6 @@ export type FunctionNode = { export type UnionNode = { type: "union"; title: string; - policies: PolicyIndices[]; description?: string | null; enum?: string[] | null; anyOf: number[]; @@ -117,7 +108,6 @@ export type UnionNode = { export type EitherNode = { type: "either"; title: string; - policies: PolicyIndices[]; description?: string | null; enum?: string[] | null; oneOf: number[]; @@ -125,7 +115,6 @@ export type EitherNode = { export type AnyNode = { type: "any"; title: string; - policies: PolicyIndices[]; description?: string | null; enum?: string[] | null; }; diff --git a/src/typegate/src/typegraphs/introspection.json b/src/typegate/src/typegraphs/introspection.json index eeabf338f6..66947140e7 100644 --- a/src/typegate/src/typegraphs/introspection.json +++ b/src/typegate/src/typegraphs/introspection.json @@ -3,26 +3,29 @@ { "type": "object", "title": "introspection", - "policies": [], "properties": { "__type": 1, - "__schema": 45 + "__schema": 26 }, "id": [], "required": [ "__type", "__schema" - ] + ], + "policies": { + "__type": [ + 0 + ], + "__schema": [ + 0 + ] + } }, { "type": "function", "title": "root___type_fn", - "policies": [ - 0 - ], "input": 2, "output": 4, - "injections": {}, "runtimeConfig": null, "materializer": 0, "rate_weight": null, @@ -31,48 +34,58 @@ { "type": "object", "title": "root___type_fn_input", - "policies": [], "properties": { "name": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "name": [] + } }, { "type": "string", - "title": "root___type_fn_input_name_string", - "policies": [] + "title": "root___type_fn_input_name_string" }, { "type": "optional", "title": "root___type_fn_output", - "policies": [], "item": 5, "default_value": null }, { "type": "object", "title": "type", - "policies": [], "properties": { "kind": 6, "name": 7, - "description": 8, - "specifiedByURL": 9, - "fields": 10, - "interfaces": 27, - "possibleTypes": 29, - "enumValues": 31, - "inputFields": 39, - "ofType": 44 + "description": 7, + "specifiedByURL": 7, + "fields": 8, + "interfaces": 18, + "possibleTypes": 18, + "enumValues": 20, + "inputFields": 24, + "ofType": 4 }, "id": [], - "required": [] + "required": [], + "policies": { + "kind": [], + "name": [], + "description": [], + "specifiedByURL": [], + "fields": [], + "interfaces": [], + "possibleTypes": [], + "enumValues": [], + "inputFields": [], + "ofType": [] + } }, { "type": "string", "title": "type_kind", - "policies": [], "enum": [ "\"SCALAR\"", "\"OBJECT\"", @@ -87,31 +100,14 @@ { "type": "optional", "title": "type_name_root___type_fn_input_name_string_optional", - "policies": [], - "item": 3, - "default_value": null - }, - { - "type": "optional", - "title": "type_description_root___type_fn_input_name_string_optional", - "policies": [], - "item": 3, - "default_value": null - }, - { - "type": "optional", - "title": "type_specifiedByURL_root___type_fn_input_name_string_optional", - "policies": [], "item": 3, "default_value": null }, { "type": "function", "title": "type_fields_fn", - "policies": [], - "input": 11, - "output": 14, - "injections": {}, + "input": 9, + "output": 12, "runtimeConfig": null, "materializer": 1, "rate_weight": null, @@ -120,291 +116,166 @@ { "type": "object", "title": "type_fields_fn_input", - "policies": [], "properties": { - "includeDeprecated": 12 + "includeDeprecated": 10 }, "id": [], - "required": [] + "required": [], + "policies": { + "includeDeprecated": [] + } }, { "type": "optional", "title": "type_fields_fn_input_includeDeprecated_type_fields_fn_input_includeDeprecated_boolean_optional", - "policies": [], - "item": 13, + "item": 11, "default_value": null }, { "type": "boolean", - "title": "type_fields_fn_input_includeDeprecated_boolean", - "policies": [] + "title": "type_fields_fn_input_includeDeprecated_boolean" }, { "type": "optional", "title": "type_fields_fn_output", - "policies": [], - "item": 15, + "item": 13, "default_value": null }, { "type": "list", "title": "type_fields_fn_output", - "policies": [], - "items": 16 + "items": 14 }, { "type": "object", "title": "field", - "policies": [], "properties": { "name": 3, - "description": 17, - "args": 18, + "description": 7, + "args": 15, "type": 5, - "isDeprecated": 13, - "deprecationReason": 26 + "isDeprecated": 11, + "deprecationReason": 7 }, "id": [], - "required": [] - }, - { - "type": "optional", - "title": "field_description_root___type_fn_input_name_string_optional", - "policies": [], - "item": 3, - "default_value": null + "required": [], + "policies": { + "name": [], + "description": [], + "args": [], + "type": [], + "isDeprecated": [], + "deprecationReason": [] + } }, { "type": "function", "title": "field_args_fn", - "policies": [], - "input": 19, - "output": 21, - "injections": {}, + "input": 9, + "output": 16, "runtimeConfig": null, "materializer": 1, "rate_weight": null, "rate_calls": false }, - { - "type": "object", - "title": "field_args_fn_input", - "policies": [], - "properties": { - "includeDeprecated": 20 - }, - "id": [], - "required": [] - }, - { - "type": "optional", - "title": "field_args_fn_input_includeDeprecated_type_fields_fn_input_includeDeprecated_boolean_optional", - "policies": [], - "item": 13, - "default_value": null - }, { "type": "list", "title": "field_args_fn_output", - "policies": [], - "items": 22 + "items": 17 }, { "type": "object", "title": "input_value", - "policies": [], "properties": { "name": 3, - "description": 23, + "description": 7, "type": 5, - "defaultValue": 24, - "isDeprecated": 13, - "deprecationReason": 25 + "defaultValue": 7, + "isDeprecated": 11, + "deprecationReason": 7 }, "id": [], - "required": [] - }, - { - "type": "optional", - "title": "input_value_description_root___type_fn_input_name_string_optional", - "policies": [], - "item": 3, - "default_value": null - }, - { - "type": "optional", - "title": "input_value_defaultValue_root___type_fn_input_name_string_optional", - "policies": [], - "item": 3, - "default_value": null - }, - { - "type": "optional", - "title": "input_value_deprecationReason_root___type_fn_input_name_string_optional", - "policies": [], - "item": 3, - "default_value": null - }, - { - "type": "optional", - "title": "field_deprecationReason_root___type_fn_input_name_string_optional", - "policies": [], - "item": 3, - "default_value": null + "required": [], + "policies": { + "name": [], + "description": [], + "type": [], + "defaultValue": [], + "isDeprecated": [], + "deprecationReason": [] + } }, { "type": "optional", "title": "type_interfaces_type_interfaces_type_list_optional", - "policies": [], - "item": 28, + "item": 19, "default_value": null }, { "type": "list", "title": "type_interfaces_type_list", - "policies": [], - "items": 5 - }, - { - "type": "optional", - "title": "type_possibleTypes_type_possibleTypes_type_list_optional", - "policies": [], - "item": 30, - "default_value": null - }, - { - "type": "list", - "title": "type_possibleTypes_type_list", - "policies": [], "items": 5 }, { "type": "function", "title": "type_enumValues_fn", - "policies": [], - "input": 32, - "output": 34, - "injections": {}, + "input": 9, + "output": 21, "runtimeConfig": null, "materializer": 1, "rate_weight": null, "rate_calls": false }, - { - "type": "object", - "title": "type_enumValues_fn_input", - "policies": [], - "properties": { - "includeDeprecated": 33 - }, - "id": [], - "required": [] - }, - { - "type": "optional", - "title": "type_enumValues_fn_input_includeDeprecated_type_fields_fn_input_includeDeprecated_boolean_optional", - "policies": [], - "item": 13, - "default_value": null - }, { "type": "optional", "title": "type_enumValues_fn_output", - "policies": [], - "item": 35, + "item": 22, "default_value": null }, { "type": "list", "title": "type_enumValues_fn_output", - "policies": [], - "items": 36 + "items": 23 }, { "type": "object", "title": "enum_value", - "policies": [], "properties": { "name": 3, - "description": 37, - "isDeprecated": 13, - "deprecationReason": 38 + "description": 7, + "isDeprecated": 11, + "deprecationReason": 7 }, "id": [], - "required": [] - }, - { - "type": "optional", - "title": "enum_value_description_root___type_fn_input_name_string_optional", - "policies": [], - "item": 3, - "default_value": null - }, - { - "type": "optional", - "title": "enum_value_deprecationReason_root___type_fn_input_name_string_optional", - "policies": [], - "item": 3, - "default_value": null + "required": [], + "policies": { + "name": [], + "description": [], + "isDeprecated": [], + "deprecationReason": [] + } }, { "type": "function", "title": "type_inputFields_fn", - "policies": [], - "input": 40, - "output": 42, - "injections": {}, + "input": 9, + "output": 25, "runtimeConfig": null, "materializer": 1, "rate_weight": null, "rate_calls": false }, - { - "type": "object", - "title": "type_inputFields_fn_input", - "policies": [], - "properties": { - "includeDeprecated": 41 - }, - "id": [], - "required": [] - }, - { - "type": "optional", - "title": "type_inputFields_fn_input_includeDeprecated_type_fields_fn_input_includeDeprecated_boolean_optional", - "policies": [], - "item": 13, - "default_value": null - }, { "type": "optional", "title": "type_inputFields_fn_output", - "policies": [], - "item": 43, - "default_value": null - }, - { - "type": "list", - "title": "type_inputFields_fn_output", - "policies": [], - "items": 22 - }, - { - "type": "optional", - "title": "type_ofType_type_optional", - "policies": [], - "item": 5, + "item": 16, "default_value": null }, { "type": "function", "title": "root___schema_fn", - "policies": [ - 0 - ], - "input": 46, - "output": 47, - "injections": {}, + "input": 27, + "output": 28, "runtimeConfig": null, "materializer": 3, "rate_weight": null, @@ -413,7 +284,6 @@ { "type": "object", "title": "root___schema_fn_input", - "policies": [], "properties": {}, "id": [], "required": [] @@ -421,82 +291,58 @@ { "type": "object", "title": "schema", - "policies": [], "properties": { - "description": 48, - "types": 49, + "description": 7, + "types": 19, "queryType": 5, - "mutationType": 50, - "subscriptionType": 51, - "directives": 52 + "mutationType": 4, + "subscriptionType": 4, + "directives": 29 }, "id": [], - "required": [] - }, - { - "type": "optional", - "title": "schema_description_root___type_fn_input_name_string_optional", - "policies": [], - "item": 3, - "default_value": null - }, - { - "type": "list", - "title": "schema_types_type_list", - "policies": [], - "items": 5 - }, - { - "type": "optional", - "title": "schema_mutationType_type_optional", - "policies": [], - "item": 5, - "default_value": null - }, - { - "type": "optional", - "title": "schema_subscriptionType_type_optional", - "policies": [], - "item": 5, - "default_value": null + "required": [], + "policies": { + "description": [], + "types": [], + "queryType": [], + "mutationType": [], + "subscriptionType": [], + "directives": [] + } }, { "type": "list", "title": "schema_directives_directive_list", - "policies": [], - "items": 53 + "items": 30 }, { "type": "object", "title": "directive", - "policies": [], "properties": { "name": 3, - "description": 54, - "isRepeatable": 13, - "locations": 55, - "args": 57 + "description": 7, + "isRepeatable": 11, + "locations": 31, + "args": 15 }, "id": [], - "required": [] - }, - { - "type": "optional", - "title": "directive_description_root___type_fn_input_name_string_optional", - "policies": [], - "item": 3, - "default_value": null + "required": [], + "policies": { + "name": [], + "description": [], + "isRepeatable": [], + "locations": [], + "args": [] + } }, { "type": "list", "title": "directive_locations_directive_location_list", - "policies": [], - "items": 56 + "items": 32 }, { "type": "string", "title": "directive_location", - "policies": [], "enum": [ "\"QUERY\"", "\"MUTATION\"", @@ -518,41 +364,6 @@ "\"INPUT_OBJECT\"", "\"INPUT_FIELD_DEFINITION\"" ] - }, - { - "type": "function", - "title": "directive_args_fn", - "policies": [], - "input": 58, - "output": 60, - "injections": {}, - "runtimeConfig": null, - "materializer": 1, - "rate_weight": null, - "rate_calls": false - }, - { - "type": "object", - "title": "directive_args_fn_input", - "policies": [], - "properties": { - "includeDeprecated": 59 - }, - "id": [], - "required": [] - }, - { - "type": "optional", - "title": "directive_args_fn_input_includeDeprecated_type_fields_fn_input_includeDeprecated_boolean_optional", - "policies": [], - "item": 13, - "default_value": null - }, - { - "type": "list", - "title": "directive_args_fn_output", - "policies": [], - "items": 22 } ], "materializers": [ @@ -582,7 +393,7 @@ "idempotent": true }, "data": { - "name": "true" + "name": "pass" } }, { @@ -635,4 +446,4 @@ "randomSeed": null, "artifacts": {} } -} +} \ No newline at end of file diff --git a/src/typegate/src/typegraphs/prisma_migration.json b/src/typegate/src/typegraphs/prisma_migration.json index 6d5d98040d..1a4da15dd4 100644 --- a/src/typegate/src/typegraphs/prisma_migration.json +++ b/src/typegate/src/typegraphs/prisma_migration.json @@ -3,13 +3,12 @@ { "type": "object", "title": "typegate/prisma_migration", - "policies": [], "properties": { "diff": 1, - "apply": 8, - "create": 14, - "deploy": 21, - "reset": 27 + "apply": 7, + "create": 11, + "deploy": 14, + "reset": 18 }, "id": [], "required": [ @@ -18,17 +17,30 @@ "create", "deploy", "reset" - ] + ], + "policies": { + "diff": [ + 0 + ], + "apply": [ + 0 + ], + "create": [ + 0 + ], + "deploy": [ + 0 + ], + "reset": [ + 0 + ] + } }, { "type": "function", "title": "root_diff_fn", - "policies": [ - 0 - ], "input": 2, "output": 6, - "injections": {}, "runtimeConfig": null, "materializer": 0, "rate_weight": null, @@ -37,59 +49,52 @@ { "type": "object", "title": "root_diff_fn_input", - "policies": [], "properties": { "typegraph": 3, "runtime": 4, "script": 5 }, "id": [], - "required": [] + "required": [], + "policies": { + "typegraph": [], + "runtime": [], + "script": [] + } }, { "type": "string", - "title": "root_diff_fn_input_typegraph_string", - "policies": [] + "title": "root_diff_fn_input_typegraph_string" }, { "type": "optional", "title": "root_diff_fn_input_runtime_root_diff_fn_input_typegraph_string_optional", - "policies": [], "item": 3, "default_value": null }, { "type": "boolean", - "title": "root_diff_fn_input_script_boolean", - "policies": [] + "title": "root_diff_fn_input_script_boolean" }, { "type": "object", "title": "root_diff_fn_output", - "policies": [], "properties": { - "diff": 7, + "diff": 4, "runtimeName": 3 }, "id": [], - "required": [] - }, - { - "type": "optional", - "title": "root_diff_fn_output_diff_root_diff_fn_input_typegraph_string_optional", - "policies": [], - "item": 3, - "default_value": null + "required": [], + "policies": { + "diff": [], + "runtimeName": [] + } }, { "type": "function", "title": "root_apply_fn", - "policies": [ - 0 - ], - "input": 9, - "output": 12, - "injections": {}, + "input": 8, + "output": 9, "runtimeConfig": null, "materializer": 2, "rate_weight": null, @@ -98,56 +103,45 @@ { "type": "object", "title": "root_apply_fn_input", - "policies": [], "properties": { "typegraph": 3, - "runtime": 10, - "migrations": 11, + "runtime": 4, + "migrations": 4, "resetDatabase": 5 }, "id": [], - "required": [] - }, - { - "type": "optional", - "title": "root_apply_fn_input_runtime_root_diff_fn_input_typegraph_string_optional", - "policies": [], - "item": 3, - "default_value": null - }, - { - "type": "optional", - "title": "root_apply_fn_input_migrations_root_diff_fn_input_typegraph_string_optional", - "policies": [], - "item": 3, - "default_value": null + "required": [], + "policies": { + "typegraph": [], + "runtime": [], + "migrations": [], + "resetDatabase": [] + } }, { "type": "object", "title": "root_apply_fn_output", - "policies": [], "properties": { "databaseReset": 5, - "appliedMigrations": 13 + "appliedMigrations": 10 }, "id": [], - "required": [] + "required": [], + "policies": { + "databaseReset": [], + "appliedMigrations": [] + } }, { "type": "list", "title": "root_apply_fn_output_appliedMigrations_root_diff_fn_input_typegraph_string_list", - "policies": [], "items": 3 }, { "type": "function", "title": "root_create_fn", - "policies": [ - 0 - ], - "input": 15, - "output": 18, - "injections": {}, + "input": 12, + "output": 13, "runtimeConfig": null, "materializer": 3, "rate_weight": null, @@ -156,67 +150,46 @@ { "type": "object", "title": "root_create_fn_input", - "policies": [], "properties": { "typegraph": 3, - "runtime": 16, + "runtime": 4, "name": 3, "apply": 5, - "migrations": 17 + "migrations": 4 }, "id": [], - "required": [] - }, - { - "type": "optional", - "title": "root_create_fn_input_runtime_root_diff_fn_input_typegraph_string_optional", - "policies": [], - "item": 3, - "default_value": null - }, - { - "type": "optional", - "title": "root_create_fn_input_migrations_root_diff_fn_input_typegraph_string_optional", - "policies": [], - "item": 3, - "default_value": null + "required": [], + "policies": { + "typegraph": [], + "runtime": [], + "name": [], + "apply": [], + "migrations": [] + } }, { "type": "object", "title": "root_create_fn_output", - "policies": [], "properties": { "createdMigrationName": 3, - "applyError": 19, - "migrations": 20, + "applyError": 4, + "migrations": 4, "runtimeName": 3 }, "id": [], - "required": [] - }, - { - "type": "optional", - "title": "root_create_fn_output_applyError_root_diff_fn_input_typegraph_string_optional", - "policies": [], - "item": 3, - "default_value": null - }, - { - "type": "optional", - "title": "root_create_fn_output_migrations_root_diff_fn_input_typegraph_string_optional", - "policies": [], - "item": 3, - "default_value": null + "required": [], + "policies": { + "createdMigrationName": [], + "applyError": [], + "migrations": [], + "runtimeName": [] + } }, { "type": "function", "title": "root_deploy_fn", - "policies": [ - 0 - ], - "input": 22, - "output": 24, - "injections": {}, + "input": 15, + "output": 16, "runtimeConfig": null, "materializer": 4, "rate_weight": null, @@ -225,53 +198,42 @@ { "type": "object", "title": "root_deploy_fn_input", - "policies": [], "properties": { "typegraph": 3, - "runtime": 23, + "runtime": 4, "migrations": 3 }, "id": [], - "required": [] - }, - { - "type": "optional", - "title": "root_deploy_fn_input_runtime_root_diff_fn_input_typegraph_string_optional", - "policies": [], - "item": 3, - "default_value": null + "required": [], + "policies": { + "typegraph": [], + "runtime": [], + "migrations": [] + } }, { "type": "object", "title": "root_deploy_fn_output", - "policies": [], "properties": { - "migrationCount": 25, - "appliedMigrations": 26 + "migrationCount": 17, + "appliedMigrations": 10 }, "id": [], - "required": [] + "required": [], + "policies": { + "migrationCount": [], + "appliedMigrations": [] + } }, { "type": "integer", - "title": "root_deploy_fn_output_migrationCount_integer", - "policies": [] - }, - { - "type": "list", - "title": "root_deploy_fn_output_appliedMigrations_root_diff_fn_input_typegraph_string_list", - "policies": [], - "items": 3 + "title": "root_deploy_fn_output_migrationCount_integer" }, { "type": "function", "title": "root_reset_fn", - "policies": [ - 0 - ], - "input": 28, + "input": 19, "output": 5, - "injections": {}, "runtimeConfig": null, "materializer": 5, "rate_weight": null, @@ -280,20 +242,16 @@ { "type": "object", "title": "root_reset_fn_input", - "policies": [], "properties": { "typegraph": 3, - "runtime": 29 + "runtime": 4 }, "id": [], - "required": [] - }, - { - "type": "optional", - "title": "root_reset_fn_input_runtime_root_diff_fn_input_typegraph_string_optional", - "policies": [], - "item": 3, - "default_value": null + "required": [], + "policies": { + "typegraph": [], + "runtime": [] + } } ], "materializers": [ @@ -314,7 +272,7 @@ "idempotent": true }, "data": { - "script": "var _my_lambda = (_args, { context }) => context.username === 'admin'", + "script": "var _my_lambda = (_args, { context }) => context.username === 'admin' ? 'ALLOW' : 'DENY'", "secrets": [] } }, @@ -411,4 +369,4 @@ "randomSeed": null, "artifacts": {} } -} +} \ No newline at end of file diff --git a/src/typegate/src/typegraphs/prisma_migration.py b/src/typegate/src/typegraphs/prisma_migration.py index ddc96df004..1e88ff7a65 100644 --- a/src/typegate/src/typegraphs/prisma_migration.py +++ b/src/typegate/src/typegraphs/prisma_migration.py @@ -26,7 +26,8 @@ def prisma_migration(g: Graph): deno = DenoRuntime() admin_only = deno.policy( - "admin_only", code="(_args, { context }) => context.username === 'admin'" + "admin_only", + code="(_args, { context }) => context.username === 'admin' ? 'ALLOW' : 'DENY'", ) g.auth(Auth.basic(["admin"])) diff --git a/src/typegate/src/typegraphs/typegate.json b/src/typegate/src/typegraphs/typegate.json index 391ec404f0..828df86a18 100644 --- a/src/typegate/src/typegraphs/typegate.json +++ b/src/typegate/src/typegraphs/typegate.json @@ -3,20 +3,19 @@ { "type": "object", "title": "typegate", - "policies": [], "properties": { "typegraphs": 1, "typegraph": 7, "addTypegraph": 12, "removeTypegraphs": 22, "argInfoByPath": 26, - "findAvailableOperations": 40, - "findPrismaModels": 48, - "execRawPrismaRead": 54, - "execRawPrismaCreate": 66, - "execRawPrismaUpdate": 67, - "execRawPrismaDelete": 68, - "queryPrismaModel": 69 + "findAvailableOperations": 39, + "findPrismaModels": 47, + "execRawPrismaRead": 53, + "execRawPrismaCreate": 64, + "execRawPrismaUpdate": 65, + "execRawPrismaDelete": 66, + "queryPrismaModel": 67 }, "id": [], "required": [ @@ -32,17 +31,51 @@ "execRawPrismaUpdate", "execRawPrismaDelete", "queryPrismaModel" - ] + ], + "policies": { + "typegraphs": [ + 0 + ], + "typegraph": [ + 0 + ], + "addTypegraph": [ + 0 + ], + "removeTypegraphs": [ + 0 + ], + "argInfoByPath": [ + 0 + ], + "findAvailableOperations": [ + 0 + ], + "findPrismaModels": [ + 0 + ], + "execRawPrismaRead": [ + 0 + ], + "execRawPrismaCreate": [ + 0 + ], + "execRawPrismaUpdate": [ + 0 + ], + "execRawPrismaDelete": [ + 0 + ], + "queryPrismaModel": [ + 0 + ] + } }, { "type": "function", "title": "root_typegraphs_fn", - "policies": [ - 0 - ], "input": 2, "output": 3, - "injections": {}, "runtimeConfig": null, "materializer": 0, "rate_weight": null, @@ -51,7 +84,6 @@ { "type": "object", "title": "root_typegraphs_fn_input", - "policies": [], "properties": {}, "id": [], "required": [] @@ -59,40 +91,36 @@ { "type": "list", "title": "root_typegraphs_fn_output", - "policies": [], "items": 4 }, { "type": "object", "title": "Typegraph", - "policies": [], "properties": { "name": 5, "url": 6 }, "id": [], - "required": [] + "required": [], + "policies": { + "name": [], + "url": [] + } }, { "type": "string", - "title": "Typegraph_name_string", - "policies": [] + "title": "Typegraph_name_string" }, { "type": "string", "title": "Typegraph_url_string_uri", - "policies": [], "format": "uri" }, { "type": "function", "title": "root_typegraph_fn", - "policies": [ - 0 - ], "input": 8, "output": 9, - "injections": {}, "runtimeConfig": null, "materializer": 2, "rate_weight": null, @@ -101,39 +129,42 @@ { "type": "object", "title": "root_typegraph_fn_input", - "policies": [], "properties": { "name": 5 }, "id": [], - "required": [] + "required": [], + "policies": { + "name": [] + } }, { "type": "optional", "title": "root_typegraph_fn_output", - "policies": [], "item": 10, "default_value": null }, { "type": "object", "title": "root_typegraph_fn_output", - "policies": [], "properties": { "name": 5, "url": 6, "serialized": 11 }, "id": [], - "required": [] + "required": [], + "policies": { + "name": [], + "url": [], + "serialized": [] + } }, { "type": "function", "title": "root_typegraph_fn_output_serialized_fn", - "policies": [], "input": 2, "output": 5, - "injections": {}, "runtimeConfig": null, "materializer": 3, "rate_weight": null, @@ -142,12 +173,8 @@ { "type": "function", "title": "root_addTypegraph_fn", - "policies": [ - 0 - ], "input": 13, "output": 15, - "injections": {}, "runtimeConfig": null, "materializer": 4, "rate_weight": null, @@ -156,25 +183,27 @@ { "type": "object", "title": "root_addTypegraph_fn_input", - "policies": [], "properties": { "fromString": 14, "secrets": 14, "targetVersion": 5 }, "id": [], - "required": [] + "required": [], + "policies": { + "fromString": [], + "secrets": [], + "targetVersion": [] + } }, { "type": "string", "title": "root_addTypegraph_fn_input_fromString_string_json", - "policies": [], "format": "json" }, { "type": "object", "title": "root_addTypegraph_fn_output", - "policies": [], "properties": { "name": 5, "messages": 16, @@ -182,29 +211,36 @@ "failure": 21 }, "id": [], - "required": [] + "required": [], + "policies": { + "name": [], + "messages": [], + "migrations": [], + "failure": [] + } }, { "type": "list", "title": "root_addTypegraph_fn_output_messages_root_addTypegraph_fn_output_messages_struct_list", - "policies": [], "items": 17 }, { "type": "object", "title": "root_addTypegraph_fn_output_messages_struct", - "policies": [], "properties": { "type": 18, "text": 5 }, "id": [], - "required": [] + "required": [], + "policies": { + "type": [], + "text": [] + } }, { "type": "string", "title": "root_addTypegraph_fn_output_messages_struct_type_string_enum", - "policies": [], "enum": [ "\"info\"", "\"warning\"", @@ -214,36 +250,33 @@ { "type": "list", "title": "root_addTypegraph_fn_output_migrations_root_addTypegraph_fn_output_migrations_struct_list", - "policies": [], "items": 20 }, { "type": "object", "title": "root_addTypegraph_fn_output_migrations_struct", - "policies": [], "properties": { "runtime": 5, "migrations": 5 }, "id": [], - "required": [] + "required": [], + "policies": { + "runtime": [], + "migrations": [] + } }, { "type": "optional", "title": "root_addTypegraph_fn_output_failure_root_addTypegraph_fn_input_fromString_string_json_optional", - "policies": [], "item": 14, "default_value": null }, { "type": "function", "title": "root_removeTypegraphs_fn", - "policies": [ - 0 - ], "input": 23, "output": 25, - "injections": {}, "runtimeConfig": null, "materializer": 5, "rate_weight": null, @@ -252,33 +285,29 @@ { "type": "object", "title": "root_removeTypegraphs_fn_input", - "policies": [], "properties": { "names": 24 }, "id": [], - "required": [] + "required": [], + "policies": { + "names": [] + } }, { "type": "list", "title": "root_removeTypegraphs_fn_input_names_Typegraph_name_string_list", - "policies": [], "items": 5 }, { "type": "boolean", - "title": "root_removeTypegraphs_fn_output", - "policies": [] + "title": "root_removeTypegraphs_fn_output" }, { "type": "function", "title": "root_argInfoByPath_fn", - "policies": [ - 0 - ], "input": 27, - "output": 30, - "injections": {}, + "output": 29, "runtimeConfig": null, "materializer": 6, "rate_weight": null, @@ -287,7 +316,6 @@ { "type": "object", "title": "root_argInfoByPath_fn_input", - "policies": [], "properties": { "typegraph": 5, "queryType": 5, @@ -295,109 +323,116 @@ "argPaths": 28 }, "id": [], - "required": [] - }, - { - "type": "list", - "title": "root_argInfoByPath_fn_input_argPaths_root_argInfoByPath_fn_input_argPaths_Typegraph_name_string_list_list", - "policies": [], - "items": 29 + "required": [], + "policies": { + "typegraph": [], + "queryType": [], + "fn": [], + "argPaths": [] + } }, { "type": "list", - "title": "root_argInfoByPath_fn_input_argPaths_Typegraph_name_string_list", - "policies": [], - "items": 5 + "title": "root_argInfoByPath_fn_input_argPaths_root_removeTypegraphs_fn_input_names_Typegraph_name_string_list_list", + "items": 24 }, { "type": "list", "title": "root_argInfoByPath_fn_output", - "policies": [], - "items": 31 + "items": 30 }, { "type": "object", "title": "TypeInfo", - "policies": [], "properties": { "optional": 25, "title": 5, "type": 5, - "enum": 32, - "default": 34, - "format": 35, - "policies": 36, - "fields": 37 + "enum": 31, + "default": 21, + "format": 33, + "policies": 34, + "fields": 36 }, "id": [], - "required": [] + "required": [], + "policies": { + "optional": [], + "title": [], + "type": [], + "enum": [], + "default": [], + "format": [], + "policies": [], + "fields": [] + } }, { "type": "optional", "title": "TypeInfo_enum_TypeInfo_enum_root_addTypegraph_fn_input_fromString_string_json_list_optional", - "policies": [], - "item": 33, + "item": 32, "default_value": null }, { "type": "list", "title": "TypeInfo_enum_root_addTypegraph_fn_input_fromString_string_json_list", - "policies": [], "items": 14 }, - { - "type": "optional", - "title": "TypeInfo_default_root_addTypegraph_fn_input_fromString_string_json_optional", - "policies": [], - "item": 14, - "default_value": null - }, { "type": "optional", "title": "TypeInfo_format_Typegraph_name_string_optional", - "policies": [], "item": 5, "default_value": null }, { "type": "list", - "title": "TypeInfo_policies_Typegraph_name_string_list", - "policies": [], - "items": 5 + "title": "TypeInfo_policies_TypeInfo_policies_struct_list", + "items": 35 + }, + { + "type": "object", + "title": "TypeInfo_policies_struct", + "properties": { + "fieldName": 5, + "policies": 14 + }, + "id": [], + "required": [], + "policies": { + "fieldName": [], + "policies": [] + } }, { "type": "optional", "title": "TypeInfo_fields_TypeInfo_fields_TypeInfo_fields_struct_list_optional", - "policies": [], - "item": 38, + "item": 37, "default_value": null }, { "type": "list", "title": "TypeInfo_fields_TypeInfo_fields_struct_list", - "policies": [], - "items": 39 + "items": 38 }, { "type": "object", "title": "TypeInfo_fields_struct", - "policies": [], "properties": { - "subPath": 29, - "termNode": 31 + "subPath": 24, + "termNode": 30 }, "id": [], - "required": [] + "required": [], + "policies": { + "subPath": [], + "termNode": [] + } }, { "type": "function", "title": "root_findAvailableOperations_fn", - "policies": [ - 0 - ], - "input": 41, - "output": 42, - "injections": {}, + "input": 40, + "output": 41, "runtimeConfig": null, "materializer": 7, "rate_weight": null, @@ -406,37 +441,43 @@ { "type": "object", "title": "root_findAvailableOperations_fn_input", - "policies": [], "properties": { "typegraph": 5 }, "id": [], - "required": [] + "required": [], + "policies": { + "typegraph": [] + } }, { "type": "list", "title": "root_findAvailableOperations_fn_output", - "policies": [], - "items": 43 + "items": 42 }, { "type": "object", "title": "OperationInfo", - "policies": [], "properties": { "name": 5, - "type": 44, - "inputs": 45, - "output": 31, - "outputItem": 47 + "type": 43, + "inputs": 44, + "output": 30, + "outputItem": 46 }, "id": [], - "required": [] + "required": [], + "policies": { + "name": [], + "type": [], + "inputs": [], + "output": [], + "outputItem": [] + } }, { "type": "string", "title": "OperationInfo_type_string_enum", - "policies": [], "enum": [ "\"query\"", "\"mutation\"" @@ -445,36 +486,33 @@ { "type": "list", "title": "OperationInfo_inputs_OperationInfo_inputs_struct_list", - "policies": [], - "items": 46 + "items": 45 }, { "type": "object", "title": "OperationInfo_inputs_struct", - "policies": [], "properties": { "name": 5, - "type": 31 + "type": 30 }, "id": [], - "required": [] + "required": [], + "policies": { + "name": [], + "type": [] + } }, { "type": "optional", "title": "OperationInfo_outputItem_TypeInfo_optional", - "policies": [], - "item": 31, + "item": 30, "default_value": null }, { "type": "function", "title": "root_findPrismaModels_fn", - "policies": [ - 0 - ], - "input": 41, - "output": 49, - "injections": {}, + "input": 40, + "output": 48, "runtimeConfig": null, "materializer": 8, "rate_weight": null, @@ -483,64 +521,74 @@ { "type": "list", "title": "root_findPrismaModels_fn_output", - "policies": [], - "items": 50 + "items": 49 }, { "type": "object", "title": "PrismaModelInfo", - "policies": [], "properties": { "name": 5, "runtime": 5, - "fields": 51 + "fields": 50 }, "id": [], - "required": [] + "required": [], + "policies": { + "name": [], + "runtime": [], + "fields": [] + } }, { "type": "list", "title": "PrismaModelInfo_fields_PrismaModelInfo_fields_struct_list", - "policies": [], - "items": 52 + "items": 51 }, { "type": "object", "title": "PrismaModelInfo_fields_struct", - "policies": [], "properties": { "name": 5, "as_id": 25, - "type": 53 + "type": 52 }, "id": [], - "required": [] + "required": [], + "policies": { + "name": [], + "as_id": [], + "type": [] + } }, { "type": "object", "title": "ShallowTypeInfo", - "policies": [], "properties": { "optional": 25, "title": 5, "type": 5, - "enum": 32, - "default": 34, - "format": 35, - "policies": 36 + "enum": 31, + "default": 21, + "format": 33, + "policies": 34 }, "id": [], - "required": [] + "required": [], + "policies": { + "optional": [], + "title": [], + "type": [], + "enum": [], + "default": [], + "format": [], + "policies": [] + } }, { "type": "function", "title": "root_execRawPrismaRead_fn", - "policies": [ - 0 - ], - "input": 55, + "input": 54, "output": 14, - "injections": {}, "runtimeConfig": null, "materializer": 9, "rate_weight": null, @@ -549,47 +597,46 @@ { "type": "object", "title": "root_execRawPrismaRead_fn_input", - "policies": [], "properties": { "typegraph": 5, "runtime": 5, - "query": 56 + "query": 55 }, "id": [], - "required": [] + "required": [], + "policies": { + "typegraph": [], + "runtime": [], + "query": [] + } }, { "type": "either", "title": "PrismaQuery", - "policies": [], "oneOf": [ - 57, - 60 + 56, + 58 ] }, { "type": "object", "title": "PrismaSingleQuery", - "policies": [], "properties": { - "modelName": 58, - "action": 59, + "modelName": 33, + "action": 57, "query": 14 }, "id": [], - "required": [] - }, - { - "type": "optional", - "title": "PrismaSingleQuery_modelName_Typegraph_name_string_optional", - "policies": [], - "item": 5, - "default_value": null + "required": [], + "policies": { + "modelName": [], + "action": [], + "query": [] + } }, { "type": "string", "title": "PrismaQueryTag", - "policies": [], "enum": [ "\"findUnique\"", "\"findFirst\"", @@ -614,48 +661,49 @@ { "type": "object", "title": "PrismaBatchQuery", - "policies": [], "properties": { - "batch": 61, - "transaction": 62 + "batch": 59, + "transaction": 60 }, "id": [], - "required": [] + "required": [], + "policies": { + "batch": [], + "transaction": [] + } }, { "type": "list", "title": "PrismaBatchQuery_batch_PrismaSingleQuery_list", - "policies": [], - "items": 57 + "items": 56 }, { "type": "optional", "title": "PrismaBatchQuery_transaction_PrismaBatchQuery_transaction_struct_optional", - "policies": [], - "item": 63, + "item": 61, "default_value": null }, { "type": "object", "title": "PrismaBatchQuery_transaction_struct", - "policies": [], "properties": { - "isolationLevel": 64 + "isolationLevel": 62 }, "id": [], - "required": [] + "required": [], + "policies": { + "isolationLevel": [] + } }, { "type": "optional", "title": "PrismaBatchQuery_transaction_struct_isolationLevel_PrismaBatchQuery_transaction_struct_isolationLevel_string_enum_optional", - "policies": [], - "item": 65, + "item": 63, "default_value": null }, { "type": "string", "title": "PrismaBatchQuery_transaction_struct_isolationLevel_string_enum", - "policies": [], "enum": [ "\"read uncommitted\"", "\"readuncommitted\"", @@ -670,12 +718,8 @@ { "type": "function", "title": "root_execRawPrismaCreate_fn", - "policies": [ - 0 - ], - "input": 55, + "input": 54, "output": 14, - "injections": {}, "runtimeConfig": null, "materializer": 10, "rate_weight": null, @@ -684,12 +728,8 @@ { "type": "function", "title": "root_execRawPrismaUpdate_fn", - "policies": [ - 0 - ], - "input": 55, + "input": 54, "output": 14, - "injections": {}, "runtimeConfig": null, "materializer": 11, "rate_weight": null, @@ -698,12 +738,8 @@ { "type": "function", "title": "root_execRawPrismaDelete_fn", - "policies": [ - 0 - ], - "input": 55, + "input": 54, "output": 14, - "injections": {}, "runtimeConfig": null, "materializer": 12, "rate_weight": null, @@ -712,12 +748,8 @@ { "type": "function", "title": "root_queryPrismaModel_fn", - "policies": [ - 0 - ], - "input": 70, - "output": 72, - "injections": {}, + "input": 68, + "output": 70, "runtimeConfig": null, "materializer": 13, "rate_weight": null, @@ -726,45 +758,42 @@ { "type": "object", "title": "root_queryPrismaModel_fn_input", - "policies": [], "properties": { "typegraph": 5, "runtime": 5, "model": 5, - "offset": 71, - "limit": 71 + "offset": 69, + "limit": 69 }, "id": [], - "required": [] + "required": [], + "policies": { + "typegraph": [], + "runtime": [], + "model": [], + "offset": [], + "limit": [] + } }, { "type": "integer", - "title": "root_queryPrismaModel_fn_input_offset_integer", - "policies": [] + "title": "root_queryPrismaModel_fn_input_offset_integer" }, { "type": "object", "title": "root_queryPrismaModel_fn_output", - "policies": [], "properties": { - "fields": 73, - "rowCount": 71, - "data": 74 + "fields": 50, + "rowCount": 69, + "data": 32 }, "id": [], - "required": [] - }, - { - "type": "list", - "title": "root_queryPrismaModel_fn_output_fields_PrismaModelInfo_fields_struct_list", - "policies": [], - "items": 52 - }, - { - "type": "list", - "title": "root_queryPrismaModel_fn_output_data_root_addTypegraph_fn_input_fromString_string_json_list", - "policies": [], - "items": 14 + "required": [], + "policies": { + "fields": [], + "rowCount": [], + "data": [] + } } ], "materializers": [ @@ -785,7 +814,7 @@ "idempotent": true }, "data": { - "script": "var _my_lambda = (_args, { context }) => context.username === 'admin'", + "script": "var _my_lambda = (_args, { context }) => context.username === 'admin' ? 'ALLOW' : 'DENY' ", "secrets": [] } }, @@ -956,4 +985,4 @@ "randomSeed": null, "artifacts": {} } -} +} \ No newline at end of file diff --git a/src/typegate/src/typegraphs/typegate.py b/src/typegate/src/typegraphs/typegate.py index 2b65527830..5008c472e9 100644 --- a/src/typegate/src/typegraphs/typegate.py +++ b/src/typegate/src/typegraphs/typegate.py @@ -97,7 +97,8 @@ def typegate(g: Graph): deno = DenoRuntime() admin_only = deno.policy( - "admin_only", code="(_args, { context }) => context.username === 'admin'" + "admin_only", + code="(_args, { context }) => context.username === 'admin' ? 'ALLOW' : 'DENY' ", ) g.auth(Auth.basic(["admin"])) @@ -177,7 +178,9 @@ def typegate(g: Graph): "enum": t.list(t.json()).optional(), "default": t.json().optional(), "format": t.string().optional(), - "policies": t.list(t.string()), + "policies": t.list( + t.struct({"fieldName": t.string(), "policies": t.json()}) + ), }, name="ShallowTypeInfo", ) diff --git a/src/typegraph/core/Cargo.toml b/src/typegraph/core/Cargo.toml index 0b0d757e9a..eadd6d7ce5 100644 --- a/src/typegraph/core/Cargo.toml +++ b/src/typegraph/core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "typegraph_core" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" edition = "2021" [lib] diff --git a/src/typegraph/core/src/conversion/types.rs b/src/typegraph/core/src/conversion/types.rs index c90f3728bb..e7bed25d7a 100644 --- a/src/typegraph/core/src/conversion/types.rs +++ b/src/typegraph/core/src/conversion/types.rs @@ -3,8 +3,8 @@ use crate::errors::Result; use crate::typegraph::TypegraphContext; -use crate::types::{ExtendedTypeDef, PolicySpec, TypeId}; -use common::typegraph::{PolicyIndices, TypeNode, TypeNodeBase}; +use crate::types::{ExtendedTypeDef, TypeId}; +use common::typegraph::{TypeNode, TypeNodeBase}; use enum_dispatch::enum_dispatch; use std::rc::Rc; @@ -20,25 +20,20 @@ impl TypeConversion for Rc { } } -pub struct BaseBuilderInit<'a, 'b> { - pub ctx: &'a mut TypegraphContext, +pub struct BaseBuilderInit { pub base_name: &'static str, pub type_id: TypeId, pub name: Option, - pub policies: &'b [PolicySpec], } pub struct BaseBuilder { name: String, - policies: Vec, // optional features enumeration: Option>, } -impl<'a, 'b> BaseBuilderInit<'a, 'b> { +impl BaseBuilderInit { pub fn init_builder(self) -> Result { - let policies = self.ctx.register_policy_chain(self.policies)?; - let name = match self.name { Some(name) => name, None => format!("{}_{}_placeholder", self.base_name, self.type_id.0), @@ -46,7 +41,6 @@ impl<'a, 'b> BaseBuilderInit<'a, 'b> { Ok(BaseBuilder { name, - policies, enumeration: None, }) } @@ -57,7 +51,6 @@ impl BaseBuilder { Ok(TypeNodeBase { description: None, enumeration: self.enumeration, - policies: self.policies, title: self.name, }) } diff --git a/src/typegraph/core/src/global_store.rs b/src/typegraph/core/src/global_store.rs index 42545ac449..b09b4a3a69 100644 --- a/src/typegraph/core/src/global_store.rs +++ b/src/typegraph/core/src/global_store.rs @@ -44,6 +44,7 @@ pub struct SavedState { #[derive(Default)] pub struct Store { + // type ids can be pre-allocated pub types: Vec, // the bool indicates weather the name was from // user or generated placeholder (false) @@ -88,7 +89,7 @@ impl Store { effect: Effect::Read, data: MaterializerData::Deno(Rc::new(DenoMaterializer::Predefined( crate::wit::runtimes::MaterializerDenoPredefined { - name: "true".to_string(), + name: "pass".to_string(), }, ))), }], @@ -107,7 +108,7 @@ const PREDEFINED_DENO_FUNCTIONS: &[&str] = &["identity", "true"]; thread_local! { pub static STORE: RefCell = RefCell::new(Store::new()); - pub static SDK_VERSION: String = "0.5.0-rc.7".to_owned(); + pub static SDK_VERSION: String = "0.5.0-rc.9".to_owned(); } fn with_store T>(f: F) -> T { @@ -208,10 +209,16 @@ impl Store { } } - pub fn register_type_def(build: impl FnOnce(TypeId) -> TypeDef) -> Result { + pub fn register_type_def(build: impl FnOnce(TypeId) -> Result) -> Result { // this works since the store is thread local - let id = with_store(|s| s.types.len()) as u32; - let type_def = build(id.into()); + let id = with_store_mut(|s| s.types.len()) as u32; + let type_def = build(id.into())?; + + with_store_mut(move |s| -> Result<()> { + s.types.push(type_def.into()); + Ok(()) + })?; + Ok(id.into()) // // very hacky solution where we keep track of // // explicitly named types in user_named_types @@ -237,25 +244,6 @@ impl Store { // } // } // } - - { - let type_def = type_def.clone(); - with_store_mut(move |s| -> Result<()> { - s.types.push(Type::Def(type_def)); - Ok(()) - })?; - } - - let type_id: TypeId = id.into(); - match type_def { - TypeDef::List(_) | TypeDef::Optional(_) => { - let variant = type_def.variant_name(); - let placeholder_name = format!("{variant}_{id}{PLACEHOLDER_TYPE_SUFFIX}"); - let type_ref = TypeRef::named(placeholder_name, Type::Def(type_def)).register()?; - Ok(type_ref.id()) - } - _ => Ok(type_id), - } } pub fn register_type_name( @@ -497,6 +485,10 @@ impl TypeId { Ok(matches!(self.as_xdef()?.type_def, TypeDef::Func(_))) } + pub fn is_struct(&self) -> Result { + Ok(matches!(self.as_xdef()?.type_def, TypeDef::Struct(_))) + } + pub fn resolve_quant(&self) -> Result { let type_id = *self; match type_id.as_xdef()?.type_def { diff --git a/src/typegraph/core/src/lib.rs b/src/typegraph/core/src/lib.rs index e13e0db35c..8c33565b5c 100644 --- a/src/typegraph/core/src/lib.rs +++ b/src/typegraph/core/src/lib.rs @@ -62,67 +62,23 @@ impl wit::core::Guest for Lib { } fn refb(name: String, attr: Option) -> Result { - Ok(TypeRef::indirect( - name, - attr.map(|attr| { - serde_json::from_str(&attr) - .map_err(|e| format!("Could not parse ref attributes: {e:?}")) - }) - .transpose()?, - ) - .register()? - .id() - .0) + Ok(ref_def(name, attr)?.register()?.id().0) } fn integerb(data: TypeInteger) -> Result { - if let (Some(min), Some(max)) = (data.min, data.max) { - if min >= max { - return Err(errors::invalid_max_value()); - } - } - if let (Some(min), Some(max)) = (data.exclusive_minimum, data.exclusive_maximum) { - if min >= max { - return Err(errors::invalid_max_value()); - } - } - Ok(Store::register_type_def(|id| TypeDef::Integer(Integer { id, data }.into()))?.into()) + Ok(Store::register_type_def(|id| integer_def(data, id))?.into()) } fn floatb(data: TypeFloat) -> Result { - if let (Some(min), Some(max)) = (data.min, data.max) { - if min >= max { - return Err(errors::invalid_max_value()); - } - } - if let (Some(min), Some(max)) = (data.exclusive_minimum, data.exclusive_maximum) { - if min >= max { - return Err(errors::invalid_max_value()); - } - } - Ok(Store::register_type_def(|id| TypeDef::Float(Float { id, data }.into()))?.into()) + Ok(Store::register_type_def(|id| float_def(data, id))?.into()) } fn booleanb() -> Result { - Ok(Store::register_type_def(|id| { - TypeDef::Boolean( - Boolean { - id, - data: TypeBoolean, - } - .into(), - ) - })? - .into()) + Ok(Store::register_type_def(boolean_def)?.into()) } fn stringb(data: TypeString) -> Result { - if let (Some(min), Some(max)) = (data.min, data.max) { - if min >= max { - return Err(errors::invalid_max_value()); - } - } - Ok(Store::register_type_def(|id| TypeDef::String(StringT { id, data }.into()))?.into()) + Ok(Store::register_type_def(|id| string_def(data, id))?.into()) } fn as_id(type_id: CoreTypeId, composite: bool) -> Result { @@ -133,49 +89,27 @@ impl wit::core::Guest for Lib { } fn fileb(data: TypeFile) -> Result { - if let (Some(min), Some(max)) = (data.min, data.max) { - if min >= max { - return Err(errors::invalid_max_value()); - } - } - Ok(Store::register_type_def(|id| TypeDef::File(File { id, data }.into()))?.into()) + Ok(Store::register_type_def(|id| file_def(data, id))?.into()) } fn listb(data: TypeList) -> Result { - if let (Some(min), Some(max)) = (data.min, data.max) { - if min > max { - return Err(errors::invalid_max_value()); - } - } - Ok(Store::register_type_def(|id| TypeDef::List(List { id, data }.into()))?.into()) + Ok(Store::register_type_def(|id| list_def(data, id))?.into()) } fn optionalb(data: TypeOptional) -> Result { - /* let inner_name = match base.name { - Some(_) => None, - None => TypeId(data.of).name()?, - }; */ - Ok(Store::register_type_def(|id| TypeDef::Optional(Optional { id, data }.into()))?.into()) + Ok(Store::register_type_def(|id| optional_def(data, id))?.into()) } fn unionb(data: TypeUnion) -> Result { - Ok(Store::register_type_def(|id| TypeDef::Union(Union { id, data }.into()))?.into()) + Ok(Store::register_type_def(|id| union_def(data, id))?.into()) } fn eitherb(data: TypeEither) -> Result { - Ok(Store::register_type_def(|id| TypeDef::Either(Either { id, data }.into()))?.into()) + Ok(Store::register_type_def(|id| either_def(data, id))?.into()) } fn structb(data: TypeStruct) -> Result { - let mut prop_names = HashSet::new(); - for (name, _) in data.props.iter() { - if prop_names.contains(name) { - return Err(errors::duplicate_key(name)); - } - prop_names.insert(name.clone()); - } - - Ok(Store::register_type_def(|id| TypeDef::Struct(Struct { id, data }.into()))?.into()) + Ok(Store::register_type_def(|id| struct_def(data, id))?.into()) } fn extend_struct( @@ -187,7 +121,7 @@ impl wit::core::Guest for Lib { props.extend(new_props); Ok(Store::register_type_def(|id| { - TypeDef::Struct( + Ok(TypeDef::Struct( Struct { id, data: TypeStruct { @@ -196,18 +130,13 @@ impl wit::core::Guest for Lib { }, } .into(), - ) + )) })? .into()) } fn funcb(data: TypeFunc) -> Result { - let wrapper_type = TypeId(data.inp); - if !matches!(&wrapper_type.as_xdef()?.type_def, TypeDef::Struct(_)) { - return Err(errors::invalid_input_type(&wrapper_type.repr()?)); - } - - Ok(Store::register_type_def(|id| TypeDef::Func(Func { id, data }.into()))?.into()) + Ok(Store::register_type_def(|id| func_def(data, id))?.into()) } fn get_transform_data( @@ -285,13 +214,16 @@ impl wit::core::Guest for Lib { .to_string(); let check = match check { - ContextCheck::NotNull => "value != null".to_string(), + ContextCheck::NotNull => "value != null ? 'PASS' : 'DENY'".to_string(), ContextCheck::Value(val) => { - format!("value === {}", serde_json::to_string(&val).unwrap()) + format!( + "value === {} ? 'PASS' : 'DENY'", + serde_json::to_string(&val).unwrap() + ) } ContextCheck::Pattern(pattern) => { format!( - "new RegExp({}).test(value)", + "new RegExp({}).test(value) ? 'PASS' : 'DENY' ", serde_json::to_string(&pattern).unwrap() ) } @@ -348,6 +280,119 @@ impl wit::core::Guest for Lib { } } +pub fn ref_def(name: String, attr: Option) -> Result { + Ok(TypeRef::indirect( + name, + attr.map(|attr| { + serde_json::from_str(&attr) + .map_err(|e| format!("Could not parse ref attributes: {e:?}")) + }) + .transpose()?, + )) +} + +pub fn integer_def(data: TypeInteger, id: TypeId) -> Result { + if let (Some(min), Some(max)) = (data.min, data.max) { + if min >= max { + return Err(errors::invalid_max_value()); + } + } + if let (Some(min), Some(max)) = (data.exclusive_minimum, data.exclusive_maximum) { + if min >= max { + return Err(errors::invalid_max_value()); + } + } + Ok(TypeDef::Integer(Integer { id, data }.into())) +} + +pub fn float_def(data: TypeFloat, id: TypeId) -> Result { + if let (Some(min), Some(max)) = (data.min, data.max) { + if min >= max { + return Err(errors::invalid_max_value()); + } + } + if let (Some(min), Some(max)) = (data.exclusive_minimum, data.exclusive_maximum) { + if min >= max { + return Err(errors::invalid_max_value()); + } + } + Ok(TypeDef::Float(Float { id, data }.into())) +} + +pub fn boolean_def(id: TypeId) -> Result { + Ok(TypeDef::Boolean( + Boolean { + id, + data: TypeBoolean, + } + .into(), + )) +} + +pub fn string_def(data: TypeString, id: TypeId) -> Result { + if let (Some(min), Some(max)) = (data.min, data.max) { + if min >= max { + return Err(errors::invalid_max_value()); + } + } + Ok(TypeDef::String(StringT { id, data }.into())) +} + +fn file_def(data: TypeFile, id: TypeId) -> Result { + if let (Some(min), Some(max)) = (data.min, data.max) { + if min >= max { + return Err(errors::invalid_max_value()); + } + } + Ok(TypeDef::File(File { id, data }.into())) +} + +fn list_def(data: TypeList, id: TypeId) -> Result { + if let (Some(min), Some(max)) = (data.min, data.max) { + if min > max { + return Err(errors::invalid_max_value()); + } + } + Ok(TypeDef::List(List { id, data }.into())) +} + +fn optional_def(data: TypeOptional, id: TypeId) -> Result { + /* let inner_name = match base.name { + Some(_) => None, + None => TypeId(data.of).name()?, + }; */ + Ok(TypeDef::Optional(Optional { id, data }.into())) +} + +fn union_def(data: TypeUnion, id: TypeId) -> Result { + Ok(TypeDef::Union(Union { id, data }.into())) +} + +fn either_def(data: TypeEither, id: TypeId) -> Result { + Ok(TypeDef::Either(Either { id, data }.into())) +} + +fn struct_def(data: TypeStruct, id: TypeId) -> Result { + let mut prop_names = HashSet::new(); + for (name, _) in data.props.iter() { + if prop_names.contains(name) { + return Err(errors::duplicate_key(name)); + } + prop_names.insert(name.clone()); + } + + Ok(TypeDef::Struct(Struct { id, data }.into())) +} + +fn func_def(data: TypeFunc, id: TypeId) -> Result { + let wrapper_type = TypeId(data.inp); + if !matches!(&wrapper_type.as_xdef()?.type_def, TypeDef::Struct(_)) { + return Err(errors::invalid_input_type(&wrapper_type.repr()?)); + } + + Ok(TypeDef::Func(Func { id, data }.into())) +} + #[macro_export] macro_rules! log { ($($arg:tt)*) => { diff --git a/src/typegraph/core/src/params/apply.rs b/src/typegraph/core/src/params/apply.rs index 92fa675347..1b56761508 100644 --- a/src/typegraph/core/src/params/apply.rs +++ b/src/typegraph/core/src/params/apply.rs @@ -558,7 +558,7 @@ mod test { assert_eq!( print_options.print(transform_data.query_input.into()), indoc::indoc! {" - root: struct #6 + root: struct #5 [a]: string #0 [first]: string #1 [second]: string #1 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/additional_filters.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/additional_filters.rs index 53f6a6be3a..b74cf923e8 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/additional_filters.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/additional_filters.rs @@ -12,28 +12,28 @@ use super::TypeGen; pub struct Take; impl TypeGen for Take { - fn generate(&self, _context: &PrismaContext) -> Result { + fn generate(&self, context: &PrismaContext) -> Result { t::integer() .x_min(0) .build()? - .named(self.name()) + .named(self.name(context)?) .map(|t| t.id()) } - fn name(&self) -> String { - "_take".to_string() + fn name(&self, _context: &PrismaContext) -> Result { + Ok("_take".to_string()) } } pub struct Skip; impl TypeGen for Skip { - fn generate(&self, _context: &PrismaContext) -> Result { - t::integer().min(0).build_named(self.name()) + fn generate(&self, context: &PrismaContext) -> Result { + t::integer().min(0).build_named(self.name(context)?) } - fn name(&self) -> String { - "_skip".to_string() + fn name(&self, _context: &PrismaContext) -> Result { + Ok("_skip".to_string()) } } @@ -52,12 +52,12 @@ impl TypeGen for Distinct { }) .collect(); - t::listx(t::string().enum_(cols)).build_named(self.name()) + t::listx(t::string().enum_(cols)).build_named(self.name(context)?) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let model_name = self.0.name().unwrap().unwrap(); - format!("{model_name}_keys_union") + Ok(format!("{model_name}_keys_union")) } } @@ -89,11 +89,11 @@ impl TypeGen for Cursor { let variant = t::struct_().prop(k, id).build()?; variants.push(variant) } - t::union(variants).build_named(self.name()) + t::union(variants).build_named(self.name(context)?) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let model_name = self.model_id.name().unwrap().unwrap(); - format!("{}_cursor", model_name) + Ok(format!("{}_cursor", model_name)) } } diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/aggregate.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/aggregate.rs index 12f11c6403..8e8b92d0a6 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/aggregate.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/aggregate.rs @@ -38,12 +38,12 @@ impl TypeGen for CountOutput { } // TODO union - builder.build_named(self.name()) + builder.build_named(self.name(context)?) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let model_name = self.model_id.name().unwrap().unwrap(); - format!("{}_count_aggregate", model_name) + Ok(format!("{}_count_aggregate", model_name)) } } @@ -88,15 +88,15 @@ impl TypeGen for NumberAggregateOutput { } } - builder.build_named(self.name()) + builder.build_named(self.name(context)?) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let model_name = self.model_id.name().unwrap().unwrap(); - if self.avg { + Ok(if self.avg { format!("{}_avg_aggregate", model_name) } else { format!("{}_number_aggregate", model_name) - } + }) } } diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/count.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/count.rs index 8ae0fad4db..e23a52155d 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/count.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/count.rs @@ -13,11 +13,11 @@ use super::TypeGen; pub struct Count; impl TypeGen for Count { - fn generate(&self, _context: &PrismaContext) -> Result { - t::optionalx(t::integer()).build_named(self.name()) + fn generate(&self, context: &PrismaContext) -> Result { + t::optionalx(t::integer()).build_named(self.name(context)?) } - fn name(&self) -> String { - "_count".to_string() + fn name(&self, _context: &PrismaContext) -> Result { + Ok("_count".to_string()) } } diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/filters.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/filters.rs index 25b99b879b..0ef7fda229 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/filters.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/filters.rs @@ -14,28 +14,29 @@ impl TypeGen for CompleteFilter { fn generate(&self, context: &PrismaContext) -> Result { let inner = context.generate(&self.0)?; // TODO and, or ??? - t::optionalx(t::unionx![inner, t::struct_().prop("not", inner)]).build_named(self.name()) + t::optionalx(t::unionx![inner, t::struct_().prop("not", inner)]) + .build_named(self.name(context)?) } - fn name(&self) -> String { - format!("{}_ex", self.0.name()) + fn name(&self, context: &PrismaContext) -> Result { + Ok(format!("{}_ex", self.0.name(context)?)) } } pub(super) struct BooleanFilter; impl TypeGen for BooleanFilter { - fn generate(&self, _context: &PrismaContext) -> Result { + fn generate(&self, context: &PrismaContext) -> Result { t::unionx![ t::boolean().build()?, t::struct_().propx("equals", t::boolean())?, t::struct_().propx("not", t::boolean())?, ] - .build_named(self.name()) + .build_named(self.name(context)?) } - fn name(&self) -> String { - "_prisma_boolean_filter".to_string() + fn name(&self, _context: &PrismaContext) -> Result { + Ok("_prisma_boolean_filter".to_string()) } } @@ -73,7 +74,7 @@ impl TypeGen for NumberFilter { t::struct_().prop("_min", base), t::struct_().prop("_max", base), ] - .build_named(self.name()) + .build_named(self.name(context)?) } else { let type_id = match self.number_type { NumberType::Integer => t::integer().build()?, @@ -94,27 +95,27 @@ impl TypeGen for NumberFilter { t::struct_().prop("in", list_type_id), t::struct_().prop("notIn", list_type_id), ] - .build_named(self.name()) + .build_named(self.name(context)?) } } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let suffix = if self.with_aggregates { "_with_aggregates" } else { "" }; - match self.number_type { + Ok(match self.number_type { NumberType::Integer => format!("_prisma_integer_filter{suffix}"), NumberType::Float => format!("_prisma_float_filter{suffix}"), - } + }) } } pub(super) struct StringFilter; impl TypeGen for StringFilter { - fn generate(&self, _context: &PrismaContext) -> Result { + fn generate(&self, context: &PrismaContext) -> Result { let type_id = t::string().build()?; let opt_type_id = t::optional(type_id).build()?; let list_type_id = t::list(type_id).build()?; @@ -136,18 +137,18 @@ impl TypeGen for StringFilter { .prop("endsWith", opt_type_id) .min(1), ] - .build_named(self.name()) + .build_named(self.name(context)?) } - fn name(&self) -> String { - "_prisma_string_filter".to_string() + fn name(&self, _context: &PrismaContext) -> Result { + Ok("_prisma_string_filter".to_string()) } } pub(super) struct ScalarListFilter(pub TypeId); impl TypeGen for ScalarListFilter { - fn generate(&self, _context: &PrismaContext) -> Result { + fn generate(&self, context: &PrismaContext) -> Result { if let TypeDef::Optional(_) = self.0.as_xdef()?.type_def { return Err("array of optional not supported".into()); } @@ -163,10 +164,10 @@ impl TypeGen for ScalarListFilter { // TODO "isSet": mongo only t::struct_().propx("equals", t::list(self.0))?, ] - .build_named(self.name()) + .build_named(self.name(context)?) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { // TODO unnamed?? let list_item_name = self .0 @@ -174,7 +175,7 @@ impl TypeGen for ScalarListFilter { .ok() .flatten() .unwrap_or_else(|| format!("unnamed_list_item{}", self.0 .0)); - format!("_prisma_list_filter{list_item_name}") + Ok(format!("_prisma_list_filter{list_item_name}")) } } @@ -197,9 +198,9 @@ impl TypeGen for WithAggregateFilters { .build() } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let name = self.model_id.name().unwrap().unwrap(); - format!("{name}_with_aggregates") + Ok(format!("{name}_with_aggregates")) } } @@ -222,12 +223,17 @@ impl TypeGen for CountFilter { .map(|(k, _)| k.to_string()) .collect(); - gen_aggregate_filter(context, keys, |key| (key, NumberType::Integer), self.name()) + gen_aggregate_filter( + context, + keys, + |key| (key, NumberType::Integer), + self.name(context)?, + ) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let model_name = self.model_id.name().unwrap().unwrap(); - format!("{model_name}_count_in") + Ok(format!("{model_name}_count_in")) } } @@ -261,12 +267,17 @@ impl TypeGen for AvgFilter { }) .collect(); - gen_aggregate_filter(context, keys, |key| (key, NumberType::Float), self.name()) + gen_aggregate_filter( + context, + keys, + |key| (key, NumberType::Float), + self.name(context)?, + ) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let model_name = self.model_id.name().unwrap().unwrap(); - format!("{model_name}_avg_in") + Ok(format!("{model_name}_avg_in")) } } @@ -301,12 +312,12 @@ impl TypeGen for SumFilter { }) .collect(); - gen_aggregate_filter(context, props, |(key, typ)| (key, typ), self.name()) + gen_aggregate_filter(context, props, |(key, typ)| (key, typ), self.name(context)?) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let model_name = self.model_id.name().unwrap().unwrap(); - format!("{model_name}_sum_in") + Ok(format!("{model_name}_sum_in")) } } diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/group_by.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/group_by.rs index 4d144087f0..627e4e83d5 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/group_by.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/group_by.rs @@ -33,12 +33,12 @@ impl TypeGen for GroupingFields { }) .collect(); - t::listx(t::string().enum_(fields))?.build_named(self.name()) + t::listx(t::string().enum_(fields))?.build_named(self.name(context)?) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let model_name = self.model_id.name().unwrap().unwrap(); - format!("{}_group_by", model_name) + Ok(format!("{}_group_by", model_name)) } } @@ -57,7 +57,7 @@ impl TypeGen for Having { // TODO relations?? let where_type = context.generate(&Where::new(self.model_id).with_aggregates())?; - let name = self.name(); + let name = self.name(context)?; let self_ref = t::ref_(&name, Default::default()).build()?; t::unionx![ @@ -69,9 +69,9 @@ impl TypeGen for Having { .build_named(name) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let model_name = self.model_id.name().unwrap().unwrap(); - format!("{}_having", model_name) + Ok(format!("{}_having", model_name)) } } @@ -112,12 +112,12 @@ impl TypeGen for GroupByResult { ) .build()?, ) - .build_named(self.name()) + .build_named(self.name(context)?) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let model_name = self.model_id.name().unwrap().unwrap(); - format!("{}_group", model_name) + Ok(format!("{}_group", model_name)) } } @@ -164,12 +164,12 @@ impl TypeGen for SelectNumbers { } } - builder.build_named(self.name()) + builder.build_named(self.name(context)?) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let model_name = self.model_id.name().unwrap().unwrap(); let suffix = if self.promote_to_float { "_float" } else { "" }; - format!("{model_name}_number_fields{suffix}") + Ok(format!("{model_name}_number_fields{suffix}")) } } diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/input_type.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/input_type.rs index 3ab3190ae6..c789035a7b 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/input_type.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/input_type.rs @@ -210,10 +210,10 @@ impl TypeGen for InputType { } } - builder.build_named(self.name()) + builder.build_named(self.name(context)?) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let model_name = self.model_id.name().unwrap().unwrap(); let suffix = if self.skip_rel.is_empty() { "".to_string() @@ -224,6 +224,6 @@ impl TypeGen for InputType { Operation::Create => "create", Operation::Update => "update", }; - format!("{model_name}_{op}_input{suffix}") + Ok(format!("{model_name}_{op}_input{suffix}")) } } diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs index 757ec162ad..697416d122 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs @@ -42,7 +42,7 @@ mod with_nested_count; trait TypeGen { fn generate(&self, context: &PrismaContext) -> Result; - fn name(&self) -> String; + fn name(&self, context: &PrismaContext) -> Result; } pub struct OperationTypes { @@ -89,7 +89,7 @@ pub fn replace_variables_to_indices(query: String, input_id: TypeId) -> Result Result { - let type_name = generator.name(); + let type_name = generator.name(self)?; let cached = { let cache = self.typegen_cache.get_or_init(|| { @@ -106,6 +106,19 @@ impl PrismaContext { if let Some(type_id) = cached { Ok(type_id) } else { + { + let cache = self.typegen_cache.get().unwrap(); + let cache = cache + .upgrade() + .ok_or_else(|| "Typegen cache not available".to_string())?; + let mut cache = cache.borrow_mut(); + + cache.insert( + type_name.clone(), + t::ref_(&type_name, Default::default()).build()?, + ); + } + let type_id = generator.generate(self)?; // name validation @@ -120,14 +133,6 @@ impl PrismaContext { ) .into()); } - - // insert new entry into cache - let cache = self.typegen_cache.get().unwrap(); - let cache = cache - .upgrade() - .ok_or_else(|| "Typegen cache not available".to_string())?; - let mut cache = cache.borrow_mut(); - cache.insert(type_name, type_id); Ok(type_id) } } diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/order_by.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/order_by.rs index add7f8d17e..021f339e56 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/order_by.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/order_by.rs @@ -91,10 +91,10 @@ impl TypeGen for OrderBy { } } - t::listx(builder)?.build_named(self.name()) + t::listx(builder)?.build_named(self.name(context)?) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let name = self.model_id.name().unwrap().unwrap(); let suffix = if self.skip_rel.is_empty() { "".to_string() @@ -107,35 +107,35 @@ impl TypeGen for OrderBy { } else { "" }; - format!("{}_order_by{suffix}{suffix2}", name) + Ok(format!("{}_order_by{suffix}{suffix2}", name)) } } struct SortOrder; impl TypeGen for SortOrder { - fn generate(&self, _context: &PrismaContext) -> Result { + fn generate(&self, context: &PrismaContext) -> Result { t::string() .enum_(vec!["asc".to_string(), "desc".to_string()]) - .build_named(self.name()) + .build_named(self.name(context)?) } - fn name(&self) -> String { - "_prisma_sort_order".to_string() + fn name(&self, _context: &PrismaContext) -> Result { + Ok("_prisma_sort_order".to_string()) } } struct NullsOrder; impl TypeGen for NullsOrder { - fn generate(&self, _context: &PrismaContext) -> Result { + fn generate(&self, context: &PrismaContext) -> Result { t::string() .enum_(vec!["first".to_string(), "last".to_string()]) - .build_named(self.name()) + .build_named(self.name(context)?) } - fn name(&self) -> String { - "_prisma_nulls_order".to_string() + fn name(&self, _context: &PrismaContext) -> Result { + Ok("_prisma_nulls_order".to_string()) } } @@ -153,12 +153,12 @@ impl TypeGen for Sort { builder.prop("nulls", nulls_order); } - t::optionalx(t::unionx![builder, sort_order])?.build_named(self.name()) + t::optionalx(t::unionx![builder, sort_order])?.build_named(self.name(context)?) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let nullable = if self.nullable { "_nullable" } else { "" }; - format!("_prisma_sort{}", nullable) + Ok(format!("_prisma_sort{}", nullable)) } } @@ -174,11 +174,11 @@ impl TypeGen for SortByAggregates { builder.prop("_min", sort); builder.prop("_max", sort); - t::optionalx(builder)?.build_named(self.name()) + t::optionalx(builder)?.build_named(self.name(context)?) } - fn name(&self) -> String { - "_prisma_sort_by_aggregates".to_string() + fn name(&self, _context: &PrismaContext) -> Result { + Ok("_prisma_sort_by_aggregates".to_string()) } } @@ -244,11 +244,11 @@ impl TypeGen for AggregateSorting { .prop("_sum", others) .prop("_min", others) .prop("_max", others) - .build_named(self.name()) + .build_named(self.name(context)?) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let model_name = self.model_id.name().unwrap().unwrap(); - format!("{model_name}_aggregate_sorting") + Ok(format!("{model_name}_aggregate_sorting")) } } diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/out_type.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/out_type.rs index f8b019fce1..49667da73b 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/out_type.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/out_type.rs @@ -70,16 +70,16 @@ impl TypeGen for OutType { } } - builder.build_named(self.name()) + builder.build_named(self.name(context)?) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let model_name = self.model_id.name().unwrap().unwrap(); let suffix = if self.skip_rel.is_empty() { String::new() } else { format!("_excluding_{}", self.skip_rel.join("_and_")) }; - format!("{model_name}_output{suffix}") + Ok(format!("{model_name}_output{suffix}")) } } diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/query_input_type.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/query_input_type.rs index bddce719cc..79aef2d345 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/query_input_type.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/query_input_type.rs @@ -69,12 +69,12 @@ impl TypeGen for QueryInputType { )?; } - builder.build_named(self.name()) + builder.build_named(self.name(context)?) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let model_name = self.model_id.name().unwrap().unwrap(); let infix = if self.is_group_by { "_group_by" } else { "" }; - format!("{model_name}{infix}_query_input") + Ok(format!("{model_name}{infix}_query_input")) } } diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/query_where_expr.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/query_where_expr.rs index 0d59c5381d..e97229497b 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/query_where_expr.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/query_where_expr.rs @@ -43,7 +43,7 @@ impl TypeGen for QueryWhereExpr { let props = where_type.as_struct().unwrap().data.props.to_vec(); - let name = self.name(); + let name = self.name(context)?; let self_ref = t::ref_(&name, Default::default()).build()?; let and = t::optionalx(t::list(self_ref))?.build()?; @@ -58,12 +58,12 @@ impl TypeGen for QueryWhereExpr { builder.build_named(name) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let unique = if self.unique { "_unique" } else { "" }; - format!( + Ok(format!( "{}_query_where{unique}_input", self.model_id.name().unwrap().unwrap() - ) + )) } } diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__query_where_expr__tests__Post__QueryWhereExpr.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__query_where_expr__tests__Post__QueryWhereExpr.snap index e0d86d342b..25d5459f28 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__query_where_expr__tests__Post__QueryWhereExpr.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__query_where_expr__tests__Post__QueryWhereExpr.snap @@ -2,511 +2,51 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/query_where_expr.rs expression: "tree::print(post_where_expr)" --- -root: struct 'Post_query_where_input' #151 -├── [AND]: optional 'optional_146' #147 -│ └── item: list 'list_144' #145 -│ └── item: &Post_query_where_input #143 -├── [NOT]: optional 'optional_148' #149 -│ └── item: &Post_query_where_input #143 -├── [OR]: optional 'optional_146' #147 -│ └── item: list 'list_144' #145 -│ └── item: &Post_query_where_input #143 -├── [author]: optional 'optional_139' #140 -│ └── item: struct 'User_where_excluding_Post' #138 -│ ├── [id]: optional 'optional_112' #113 -│ │ └── item: optional '_prisma_integer_filter_ex' #31 -│ │ └── item: union #28 -│ │ ├── variant_0: either '_prisma_integer_filter' #26 -│ │ │ ├── variant_0: integer #15 -│ │ │ ├── variant_1: struct #20 -│ │ │ │ └── [equals]: integer #15 -│ │ │ ├── variant_2: struct #21 -│ │ │ │ └── [not]: integer #15 -│ │ │ ├── variant_3: struct #22 -│ │ │ │ ├── [gt]: optional 'optional_16' #17 -│ │ │ │ │ └── item: integer #15 -│ │ │ │ ├── [gte]: optional 'optional_16' #17 -│ │ │ │ │ └── item: integer #15 -│ │ │ │ ├── [lt]: optional 'optional_16' #17 -│ │ │ │ │ └── item: integer #15 -│ │ │ │ └── [lte]: optional 'optional_16' #17 -│ │ │ │ └── item: integer #15 -│ │ │ ├── variant_4: struct #23 -│ │ │ │ └── [in]: list 'list_18' #19 -│ │ │ │ └── item: integer #15 -│ │ │ └── variant_5: struct #24 -│ │ │ └── [notIn]: list 'list_18' #19 -│ │ │ └── item: integer #15 -│ │ └── variant_1: struct #27 -│ │ └── [not]: either '_prisma_integer_filter' #26 -│ │ ├── variant_0: integer #15 -│ │ ├── variant_1: struct #20 -│ │ │ └── [equals]: integer #15 -│ │ ├── variant_2: struct #21 -│ │ │ └── [not]: integer #15 -│ │ ├── variant_3: struct #22 -│ │ │ ├── [gt]: optional 'optional_16' #17 -│ │ │ │ └── item: integer #15 -│ │ │ ├── [gte]: optional 'optional_16' #17 -│ │ │ │ └── item: integer #15 -│ │ │ ├── [lt]: optional 'optional_16' #17 -│ │ │ │ └── item: integer #15 -│ │ │ └── [lte]: optional 'optional_16' #17 -│ │ │ └── item: integer #15 -│ │ ├── variant_4: struct #23 -│ │ │ └── [in]: list 'list_18' #19 -│ │ │ └── item: integer #15 -│ │ └── variant_5: struct #24 -│ │ └── [notIn]: list 'list_18' #19 -│ │ └── item: integer #15 -│ ├── [name]: optional 'optional_114' #115 -│ │ └── item: optional '_prisma_string_filter_ex' #55 -│ │ └── item: union #52 -│ │ ├── variant_0: union '_prisma_string_filter' #50 -│ │ │ ├── variant_0: string #34 -│ │ │ ├── variant_1: struct #39 -│ │ │ │ └── [equals]: string #34 -│ │ │ ├── variant_2: struct #40 -│ │ │ │ └── [not]: string #34 -│ │ │ ├── variant_3: struct #41 -│ │ │ │ └── [in]: list 'list_37' #38 -│ │ │ │ └── item: string #34 -│ │ │ ├── variant_4: struct #42 -│ │ │ │ └── [notIn]: list 'list_37' #38 -│ │ │ │ └── item: string #34 -│ │ │ ├── variant_5: struct #46 -│ │ │ │ ├── [contains]: string #34 -│ │ │ │ └── [mode]: optional 'optional_44' #45 -│ │ │ │ └── item: string #43 enum{ '"insensitive"' } -│ │ │ ├── variant_6: struct #47 -│ │ │ │ └── [search]: string #34 -│ │ │ └── variant_7: struct #48 -│ │ │ ├── [endsWith]: optional 'optional_35' #36 -│ │ │ │ └── item: string #34 -│ │ │ └── [startsWith]: optional 'optional_35' #36 -│ │ │ └── item: string #34 -│ │ └── variant_1: struct #51 -│ │ └── [not]: union '_prisma_string_filter' #50 -│ │ ├── variant_0: string #34 -│ │ ├── variant_1: struct #39 -│ │ │ └── [equals]: string #34 -│ │ ├── variant_2: struct #40 -│ │ │ └── [not]: string #34 -│ │ ├── variant_3: struct #41 -│ │ │ └── [in]: list 'list_37' #38 -│ │ │ └── item: string #34 -│ │ ├── variant_4: struct #42 -│ │ │ └── [notIn]: list 'list_37' #38 -│ │ │ └── item: string #34 -│ │ ├── variant_5: struct #46 -│ │ │ ├── [contains]: string #34 -│ │ │ └── [mode]: optional 'optional_44' #45 -│ │ │ └── item: string #43 enum{ '"insensitive"' } -│ │ ├── variant_6: struct #47 -│ │ │ └── [search]: string #34 -│ │ └── variant_7: struct #48 -│ │ ├── [endsWith]: optional 'optional_35' #36 -│ │ │ └── item: string #34 -│ │ └── [startsWith]: optional 'optional_35' #36 -│ │ └── item: string #34 -│ └── [posts]: optional 'optional_135' #136 -│ └── item: union #134 -│ ├── variant_0: struct #127 -│ │ └── [every]: optional 'optional_125' #126 -│ │ └── item: struct 'Post_where_excluding_Post_and_User_where_excluding_Post' #124 -│ │ ├── [author]: optional 'optional_121' #122 -│ │ │ └── item: &User_where_excluding_Post #120 -│ │ ├── [id]: optional 'optional_116' #117 -│ │ │ └── item: optional '_prisma_integer_filter_ex' #31 -│ │ │ └── item: union #28 -│ │ │ ├── variant_0: either '_prisma_integer_filter' #26 -│ │ │ │ ├── variant_0: integer #15 -│ │ │ │ ├── variant_1: struct #20 -│ │ │ │ │ └── [equals]: integer #15 -│ │ │ │ ├── variant_2: struct #21 -│ │ │ │ │ └── [not]: integer #15 -│ │ │ │ ├── variant_3: struct #22 -│ │ │ │ │ ├── [gt]: optional 'optional_16' #17 -│ │ │ │ │ │ └── item: integer #15 -│ │ │ │ │ ├── [gte]: optional 'optional_16' #17 -│ │ │ │ │ │ └── item: integer #15 -│ │ │ │ │ ├── [lt]: optional 'optional_16' #17 -│ │ │ │ │ │ └── item: integer #15 -│ │ │ │ │ └── [lte]: optional 'optional_16' #17 -│ │ │ │ │ └── item: integer #15 -│ │ │ │ ├── variant_4: struct #23 -│ │ │ │ │ └── [in]: list 'list_18' #19 -│ │ │ │ │ └── item: integer #15 -│ │ │ │ └── variant_5: struct #24 -│ │ │ │ └── [notIn]: list 'list_18' #19 -│ │ │ │ └── item: integer #15 -│ │ │ └── variant_1: struct #27 -│ │ │ └── [not]: either '_prisma_integer_filter' #26 -│ │ │ ├── variant_0: integer #15 -│ │ │ ├── variant_1: struct #20 -│ │ │ │ └── [equals]: integer #15 -│ │ │ ├── variant_2: struct #21 -│ │ │ │ └── [not]: integer #15 -│ │ │ ├── variant_3: struct #22 -│ │ │ │ ├── [gt]: optional 'optional_16' #17 -│ │ │ │ │ └── item: integer #15 -│ │ │ │ ├── [gte]: optional 'optional_16' #17 -│ │ │ │ │ └── item: integer #15 -│ │ │ │ ├── [lt]: optional 'optional_16' #17 -│ │ │ │ │ └── item: integer #15 -│ │ │ │ └── [lte]: optional 'optional_16' #17 -│ │ │ │ └── item: integer #15 -│ │ │ ├── variant_4: struct #23 -│ │ │ │ └── [in]: list 'list_18' #19 -│ │ │ │ └── item: integer #15 -│ │ │ └── variant_5: struct #24 -│ │ │ └── [notIn]: list 'list_18' #19 -│ │ │ └── item: integer #15 -│ │ └── [title]: optional 'optional_118' #119 -│ │ └── item: optional '_prisma_string_filter_ex' #55 -│ │ └── item: union #52 -│ │ ├── variant_0: union '_prisma_string_filter' #50 -│ │ │ ├── variant_0: string #34 -│ │ │ ├── variant_1: struct #39 -│ │ │ │ └── [equals]: string #34 -│ │ │ ├── variant_2: struct #40 -│ │ │ │ └── [not]: string #34 -│ │ │ ├── variant_3: struct #41 -│ │ │ │ └── [in]: list 'list_37' #38 -│ │ │ │ └── item: string #34 -│ │ │ ├── variant_4: struct #42 -│ │ │ │ └── [notIn]: list 'list_37' #38 -│ │ │ │ └── item: string #34 -│ │ │ ├── variant_5: struct #46 -│ │ │ │ ├── [contains]: string #34 -│ │ │ │ └── [mode]: optional 'optional_44' #45 -│ │ │ │ └── item: string #43 enum{ '"insensitive"' } -│ │ │ ├── variant_6: struct #47 -│ │ │ │ └── [search]: string #34 -│ │ │ └── variant_7: struct #48 -│ │ │ ├── [endsWith]: optional 'optional_35' #36 -│ │ │ │ └── item: string #34 -│ │ │ └── [startsWith]: optional 'optional_35' #36 -│ │ │ └── item: string #34 -│ │ └── variant_1: struct #51 -│ │ └── [not]: union '_prisma_string_filter' #50 -│ │ ├── variant_0: string #34 -│ │ ├── variant_1: struct #39 -│ │ │ └── [equals]: string #34 -│ │ ├── variant_2: struct #40 -│ │ │ └── [not]: string #34 -│ │ ├── variant_3: struct #41 -│ │ │ └── [in]: list 'list_37' #38 -│ │ │ └── item: string #34 -│ │ ├── variant_4: struct #42 -│ │ │ └── [notIn]: list 'list_37' #38 -│ │ │ └── item: string #34 -│ │ ├── variant_5: struct #46 -│ │ │ ├── [contains]: string #34 -│ │ │ └── [mode]: optional 'optional_44' #45 -│ │ │ └── item: string #43 enum{ '"insensitive"' } -│ │ ├── variant_6: struct #47 -│ │ │ └── [search]: string #34 -│ │ └── variant_7: struct #48 -│ │ ├── [endsWith]: optional 'optional_35' #36 -│ │ │ └── item: string #34 -│ │ └── [startsWith]: optional 'optional_35' #36 -│ │ └── item: string #34 -│ ├── variant_1: struct #130 -│ │ └── [some]: optional 'optional_128' #129 -│ │ └── item: struct 'Post_where_excluding_Post_and_User_where_excluding_Post' #124 -│ │ ├── [author]: optional 'optional_121' #122 -│ │ │ └── item: &User_where_excluding_Post #120 -│ │ ├── [id]: optional 'optional_116' #117 -│ │ │ └── item: optional '_prisma_integer_filter_ex' #31 -│ │ │ └── item: union #28 -│ │ │ ├── variant_0: either '_prisma_integer_filter' #26 -│ │ │ │ ├── variant_0: integer #15 -│ │ │ │ ├── variant_1: struct #20 -│ │ │ │ │ └── [equals]: integer #15 -│ │ │ │ ├── variant_2: struct #21 -│ │ │ │ │ └── [not]: integer #15 -│ │ │ │ ├── variant_3: struct #22 -│ │ │ │ │ ├── [gt]: optional 'optional_16' #17 -│ │ │ │ │ │ └── item: integer #15 -│ │ │ │ │ ├── [gte]: optional 'optional_16' #17 -│ │ │ │ │ │ └── item: integer #15 -│ │ │ │ │ ├── [lt]: optional 'optional_16' #17 -│ │ │ │ │ │ └── item: integer #15 -│ │ │ │ │ └── [lte]: optional 'optional_16' #17 -│ │ │ │ │ └── item: integer #15 -│ │ │ │ ├── variant_4: struct #23 -│ │ │ │ │ └── [in]: list 'list_18' #19 -│ │ │ │ │ └── item: integer #15 -│ │ │ │ └── variant_5: struct #24 -│ │ │ │ └── [notIn]: list 'list_18' #19 -│ │ │ │ └── item: integer #15 -│ │ │ └── variant_1: struct #27 -│ │ │ └── [not]: either '_prisma_integer_filter' #26 -│ │ │ ├── variant_0: integer #15 -│ │ │ ├── variant_1: struct #20 -│ │ │ │ └── [equals]: integer #15 -│ │ │ ├── variant_2: struct #21 -│ │ │ │ └── [not]: integer #15 -│ │ │ ├── variant_3: struct #22 -│ │ │ │ ├── [gt]: optional 'optional_16' #17 -│ │ │ │ │ └── item: integer #15 -│ │ │ │ ├── [gte]: optional 'optional_16' #17 -│ │ │ │ │ └── item: integer #15 -│ │ │ │ ├── [lt]: optional 'optional_16' #17 -│ │ │ │ │ └── item: integer #15 -│ │ │ │ └── [lte]: optional 'optional_16' #17 -│ │ │ │ └── item: integer #15 -│ │ │ ├── variant_4: struct #23 -│ │ │ │ └── [in]: list 'list_18' #19 -│ │ │ │ └── item: integer #15 -│ │ │ └── variant_5: struct #24 -│ │ │ └── [notIn]: list 'list_18' #19 -│ │ │ └── item: integer #15 -│ │ └── [title]: optional 'optional_118' #119 -│ │ └── item: optional '_prisma_string_filter_ex' #55 -│ │ └── item: union #52 -│ │ ├── variant_0: union '_prisma_string_filter' #50 -│ │ │ ├── variant_0: string #34 -│ │ │ ├── variant_1: struct #39 -│ │ │ │ └── [equals]: string #34 -│ │ │ ├── variant_2: struct #40 -│ │ │ │ └── [not]: string #34 -│ │ │ ├── variant_3: struct #41 -│ │ │ │ └── [in]: list 'list_37' #38 -│ │ │ │ └── item: string #34 -│ │ │ ├── variant_4: struct #42 -│ │ │ │ └── [notIn]: list 'list_37' #38 -│ │ │ │ └── item: string #34 -│ │ │ ├── variant_5: struct #46 -│ │ │ │ ├── [contains]: string #34 -│ │ │ │ └── [mode]: optional 'optional_44' #45 -│ │ │ │ └── item: string #43 enum{ '"insensitive"' } -│ │ │ ├── variant_6: struct #47 -│ │ │ │ └── [search]: string #34 -│ │ │ └── variant_7: struct #48 -│ │ │ ├── [endsWith]: optional 'optional_35' #36 -│ │ │ │ └── item: string #34 -│ │ │ └── [startsWith]: optional 'optional_35' #36 -│ │ │ └── item: string #34 -│ │ └── variant_1: struct #51 -│ │ └── [not]: union '_prisma_string_filter' #50 -│ │ ├── variant_0: string #34 -│ │ ├── variant_1: struct #39 -│ │ │ └── [equals]: string #34 -│ │ ├── variant_2: struct #40 -│ │ │ └── [not]: string #34 -│ │ ├── variant_3: struct #41 -│ │ │ └── [in]: list 'list_37' #38 -│ │ │ └── item: string #34 -│ │ ├── variant_4: struct #42 -│ │ │ └── [notIn]: list 'list_37' #38 -│ │ │ └── item: string #34 -│ │ ├── variant_5: struct #46 -│ │ │ ├── [contains]: string #34 -│ │ │ └── [mode]: optional 'optional_44' #45 -│ │ │ └── item: string #43 enum{ '"insensitive"' } -│ │ ├── variant_6: struct #47 -│ │ │ └── [search]: string #34 -│ │ └── variant_7: struct #48 -│ │ ├── [endsWith]: optional 'optional_35' #36 -│ │ │ └── item: string #34 -│ │ └── [startsWith]: optional 'optional_35' #36 -│ │ └── item: string #34 -│ └── variant_2: struct #133 -│ └── [none]: optional 'optional_131' #132 -│ └── item: struct 'Post_where_excluding_Post_and_User_where_excluding_Post' #124 -│ ├── [author]: optional 'optional_121' #122 -│ │ └── item: &User_where_excluding_Post #120 -│ ├── [id]: optional 'optional_116' #117 -│ │ └── item: optional '_prisma_integer_filter_ex' #31 -│ │ └── item: union #28 -│ │ ├── variant_0: either '_prisma_integer_filter' #26 -│ │ │ ├── variant_0: integer #15 -│ │ │ ├── variant_1: struct #20 -│ │ │ │ └── [equals]: integer #15 -│ │ │ ├── variant_2: struct #21 -│ │ │ │ └── [not]: integer #15 -│ │ │ ├── variant_3: struct #22 -│ │ │ │ ├── [gt]: optional 'optional_16' #17 -│ │ │ │ │ └── item: integer #15 -│ │ │ │ ├── [gte]: optional 'optional_16' #17 -│ │ │ │ │ └── item: integer #15 -│ │ │ │ ├── [lt]: optional 'optional_16' #17 -│ │ │ │ │ └── item: integer #15 -│ │ │ │ └── [lte]: optional 'optional_16' #17 -│ │ │ │ └── item: integer #15 -│ │ │ ├── variant_4: struct #23 -│ │ │ │ └── [in]: list 'list_18' #19 -│ │ │ │ └── item: integer #15 -│ │ │ └── variant_5: struct #24 -│ │ │ └── [notIn]: list 'list_18' #19 -│ │ │ └── item: integer #15 -│ │ └── variant_1: struct #27 -│ │ └── [not]: either '_prisma_integer_filter' #26 -│ │ ├── variant_0: integer #15 -│ │ ├── variant_1: struct #20 -│ │ │ └── [equals]: integer #15 -│ │ ├── variant_2: struct #21 -│ │ │ └── [not]: integer #15 -│ │ ├── variant_3: struct #22 -│ │ │ ├── [gt]: optional 'optional_16' #17 -│ │ │ │ └── item: integer #15 -│ │ │ ├── [gte]: optional 'optional_16' #17 -│ │ │ │ └── item: integer #15 -│ │ │ ├── [lt]: optional 'optional_16' #17 -│ │ │ │ └── item: integer #15 -│ │ │ └── [lte]: optional 'optional_16' #17 -│ │ │ └── item: integer #15 -│ │ ├── variant_4: struct #23 -│ │ │ └── [in]: list 'list_18' #19 -│ │ │ └── item: integer #15 -│ │ └── variant_5: struct #24 -│ │ └── [notIn]: list 'list_18' #19 -│ │ └── item: integer #15 -│ └── [title]: optional 'optional_118' #119 -│ └── item: optional '_prisma_string_filter_ex' #55 -│ └── item: union #52 -│ ├── variant_0: union '_prisma_string_filter' #50 -│ │ ├── variant_0: string #34 -│ │ ├── variant_1: struct #39 -│ │ │ └── [equals]: string #34 -│ │ ├── variant_2: struct #40 -│ │ │ └── [not]: string #34 -│ │ ├── variant_3: struct #41 -│ │ │ └── [in]: list 'list_37' #38 -│ │ │ └── item: string #34 -│ │ ├── variant_4: struct #42 -│ │ │ └── [notIn]: list 'list_37' #38 -│ │ │ └── item: string #34 -│ │ ├── variant_5: struct #46 -│ │ │ ├── [contains]: string #34 -│ │ │ └── [mode]: optional 'optional_44' #45 -│ │ │ └── item: string #43 enum{ '"insensitive"' } -│ │ ├── variant_6: struct #47 -│ │ │ └── [search]: string #34 -│ │ └── variant_7: struct #48 -│ │ ├── [endsWith]: optional 'optional_35' #36 -│ │ │ └── item: string #34 -│ │ └── [startsWith]: optional 'optional_35' #36 -│ │ └── item: string #34 -│ └── variant_1: struct #51 -│ └── [not]: union '_prisma_string_filter' #50 -│ ├── variant_0: string #34 -│ ├── variant_1: struct #39 -│ │ └── [equals]: string #34 -│ ├── variant_2: struct #40 -│ │ └── [not]: string #34 -│ ├── variant_3: struct #41 -│ │ └── [in]: list 'list_37' #38 -│ │ └── item: string #34 -│ ├── variant_4: struct #42 -│ │ └── [notIn]: list 'list_37' #38 -│ │ └── item: string #34 -│ ├── variant_5: struct #46 -│ │ ├── [contains]: string #34 -│ │ └── [mode]: optional 'optional_44' #45 -│ │ └── item: string #43 enum{ '"insensitive"' } -│ ├── variant_6: struct #47 -│ │ └── [search]: string #34 -│ └── variant_7: struct #48 -│ ├── [endsWith]: optional 'optional_35' #36 -│ │ └── item: string #34 -│ └── [startsWith]: optional 'optional_35' #36 -│ └── item: string #34 -├── [id]: optional 'optional_108' #109 -│ └── item: optional '_prisma_integer_filter_ex' #31 -│ └── item: union #28 -│ ├── variant_0: either '_prisma_integer_filter' #26 -│ │ ├── variant_0: integer #15 -│ │ ├── variant_1: struct #20 -│ │ │ └── [equals]: integer #15 -│ │ ├── variant_2: struct #21 -│ │ │ └── [not]: integer #15 -│ │ ├── variant_3: struct #22 -│ │ │ ├── [gt]: optional 'optional_16' #17 -│ │ │ │ └── item: integer #15 -│ │ │ ├── [gte]: optional 'optional_16' #17 -│ │ │ │ └── item: integer #15 -│ │ │ ├── [lt]: optional 'optional_16' #17 -│ │ │ │ └── item: integer #15 -│ │ │ └── [lte]: optional 'optional_16' #17 -│ │ │ └── item: integer #15 -│ │ ├── variant_4: struct #23 -│ │ │ └── [in]: list 'list_18' #19 -│ │ │ └── item: integer #15 -│ │ └── variant_5: struct #24 -│ │ └── [notIn]: list 'list_18' #19 -│ │ └── item: integer #15 -│ └── variant_1: struct #27 -│ └── [not]: either '_prisma_integer_filter' #26 -│ ├── variant_0: integer #15 -│ ├── variant_1: struct #20 -│ │ └── [equals]: integer #15 -│ ├── variant_2: struct #21 -│ │ └── [not]: integer #15 -│ ├── variant_3: struct #22 -│ │ ├── [gt]: optional 'optional_16' #17 -│ │ │ └── item: integer #15 -│ │ ├── [gte]: optional 'optional_16' #17 -│ │ │ └── item: integer #15 -│ │ ├── [lt]: optional 'optional_16' #17 -│ │ │ └── item: integer #15 -│ │ └── [lte]: optional 'optional_16' #17 -│ │ └── item: integer #15 -│ ├── variant_4: struct #23 -│ │ └── [in]: list 'list_18' #19 -│ │ └── item: integer #15 -│ └── variant_5: struct #24 -│ └── [notIn]: list 'list_18' #19 -│ └── item: integer #15 -└── [title]: optional 'optional_110' #111 - └── item: optional '_prisma_string_filter_ex' #55 - └── item: union #52 - ├── variant_0: union '_prisma_string_filter' #50 - │ ├── variant_0: string #34 - │ ├── variant_1: struct #39 - │ │ └── [equals]: string #34 - │ ├── variant_2: struct #40 - │ │ └── [not]: string #34 - │ ├── variant_3: struct #41 - │ │ └── [in]: list 'list_37' #38 - │ │ └── item: string #34 - │ ├── variant_4: struct #42 - │ │ └── [notIn]: list 'list_37' #38 - │ │ └── item: string #34 - │ ├── variant_5: struct #46 - │ │ ├── [contains]: string #34 - │ │ └── [mode]: optional 'optional_44' #45 - │ │ └── item: string #43 enum{ '"insensitive"' } - │ ├── variant_6: struct #47 - │ │ └── [search]: string #34 - │ └── variant_7: struct #48 - │ ├── [endsWith]: optional 'optional_35' #36 - │ │ └── item: string #34 - │ └── [startsWith]: optional 'optional_35' #36 - │ └── item: string #34 - └── variant_1: struct #51 - └── [not]: union '_prisma_string_filter' #50 - ├── variant_0: string #34 - ├── variant_1: struct #39 - │ └── [equals]: string #34 - ├── variant_2: struct #40 - │ └── [not]: string #34 - ├── variant_3: struct #41 - │ └── [in]: list 'list_37' #38 - │ └── item: string #34 - ├── variant_4: struct #42 - │ └── [notIn]: list 'list_37' #38 - │ └── item: string #34 - ├── variant_5: struct #46 - │ ├── [contains]: string #34 - │ └── [mode]: optional 'optional_44' #45 - │ └── item: string #43 enum{ '"insensitive"' } - ├── variant_6: struct #47 - │ └── [search]: string #34 - └── variant_7: struct #48 - ├── [endsWith]: optional 'optional_35' #36 - │ └── item: string #34 - └── [startsWith]: optional 'optional_35' #36 - └── item: string #34 +root: struct 'Post_query_where_input' #122 +├── [AND]: optional #119 +│ └── item: list #118 +│ └── item: &Post_query_where_input #117 +├── [NOT]: optional #120 +│ └── item: &Post_query_where_input #117 +├── [OR]: optional #119 +│ └── item: list #118 +│ └── item: &Post_query_where_input #117 +├── [author]: optional #114 +│ └── item: struct 'User_where_excluding_Post' #113 +│ ├── [id]: optional #95 +│ │ └── item: &_prisma_integer_filter_ex #16 +│ ├── [name]: optional #96 +│ │ └── item: &_prisma_string_filter_ex #33 +│ └── [posts]: optional #111 +│ └── item: union #110 +│ ├── variant_0: struct #105 +│ │ └── [every]: optional #104 +│ │ └── item: struct 'Post_where_excluding_User_and_Post' #103 +│ │ ├── [author]: optional #101 +│ │ │ └── item: &User_where_excluding_Post #100 +│ │ ├── [id]: optional #98 +│ │ │ └── item: &_prisma_integer_filter_ex #16 +│ │ └── [title]: optional #99 +│ │ └── item: &_prisma_string_filter_ex #33 +│ ├── variant_1: struct #107 +│ │ └── [some]: optional #106 +│ │ └── item: struct 'Post_where_excluding_User_and_Post' #103 +│ │ ├── [author]: optional #101 +│ │ │ └── item: &User_where_excluding_Post #100 +│ │ ├── [id]: optional #98 +│ │ │ └── item: &_prisma_integer_filter_ex #16 +│ │ └── [title]: optional #99 +│ │ └── item: &_prisma_string_filter_ex #33 +│ └── variant_2: struct #109 +│ └── [none]: optional #108 +│ └── item: struct 'Post_where_excluding_User_and_Post' #103 +│ ├── [author]: optional #101 +│ │ └── item: &User_where_excluding_Post #100 +│ ├── [id]: optional #98 +│ │ └── item: &_prisma_integer_filter_ex #16 +│ └── [title]: optional #99 +│ └── item: &_prisma_string_filter_ex #33 +├── [id]: optional #92 +│ └── item: &_prisma_integer_filter_ex #16 +└── [title]: optional #93 + └── item: &_prisma_string_filter_ex #33 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__query_where_expr__tests__User__QueryWhereExpr.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__query_where_expr__tests__User__QueryWhereExpr.snap index df298a4885..7fbcaffe73 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__query_where_expr__tests__User__QueryWhereExpr.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__query_where_expr__tests__User__QueryWhereExpr.snap @@ -2,734 +2,182 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/query_where_expr.rs expression: "tree::print(user_where_expr)" --- -root: struct 'User_query_where_input' #107 -├── [AND]: optional 'optional_102' #103 -│ └── item: list 'list_100' #101 -│ └── item: &User_query_where_input #99 -├── [NOT]: optional 'optional_104' #105 -│ └── item: &User_query_where_input #99 -├── [OR]: optional 'optional_102' #103 -│ └── item: list 'list_100' #101 -│ └── item: &User_query_where_input #99 -├── [id]: optional 'optional_32' #33 +root: struct 'User_query_where_input' #89 +├── [AND]: optional #86 +│ └── item: list #85 +│ └── item: &User_query_where_input #84 +├── [NOT]: optional #87 +│ └── item: &User_query_where_input #84 +├── [OR]: optional #86 +│ └── item: list #85 +│ └── item: &User_query_where_input #84 +├── [id]: optional #32 │ └── item: optional '_prisma_integer_filter_ex' #31 -│ └── item: union #28 -│ ├── variant_0: either '_prisma_integer_filter' #26 -│ │ ├── variant_0: integer #15 -│ │ ├── variant_1: struct #20 -│ │ │ └── [equals]: integer #15 -│ │ ├── variant_2: struct #21 -│ │ │ └── [not]: integer #15 -│ │ ├── variant_3: struct #22 -│ │ │ ├── [gt]: optional 'optional_16' #17 -│ │ │ │ └── item: integer #15 -│ │ │ ├── [gte]: optional 'optional_16' #17 -│ │ │ │ └── item: integer #15 -│ │ │ ├── [lt]: optional 'optional_16' #17 -│ │ │ │ └── item: integer #15 -│ │ │ └── [lte]: optional 'optional_16' #17 -│ │ │ └── item: integer #15 -│ │ ├── variant_4: struct #23 -│ │ │ └── [in]: list 'list_18' #19 -│ │ │ └── item: integer #15 -│ │ └── variant_5: struct #24 -│ │ └── [notIn]: list 'list_18' #19 -│ │ └── item: integer #15 -│ └── variant_1: struct #27 -│ └── [not]: either '_prisma_integer_filter' #26 -│ ├── variant_0: integer #15 -│ ├── variant_1: struct #20 -│ │ └── [equals]: integer #15 -│ ├── variant_2: struct #21 -│ │ └── [not]: integer #15 -│ ├── variant_3: struct #22 -│ │ ├── [gt]: optional 'optional_16' #17 -│ │ │ └── item: integer #15 -│ │ ├── [gte]: optional 'optional_16' #17 -│ │ │ └── item: integer #15 -│ │ ├── [lt]: optional 'optional_16' #17 -│ │ │ └── item: integer #15 -│ │ └── [lte]: optional 'optional_16' #17 -│ │ └── item: integer #15 -│ ├── variant_4: struct #23 -│ │ └── [in]: list 'list_18' #19 -│ │ └── item: integer #15 -│ └── variant_5: struct #24 -│ └── [notIn]: list 'list_18' #19 -│ └── item: integer #15 -├── [name]: optional 'optional_56' #57 -│ └── item: optional '_prisma_string_filter_ex' #55 -│ └── item: union #52 -│ ├── variant_0: union '_prisma_string_filter' #50 -│ │ ├── variant_0: string #34 -│ │ ├── variant_1: struct #39 -│ │ │ └── [equals]: string #34 -│ │ ├── variant_2: struct #40 -│ │ │ └── [not]: string #34 -│ │ ├── variant_3: struct #41 -│ │ │ └── [in]: list 'list_37' #38 -│ │ │ └── item: string #34 -│ │ ├── variant_4: struct #42 -│ │ │ └── [notIn]: list 'list_37' #38 -│ │ │ └── item: string #34 -│ │ ├── variant_5: struct #46 -│ │ │ ├── [contains]: string #34 -│ │ │ └── [mode]: optional 'optional_44' #45 -│ │ │ └── item: string #43 enum{ '"insensitive"' } -│ │ ├── variant_6: struct #47 -│ │ │ └── [search]: string #34 -│ │ └── variant_7: struct #48 -│ │ ├── [endsWith]: optional 'optional_35' #36 -│ │ │ └── item: string #34 -│ │ └── [startsWith]: optional 'optional_35' #36 -│ │ └── item: string #34 -│ └── variant_1: struct #51 -│ └── [not]: union '_prisma_string_filter' #50 -│ ├── variant_0: string #34 -│ ├── variant_1: struct #39 -│ │ └── [equals]: string #34 -│ ├── variant_2: struct #40 -│ │ └── [not]: string #34 -│ ├── variant_3: struct #41 -│ │ └── [in]: list 'list_37' #38 -│ │ └── item: string #34 -│ ├── variant_4: struct #42 -│ │ └── [notIn]: list 'list_37' #38 -│ │ └── item: string #34 -│ ├── variant_5: struct #46 -│ │ ├── [contains]: string #34 -│ │ └── [mode]: optional 'optional_44' #45 -│ │ └── item: string #43 enum{ '"insensitive"' } -│ ├── variant_6: struct #47 -│ │ └── [search]: string #34 -│ └── variant_7: struct #48 -│ ├── [endsWith]: optional 'optional_35' #36 -│ │ └── item: string #34 -│ └── [startsWith]: optional 'optional_35' #36 -│ └── item: string #34 -└── [posts]: optional 'optional_95' #96 - └── item: union #94 - ├── variant_0: struct #87 - │ └── [every]: optional 'optional_85' #86 - │ └── item: struct 'Post_where_excluding_User' #84 - │ ├── [author]: optional 'optional_81' #82 - │ │ └── item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #80 - │ │ ├── [id]: optional 'optional_62' #63 - │ │ │ └── item: optional '_prisma_integer_filter_ex' #31 - │ │ │ └── item: union #28 - │ │ │ ├── variant_0: either '_prisma_integer_filter' #26 - │ │ │ │ ├── variant_0: integer #15 - │ │ │ │ ├── variant_1: struct #20 - │ │ │ │ │ └── [equals]: integer #15 - │ │ │ │ ├── variant_2: struct #21 - │ │ │ │ │ └── [not]: integer #15 - │ │ │ │ ├── variant_3: struct #22 - │ │ │ │ │ ├── [gt]: optional 'optional_16' #17 - │ │ │ │ │ │ └── item: integer #15 - │ │ │ │ │ ├── [gte]: optional 'optional_16' #17 - │ │ │ │ │ │ └── item: integer #15 - │ │ │ │ │ ├── [lt]: optional 'optional_16' #17 - │ │ │ │ │ │ └── item: integer #15 - │ │ │ │ │ └── [lte]: optional 'optional_16' #17 - │ │ │ │ │ └── item: integer #15 - │ │ │ │ ├── variant_4: struct #23 - │ │ │ │ │ └── [in]: list 'list_18' #19 - │ │ │ │ │ └── item: integer #15 - │ │ │ │ └── variant_5: struct #24 - │ │ │ │ └── [notIn]: list 'list_18' #19 - │ │ │ │ └── item: integer #15 - │ │ │ └── variant_1: struct #27 - │ │ │ └── [not]: either '_prisma_integer_filter' #26 - │ │ │ ├── variant_0: integer #15 - │ │ │ ├── variant_1: struct #20 - │ │ │ │ └── [equals]: integer #15 - │ │ │ ├── variant_2: struct #21 - │ │ │ │ └── [not]: integer #15 - │ │ │ ├── variant_3: struct #22 - │ │ │ │ ├── [gt]: optional 'optional_16' #17 - │ │ │ │ │ └── item: integer #15 - │ │ │ │ ├── [gte]: optional 'optional_16' #17 - │ │ │ │ │ └── item: integer #15 - │ │ │ │ ├── [lt]: optional 'optional_16' #17 - │ │ │ │ │ └── item: integer #15 - │ │ │ │ └── [lte]: optional 'optional_16' #17 - │ │ │ │ └── item: integer #15 - │ │ │ ├── variant_4: struct #23 - │ │ │ │ └── [in]: list 'list_18' #19 - │ │ │ │ └── item: integer #15 - │ │ │ └── variant_5: struct #24 - │ │ │ └── [notIn]: list 'list_18' #19 - │ │ │ └── item: integer #15 - │ │ ├── [name]: optional 'optional_64' #65 - │ │ │ └── item: optional '_prisma_string_filter_ex' #55 - │ │ │ └── item: union #52 - │ │ │ ├── variant_0: union '_prisma_string_filter' #50 - │ │ │ │ ├── variant_0: string #34 - │ │ │ │ ├── variant_1: struct #39 - │ │ │ │ │ └── [equals]: string #34 - │ │ │ │ ├── variant_2: struct #40 - │ │ │ │ │ └── [not]: string #34 - │ │ │ │ ├── variant_3: struct #41 - │ │ │ │ │ └── [in]: list 'list_37' #38 - │ │ │ │ │ └── item: string #34 - │ │ │ │ ├── variant_4: struct #42 - │ │ │ │ │ └── [notIn]: list 'list_37' #38 - │ │ │ │ │ └── item: string #34 - │ │ │ │ ├── variant_5: struct #46 - │ │ │ │ │ ├── [contains]: string #34 - │ │ │ │ │ └── [mode]: optional 'optional_44' #45 - │ │ │ │ │ └── item: string #43 enum{ '"insensitive"' } - │ │ │ │ ├── variant_6: struct #47 - │ │ │ │ │ └── [search]: string #34 - │ │ │ │ └── variant_7: struct #48 - │ │ │ │ ├── [endsWith]: optional 'optional_35' #36 - │ │ │ │ │ └── item: string #34 - │ │ │ │ └── [startsWith]: optional 'optional_35' #36 - │ │ │ │ └── item: string #34 - │ │ │ └── variant_1: struct #51 - │ │ │ └── [not]: union '_prisma_string_filter' #50 - │ │ │ ├── variant_0: string #34 - │ │ │ ├── variant_1: struct #39 - │ │ │ │ └── [equals]: string #34 - │ │ │ ├── variant_2: struct #40 - │ │ │ │ └── [not]: string #34 - │ │ │ ├── variant_3: struct #41 - │ │ │ │ └── [in]: list 'list_37' #38 - │ │ │ │ └── item: string #34 - │ │ │ ├── variant_4: struct #42 - │ │ │ │ └── [notIn]: list 'list_37' #38 - │ │ │ │ └── item: string #34 - │ │ │ ├── variant_5: struct #46 - │ │ │ │ ├── [contains]: string #34 - │ │ │ │ └── [mode]: optional 'optional_44' #45 - │ │ │ │ └── item: string #43 enum{ '"insensitive"' } - │ │ │ ├── variant_6: struct #47 - │ │ │ │ └── [search]: string #34 - │ │ │ └── variant_7: struct #48 - │ │ │ ├── [endsWith]: optional 'optional_35' #36 - │ │ │ │ └── item: string #34 - │ │ │ └── [startsWith]: optional 'optional_35' #36 - │ │ │ └── item: string #34 - │ │ └── [posts]: optional 'optional_77' #78 - │ │ └── item: union #76 - │ │ ├── variant_0: struct #69 - │ │ │ └── [every]: optional 'optional_67' #68 - │ │ │ └── item: &Post_where_excluding_User #66 - │ │ ├── variant_1: struct #72 - │ │ │ └── [some]: optional 'optional_70' #71 - │ │ │ └── item: &Post_where_excluding_User #66 - │ │ └── variant_2: struct #75 - │ │ └── [none]: optional 'optional_73' #74 - │ │ └── item: &Post_where_excluding_User #66 - │ ├── [id]: optional 'optional_58' #59 - │ │ └── item: optional '_prisma_integer_filter_ex' #31 - │ │ └── item: union #28 - │ │ ├── variant_0: either '_prisma_integer_filter' #26 - │ │ │ ├── variant_0: integer #15 - │ │ │ ├── variant_1: struct #20 - │ │ │ │ └── [equals]: integer #15 - │ │ │ ├── variant_2: struct #21 - │ │ │ │ └── [not]: integer #15 - │ │ │ ├── variant_3: struct #22 - │ │ │ │ ├── [gt]: optional 'optional_16' #17 - │ │ │ │ │ └── item: integer #15 - │ │ │ │ ├── [gte]: optional 'optional_16' #17 - │ │ │ │ │ └── item: integer #15 - │ │ │ │ ├── [lt]: optional 'optional_16' #17 - │ │ │ │ │ └── item: integer #15 - │ │ │ │ └── [lte]: optional 'optional_16' #17 - │ │ │ │ └── item: integer #15 - │ │ │ ├── variant_4: struct #23 - │ │ │ │ └── [in]: list 'list_18' #19 - │ │ │ │ └── item: integer #15 - │ │ │ └── variant_5: struct #24 - │ │ │ └── [notIn]: list 'list_18' #19 - │ │ │ └── item: integer #15 - │ │ └── variant_1: struct #27 - │ │ └── [not]: either '_prisma_integer_filter' #26 - │ │ ├── variant_0: integer #15 - │ │ ├── variant_1: struct #20 - │ │ │ └── [equals]: integer #15 - │ │ ├── variant_2: struct #21 - │ │ │ └── [not]: integer #15 - │ │ ├── variant_3: struct #22 - │ │ │ ├── [gt]: optional 'optional_16' #17 - │ │ │ │ └── item: integer #15 - │ │ │ ├── [gte]: optional 'optional_16' #17 - │ │ │ │ └── item: integer #15 - │ │ │ ├── [lt]: optional 'optional_16' #17 - │ │ │ │ └── item: integer #15 - │ │ │ └── [lte]: optional 'optional_16' #17 - │ │ │ └── item: integer #15 - │ │ ├── variant_4: struct #23 - │ │ │ └── [in]: list 'list_18' #19 - │ │ │ └── item: integer #15 - │ │ └── variant_5: struct #24 - │ │ └── [notIn]: list 'list_18' #19 - │ │ └── item: integer #15 - │ └── [title]: optional 'optional_60' #61 - │ └── item: optional '_prisma_string_filter_ex' #55 - │ └── item: union #52 - │ ├── variant_0: union '_prisma_string_filter' #50 - │ │ ├── variant_0: string #34 - │ │ ├── variant_1: struct #39 - │ │ │ └── [equals]: string #34 - │ │ ├── variant_2: struct #40 - │ │ │ └── [not]: string #34 - │ │ ├── variant_3: struct #41 - │ │ │ └── [in]: list 'list_37' #38 - │ │ │ └── item: string #34 - │ │ ├── variant_4: struct #42 - │ │ │ └── [notIn]: list 'list_37' #38 - │ │ │ └── item: string #34 - │ │ ├── variant_5: struct #46 - │ │ │ ├── [contains]: string #34 - │ │ │ └── [mode]: optional 'optional_44' #45 - │ │ │ └── item: string #43 enum{ '"insensitive"' } - │ │ ├── variant_6: struct #47 - │ │ │ └── [search]: string #34 - │ │ └── variant_7: struct #48 - │ │ ├── [endsWith]: optional 'optional_35' #36 - │ │ │ └── item: string #34 - │ │ └── [startsWith]: optional 'optional_35' #36 - │ │ └── item: string #34 - │ └── variant_1: struct #51 - │ └── [not]: union '_prisma_string_filter' #50 - │ ├── variant_0: string #34 - │ ├── variant_1: struct #39 - │ │ └── [equals]: string #34 - │ ├── variant_2: struct #40 - │ │ └── [not]: string #34 - │ ├── variant_3: struct #41 - │ │ └── [in]: list 'list_37' #38 - │ │ └── item: string #34 - │ ├── variant_4: struct #42 - │ │ └── [notIn]: list 'list_37' #38 - │ │ └── item: string #34 - │ ├── variant_5: struct #46 - │ │ ├── [contains]: string #34 - │ │ └── [mode]: optional 'optional_44' #45 - │ │ └── item: string #43 enum{ '"insensitive"' } - │ ├── variant_6: struct #47 - │ │ └── [search]: string #34 - │ └── variant_7: struct #48 - │ ├── [endsWith]: optional 'optional_35' #36 - │ │ └── item: string #34 - │ └── [startsWith]: optional 'optional_35' #36 - │ └── item: string #34 - ├── variant_1: struct #90 - │ └── [some]: optional 'optional_88' #89 - │ └── item: struct 'Post_where_excluding_User' #84 - │ ├── [author]: optional 'optional_81' #82 - │ │ └── item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #80 - │ │ ├── [id]: optional 'optional_62' #63 - │ │ │ └── item: optional '_prisma_integer_filter_ex' #31 - │ │ │ └── item: union #28 - │ │ │ ├── variant_0: either '_prisma_integer_filter' #26 - │ │ │ │ ├── variant_0: integer #15 - │ │ │ │ ├── variant_1: struct #20 - │ │ │ │ │ └── [equals]: integer #15 - │ │ │ │ ├── variant_2: struct #21 - │ │ │ │ │ └── [not]: integer #15 - │ │ │ │ ├── variant_3: struct #22 - │ │ │ │ │ ├── [gt]: optional 'optional_16' #17 - │ │ │ │ │ │ └── item: integer #15 - │ │ │ │ │ ├── [gte]: optional 'optional_16' #17 - │ │ │ │ │ │ └── item: integer #15 - │ │ │ │ │ ├── [lt]: optional 'optional_16' #17 - │ │ │ │ │ │ └── item: integer #15 - │ │ │ │ │ └── [lte]: optional 'optional_16' #17 - │ │ │ │ │ └── item: integer #15 - │ │ │ │ ├── variant_4: struct #23 - │ │ │ │ │ └── [in]: list 'list_18' #19 - │ │ │ │ │ └── item: integer #15 - │ │ │ │ └── variant_5: struct #24 - │ │ │ │ └── [notIn]: list 'list_18' #19 - │ │ │ │ └── item: integer #15 - │ │ │ └── variant_1: struct #27 - │ │ │ └── [not]: either '_prisma_integer_filter' #26 - │ │ │ ├── variant_0: integer #15 - │ │ │ ├── variant_1: struct #20 - │ │ │ │ └── [equals]: integer #15 - │ │ │ ├── variant_2: struct #21 - │ │ │ │ └── [not]: integer #15 - │ │ │ ├── variant_3: struct #22 - │ │ │ │ ├── [gt]: optional 'optional_16' #17 - │ │ │ │ │ └── item: integer #15 - │ │ │ │ ├── [gte]: optional 'optional_16' #17 - │ │ │ │ │ └── item: integer #15 - │ │ │ │ ├── [lt]: optional 'optional_16' #17 - │ │ │ │ │ └── item: integer #15 - │ │ │ │ └── [lte]: optional 'optional_16' #17 - │ │ │ │ └── item: integer #15 - │ │ │ ├── variant_4: struct #23 - │ │ │ │ └── [in]: list 'list_18' #19 - │ │ │ │ └── item: integer #15 - │ │ │ └── variant_5: struct #24 - │ │ │ └── [notIn]: list 'list_18' #19 - │ │ │ └── item: integer #15 - │ │ ├── [name]: optional 'optional_64' #65 - │ │ │ └── item: optional '_prisma_string_filter_ex' #55 - │ │ │ └── item: union #52 - │ │ │ ├── variant_0: union '_prisma_string_filter' #50 - │ │ │ │ ├── variant_0: string #34 - │ │ │ │ ├── variant_1: struct #39 - │ │ │ │ │ └── [equals]: string #34 - │ │ │ │ ├── variant_2: struct #40 - │ │ │ │ │ └── [not]: string #34 - │ │ │ │ ├── variant_3: struct #41 - │ │ │ │ │ └── [in]: list 'list_37' #38 - │ │ │ │ │ └── item: string #34 - │ │ │ │ ├── variant_4: struct #42 - │ │ │ │ │ └── [notIn]: list 'list_37' #38 - │ │ │ │ │ └── item: string #34 - │ │ │ │ ├── variant_5: struct #46 - │ │ │ │ │ ├── [contains]: string #34 - │ │ │ │ │ └── [mode]: optional 'optional_44' #45 - │ │ │ │ │ └── item: string #43 enum{ '"insensitive"' } - │ │ │ │ ├── variant_6: struct #47 - │ │ │ │ │ └── [search]: string #34 - │ │ │ │ └── variant_7: struct #48 - │ │ │ │ ├── [endsWith]: optional 'optional_35' #36 - │ │ │ │ │ └── item: string #34 - │ │ │ │ └── [startsWith]: optional 'optional_35' #36 - │ │ │ │ └── item: string #34 - │ │ │ └── variant_1: struct #51 - │ │ │ └── [not]: union '_prisma_string_filter' #50 - │ │ │ ├── variant_0: string #34 - │ │ │ ├── variant_1: struct #39 - │ │ │ │ └── [equals]: string #34 - │ │ │ ├── variant_2: struct #40 - │ │ │ │ └── [not]: string #34 - │ │ │ ├── variant_3: struct #41 - │ │ │ │ └── [in]: list 'list_37' #38 - │ │ │ │ └── item: string #34 - │ │ │ ├── variant_4: struct #42 - │ │ │ │ └── [notIn]: list 'list_37' #38 - │ │ │ │ └── item: string #34 - │ │ │ ├── variant_5: struct #46 - │ │ │ │ ├── [contains]: string #34 - │ │ │ │ └── [mode]: optional 'optional_44' #45 - │ │ │ │ └── item: string #43 enum{ '"insensitive"' } - │ │ │ ├── variant_6: struct #47 - │ │ │ │ └── [search]: string #34 - │ │ │ └── variant_7: struct #48 - │ │ │ ├── [endsWith]: optional 'optional_35' #36 - │ │ │ │ └── item: string #34 - │ │ │ └── [startsWith]: optional 'optional_35' #36 - │ │ │ └── item: string #34 - │ │ └── [posts]: optional 'optional_77' #78 - │ │ └── item: union #76 - │ │ ├── variant_0: struct #69 - │ │ │ └── [every]: optional 'optional_67' #68 - │ │ │ └── item: &Post_where_excluding_User #66 - │ │ ├── variant_1: struct #72 - │ │ │ └── [some]: optional 'optional_70' #71 - │ │ │ └── item: &Post_where_excluding_User #66 - │ │ └── variant_2: struct #75 - │ │ └── [none]: optional 'optional_73' #74 - │ │ └── item: &Post_where_excluding_User #66 - │ ├── [id]: optional 'optional_58' #59 - │ │ └── item: optional '_prisma_integer_filter_ex' #31 - │ │ └── item: union #28 - │ │ ├── variant_0: either '_prisma_integer_filter' #26 - │ │ │ ├── variant_0: integer #15 - │ │ │ ├── variant_1: struct #20 - │ │ │ │ └── [equals]: integer #15 - │ │ │ ├── variant_2: struct #21 - │ │ │ │ └── [not]: integer #15 - │ │ │ ├── variant_3: struct #22 - │ │ │ │ ├── [gt]: optional 'optional_16' #17 - │ │ │ │ │ └── item: integer #15 - │ │ │ │ ├── [gte]: optional 'optional_16' #17 - │ │ │ │ │ └── item: integer #15 - │ │ │ │ ├── [lt]: optional 'optional_16' #17 - │ │ │ │ │ └── item: integer #15 - │ │ │ │ └── [lte]: optional 'optional_16' #17 - │ │ │ │ └── item: integer #15 - │ │ │ ├── variant_4: struct #23 - │ │ │ │ └── [in]: list 'list_18' #19 - │ │ │ │ └── item: integer #15 - │ │ │ └── variant_5: struct #24 - │ │ │ └── [notIn]: list 'list_18' #19 - │ │ │ └── item: integer #15 - │ │ └── variant_1: struct #27 - │ │ └── [not]: either '_prisma_integer_filter' #26 - │ │ ├── variant_0: integer #15 - │ │ ├── variant_1: struct #20 - │ │ │ └── [equals]: integer #15 - │ │ ├── variant_2: struct #21 - │ │ │ └── [not]: integer #15 - │ │ ├── variant_3: struct #22 - │ │ │ ├── [gt]: optional 'optional_16' #17 - │ │ │ │ └── item: integer #15 - │ │ │ ├── [gte]: optional 'optional_16' #17 - │ │ │ │ └── item: integer #15 - │ │ │ ├── [lt]: optional 'optional_16' #17 - │ │ │ │ └── item: integer #15 - │ │ │ └── [lte]: optional 'optional_16' #17 - │ │ │ └── item: integer #15 - │ │ ├── variant_4: struct #23 - │ │ │ └── [in]: list 'list_18' #19 - │ │ │ └── item: integer #15 - │ │ └── variant_5: struct #24 - │ │ └── [notIn]: list 'list_18' #19 - │ │ └── item: integer #15 - │ └── [title]: optional 'optional_60' #61 - │ └── item: optional '_prisma_string_filter_ex' #55 - │ └── item: union #52 - │ ├── variant_0: union '_prisma_string_filter' #50 - │ │ ├── variant_0: string #34 - │ │ ├── variant_1: struct #39 - │ │ │ └── [equals]: string #34 - │ │ ├── variant_2: struct #40 - │ │ │ └── [not]: string #34 - │ │ ├── variant_3: struct #41 - │ │ │ └── [in]: list 'list_37' #38 - │ │ │ └── item: string #34 - │ │ ├── variant_4: struct #42 - │ │ │ └── [notIn]: list 'list_37' #38 - │ │ │ └── item: string #34 - │ │ ├── variant_5: struct #46 - │ │ │ ├── [contains]: string #34 - │ │ │ └── [mode]: optional 'optional_44' #45 - │ │ │ └── item: string #43 enum{ '"insensitive"' } - │ │ ├── variant_6: struct #47 - │ │ │ └── [search]: string #34 - │ │ └── variant_7: struct #48 - │ │ ├── [endsWith]: optional 'optional_35' #36 - │ │ │ └── item: string #34 - │ │ └── [startsWith]: optional 'optional_35' #36 - │ │ └── item: string #34 - │ └── variant_1: struct #51 - │ └── [not]: union '_prisma_string_filter' #50 - │ ├── variant_0: string #34 - │ ├── variant_1: struct #39 - │ │ └── [equals]: string #34 - │ ├── variant_2: struct #40 - │ │ └── [not]: string #34 - │ ├── variant_3: struct #41 - │ │ └── [in]: list 'list_37' #38 - │ │ └── item: string #34 - │ ├── variant_4: struct #42 - │ │ └── [notIn]: list 'list_37' #38 - │ │ └── item: string #34 - │ ├── variant_5: struct #46 - │ │ ├── [contains]: string #34 - │ │ └── [mode]: optional 'optional_44' #45 - │ │ └── item: string #43 enum{ '"insensitive"' } - │ ├── variant_6: struct #47 - │ │ └── [search]: string #34 - │ └── variant_7: struct #48 - │ ├── [endsWith]: optional 'optional_35' #36 - │ │ └── item: string #34 - │ └── [startsWith]: optional 'optional_35' #36 - │ └── item: string #34 - └── variant_2: struct #93 - └── [none]: optional 'optional_91' #92 - └── item: struct 'Post_where_excluding_User' #84 - ├── [author]: optional 'optional_81' #82 - │ └── item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #80 - │ ├── [id]: optional 'optional_62' #63 - │ │ └── item: optional '_prisma_integer_filter_ex' #31 - │ │ └── item: union #28 - │ │ ├── variant_0: either '_prisma_integer_filter' #26 - │ │ │ ├── variant_0: integer #15 - │ │ │ ├── variant_1: struct #20 - │ │ │ │ └── [equals]: integer #15 - │ │ │ ├── variant_2: struct #21 - │ │ │ │ └── [not]: integer #15 - │ │ │ ├── variant_3: struct #22 - │ │ │ │ ├── [gt]: optional 'optional_16' #17 - │ │ │ │ │ └── item: integer #15 - │ │ │ │ ├── [gte]: optional 'optional_16' #17 - │ │ │ │ │ └── item: integer #15 - │ │ │ │ ├── [lt]: optional 'optional_16' #17 - │ │ │ │ │ └── item: integer #15 - │ │ │ │ └── [lte]: optional 'optional_16' #17 - │ │ │ │ └── item: integer #15 - │ │ │ ├── variant_4: struct #23 - │ │ │ │ └── [in]: list 'list_18' #19 - │ │ │ │ └── item: integer #15 - │ │ │ └── variant_5: struct #24 - │ │ │ └── [notIn]: list 'list_18' #19 - │ │ │ └── item: integer #15 - │ │ └── variant_1: struct #27 - │ │ └── [not]: either '_prisma_integer_filter' #26 - │ │ ├── variant_0: integer #15 - │ │ ├── variant_1: struct #20 - │ │ │ └── [equals]: integer #15 - │ │ ├── variant_2: struct #21 - │ │ │ └── [not]: integer #15 - │ │ ├── variant_3: struct #22 - │ │ │ ├── [gt]: optional 'optional_16' #17 - │ │ │ │ └── item: integer #15 - │ │ │ ├── [gte]: optional 'optional_16' #17 - │ │ │ │ └── item: integer #15 - │ │ │ ├── [lt]: optional 'optional_16' #17 - │ │ │ │ └── item: integer #15 - │ │ │ └── [lte]: optional 'optional_16' #17 - │ │ │ └── item: integer #15 - │ │ ├── variant_4: struct #23 - │ │ │ └── [in]: list 'list_18' #19 - │ │ │ └── item: integer #15 - │ │ └── variant_5: struct #24 - │ │ └── [notIn]: list 'list_18' #19 - │ │ └── item: integer #15 - │ ├── [name]: optional 'optional_64' #65 - │ │ └── item: optional '_prisma_string_filter_ex' #55 - │ │ └── item: union #52 - │ │ ├── variant_0: union '_prisma_string_filter' #50 - │ │ │ ├── variant_0: string #34 - │ │ │ ├── variant_1: struct #39 - │ │ │ │ └── [equals]: string #34 - │ │ │ ├── variant_2: struct #40 - │ │ │ │ └── [not]: string #34 - │ │ │ ├── variant_3: struct #41 - │ │ │ │ └── [in]: list 'list_37' #38 - │ │ │ │ └── item: string #34 - │ │ │ ├── variant_4: struct #42 - │ │ │ │ └── [notIn]: list 'list_37' #38 - │ │ │ │ └── item: string #34 - │ │ │ ├── variant_5: struct #46 - │ │ │ │ ├── [contains]: string #34 - │ │ │ │ └── [mode]: optional 'optional_44' #45 - │ │ │ │ └── item: string #43 enum{ '"insensitive"' } - │ │ │ ├── variant_6: struct #47 - │ │ │ │ └── [search]: string #34 - │ │ │ └── variant_7: struct #48 - │ │ │ ├── [endsWith]: optional 'optional_35' #36 - │ │ │ │ └── item: string #34 - │ │ │ └── [startsWith]: optional 'optional_35' #36 - │ │ │ └── item: string #34 - │ │ └── variant_1: struct #51 - │ │ └── [not]: union '_prisma_string_filter' #50 - │ │ ├── variant_0: string #34 - │ │ ├── variant_1: struct #39 - │ │ │ └── [equals]: string #34 - │ │ ├── variant_2: struct #40 - │ │ │ └── [not]: string #34 - │ │ ├── variant_3: struct #41 - │ │ │ └── [in]: list 'list_37' #38 - │ │ │ └── item: string #34 - │ │ ├── variant_4: struct #42 - │ │ │ └── [notIn]: list 'list_37' #38 - │ │ │ └── item: string #34 - │ │ ├── variant_5: struct #46 - │ │ │ ├── [contains]: string #34 - │ │ │ └── [mode]: optional 'optional_44' #45 - │ │ │ └── item: string #43 enum{ '"insensitive"' } - │ │ ├── variant_6: struct #47 - │ │ │ └── [search]: string #34 - │ │ └── variant_7: struct #48 - │ │ ├── [endsWith]: optional 'optional_35' #36 - │ │ │ └── item: string #34 - │ │ └── [startsWith]: optional 'optional_35' #36 - │ │ └── item: string #34 - │ └── [posts]: optional 'optional_77' #78 - │ └── item: union #76 - │ ├── variant_0: struct #69 - │ │ └── [every]: optional 'optional_67' #68 - │ │ └── item: &Post_where_excluding_User #66 - │ ├── variant_1: struct #72 - │ │ └── [some]: optional 'optional_70' #71 - │ │ └── item: &Post_where_excluding_User #66 - │ └── variant_2: struct #75 - │ └── [none]: optional 'optional_73' #74 - │ └── item: &Post_where_excluding_User #66 - ├── [id]: optional 'optional_58' #59 - │ └── item: optional '_prisma_integer_filter_ex' #31 - │ └── item: union #28 - │ ├── variant_0: either '_prisma_integer_filter' #26 - │ │ ├── variant_0: integer #15 - │ │ ├── variant_1: struct #20 - │ │ │ └── [equals]: integer #15 - │ │ ├── variant_2: struct #21 - │ │ │ └── [not]: integer #15 - │ │ ├── variant_3: struct #22 - │ │ │ ├── [gt]: optional 'optional_16' #17 - │ │ │ │ └── item: integer #15 - │ │ │ ├── [gte]: optional 'optional_16' #17 - │ │ │ │ └── item: integer #15 - │ │ │ ├── [lt]: optional 'optional_16' #17 - │ │ │ │ └── item: integer #15 - │ │ │ └── [lte]: optional 'optional_16' #17 - │ │ │ └── item: integer #15 - │ │ ├── variant_4: struct #23 - │ │ │ └── [in]: list 'list_18' #19 - │ │ │ └── item: integer #15 - │ │ └── variant_5: struct #24 - │ │ └── [notIn]: list 'list_18' #19 - │ │ └── item: integer #15 - │ └── variant_1: struct #27 - │ └── [not]: either '_prisma_integer_filter' #26 - │ ├── variant_0: integer #15 - │ ├── variant_1: struct #20 - │ │ └── [equals]: integer #15 - │ ├── variant_2: struct #21 - │ │ └── [not]: integer #15 - │ ├── variant_3: struct #22 - │ │ ├── [gt]: optional 'optional_16' #17 - │ │ │ └── item: integer #15 - │ │ ├── [gte]: optional 'optional_16' #17 - │ │ │ └── item: integer #15 - │ │ ├── [lt]: optional 'optional_16' #17 - │ │ │ └── item: integer #15 - │ │ └── [lte]: optional 'optional_16' #17 - │ │ └── item: integer #15 - │ ├── variant_4: struct #23 - │ │ └── [in]: list 'list_18' #19 - │ │ └── item: integer #15 - │ └── variant_5: struct #24 - │ └── [notIn]: list 'list_18' #19 - │ └── item: integer #15 - └── [title]: optional 'optional_60' #61 - └── item: optional '_prisma_string_filter_ex' #55 - └── item: union #52 - ├── variant_0: union '_prisma_string_filter' #50 - │ ├── variant_0: string #34 - │ ├── variant_1: struct #39 - │ │ └── [equals]: string #34 - │ ├── variant_2: struct #40 - │ │ └── [not]: string #34 - │ ├── variant_3: struct #41 - │ │ └── [in]: list 'list_37' #38 - │ │ └── item: string #34 - │ ├── variant_4: struct #42 - │ │ └── [notIn]: list 'list_37' #38 - │ │ └── item: string #34 - │ ├── variant_5: struct #46 - │ │ ├── [contains]: string #34 - │ │ └── [mode]: optional 'optional_44' #45 - │ │ └── item: string #43 enum{ '"insensitive"' } - │ ├── variant_6: struct #47 - │ │ └── [search]: string #34 - │ └── variant_7: struct #48 - │ ├── [endsWith]: optional 'optional_35' #36 - │ │ └── item: string #34 - │ └── [startsWith]: optional 'optional_35' #36 - │ └── item: string #34 - └── variant_1: struct #51 - └── [not]: union '_prisma_string_filter' #50 - ├── variant_0: string #34 - ├── variant_1: struct #39 - │ └── [equals]: string #34 - ├── variant_2: struct #40 - │ └── [not]: string #34 - ├── variant_3: struct #41 - │ └── [in]: list 'list_37' #38 - │ └── item: string #34 - ├── variant_4: struct #42 - │ └── [notIn]: list 'list_37' #38 - │ └── item: string #34 - ├── variant_5: struct #46 - │ ├── [contains]: string #34 - │ └── [mode]: optional 'optional_44' #45 - │ └── item: string #43 enum{ '"insensitive"' } - ├── variant_6: struct #47 - │ └── [search]: string #34 - └── variant_7: struct #48 - ├── [endsWith]: optional 'optional_35' #36 - │ └── item: string #34 - └── [startsWith]: optional 'optional_35' #36 - └── item: string #34 +│ └── item: union #29 +│ ├── variant_0: either '_prisma_integer_filter' #27 +│ │ ├── variant_0: integer #18 +│ │ ├── variant_1: struct #21 +│ │ │ └── [equals]: integer #18 +│ │ ├── variant_2: struct #22 +│ │ │ └── [not]: integer #18 +│ │ ├── variant_3: struct #23 +│ │ │ ├── [gt]: optional #19 +│ │ │ │ └── item: integer #18 +│ │ │ ├── [gte]: optional #19 +│ │ │ │ └── item: integer #18 +│ │ │ ├── [lt]: optional #19 +│ │ │ │ └── item: integer #18 +│ │ │ └── [lte]: optional #19 +│ │ │ └── item: integer #18 +│ │ ├── variant_4: struct #24 +│ │ │ └── [in]: list #20 +│ │ │ └── item: integer #18 +│ │ └── variant_5: struct #25 +│ │ └── [notIn]: list #20 +│ │ └── item: integer #18 +│ └── variant_1: struct #28 +│ └── [not]: either '_prisma_integer_filter' #27 +│ ├── variant_0: integer #18 +│ ├── variant_1: struct #21 +│ │ └── [equals]: integer #18 +│ ├── variant_2: struct #22 +│ │ └── [not]: integer #18 +│ ├── variant_3: struct #23 +│ │ ├── [gt]: optional #19 +│ │ │ └── item: integer #18 +│ │ ├── [gte]: optional #19 +│ │ │ └── item: integer #18 +│ │ ├── [lt]: optional #19 +│ │ │ └── item: integer #18 +│ │ └── [lte]: optional #19 +│ │ └── item: integer #18 +│ ├── variant_4: struct #24 +│ │ └── [in]: list #20 +│ │ └── item: integer #18 +│ └── variant_5: struct #25 +│ └── [notIn]: list #20 +│ └── item: integer #18 +├── [name]: optional #53 +│ └── item: optional '_prisma_string_filter_ex' #52 +│ └── item: union #50 +│ ├── variant_0: union '_prisma_string_filter' #48 +│ │ ├── variant_0: string #35 +│ │ ├── variant_1: struct #38 +│ │ │ └── [equals]: string #35 +│ │ ├── variant_2: struct #39 +│ │ │ └── [not]: string #35 +│ │ ├── variant_3: struct #40 +│ │ │ └── [in]: list #37 +│ │ │ └── item: string #35 +│ │ ├── variant_4: struct #41 +│ │ │ └── [notIn]: list #37 +│ │ │ └── item: string #35 +│ │ ├── variant_5: struct #44 +│ │ │ ├── [contains]: string #35 +│ │ │ └── [mode]: optional #43 +│ │ │ └── item: string #42 enum{ '"insensitive"' } +│ │ ├── variant_6: struct #45 +│ │ │ └── [search]: string #35 +│ │ └── variant_7: struct #46 +│ │ ├── [endsWith]: optional #36 +│ │ │ └── item: string #35 +│ │ └── [startsWith]: optional #36 +│ │ └── item: string #35 +│ └── variant_1: struct #49 +│ └── [not]: union '_prisma_string_filter' #48 +│ ├── variant_0: string #35 +│ ├── variant_1: struct #38 +│ │ └── [equals]: string #35 +│ ├── variant_2: struct #39 +│ │ └── [not]: string #35 +│ ├── variant_3: struct #40 +│ │ └── [in]: list #37 +│ │ └── item: string #35 +│ ├── variant_4: struct #41 +│ │ └── [notIn]: list #37 +│ │ └── item: string #35 +│ ├── variant_5: struct #44 +│ │ ├── [contains]: string #35 +│ │ └── [mode]: optional #43 +│ │ └── item: string #42 enum{ '"insensitive"' } +│ ├── variant_6: struct #45 +│ │ └── [search]: string #35 +│ └── variant_7: struct #46 +│ ├── [endsWith]: optional #36 +│ │ └── item: string #35 +│ └── [startsWith]: optional #36 +│ └── item: string #35 +└── [posts]: optional #81 + └── item: union #80 + ├── variant_0: struct #75 + │ └── [every]: optional #74 + │ └── item: struct 'Post_where_excluding_User' #73 + │ ├── [author]: optional #71 + │ │ └── item: struct 'User_where_excluding_Post_and_User' #70 + │ │ ├── [id]: optional #58 + │ │ │ └── item: &_prisma_integer_filter_ex #16 + │ │ ├── [name]: optional #59 + │ │ │ └── item: &_prisma_string_filter_ex #33 + │ │ └── [posts]: optional #68 + │ │ └── item: union #67 + │ │ ├── variant_0: struct #62 + │ │ │ └── [every]: optional #61 + │ │ │ └── item: &Post_where_excluding_User #60 + │ │ ├── variant_1: struct #64 + │ │ │ └── [some]: optional #63 + │ │ │ └── item: &Post_where_excluding_User #60 + │ │ └── variant_2: struct #66 + │ │ └── [none]: optional #65 + │ │ └── item: &Post_where_excluding_User #60 + │ ├── [id]: optional #55 + │ │ └── item: &_prisma_integer_filter_ex #16 + │ └── [title]: optional #56 + │ └── item: &_prisma_string_filter_ex #33 + ├── variant_1: struct #77 + │ └── [some]: optional #76 + │ └── item: struct 'Post_where_excluding_User' #73 + │ ├── [author]: optional #71 + │ │ └── item: struct 'User_where_excluding_Post_and_User' #70 + │ │ ├── [id]: optional #58 + │ │ │ └── item: &_prisma_integer_filter_ex #16 + │ │ ├── [name]: optional #59 + │ │ │ └── item: &_prisma_string_filter_ex #33 + │ │ └── [posts]: optional #68 + │ │ └── item: union #67 + │ │ ├── variant_0: struct #62 + │ │ │ └── [every]: optional #61 + │ │ │ └── item: &Post_where_excluding_User #60 + │ │ ├── variant_1: struct #64 + │ │ │ └── [some]: optional #63 + │ │ │ └── item: &Post_where_excluding_User #60 + │ │ └── variant_2: struct #66 + │ │ └── [none]: optional #65 + │ │ └── item: &Post_where_excluding_User #60 + │ ├── [id]: optional #55 + │ │ └── item: &_prisma_integer_filter_ex #16 + │ └── [title]: optional #56 + │ └── item: &_prisma_string_filter_ex #33 + └── variant_2: struct #79 + └── [none]: optional #78 + └── item: struct 'Post_where_excluding_User' #73 + ├── [author]: optional #71 + │ └── item: struct 'User_where_excluding_Post_and_User' #70 + │ ├── [id]: optional #58 + │ │ └── item: &_prisma_integer_filter_ex #16 + │ ├── [name]: optional #59 + │ │ └── item: &_prisma_string_filter_ex #33 + │ └── [posts]: optional #68 + │ └── item: union #67 + │ ├── variant_0: struct #62 + │ │ └── [every]: optional #61 + │ │ └── item: &Post_where_excluding_User #60 + │ ├── variant_1: struct #64 + │ │ └── [some]: optional #63 + │ │ └── item: &Post_where_excluding_User #60 + │ └── variant_2: struct #66 + │ └── [none]: optional #65 + │ └── item: &Post_where_excluding_User #60 + ├── [id]: optional #55 + │ └── item: &_prisma_integer_filter_ex #16 + └── [title]: optional #56 + └── item: &_prisma_string_filter_ex #33 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__aggregate Post out.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__aggregate Post out.snap index 307e82b85c..282d074e5e 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__aggregate Post out.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__aggregate Post out.snap @@ -2,25 +2,21 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(out) --- -root: struct #82 -├─ [_avg]: struct 'Post_avg_aggregate' #73 -│ └─ [id]: optional 'optional_70' #71 -│ └─ item: float #69 -├─ [_count]: struct 'Post_count_aggregate' #68 -│ ├─ [_all]: optional 'optional_65' #66 -│ │ └─ item: integer #64 -│ ├─ [author]: optional 'optional_65' #66 -│ │ └─ item: integer #64 -│ ├─ [id]: optional 'optional_65' #66 -│ │ └─ item: integer #64 -│ └─ [title]: optional 'optional_65' #66 -│ └─ item: integer #64 -├─ [_max]: struct 'Post_number_aggregate' #81 -│ └─ [id]: optional 'optional_78' #79 -│ └─ item: integer #77 -├─ [_min]: struct 'Post_number_aggregate' #81 -│ └─ [id]: optional 'optional_78' #79 -│ └─ item: integer #77 -└─ [_sum]: struct 'Post_number_aggregate' #81 - └─ [id]: optional 'optional_78' #79 - └─ item: integer #77 +root: struct #77 +├─ [_avg]: struct 'Post_avg_aggregate' #69 +│ └─ [id]: optional #67 +│ └─ item: float #66 +├─ [_count]: struct 'Post_count_aggregate' #64 +│ ├─ [_all]: optional #62 +│ │ └─ item: integer #61 +│ ├─ [author]: optional #62 +│ │ └─ item: integer #61 +│ ├─ [id]: optional #62 +│ │ └─ item: integer #61 +│ └─ [title]: optional #62 +│ └─ item: integer #61 +├─ [_max]: &Post_number_aggregate #70 +├─ [_min]: &Post_number_aggregate #70 +└─ [_sum]: struct 'Post_number_aggregate' #76 + └─ [id]: optional #74 + └─ item: integer #73 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__aggregate Record out.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__aggregate Record out.snap index 826fdf4fb0..d41656c7c9 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__aggregate Record out.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__aggregate Record out.snap @@ -2,27 +2,23 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(out) --- -root: struct #29 -├─ [_avg]: struct 'Record_avg_aggregate' #20 -│ └─ [age]: optional 'optional_17' #18 +root: struct #27 +├─ [_avg]: struct 'Record_avg_aggregate' #19 +│ └─ [age]: optional #17 │ └─ item: float #16 -├─ [_count]: struct 'Record_count_aggregate' #15 -│ ├─ [_all]: optional 'optional_12' #13 +├─ [_count]: struct 'Record_count_aggregate' #14 +│ ├─ [_all]: optional #12 │ │ └─ item: integer #11 -│ ├─ [age]: optional 'optional_12' #13 +│ ├─ [age]: optional #12 │ │ └─ item: integer #11 -│ ├─ [created_at]: optional 'optional_12' #13 +│ ├─ [created_at]: optional #12 │ │ └─ item: integer #11 -│ ├─ [id]: optional 'optional_12' #13 +│ ├─ [id]: optional #12 │ │ └─ item: integer #11 -│ └─ [name]: optional 'optional_12' #13 +│ └─ [name]: optional #12 │ └─ item: integer #11 -├─ [_max]: struct 'Record_number_aggregate' #28 -│ └─ [age]: optional 'optional_25' #26 -│ └─ item: integer #24 -├─ [_min]: struct 'Record_number_aggregate' #28 -│ └─ [age]: optional 'optional_25' #26 -│ └─ item: integer #24 -└─ [_sum]: struct 'Record_number_aggregate' #28 - └─ [age]: optional 'optional_25' #26 - └─ item: integer #24 +├─ [_max]: &Record_number_aggregate #20 +├─ [_min]: &Record_number_aggregate #20 +└─ [_sum]: struct 'Record_number_aggregate' #26 + └─ [age]: optional #24 + └─ item: integer #23 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__aggregate User out.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__aggregate User out.snap index 292b57f918..ef0b89622d 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__aggregate User out.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__aggregate User out.snap @@ -2,25 +2,21 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(out) --- -root: struct #63 -├─ [_avg]: struct 'User_avg_aggregate' #54 -│ └─ [id]: optional 'optional_51' #52 -│ └─ item: float #50 -├─ [_count]: struct 'User_count_aggregate' #49 -│ ├─ [_all]: optional 'optional_46' #47 -│ │ └─ item: integer #45 -│ ├─ [id]: optional 'optional_46' #47 -│ │ └─ item: integer #45 -│ ├─ [name]: optional 'optional_46' #47 -│ │ └─ item: integer #45 -│ └─ [posts]: optional 'optional_46' #47 -│ └─ item: integer #45 -├─ [_max]: struct 'User_number_aggregate' #62 -│ └─ [id]: optional 'optional_59' #60 -│ └─ item: integer #58 -├─ [_min]: struct 'User_number_aggregate' #62 -│ └─ [id]: optional 'optional_59' #60 -│ └─ item: integer #58 -└─ [_sum]: struct 'User_number_aggregate' #62 - └─ [id]: optional 'optional_59' #60 - └─ item: integer #58 +root: struct #59 +├─ [_avg]: struct 'User_avg_aggregate' #51 +│ └─ [id]: optional #49 +│ └─ item: float #48 +├─ [_count]: struct 'User_count_aggregate' #46 +│ ├─ [_all]: optional #44 +│ │ └─ item: integer #43 +│ ├─ [id]: optional #44 +│ │ └─ item: integer #43 +│ ├─ [name]: optional #44 +│ │ └─ item: integer #43 +│ └─ [posts]: optional #44 +│ └─ item: integer #43 +├─ [_max]: &User_number_aggregate #52 +├─ [_min]: &User_number_aggregate #52 +└─ [_sum]: struct 'User_number_aggregate' #58 + └─ [id]: optional #56 + └─ item: integer #55 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many Post inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many Post inp.snap index d32fddac2e..078d7fe3c3 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many Post inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many Post inp.snap @@ -2,824 +2,88 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct #171 -└─ [data]: list 'list_169' #170 - └─ item: struct 'Post_create_input' #168 - ├─ [author]: union #166 - │ ├─ variant_0: struct #163 - │ │ └─ [create]: struct 'User_create_input_excluding_rel_Post_User' #134 - │ │ ├─ [id]: integer #21 - │ │ └─ [name]: string #22 - │ ├─ variant_1: struct #164 - │ │ └─ [connect]: struct 'User_where' #161 - │ │ ├─ [id]: optional 'optional_135' #136 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #58 - │ │ │ └─ item: union #55 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #53 - │ │ │ │ ├─ variant_0: integer #42 - │ │ │ │ ├─ variant_1: struct #47 - │ │ │ │ │ └─ [equals]: integer #42 - │ │ │ │ ├─ variant_2: struct #48 - │ │ │ │ │ └─ [not]: integer #42 - │ │ │ │ ├─ variant_3: struct #49 - │ │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ variant_4: struct #50 - │ │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ variant_5: struct #51 - │ │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_1: struct #54 - │ │ │ └─ [not]: either '_prisma_integer_filter' #53 - │ │ │ ├─ variant_0: integer #42 - │ │ │ ├─ variant_1: struct #47 - │ │ │ │ └─ [equals]: integer #42 - │ │ │ ├─ variant_2: struct #48 - │ │ │ │ └─ [not]: integer #42 - │ │ │ ├─ variant_3: struct #49 - │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ └─ item: integer #42 - │ │ │ ├─ variant_4: struct #50 - │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_5: struct #51 - │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ └─ item: integer #42 - │ │ ├─ [name]: optional 'optional_137' #138 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #82 - │ │ │ └─ item: union #79 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #77 - │ │ │ │ ├─ variant_0: string #61 - │ │ │ │ ├─ variant_1: struct #66 - │ │ │ │ │ └─ [equals]: string #61 - │ │ │ │ ├─ variant_2: struct #67 - │ │ │ │ │ └─ [not]: string #61 - │ │ │ │ ├─ variant_3: struct #68 - │ │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ ├─ variant_4: struct #69 - │ │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ ├─ variant_5: struct #73 - │ │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #74 - │ │ │ │ │ └─ [search]: string #61 - │ │ │ │ └─ variant_7: struct #75 - │ │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ │ └─ item: string #61 - │ │ │ └─ variant_1: struct #78 - │ │ │ └─ [not]: union '_prisma_string_filter' #77 - │ │ │ ├─ variant_0: string #61 - │ │ │ ├─ variant_1: struct #66 - │ │ │ │ └─ [equals]: string #61 - │ │ │ ├─ variant_2: struct #67 - │ │ │ │ └─ [not]: string #61 - │ │ │ ├─ variant_3: struct #68 - │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_4: struct #69 - │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_5: struct #73 - │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #74 - │ │ │ │ └─ [search]: string #61 - │ │ │ └─ variant_7: struct #75 - │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ └─ item: string #61 - │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ └─ [posts]: optional 'optional_158' #159 - │ │ └─ item: union #157 - │ │ ├─ variant_0: struct #150 - │ │ │ └─ [every]: optional 'optional_148' #149 - │ │ │ └─ item: struct 'Post_where_excluding_User' #147 - │ │ │ ├─ [author]: optional 'optional_144' #145 - │ │ │ │ └─ item: &User_where #143 - │ │ │ ├─ [id]: optional 'optional_139' #140 - │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #58 - │ │ │ │ └─ item: union #55 - │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #53 - │ │ │ │ │ ├─ variant_0: integer #42 - │ │ │ │ │ ├─ variant_1: struct #47 - │ │ │ │ │ │ └─ [equals]: integer #42 - │ │ │ │ │ ├─ variant_2: struct #48 - │ │ │ │ │ │ └─ [not]: integer #42 - │ │ │ │ │ ├─ variant_3: struct #49 - │ │ │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ variant_4: struct #50 - │ │ │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ └─ variant_5: struct #51 - │ │ │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ variant_1: struct #54 - │ │ │ │ └─ [not]: either '_prisma_integer_filter' #53 - │ │ │ │ ├─ variant_0: integer #42 - │ │ │ │ ├─ variant_1: struct #47 - │ │ │ │ │ └─ [equals]: integer #42 - │ │ │ │ ├─ variant_2: struct #48 - │ │ │ │ │ └─ [not]: integer #42 - │ │ │ │ ├─ variant_3: struct #49 - │ │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ variant_4: struct #50 - │ │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ variant_5: struct #51 - │ │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ │ └─ item: integer #42 - │ │ │ └─ [title]: optional 'optional_141' #142 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #82 - │ │ │ └─ item: union #79 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #77 - │ │ │ │ ├─ variant_0: string #61 - │ │ │ │ ├─ variant_1: struct #66 - │ │ │ │ │ └─ [equals]: string #61 - │ │ │ │ ├─ variant_2: struct #67 - │ │ │ │ │ └─ [not]: string #61 - │ │ │ │ ├─ variant_3: struct #68 - │ │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ ├─ variant_4: struct #69 - │ │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ ├─ variant_5: struct #73 - │ │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #74 - │ │ │ │ │ └─ [search]: string #61 - │ │ │ │ └─ variant_7: struct #75 - │ │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ │ └─ item: string #61 - │ │ │ └─ variant_1: struct #78 - │ │ │ └─ [not]: union '_prisma_string_filter' #77 - │ │ │ ├─ variant_0: string #61 - │ │ │ ├─ variant_1: struct #66 - │ │ │ │ └─ [equals]: string #61 - │ │ │ ├─ variant_2: struct #67 - │ │ │ │ └─ [not]: string #61 - │ │ │ ├─ variant_3: struct #68 - │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_4: struct #69 - │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_5: struct #73 - │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #74 - │ │ │ │ └─ [search]: string #61 - │ │ │ └─ variant_7: struct #75 - │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ └─ item: string #61 - │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ ├─ variant_1: struct #153 - │ │ │ └─ [some]: optional 'optional_151' #152 - │ │ │ └─ item: struct 'Post_where_excluding_User' #147 - │ │ │ ├─ [author]: optional 'optional_144' #145 - │ │ │ │ └─ item: &User_where #143 - │ │ │ ├─ [id]: optional 'optional_139' #140 - │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #58 - │ │ │ │ └─ item: union #55 - │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #53 - │ │ │ │ │ ├─ variant_0: integer #42 - │ │ │ │ │ ├─ variant_1: struct #47 - │ │ │ │ │ │ └─ [equals]: integer #42 - │ │ │ │ │ ├─ variant_2: struct #48 - │ │ │ │ │ │ └─ [not]: integer #42 - │ │ │ │ │ ├─ variant_3: struct #49 - │ │ │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ variant_4: struct #50 - │ │ │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ └─ variant_5: struct #51 - │ │ │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ variant_1: struct #54 - │ │ │ │ └─ [not]: either '_prisma_integer_filter' #53 - │ │ │ │ ├─ variant_0: integer #42 - │ │ │ │ ├─ variant_1: struct #47 - │ │ │ │ │ └─ [equals]: integer #42 - │ │ │ │ ├─ variant_2: struct #48 - │ │ │ │ │ └─ [not]: integer #42 - │ │ │ │ ├─ variant_3: struct #49 - │ │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ variant_4: struct #50 - │ │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ variant_5: struct #51 - │ │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ │ └─ item: integer #42 - │ │ │ └─ [title]: optional 'optional_141' #142 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #82 - │ │ │ └─ item: union #79 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #77 - │ │ │ │ ├─ variant_0: string #61 - │ │ │ │ ├─ variant_1: struct #66 - │ │ │ │ │ └─ [equals]: string #61 - │ │ │ │ ├─ variant_2: struct #67 - │ │ │ │ │ └─ [not]: string #61 - │ │ │ │ ├─ variant_3: struct #68 - │ │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ ├─ variant_4: struct #69 - │ │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ ├─ variant_5: struct #73 - │ │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #74 - │ │ │ │ │ └─ [search]: string #61 - │ │ │ │ └─ variant_7: struct #75 - │ │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ │ └─ item: string #61 - │ │ │ └─ variant_1: struct #78 - │ │ │ └─ [not]: union '_prisma_string_filter' #77 - │ │ │ ├─ variant_0: string #61 - │ │ │ ├─ variant_1: struct #66 - │ │ │ │ └─ [equals]: string #61 - │ │ │ ├─ variant_2: struct #67 - │ │ │ │ └─ [not]: string #61 - │ │ │ ├─ variant_3: struct #68 - │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_4: struct #69 - │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_5: struct #73 - │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #74 - │ │ │ │ └─ [search]: string #61 - │ │ │ └─ variant_7: struct #75 - │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ └─ item: string #61 - │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ └─ variant_2: struct #156 - │ │ └─ [none]: optional 'optional_154' #155 - │ │ └─ item: struct 'Post_where_excluding_User' #147 - │ │ ├─ [author]: optional 'optional_144' #145 - │ │ │ └─ item: &User_where #143 - │ │ ├─ [id]: optional 'optional_139' #140 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #58 - │ │ │ └─ item: union #55 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #53 - │ │ │ │ ├─ variant_0: integer #42 - │ │ │ │ ├─ variant_1: struct #47 - │ │ │ │ │ └─ [equals]: integer #42 - │ │ │ │ ├─ variant_2: struct #48 - │ │ │ │ │ └─ [not]: integer #42 - │ │ │ │ ├─ variant_3: struct #49 - │ │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ variant_4: struct #50 - │ │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ variant_5: struct #51 - │ │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_1: struct #54 - │ │ │ └─ [not]: either '_prisma_integer_filter' #53 - │ │ │ ├─ variant_0: integer #42 - │ │ │ ├─ variant_1: struct #47 - │ │ │ │ └─ [equals]: integer #42 - │ │ │ ├─ variant_2: struct #48 - │ │ │ │ └─ [not]: integer #42 - │ │ │ ├─ variant_3: struct #49 - │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ └─ item: integer #42 - │ │ │ ├─ variant_4: struct #50 - │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_5: struct #51 - │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ └─ item: integer #42 - │ │ └─ [title]: optional 'optional_141' #142 - │ │ └─ item: optional '_prisma_string_filter_ex' #82 - │ │ └─ item: union #79 - │ │ ├─ variant_0: union '_prisma_string_filter' #77 - │ │ │ ├─ variant_0: string #61 - │ │ │ ├─ variant_1: struct #66 - │ │ │ │ └─ [equals]: string #61 - │ │ │ ├─ variant_2: struct #67 - │ │ │ │ └─ [not]: string #61 - │ │ │ ├─ variant_3: struct #68 - │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_4: struct #69 - │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_5: struct #73 - │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #74 - │ │ │ │ └─ [search]: string #61 - │ │ │ └─ variant_7: struct #75 - │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ └─ item: string #61 - │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ └─ variant_1: struct #78 - │ │ └─ [not]: union '_prisma_string_filter' #77 - │ │ ├─ variant_0: string #61 - │ │ ├─ variant_1: struct #66 - │ │ │ └─ [equals]: string #61 - │ │ ├─ variant_2: struct #67 - │ │ │ └─ [not]: string #61 - │ │ ├─ variant_3: struct #68 - │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ └─ item: string #61 - │ │ ├─ variant_4: struct #69 - │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ └─ item: string #61 - │ │ ├─ variant_5: struct #73 - │ │ │ ├─ [contains]: string #61 - │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #74 - │ │ │ └─ [search]: string #61 - │ │ └─ variant_7: struct #75 - │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ └─ item: string #61 - │ └─ variant_2: struct #165 - │ └─ [connectOrCreate]: struct #162 - │ ├─ [create]: struct 'User_create_input_excluding_rel_Post_User' #134 - │ │ ├─ [id]: integer #21 - │ │ └─ [name]: string #22 - │ └─ [where]: struct 'User_where' #161 - │ ├─ [id]: optional 'optional_135' #136 - │ │ └─ item: optional '_prisma_integer_filter_ex' #58 - │ │ └─ item: union #55 - │ │ ├─ variant_0: either '_prisma_integer_filter' #53 - │ │ │ ├─ variant_0: integer #42 - │ │ │ ├─ variant_1: struct #47 - │ │ │ │ └─ [equals]: integer #42 - │ │ │ ├─ variant_2: struct #48 - │ │ │ │ └─ [not]: integer #42 - │ │ │ ├─ variant_3: struct #49 - │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ └─ item: integer #42 - │ │ │ ├─ variant_4: struct #50 - │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_5: struct #51 - │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ └─ item: integer #42 - │ │ └─ variant_1: struct #54 - │ │ └─ [not]: either '_prisma_integer_filter' #53 - │ │ ├─ variant_0: integer #42 - │ │ ├─ variant_1: struct #47 - │ │ │ └─ [equals]: integer #42 - │ │ ├─ variant_2: struct #48 - │ │ │ └─ [not]: integer #42 - │ │ ├─ variant_3: struct #49 - │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ └─ item: integer #42 - │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ └─ item: integer #42 - │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ └─ item: integer #42 - │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ └─ item: integer #42 - │ │ ├─ variant_4: struct #50 - │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ └─ item: integer #42 - │ │ └─ variant_5: struct #51 - │ │ └─ [notIn]: list 'list_45' #46 - │ │ └─ item: integer #42 - │ ├─ [name]: optional 'optional_137' #138 - │ │ └─ item: optional '_prisma_string_filter_ex' #82 - │ │ └─ item: union #79 - │ │ ├─ variant_0: union '_prisma_string_filter' #77 - │ │ │ ├─ variant_0: string #61 - │ │ │ ├─ variant_1: struct #66 - │ │ │ │ └─ [equals]: string #61 - │ │ │ ├─ variant_2: struct #67 - │ │ │ │ └─ [not]: string #61 - │ │ │ ├─ variant_3: struct #68 - │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_4: struct #69 - │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_5: struct #73 - │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #74 - │ │ │ │ └─ [search]: string #61 - │ │ │ └─ variant_7: struct #75 - │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ └─ item: string #61 - │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ └─ variant_1: struct #78 - │ │ └─ [not]: union '_prisma_string_filter' #77 - │ │ ├─ variant_0: string #61 - │ │ ├─ variant_1: struct #66 - │ │ │ └─ [equals]: string #61 - │ │ ├─ variant_2: struct #67 - │ │ │ └─ [not]: string #61 - │ │ ├─ variant_3: struct #68 - │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ └─ item: string #61 - │ │ ├─ variant_4: struct #69 - │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ └─ item: string #61 - │ │ ├─ variant_5: struct #73 - │ │ │ ├─ [contains]: string #61 - │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #74 - │ │ │ └─ [search]: string #61 - │ │ └─ variant_7: struct #75 - │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ └─ item: string #61 - │ └─ [posts]: optional 'optional_158' #159 - │ └─ item: union #157 - │ ├─ variant_0: struct #150 - │ │ └─ [every]: optional 'optional_148' #149 - │ │ └─ item: struct 'Post_where_excluding_User' #147 - │ │ ├─ [author]: optional 'optional_144' #145 - │ │ │ └─ item: &User_where #143 - │ │ ├─ [id]: optional 'optional_139' #140 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #58 - │ │ │ └─ item: union #55 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #53 - │ │ │ │ ├─ variant_0: integer #42 - │ │ │ │ ├─ variant_1: struct #47 - │ │ │ │ │ └─ [equals]: integer #42 - │ │ │ │ ├─ variant_2: struct #48 - │ │ │ │ │ └─ [not]: integer #42 - │ │ │ │ ├─ variant_3: struct #49 - │ │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ variant_4: struct #50 - │ │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ variant_5: struct #51 - │ │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_1: struct #54 - │ │ │ └─ [not]: either '_prisma_integer_filter' #53 - │ │ │ ├─ variant_0: integer #42 - │ │ │ ├─ variant_1: struct #47 - │ │ │ │ └─ [equals]: integer #42 - │ │ │ ├─ variant_2: struct #48 - │ │ │ │ └─ [not]: integer #42 - │ │ │ ├─ variant_3: struct #49 - │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ └─ item: integer #42 - │ │ │ ├─ variant_4: struct #50 - │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_5: struct #51 - │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ └─ item: integer #42 - │ │ └─ [title]: optional 'optional_141' #142 - │ │ └─ item: optional '_prisma_string_filter_ex' #82 - │ │ └─ item: union #79 - │ │ ├─ variant_0: union '_prisma_string_filter' #77 - │ │ │ ├─ variant_0: string #61 - │ │ │ ├─ variant_1: struct #66 - │ │ │ │ └─ [equals]: string #61 - │ │ │ ├─ variant_2: struct #67 - │ │ │ │ └─ [not]: string #61 - │ │ │ ├─ variant_3: struct #68 - │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_4: struct #69 - │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_5: struct #73 - │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #74 - │ │ │ │ └─ [search]: string #61 - │ │ │ └─ variant_7: struct #75 - │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ └─ item: string #61 - │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ └─ variant_1: struct #78 - │ │ └─ [not]: union '_prisma_string_filter' #77 - │ │ ├─ variant_0: string #61 - │ │ ├─ variant_1: struct #66 - │ │ │ └─ [equals]: string #61 - │ │ ├─ variant_2: struct #67 - │ │ │ └─ [not]: string #61 - │ │ ├─ variant_3: struct #68 - │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ └─ item: string #61 - │ │ ├─ variant_4: struct #69 - │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ └─ item: string #61 - │ │ ├─ variant_5: struct #73 - │ │ │ ├─ [contains]: string #61 - │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #74 - │ │ │ └─ [search]: string #61 - │ │ └─ variant_7: struct #75 - │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ └─ item: string #61 - │ ├─ variant_1: struct #153 - │ │ └─ [some]: optional 'optional_151' #152 - │ │ └─ item: struct 'Post_where_excluding_User' #147 - │ │ ├─ [author]: optional 'optional_144' #145 - │ │ │ └─ item: &User_where #143 - │ │ ├─ [id]: optional 'optional_139' #140 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #58 - │ │ │ └─ item: union #55 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #53 - │ │ │ │ ├─ variant_0: integer #42 - │ │ │ │ ├─ variant_1: struct #47 - │ │ │ │ │ └─ [equals]: integer #42 - │ │ │ │ ├─ variant_2: struct #48 - │ │ │ │ │ └─ [not]: integer #42 - │ │ │ │ ├─ variant_3: struct #49 - │ │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ variant_4: struct #50 - │ │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ variant_5: struct #51 - │ │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_1: struct #54 - │ │ │ └─ [not]: either '_prisma_integer_filter' #53 - │ │ │ ├─ variant_0: integer #42 - │ │ │ ├─ variant_1: struct #47 - │ │ │ │ └─ [equals]: integer #42 - │ │ │ ├─ variant_2: struct #48 - │ │ │ │ └─ [not]: integer #42 - │ │ │ ├─ variant_3: struct #49 - │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ └─ item: integer #42 - │ │ │ ├─ variant_4: struct #50 - │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_5: struct #51 - │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ └─ item: integer #42 - │ │ └─ [title]: optional 'optional_141' #142 - │ │ └─ item: optional '_prisma_string_filter_ex' #82 - │ │ └─ item: union #79 - │ │ ├─ variant_0: union '_prisma_string_filter' #77 - │ │ │ ├─ variant_0: string #61 - │ │ │ ├─ variant_1: struct #66 - │ │ │ │ └─ [equals]: string #61 - │ │ │ ├─ variant_2: struct #67 - │ │ │ │ └─ [not]: string #61 - │ │ │ ├─ variant_3: struct #68 - │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_4: struct #69 - │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_5: struct #73 - │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #74 - │ │ │ │ └─ [search]: string #61 - │ │ │ └─ variant_7: struct #75 - │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ └─ item: string #61 - │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ └─ variant_1: struct #78 - │ │ └─ [not]: union '_prisma_string_filter' #77 - │ │ ├─ variant_0: string #61 - │ │ ├─ variant_1: struct #66 - │ │ │ └─ [equals]: string #61 - │ │ ├─ variant_2: struct #67 - │ │ │ └─ [not]: string #61 - │ │ ├─ variant_3: struct #68 - │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ └─ item: string #61 - │ │ ├─ variant_4: struct #69 - │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ └─ item: string #61 - │ │ ├─ variant_5: struct #73 - │ │ │ ├─ [contains]: string #61 - │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #74 - │ │ │ └─ [search]: string #61 - │ │ └─ variant_7: struct #75 - │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ └─ item: string #61 - │ └─ variant_2: struct #156 - │ └─ [none]: optional 'optional_154' #155 - │ └─ item: struct 'Post_where_excluding_User' #147 - │ ├─ [author]: optional 'optional_144' #145 - │ │ └─ item: &User_where #143 - │ ├─ [id]: optional 'optional_139' #140 - │ │ └─ item: optional '_prisma_integer_filter_ex' #58 - │ │ └─ item: union #55 - │ │ ├─ variant_0: either '_prisma_integer_filter' #53 - │ │ │ ├─ variant_0: integer #42 - │ │ │ ├─ variant_1: struct #47 - │ │ │ │ └─ [equals]: integer #42 - │ │ │ ├─ variant_2: struct #48 - │ │ │ │ └─ [not]: integer #42 - │ │ │ ├─ variant_3: struct #49 - │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ └─ item: integer #42 - │ │ │ ├─ variant_4: struct #50 - │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_5: struct #51 - │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ └─ item: integer #42 - │ │ └─ variant_1: struct #54 - │ │ └─ [not]: either '_prisma_integer_filter' #53 - │ │ ├─ variant_0: integer #42 - │ │ ├─ variant_1: struct #47 - │ │ │ └─ [equals]: integer #42 - │ │ ├─ variant_2: struct #48 - │ │ │ └─ [not]: integer #42 - │ │ ├─ variant_3: struct #49 - │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ └─ item: integer #42 - │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ └─ item: integer #42 - │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ └─ item: integer #42 - │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ └─ item: integer #42 - │ │ ├─ variant_4: struct #50 - │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ └─ item: integer #42 - │ │ └─ variant_5: struct #51 - │ │ └─ [notIn]: list 'list_45' #46 - │ │ └─ item: integer #42 - │ └─ [title]: optional 'optional_141' #142 - │ └─ item: optional '_prisma_string_filter_ex' #82 - │ └─ item: union #79 - │ ├─ variant_0: union '_prisma_string_filter' #77 - │ │ ├─ variant_0: string #61 - │ │ ├─ variant_1: struct #66 - │ │ │ └─ [equals]: string #61 - │ │ ├─ variant_2: struct #67 - │ │ │ └─ [not]: string #61 - │ │ ├─ variant_3: struct #68 - │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ └─ item: string #61 - │ │ ├─ variant_4: struct #69 - │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ └─ item: string #61 - │ │ ├─ variant_5: struct #73 - │ │ │ ├─ [contains]: string #61 - │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #74 - │ │ │ └─ [search]: string #61 - │ │ └─ variant_7: struct #75 - │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ └─ item: string #61 - │ └─ variant_1: struct #78 - │ └─ [not]: union '_prisma_string_filter' #77 - │ ├─ variant_0: string #61 - │ ├─ variant_1: struct #66 - │ │ └─ [equals]: string #61 - │ ├─ variant_2: struct #67 - │ │ └─ [not]: string #61 - │ ├─ variant_3: struct #68 - │ │ └─ [in]: list 'list_64' #65 - │ │ └─ item: string #61 - │ ├─ variant_4: struct #69 - │ │ └─ [notIn]: list 'list_64' #65 - │ │ └─ item: string #61 - │ ├─ variant_5: struct #73 - │ │ ├─ [contains]: string #61 - │ │ └─ [mode]: optional 'optional_71' #72 - │ │ └─ item: string #70 enum{ '"insensitive"' } - │ ├─ variant_6: struct #74 - │ │ └─ [search]: string #61 - │ └─ variant_7: struct #75 - │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ └─ item: string #61 - │ └─ [startsWith]: optional 'optional_62' #63 - │ └─ item: string #61 - ├─ [id]: optional 'optional_131' #132 - │ └─ item: integer #30 - └─ [title]: string #31 +root: struct #146 +└─ [data]: list #145 + └─ item: struct 'Post_create_input' #144 + ├─ [author]: union #142 + │ ├─ variant_0: struct #139 + │ │ └─ [create]: struct 'User_create_input_excluding_rel_Post_User' #117 + │ │ ├─ [id]: integer #19 + │ │ └─ [name]: string #20 + │ ├─ variant_1: struct #140 + │ │ └─ [connect]: struct 'User_where' #137 + │ │ ├─ [id]: optional #119 + │ │ │ └─ item: &_prisma_integer_filter_ex #40 + │ │ ├─ [name]: optional #120 + │ │ │ └─ item: &_prisma_string_filter_ex #57 + │ │ └─ [posts]: optional #135 + │ │ └─ item: union #134 + │ │ ├─ variant_0: struct #129 + │ │ │ └─ [every]: optional #128 + │ │ │ └─ item: struct 'Post_where_excluding_User' #127 + │ │ │ ├─ [author]: optional #125 + │ │ │ │ └─ item: &User_where #124 + │ │ │ ├─ [id]: optional #122 + │ │ │ │ └─ item: &_prisma_integer_filter_ex #40 + │ │ │ └─ [title]: optional #123 + │ │ │ └─ item: &_prisma_string_filter_ex #57 + │ │ ├─ variant_1: struct #131 + │ │ │ └─ [some]: optional #130 + │ │ │ └─ item: struct 'Post_where_excluding_User' #127 + │ │ │ ├─ [author]: optional #125 + │ │ │ │ └─ item: &User_where #124 + │ │ │ ├─ [id]: optional #122 + │ │ │ │ └─ item: &_prisma_integer_filter_ex #40 + │ │ │ └─ [title]: optional #123 + │ │ │ └─ item: &_prisma_string_filter_ex #57 + │ │ └─ variant_2: struct #133 + │ │ └─ [none]: optional #132 + │ │ └─ item: struct 'Post_where_excluding_User' #127 + │ │ ├─ [author]: optional #125 + │ │ │ └─ item: &User_where #124 + │ │ ├─ [id]: optional #122 + │ │ │ └─ item: &_prisma_integer_filter_ex #40 + │ │ └─ [title]: optional #123 + │ │ └─ item: &_prisma_string_filter_ex #57 + │ └─ variant_2: struct #141 + │ └─ [connectOrCreate]: struct #138 + │ ├─ [create]: struct 'User_create_input_excluding_rel_Post_User' #117 + │ │ ├─ [id]: integer #19 + │ │ └─ [name]: string #20 + │ └─ [where]: struct 'User_where' #137 + │ ├─ [id]: optional #119 + │ │ └─ item: &_prisma_integer_filter_ex #40 + │ ├─ [name]: optional #120 + │ │ └─ item: &_prisma_string_filter_ex #57 + │ └─ [posts]: optional #135 + │ └─ item: union #134 + │ ├─ variant_0: struct #129 + │ │ └─ [every]: optional #128 + │ │ └─ item: struct 'Post_where_excluding_User' #127 + │ │ ├─ [author]: optional #125 + │ │ │ └─ item: &User_where #124 + │ │ ├─ [id]: optional #122 + │ │ │ └─ item: &_prisma_integer_filter_ex #40 + │ │ └─ [title]: optional #123 + │ │ └─ item: &_prisma_string_filter_ex #57 + │ ├─ variant_1: struct #131 + │ │ └─ [some]: optional #130 + │ │ └─ item: struct 'Post_where_excluding_User' #127 + │ │ ├─ [author]: optional #125 + │ │ │ └─ item: &User_where #124 + │ │ ├─ [id]: optional #122 + │ │ │ └─ item: &_prisma_integer_filter_ex #40 + │ │ └─ [title]: optional #123 + │ │ └─ item: &_prisma_string_filter_ex #57 + │ └─ variant_2: struct #133 + │ └─ [none]: optional #132 + │ └─ item: struct 'Post_where_excluding_User' #127 + │ ├─ [author]: optional #125 + │ │ └─ item: &User_where #124 + │ ├─ [id]: optional #122 + │ │ └─ item: &_prisma_integer_filter_ex #40 + │ └─ [title]: optional #123 + │ └─ item: &_prisma_string_filter_ex #57 + ├─ [id]: optional #114 + │ └─ item: integer #27 + └─ [title]: string #28 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many Post out.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many Post out.snap index 7314cc7fd7..d829dc3704 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many Post out.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many Post out.snap @@ -2,5 +2,5 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(out) --- -root: struct #173 -└─ [count]: integer #172 +root: struct #148 +└─ [count]: integer #147 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many Record inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many Record inp.snap index 3fad08512c..c2383c4ce4 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many Record inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many Record inp.snap @@ -2,12 +2,12 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct #17 -└─ [data]: list 'list_15' #16 - └─ item: struct 'Record_create_input' #14 - ├─ [age]: optional 'optional_7' #8 +root: struct #15 +└─ [data]: list #14 + └─ item: struct 'Record_create_input' #13 + ├─ [age]: optional #7 │ └─ item: integer #6 ├─ [created_at]: string #1 - ├─ [id]: optional 'optional_11' #12 + ├─ [id]: optional #11 │ └─ item: string #4 └─ [name]: string #5 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many Record out.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many Record out.snap index c535c1535d..7aa0a68def 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many Record out.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many Record out.snap @@ -2,5 +2,5 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(out) --- -root: struct #19 -└─ [count]: integer #18 +root: struct #17 +└─ [count]: integer #16 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many User inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many User inp.snap index 5de325b502..84d5648ab4 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many User inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many User inp.snap @@ -2,876 +2,508 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct #128 -└─ [data]: list 'list_126' #127 - └─ item: struct 'User_create_input' #125 - ├─ [id]: integer #21 - ├─ [name]: string #22 - └─ [posts]: optional 'optional_122' #123 - └─ item: union #121 - ├─ variant_0: struct #112 - │ └─ [create]: union #41 - │ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #38 - │ │ ├─ [id]: optional 'optional_35' #36 - │ │ │ └─ item: integer #30 - │ │ └─ [title]: string #31 - │ └─ variant_1: list 'list_39' #40 - │ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #38 - │ ├─ [id]: optional 'optional_35' #36 - │ │ └─ item: integer #30 - │ └─ [title]: string #31 - ├─ variant_1: struct #113 - │ └─ [connect]: union #110 - │ ├─ variant_0: struct 'Post_where' #107 - │ │ ├─ [author]: optional 'optional_104' #105 - │ │ │ └─ item: struct 'User_where_excluding_Post' #103 - │ │ │ ├─ [id]: optional 'optional_85' #86 - │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #58 - │ │ │ │ └─ item: union #55 - │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #53 - │ │ │ │ │ ├─ variant_0: integer #42 - │ │ │ │ │ ├─ variant_1: struct #47 - │ │ │ │ │ │ └─ [equals]: integer #42 - │ │ │ │ │ ├─ variant_2: struct #48 - │ │ │ │ │ │ └─ [not]: integer #42 - │ │ │ │ │ ├─ variant_3: struct #49 - │ │ │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ variant_4: struct #50 - │ │ │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ └─ variant_5: struct #51 - │ │ │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ variant_1: struct #54 - │ │ │ │ └─ [not]: either '_prisma_integer_filter' #53 - │ │ │ │ ├─ variant_0: integer #42 - │ │ │ │ ├─ variant_1: struct #47 - │ │ │ │ │ └─ [equals]: integer #42 - │ │ │ │ ├─ variant_2: struct #48 - │ │ │ │ │ └─ [not]: integer #42 - │ │ │ │ ├─ variant_3: struct #49 - │ │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ variant_4: struct #50 - │ │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ variant_5: struct #51 - │ │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ │ └─ item: integer #42 - │ │ │ ├─ [name]: optional 'optional_87' #88 - │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #82 - │ │ │ │ └─ item: union #79 - │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #77 - │ │ │ │ │ ├─ variant_0: string #61 - │ │ │ │ │ ├─ variant_1: struct #66 - │ │ │ │ │ │ └─ [equals]: string #61 - │ │ │ │ │ ├─ variant_2: struct #67 - │ │ │ │ │ │ └─ [not]: string #61 - │ │ │ │ │ ├─ variant_3: struct #68 - │ │ │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ │ │ └─ item: string #61 - │ │ │ │ │ ├─ variant_4: struct #69 - │ │ │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ │ │ └─ item: string #61 - │ │ │ │ │ ├─ variant_5: struct #73 - │ │ │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ │ │ ├─ variant_6: struct #74 - │ │ │ │ │ │ └─ [search]: string #61 - │ │ │ │ │ └─ variant_7: struct #75 - │ │ │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ │ │ └─ item: string #61 - │ │ │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ └─ variant_1: struct #78 - │ │ │ │ └─ [not]: union '_prisma_string_filter' #77 - │ │ │ │ ├─ variant_0: string #61 - │ │ │ │ ├─ variant_1: struct #66 - │ │ │ │ │ └─ [equals]: string #61 - │ │ │ │ ├─ variant_2: struct #67 - │ │ │ │ │ └─ [not]: string #61 - │ │ │ │ ├─ variant_3: struct #68 - │ │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ ├─ variant_4: struct #69 - │ │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ ├─ variant_5: struct #73 - │ │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #74 - │ │ │ │ │ └─ [search]: string #61 - │ │ │ │ └─ variant_7: struct #75 - │ │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ │ └─ item: string #61 - │ │ │ └─ [posts]: optional 'optional_100' #101 - │ │ │ └─ item: union #99 - │ │ │ ├─ variant_0: struct #92 - │ │ │ │ └─ [every]: optional 'optional_90' #91 - │ │ │ │ └─ item: &Post_where #89 - │ │ │ ├─ variant_1: struct #95 - │ │ │ │ └─ [some]: optional 'optional_93' #94 - │ │ │ │ └─ item: &Post_where #89 - │ │ │ └─ variant_2: struct #98 - │ │ │ └─ [none]: optional 'optional_96' #97 - │ │ │ └─ item: &Post_where #89 - │ │ ├─ [id]: optional 'optional_59' #60 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #58 - │ │ │ └─ item: union #55 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #53 +root: struct #110 +└─ [data]: list #109 + └─ item: struct 'User_create_input' #108 + ├─ [id]: integer #19 + ├─ [name]: string #20 + └─ [posts]: optional #106 + └─ item: union #105 + ├─ variant_0: struct #98 + │ └─ [create]: union #38 + │ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #36 + │ │ ├─ [id]: optional #34 + │ │ │ └─ item: integer #27 + │ │ └─ [title]: string #28 + │ └─ variant_1: list #37 + │ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #36 + │ ├─ [id]: optional #34 + │ │ └─ item: integer #27 + │ └─ [title]: string #28 + ├─ variant_1: struct #99 + │ └─ [connect]: union #96 + │ ├─ variant_0: struct 'Post_where' #94 + │ │ ├─ [author]: optional #92 + │ │ │ └─ item: struct 'User_where_excluding_Post' #91 + │ │ │ ├─ [id]: optional #79 + │ │ │ │ └─ item: &_prisma_integer_filter_ex #40 + │ │ │ ├─ [name]: optional #80 + │ │ │ │ └─ item: &_prisma_string_filter_ex #57 + │ │ │ └─ [posts]: optional #89 + │ │ │ └─ item: union #88 + │ │ │ ├─ variant_0: struct #83 + │ │ │ │ └─ [every]: optional #82 + │ │ │ │ └─ item: &Post_where #81 + │ │ │ ├─ variant_1: struct #85 + │ │ │ │ └─ [some]: optional #84 + │ │ │ │ └─ item: &Post_where #81 + │ │ │ └─ variant_2: struct #87 + │ │ │ └─ [none]: optional #86 + │ │ │ └─ item: &Post_where #81 + │ │ ├─ [id]: optional #56 + │ │ │ └─ item: optional '_prisma_integer_filter_ex' #55 + │ │ │ └─ item: union #53 + │ │ │ ├─ variant_0: either '_prisma_integer_filter' #51 │ │ │ │ ├─ variant_0: integer #42 - │ │ │ │ ├─ variant_1: struct #47 + │ │ │ │ ├─ variant_1: struct #45 │ │ │ │ │ └─ [equals]: integer #42 - │ │ │ │ ├─ variant_2: struct #48 + │ │ │ │ ├─ variant_2: struct #46 │ │ │ │ │ └─ [not]: integer #42 - │ │ │ │ ├─ variant_3: struct #49 - │ │ │ │ │ ├─ [gt]: optional 'optional_43' #44 + │ │ │ │ ├─ variant_3: struct #47 + │ │ │ │ │ ├─ [gt]: optional #43 │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [gte]: optional 'optional_43' #44 + │ │ │ │ │ ├─ [gte]: optional #43 │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [lt]: optional 'optional_43' #44 + │ │ │ │ │ ├─ [lt]: optional #43 │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ └─ [lte]: optional 'optional_43' #44 + │ │ │ │ │ └─ [lte]: optional #43 │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ variant_4: struct #50 - │ │ │ │ │ └─ [in]: list 'list_45' #46 + │ │ │ │ ├─ variant_4: struct #48 + │ │ │ │ │ └─ [in]: list #44 │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ variant_5: struct #51 - │ │ │ │ └─ [notIn]: list 'list_45' #46 + │ │ │ │ └─ variant_5: struct #49 + │ │ │ │ └─ [notIn]: list #44 │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_1: struct #54 - │ │ │ └─ [not]: either '_prisma_integer_filter' #53 + │ │ │ └─ variant_1: struct #52 + │ │ │ └─ [not]: either '_prisma_integer_filter' #51 │ │ │ ├─ variant_0: integer #42 - │ │ │ ├─ variant_1: struct #47 + │ │ │ ├─ variant_1: struct #45 │ │ │ │ └─ [equals]: integer #42 - │ │ │ ├─ variant_2: struct #48 + │ │ │ ├─ variant_2: struct #46 │ │ │ │ └─ [not]: integer #42 - │ │ │ ├─ variant_3: struct #49 - │ │ │ │ ├─ [gt]: optional 'optional_43' #44 + │ │ │ ├─ variant_3: struct #47 + │ │ │ │ ├─ [gt]: optional #43 │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [gte]: optional 'optional_43' #44 + │ │ │ │ ├─ [gte]: optional #43 │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [lt]: optional 'optional_43' #44 + │ │ │ │ ├─ [lt]: optional #43 │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ [lte]: optional 'optional_43' #44 + │ │ │ │ └─ [lte]: optional #43 │ │ │ │ └─ item: integer #42 - │ │ │ ├─ variant_4: struct #50 - │ │ │ │ └─ [in]: list 'list_45' #46 + │ │ │ ├─ variant_4: struct #48 + │ │ │ │ └─ [in]: list #44 │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_5: struct #51 - │ │ │ └─ [notIn]: list 'list_45' #46 + │ │ │ └─ variant_5: struct #49 + │ │ │ └─ [notIn]: list #44 │ │ │ └─ item: integer #42 - │ │ └─ [title]: optional 'optional_83' #84 - │ │ └─ item: optional '_prisma_string_filter_ex' #82 - │ │ └─ item: union #79 - │ │ ├─ variant_0: union '_prisma_string_filter' #77 - │ │ │ ├─ variant_0: string #61 - │ │ │ ├─ variant_1: struct #66 - │ │ │ │ └─ [equals]: string #61 - │ │ │ ├─ variant_2: struct #67 - │ │ │ │ └─ [not]: string #61 - │ │ │ ├─ variant_3: struct #68 - │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_4: struct #69 - │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_5: struct #73 - │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #74 - │ │ │ │ └─ [search]: string #61 - │ │ │ └─ variant_7: struct #75 - │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ └─ item: string #61 - │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ └─ variant_1: struct #78 - │ │ └─ [not]: union '_prisma_string_filter' #77 - │ │ ├─ variant_0: string #61 - │ │ ├─ variant_1: struct #66 - │ │ │ └─ [equals]: string #61 - │ │ ├─ variant_2: struct #67 - │ │ │ └─ [not]: string #61 - │ │ ├─ variant_3: struct #68 - │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ └─ item: string #61 - │ │ ├─ variant_4: struct #69 - │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ └─ item: string #61 - │ │ ├─ variant_5: struct #73 - │ │ │ ├─ [contains]: string #61 - │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #74 - │ │ │ └─ [search]: string #61 - │ │ └─ variant_7: struct #75 - │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ └─ item: string #61 - │ └─ variant_1: list 'list_108' #109 - │ └─ item: struct 'Post_where' #107 - │ ├─ [author]: optional 'optional_104' #105 - │ │ └─ item: struct 'User_where_excluding_Post' #103 - │ │ ├─ [id]: optional 'optional_85' #86 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #58 - │ │ │ └─ item: union #55 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #53 - │ │ │ │ ├─ variant_0: integer #42 - │ │ │ │ ├─ variant_1: struct #47 - │ │ │ │ │ └─ [equals]: integer #42 - │ │ │ │ ├─ variant_2: struct #48 - │ │ │ │ │ └─ [not]: integer #42 - │ │ │ │ ├─ variant_3: struct #49 - │ │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ variant_4: struct #50 - │ │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ variant_5: struct #51 - │ │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_1: struct #54 - │ │ │ └─ [not]: either '_prisma_integer_filter' #53 - │ │ │ ├─ variant_0: integer #42 - │ │ │ ├─ variant_1: struct #47 - │ │ │ │ └─ [equals]: integer #42 - │ │ │ ├─ variant_2: struct #48 - │ │ │ │ └─ [not]: integer #42 - │ │ │ ├─ variant_3: struct #49 - │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ └─ item: integer #42 - │ │ │ ├─ variant_4: struct #50 - │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_5: struct #51 - │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ └─ item: integer #42 - │ │ ├─ [name]: optional 'optional_87' #88 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #82 - │ │ │ └─ item: union #79 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #77 - │ │ │ │ ├─ variant_0: string #61 - │ │ │ │ ├─ variant_1: struct #66 - │ │ │ │ │ └─ [equals]: string #61 - │ │ │ │ ├─ variant_2: struct #67 - │ │ │ │ │ └─ [not]: string #61 - │ │ │ │ ├─ variant_3: struct #68 - │ │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ ├─ variant_4: struct #69 - │ │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ ├─ variant_5: struct #73 - │ │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #74 - │ │ │ │ │ └─ [search]: string #61 - │ │ │ │ └─ variant_7: struct #75 - │ │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ │ └─ item: string #61 - │ │ │ └─ variant_1: struct #78 - │ │ │ └─ [not]: union '_prisma_string_filter' #77 - │ │ │ ├─ variant_0: string #61 - │ │ │ ├─ variant_1: struct #66 - │ │ │ │ └─ [equals]: string #61 - │ │ │ ├─ variant_2: struct #67 - │ │ │ │ └─ [not]: string #61 - │ │ │ ├─ variant_3: struct #68 - │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_4: struct #69 - │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_5: struct #73 - │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #74 - │ │ │ │ └─ [search]: string #61 - │ │ │ └─ variant_7: struct #75 - │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ └─ item: string #61 - │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ └─ [posts]: optional 'optional_100' #101 - │ │ └─ item: union #99 - │ │ ├─ variant_0: struct #92 - │ │ │ └─ [every]: optional 'optional_90' #91 - │ │ │ └─ item: &Post_where #89 - │ │ ├─ variant_1: struct #95 - │ │ │ └─ [some]: optional 'optional_93' #94 - │ │ │ └─ item: &Post_where #89 - │ │ └─ variant_2: struct #98 - │ │ └─ [none]: optional 'optional_96' #97 - │ │ └─ item: &Post_where #89 - │ ├─ [id]: optional 'optional_59' #60 - │ │ └─ item: optional '_prisma_integer_filter_ex' #58 - │ │ └─ item: union #55 - │ │ ├─ variant_0: either '_prisma_integer_filter' #53 + │ │ └─ [title]: optional #77 + │ │ └─ item: optional '_prisma_string_filter_ex' #76 + │ │ └─ item: union #74 + │ │ ├─ variant_0: union '_prisma_string_filter' #72 + │ │ │ ├─ variant_0: string #59 + │ │ │ ├─ variant_1: struct #62 + │ │ │ │ └─ [equals]: string #59 + │ │ │ ├─ variant_2: struct #63 + │ │ │ │ └─ [not]: string #59 + │ │ │ ├─ variant_3: struct #64 + │ │ │ │ └─ [in]: list #61 + │ │ │ │ └─ item: string #59 + │ │ │ ├─ variant_4: struct #65 + │ │ │ │ └─ [notIn]: list #61 + │ │ │ │ └─ item: string #59 + │ │ │ ├─ variant_5: struct #68 + │ │ │ │ ├─ [contains]: string #59 + │ │ │ │ └─ [mode]: optional #67 + │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } + │ │ │ ├─ variant_6: struct #69 + │ │ │ │ └─ [search]: string #59 + │ │ │ └─ variant_7: struct #70 + │ │ │ ├─ [endsWith]: optional #60 + │ │ │ │ └─ item: string #59 + │ │ │ └─ [startsWith]: optional #60 + │ │ │ └─ item: string #59 + │ │ └─ variant_1: struct #73 + │ │ └─ [not]: union '_prisma_string_filter' #72 + │ │ ├─ variant_0: string #59 + │ │ ├─ variant_1: struct #62 + │ │ │ └─ [equals]: string #59 + │ │ ├─ variant_2: struct #63 + │ │ │ └─ [not]: string #59 + │ │ ├─ variant_3: struct #64 + │ │ │ └─ [in]: list #61 + │ │ │ └─ item: string #59 + │ │ ├─ variant_4: struct #65 + │ │ │ └─ [notIn]: list #61 + │ │ │ └─ item: string #59 + │ │ ├─ variant_5: struct #68 + │ │ │ ├─ [contains]: string #59 + │ │ │ └─ [mode]: optional #67 + │ │ │ └─ item: string #66 enum{ '"insensitive"' } + │ │ ├─ variant_6: struct #69 + │ │ │ └─ [search]: string #59 + │ │ └─ variant_7: struct #70 + │ │ ├─ [endsWith]: optional #60 + │ │ │ └─ item: string #59 + │ │ └─ [startsWith]: optional #60 + │ │ └─ item: string #59 + │ └─ variant_1: list #95 + │ └─ item: struct 'Post_where' #94 + │ ├─ [author]: optional #92 + │ │ └─ item: struct 'User_where_excluding_Post' #91 + │ │ ├─ [id]: optional #79 + │ │ │ └─ item: &_prisma_integer_filter_ex #40 + │ │ ├─ [name]: optional #80 + │ │ │ └─ item: &_prisma_string_filter_ex #57 + │ │ └─ [posts]: optional #89 + │ │ └─ item: union #88 + │ │ ├─ variant_0: struct #83 + │ │ │ └─ [every]: optional #82 + │ │ │ └─ item: &Post_where #81 + │ │ ├─ variant_1: struct #85 + │ │ │ └─ [some]: optional #84 + │ │ │ └─ item: &Post_where #81 + │ │ └─ variant_2: struct #87 + │ │ └─ [none]: optional #86 + │ │ └─ item: &Post_where #81 + │ ├─ [id]: optional #56 + │ │ └─ item: optional '_prisma_integer_filter_ex' #55 + │ │ └─ item: union #53 + │ │ ├─ variant_0: either '_prisma_integer_filter' #51 │ │ │ ├─ variant_0: integer #42 - │ │ │ ├─ variant_1: struct #47 + │ │ │ ├─ variant_1: struct #45 │ │ │ │ └─ [equals]: integer #42 - │ │ │ ├─ variant_2: struct #48 + │ │ │ ├─ variant_2: struct #46 │ │ │ │ └─ [not]: integer #42 - │ │ │ ├─ variant_3: struct #49 - │ │ │ │ ├─ [gt]: optional 'optional_43' #44 + │ │ │ ├─ variant_3: struct #47 + │ │ │ │ ├─ [gt]: optional #43 │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [gte]: optional 'optional_43' #44 + │ │ │ │ ├─ [gte]: optional #43 │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [lt]: optional 'optional_43' #44 + │ │ │ │ ├─ [lt]: optional #43 │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ [lte]: optional 'optional_43' #44 + │ │ │ │ └─ [lte]: optional #43 │ │ │ │ └─ item: integer #42 - │ │ │ ├─ variant_4: struct #50 - │ │ │ │ └─ [in]: list 'list_45' #46 + │ │ │ ├─ variant_4: struct #48 + │ │ │ │ └─ [in]: list #44 │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_5: struct #51 - │ │ │ └─ [notIn]: list 'list_45' #46 + │ │ │ └─ variant_5: struct #49 + │ │ │ └─ [notIn]: list #44 │ │ │ └─ item: integer #42 - │ │ └─ variant_1: struct #54 - │ │ └─ [not]: either '_prisma_integer_filter' #53 + │ │ └─ variant_1: struct #52 + │ │ └─ [not]: either '_prisma_integer_filter' #51 │ │ ├─ variant_0: integer #42 - │ │ ├─ variant_1: struct #47 + │ │ ├─ variant_1: struct #45 │ │ │ └─ [equals]: integer #42 - │ │ ├─ variant_2: struct #48 + │ │ ├─ variant_2: struct #46 │ │ │ └─ [not]: integer #42 - │ │ ├─ variant_3: struct #49 - │ │ │ ├─ [gt]: optional 'optional_43' #44 + │ │ ├─ variant_3: struct #47 + │ │ │ ├─ [gt]: optional #43 │ │ │ │ └─ item: integer #42 - │ │ │ ├─ [gte]: optional 'optional_43' #44 + │ │ │ ├─ [gte]: optional #43 │ │ │ │ └─ item: integer #42 - │ │ │ ├─ [lt]: optional 'optional_43' #44 + │ │ │ ├─ [lt]: optional #43 │ │ │ │ └─ item: integer #42 - │ │ │ └─ [lte]: optional 'optional_43' #44 + │ │ │ └─ [lte]: optional #43 │ │ │ └─ item: integer #42 - │ │ ├─ variant_4: struct #50 - │ │ │ └─ [in]: list 'list_45' #46 + │ │ ├─ variant_4: struct #48 + │ │ │ └─ [in]: list #44 │ │ │ └─ item: integer #42 - │ │ └─ variant_5: struct #51 - │ │ └─ [notIn]: list 'list_45' #46 + │ │ └─ variant_5: struct #49 + │ │ └─ [notIn]: list #44 │ │ └─ item: integer #42 - │ └─ [title]: optional 'optional_83' #84 - │ └─ item: optional '_prisma_string_filter_ex' #82 - │ └─ item: union #79 - │ ├─ variant_0: union '_prisma_string_filter' #77 - │ │ ├─ variant_0: string #61 - │ │ ├─ variant_1: struct #66 - │ │ │ └─ [equals]: string #61 - │ │ ├─ variant_2: struct #67 - │ │ │ └─ [not]: string #61 - │ │ ├─ variant_3: struct #68 - │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ └─ item: string #61 - │ │ ├─ variant_4: struct #69 - │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ └─ item: string #61 - │ │ ├─ variant_5: struct #73 - │ │ │ ├─ [contains]: string #61 - │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #74 - │ │ │ └─ [search]: string #61 - │ │ └─ variant_7: struct #75 - │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ └─ item: string #61 - │ └─ variant_1: struct #78 - │ └─ [not]: union '_prisma_string_filter' #77 - │ ├─ variant_0: string #61 - │ ├─ variant_1: struct #66 - │ │ └─ [equals]: string #61 - │ ├─ variant_2: struct #67 - │ │ └─ [not]: string #61 - │ ├─ variant_3: struct #68 - │ │ └─ [in]: list 'list_64' #65 - │ │ └─ item: string #61 - │ ├─ variant_4: struct #69 - │ │ └─ [notIn]: list 'list_64' #65 - │ │ └─ item: string #61 - │ ├─ variant_5: struct #73 - │ │ ├─ [contains]: string #61 - │ │ └─ [mode]: optional 'optional_71' #72 - │ │ └─ item: string #70 enum{ '"insensitive"' } - │ ├─ variant_6: struct #74 - │ │ └─ [search]: string #61 - │ └─ variant_7: struct #75 - │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ └─ item: string #61 - │ └─ [startsWith]: optional 'optional_62' #63 - │ └─ item: string #61 - ├─ variant_2: struct #114 - │ └─ [connectOrCreate]: struct #111 - │ ├─ [create]: union #41 - │ │ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #38 - │ │ │ ├─ [id]: optional 'optional_35' #36 - │ │ │ │ └─ item: integer #30 - │ │ │ └─ [title]: string #31 - │ │ └─ variant_1: list 'list_39' #40 - │ │ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #38 - │ │ ├─ [id]: optional 'optional_35' #36 - │ │ │ └─ item: integer #30 - │ │ └─ [title]: string #31 - │ └─ [where]: union #110 - │ ├─ variant_0: struct 'Post_where' #107 - │ │ ├─ [author]: optional 'optional_104' #105 - │ │ │ └─ item: struct 'User_where_excluding_Post' #103 - │ │ │ ├─ [id]: optional 'optional_85' #86 - │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #58 - │ │ │ │ └─ item: union #55 - │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #53 - │ │ │ │ │ ├─ variant_0: integer #42 - │ │ │ │ │ ├─ variant_1: struct #47 - │ │ │ │ │ │ └─ [equals]: integer #42 - │ │ │ │ │ ├─ variant_2: struct #48 - │ │ │ │ │ │ └─ [not]: integer #42 - │ │ │ │ │ ├─ variant_3: struct #49 - │ │ │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ variant_4: struct #50 - │ │ │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ └─ variant_5: struct #51 - │ │ │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ variant_1: struct #54 - │ │ │ │ └─ [not]: either '_prisma_integer_filter' #53 - │ │ │ │ ├─ variant_0: integer #42 - │ │ │ │ ├─ variant_1: struct #47 - │ │ │ │ │ └─ [equals]: integer #42 - │ │ │ │ ├─ variant_2: struct #48 - │ │ │ │ │ └─ [not]: integer #42 - │ │ │ │ ├─ variant_3: struct #49 - │ │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ variant_4: struct #50 - │ │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ variant_5: struct #51 - │ │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ │ └─ item: integer #42 - │ │ │ ├─ [name]: optional 'optional_87' #88 - │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #82 - │ │ │ │ └─ item: union #79 - │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #77 - │ │ │ │ │ ├─ variant_0: string #61 - │ │ │ │ │ ├─ variant_1: struct #66 - │ │ │ │ │ │ └─ [equals]: string #61 - │ │ │ │ │ ├─ variant_2: struct #67 - │ │ │ │ │ │ └─ [not]: string #61 - │ │ │ │ │ ├─ variant_3: struct #68 - │ │ │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ │ │ └─ item: string #61 - │ │ │ │ │ ├─ variant_4: struct #69 - │ │ │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ │ │ └─ item: string #61 - │ │ │ │ │ ├─ variant_5: struct #73 - │ │ │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ │ │ ├─ variant_6: struct #74 - │ │ │ │ │ │ └─ [search]: string #61 - │ │ │ │ │ └─ variant_7: struct #75 - │ │ │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ │ │ └─ item: string #61 - │ │ │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ └─ variant_1: struct #78 - │ │ │ │ └─ [not]: union '_prisma_string_filter' #77 - │ │ │ │ ├─ variant_0: string #61 - │ │ │ │ ├─ variant_1: struct #66 - │ │ │ │ │ └─ [equals]: string #61 - │ │ │ │ ├─ variant_2: struct #67 - │ │ │ │ │ └─ [not]: string #61 - │ │ │ │ ├─ variant_3: struct #68 - │ │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ ├─ variant_4: struct #69 - │ │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ ├─ variant_5: struct #73 - │ │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #74 - │ │ │ │ │ └─ [search]: string #61 - │ │ │ │ └─ variant_7: struct #75 - │ │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ │ └─ item: string #61 - │ │ │ └─ [posts]: optional 'optional_100' #101 - │ │ │ └─ item: union #99 - │ │ │ ├─ variant_0: struct #92 - │ │ │ │ └─ [every]: optional 'optional_90' #91 - │ │ │ │ └─ item: &Post_where #89 - │ │ │ ├─ variant_1: struct #95 - │ │ │ │ └─ [some]: optional 'optional_93' #94 - │ │ │ │ └─ item: &Post_where #89 - │ │ │ └─ variant_2: struct #98 - │ │ │ └─ [none]: optional 'optional_96' #97 - │ │ │ └─ item: &Post_where #89 - │ │ ├─ [id]: optional 'optional_59' #60 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #58 - │ │ │ └─ item: union #55 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #53 + │ └─ [title]: optional #77 + │ └─ item: optional '_prisma_string_filter_ex' #76 + │ └─ item: union #74 + │ ├─ variant_0: union '_prisma_string_filter' #72 + │ │ ├─ variant_0: string #59 + │ │ ├─ variant_1: struct #62 + │ │ │ └─ [equals]: string #59 + │ │ ├─ variant_2: struct #63 + │ │ │ └─ [not]: string #59 + │ │ ├─ variant_3: struct #64 + │ │ │ └─ [in]: list #61 + │ │ │ └─ item: string #59 + │ │ ├─ variant_4: struct #65 + │ │ │ └─ [notIn]: list #61 + │ │ │ └─ item: string #59 + │ │ ├─ variant_5: struct #68 + │ │ │ ├─ [contains]: string #59 + │ │ │ └─ [mode]: optional #67 + │ │ │ └─ item: string #66 enum{ '"insensitive"' } + │ │ ├─ variant_6: struct #69 + │ │ │ └─ [search]: string #59 + │ │ └─ variant_7: struct #70 + │ │ ├─ [endsWith]: optional #60 + │ │ │ └─ item: string #59 + │ │ └─ [startsWith]: optional #60 + │ │ └─ item: string #59 + │ └─ variant_1: struct #73 + │ └─ [not]: union '_prisma_string_filter' #72 + │ ├─ variant_0: string #59 + │ ├─ variant_1: struct #62 + │ │ └─ [equals]: string #59 + │ ├─ variant_2: struct #63 + │ │ └─ [not]: string #59 + │ ├─ variant_3: struct #64 + │ │ └─ [in]: list #61 + │ │ └─ item: string #59 + │ ├─ variant_4: struct #65 + │ │ └─ [notIn]: list #61 + │ │ └─ item: string #59 + │ ├─ variant_5: struct #68 + │ │ ├─ [contains]: string #59 + │ │ └─ [mode]: optional #67 + │ │ └─ item: string #66 enum{ '"insensitive"' } + │ ├─ variant_6: struct #69 + │ │ └─ [search]: string #59 + │ └─ variant_7: struct #70 + │ ├─ [endsWith]: optional #60 + │ │ └─ item: string #59 + │ └─ [startsWith]: optional #60 + │ └─ item: string #59 + ├─ variant_2: struct #100 + │ └─ [connectOrCreate]: struct #97 + │ ├─ [create]: union #38 + │ │ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #36 + │ │ │ ├─ [id]: optional #34 + │ │ │ │ └─ item: integer #27 + │ │ │ └─ [title]: string #28 + │ │ └─ variant_1: list #37 + │ │ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #36 + │ │ ├─ [id]: optional #34 + │ │ │ └─ item: integer #27 + │ │ └─ [title]: string #28 + │ └─ [where]: union #96 + │ ├─ variant_0: struct 'Post_where' #94 + │ │ ├─ [author]: optional #92 + │ │ │ └─ item: struct 'User_where_excluding_Post' #91 + │ │ │ ├─ [id]: optional #79 + │ │ │ │ └─ item: &_prisma_integer_filter_ex #40 + │ │ │ ├─ [name]: optional #80 + │ │ │ │ └─ item: &_prisma_string_filter_ex #57 + │ │ │ └─ [posts]: optional #89 + │ │ │ └─ item: union #88 + │ │ │ ├─ variant_0: struct #83 + │ │ │ │ └─ [every]: optional #82 + │ │ │ │ └─ item: &Post_where #81 + │ │ │ ├─ variant_1: struct #85 + │ │ │ │ └─ [some]: optional #84 + │ │ │ │ └─ item: &Post_where #81 + │ │ │ └─ variant_2: struct #87 + │ │ │ └─ [none]: optional #86 + │ │ │ └─ item: &Post_where #81 + │ │ ├─ [id]: optional #56 + │ │ │ └─ item: optional '_prisma_integer_filter_ex' #55 + │ │ │ └─ item: union #53 + │ │ │ ├─ variant_0: either '_prisma_integer_filter' #51 │ │ │ │ ├─ variant_0: integer #42 - │ │ │ │ ├─ variant_1: struct #47 + │ │ │ │ ├─ variant_1: struct #45 │ │ │ │ │ └─ [equals]: integer #42 - │ │ │ │ ├─ variant_2: struct #48 + │ │ │ │ ├─ variant_2: struct #46 │ │ │ │ │ └─ [not]: integer #42 - │ │ │ │ ├─ variant_3: struct #49 - │ │ │ │ │ ├─ [gt]: optional 'optional_43' #44 + │ │ │ │ ├─ variant_3: struct #47 + │ │ │ │ │ ├─ [gt]: optional #43 │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [gte]: optional 'optional_43' #44 + │ │ │ │ │ ├─ [gte]: optional #43 │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [lt]: optional 'optional_43' #44 + │ │ │ │ │ ├─ [lt]: optional #43 │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ └─ [lte]: optional 'optional_43' #44 + │ │ │ │ │ └─ [lte]: optional #43 │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ variant_4: struct #50 - │ │ │ │ │ └─ [in]: list 'list_45' #46 + │ │ │ │ ├─ variant_4: struct #48 + │ │ │ │ │ └─ [in]: list #44 │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ variant_5: struct #51 - │ │ │ │ └─ [notIn]: list 'list_45' #46 + │ │ │ │ └─ variant_5: struct #49 + │ │ │ │ └─ [notIn]: list #44 │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_1: struct #54 - │ │ │ └─ [not]: either '_prisma_integer_filter' #53 + │ │ │ └─ variant_1: struct #52 + │ │ │ └─ [not]: either '_prisma_integer_filter' #51 │ │ │ ├─ variant_0: integer #42 - │ │ │ ├─ variant_1: struct #47 + │ │ │ ├─ variant_1: struct #45 │ │ │ │ └─ [equals]: integer #42 - │ │ │ ├─ variant_2: struct #48 + │ │ │ ├─ variant_2: struct #46 │ │ │ │ └─ [not]: integer #42 - │ │ │ ├─ variant_3: struct #49 - │ │ │ │ ├─ [gt]: optional 'optional_43' #44 + │ │ │ ├─ variant_3: struct #47 + │ │ │ │ ├─ [gt]: optional #43 │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [gte]: optional 'optional_43' #44 + │ │ │ │ ├─ [gte]: optional #43 │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [lt]: optional 'optional_43' #44 + │ │ │ │ ├─ [lt]: optional #43 │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ [lte]: optional 'optional_43' #44 + │ │ │ │ └─ [lte]: optional #43 │ │ │ │ └─ item: integer #42 - │ │ │ ├─ variant_4: struct #50 - │ │ │ │ └─ [in]: list 'list_45' #46 + │ │ │ ├─ variant_4: struct #48 + │ │ │ │ └─ [in]: list #44 │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_5: struct #51 - │ │ │ └─ [notIn]: list 'list_45' #46 + │ │ │ └─ variant_5: struct #49 + │ │ │ └─ [notIn]: list #44 │ │ │ └─ item: integer #42 - │ │ └─ [title]: optional 'optional_83' #84 - │ │ └─ item: optional '_prisma_string_filter_ex' #82 - │ │ └─ item: union #79 - │ │ ├─ variant_0: union '_prisma_string_filter' #77 - │ │ │ ├─ variant_0: string #61 - │ │ │ ├─ variant_1: struct #66 - │ │ │ │ └─ [equals]: string #61 - │ │ │ ├─ variant_2: struct #67 - │ │ │ │ └─ [not]: string #61 - │ │ │ ├─ variant_3: struct #68 - │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_4: struct #69 - │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_5: struct #73 - │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #74 - │ │ │ │ └─ [search]: string #61 - │ │ │ └─ variant_7: struct #75 - │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ └─ item: string #61 - │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ └─ variant_1: struct #78 - │ │ └─ [not]: union '_prisma_string_filter' #77 - │ │ ├─ variant_0: string #61 - │ │ ├─ variant_1: struct #66 - │ │ │ └─ [equals]: string #61 - │ │ ├─ variant_2: struct #67 - │ │ │ └─ [not]: string #61 - │ │ ├─ variant_3: struct #68 - │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ └─ item: string #61 - │ │ ├─ variant_4: struct #69 - │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ └─ item: string #61 - │ │ ├─ variant_5: struct #73 - │ │ │ ├─ [contains]: string #61 - │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #74 - │ │ │ └─ [search]: string #61 - │ │ └─ variant_7: struct #75 - │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ └─ item: string #61 - │ └─ variant_1: list 'list_108' #109 - │ └─ item: struct 'Post_where' #107 - │ ├─ [author]: optional 'optional_104' #105 - │ │ └─ item: struct 'User_where_excluding_Post' #103 - │ │ ├─ [id]: optional 'optional_85' #86 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #58 - │ │ │ └─ item: union #55 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #53 - │ │ │ │ ├─ variant_0: integer #42 - │ │ │ │ ├─ variant_1: struct #47 - │ │ │ │ │ └─ [equals]: integer #42 - │ │ │ │ ├─ variant_2: struct #48 - │ │ │ │ │ └─ [not]: integer #42 - │ │ │ │ ├─ variant_3: struct #49 - │ │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ │ └─ item: integer #42 - │ │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ variant_4: struct #50 - │ │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ variant_5: struct #51 - │ │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_1: struct #54 - │ │ │ └─ [not]: either '_prisma_integer_filter' #53 - │ │ │ ├─ variant_0: integer #42 - │ │ │ ├─ variant_1: struct #47 - │ │ │ │ └─ [equals]: integer #42 - │ │ │ ├─ variant_2: struct #48 - │ │ │ │ └─ [not]: integer #42 - │ │ │ ├─ variant_3: struct #49 - │ │ │ │ ├─ [gt]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [gte]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [lt]: optional 'optional_43' #44 - │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ [lte]: optional 'optional_43' #44 - │ │ │ │ └─ item: integer #42 - │ │ │ ├─ variant_4: struct #50 - │ │ │ │ └─ [in]: list 'list_45' #46 - │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_5: struct #51 - │ │ │ └─ [notIn]: list 'list_45' #46 - │ │ │ └─ item: integer #42 - │ │ ├─ [name]: optional 'optional_87' #88 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #82 - │ │ │ └─ item: union #79 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #77 - │ │ │ │ ├─ variant_0: string #61 - │ │ │ │ ├─ variant_1: struct #66 - │ │ │ │ │ └─ [equals]: string #61 - │ │ │ │ ├─ variant_2: struct #67 - │ │ │ │ │ └─ [not]: string #61 - │ │ │ │ ├─ variant_3: struct #68 - │ │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ ├─ variant_4: struct #69 - │ │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ ├─ variant_5: struct #73 - │ │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #74 - │ │ │ │ │ └─ [search]: string #61 - │ │ │ │ └─ variant_7: struct #75 - │ │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ │ └─ item: string #61 - │ │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ │ └─ item: string #61 - │ │ │ └─ variant_1: struct #78 - │ │ │ └─ [not]: union '_prisma_string_filter' #77 - │ │ │ ├─ variant_0: string #61 - │ │ │ ├─ variant_1: struct #66 - │ │ │ │ └─ [equals]: string #61 - │ │ │ ├─ variant_2: struct #67 - │ │ │ │ └─ [not]: string #61 - │ │ │ ├─ variant_3: struct #68 - │ │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_4: struct #69 - │ │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ │ └─ item: string #61 - │ │ │ ├─ variant_5: struct #73 - │ │ │ │ ├─ [contains]: string #61 - │ │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #74 - │ │ │ │ └─ [search]: string #61 - │ │ │ └─ variant_7: struct #75 - │ │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ │ └─ item: string #61 - │ │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ └─ [posts]: optional 'optional_100' #101 - │ │ └─ item: union #99 - │ │ ├─ variant_0: struct #92 - │ │ │ └─ [every]: optional 'optional_90' #91 - │ │ │ └─ item: &Post_where #89 - │ │ ├─ variant_1: struct #95 - │ │ │ └─ [some]: optional 'optional_93' #94 - │ │ │ └─ item: &Post_where #89 - │ │ └─ variant_2: struct #98 - │ │ └─ [none]: optional 'optional_96' #97 - │ │ └─ item: &Post_where #89 - │ ├─ [id]: optional 'optional_59' #60 - │ │ └─ item: optional '_prisma_integer_filter_ex' #58 - │ │ └─ item: union #55 - │ │ ├─ variant_0: either '_prisma_integer_filter' #53 + │ │ └─ [title]: optional #77 + │ │ └─ item: optional '_prisma_string_filter_ex' #76 + │ │ └─ item: union #74 + │ │ ├─ variant_0: union '_prisma_string_filter' #72 + │ │ │ ├─ variant_0: string #59 + │ │ │ ├─ variant_1: struct #62 + │ │ │ │ └─ [equals]: string #59 + │ │ │ ├─ variant_2: struct #63 + │ │ │ │ └─ [not]: string #59 + │ │ │ ├─ variant_3: struct #64 + │ │ │ │ └─ [in]: list #61 + │ │ │ │ └─ item: string #59 + │ │ │ ├─ variant_4: struct #65 + │ │ │ │ └─ [notIn]: list #61 + │ │ │ │ └─ item: string #59 + │ │ │ ├─ variant_5: struct #68 + │ │ │ │ ├─ [contains]: string #59 + │ │ │ │ └─ [mode]: optional #67 + │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } + │ │ │ ├─ variant_6: struct #69 + │ │ │ │ └─ [search]: string #59 + │ │ │ └─ variant_7: struct #70 + │ │ │ ├─ [endsWith]: optional #60 + │ │ │ │ └─ item: string #59 + │ │ │ └─ [startsWith]: optional #60 + │ │ │ └─ item: string #59 + │ │ └─ variant_1: struct #73 + │ │ └─ [not]: union '_prisma_string_filter' #72 + │ │ ├─ variant_0: string #59 + │ │ ├─ variant_1: struct #62 + │ │ │ └─ [equals]: string #59 + │ │ ├─ variant_2: struct #63 + │ │ │ └─ [not]: string #59 + │ │ ├─ variant_3: struct #64 + │ │ │ └─ [in]: list #61 + │ │ │ └─ item: string #59 + │ │ ├─ variant_4: struct #65 + │ │ │ └─ [notIn]: list #61 + │ │ │ └─ item: string #59 + │ │ ├─ variant_5: struct #68 + │ │ │ ├─ [contains]: string #59 + │ │ │ └─ [mode]: optional #67 + │ │ │ └─ item: string #66 enum{ '"insensitive"' } + │ │ ├─ variant_6: struct #69 + │ │ │ └─ [search]: string #59 + │ │ └─ variant_7: struct #70 + │ │ ├─ [endsWith]: optional #60 + │ │ │ └─ item: string #59 + │ │ └─ [startsWith]: optional #60 + │ │ └─ item: string #59 + │ └─ variant_1: list #95 + │ └─ item: struct 'Post_where' #94 + │ ├─ [author]: optional #92 + │ │ └─ item: struct 'User_where_excluding_Post' #91 + │ │ ├─ [id]: optional #79 + │ │ │ └─ item: &_prisma_integer_filter_ex #40 + │ │ ├─ [name]: optional #80 + │ │ │ └─ item: &_prisma_string_filter_ex #57 + │ │ └─ [posts]: optional #89 + │ │ └─ item: union #88 + │ │ ├─ variant_0: struct #83 + │ │ │ └─ [every]: optional #82 + │ │ │ └─ item: &Post_where #81 + │ │ ├─ variant_1: struct #85 + │ │ │ └─ [some]: optional #84 + │ │ │ └─ item: &Post_where #81 + │ │ └─ variant_2: struct #87 + │ │ └─ [none]: optional #86 + │ │ └─ item: &Post_where #81 + │ ├─ [id]: optional #56 + │ │ └─ item: optional '_prisma_integer_filter_ex' #55 + │ │ └─ item: union #53 + │ │ ├─ variant_0: either '_prisma_integer_filter' #51 │ │ │ ├─ variant_0: integer #42 - │ │ │ ├─ variant_1: struct #47 + │ │ │ ├─ variant_1: struct #45 │ │ │ │ └─ [equals]: integer #42 - │ │ │ ├─ variant_2: struct #48 + │ │ │ ├─ variant_2: struct #46 │ │ │ │ └─ [not]: integer #42 - │ │ │ ├─ variant_3: struct #49 - │ │ │ │ ├─ [gt]: optional 'optional_43' #44 + │ │ │ ├─ variant_3: struct #47 + │ │ │ │ ├─ [gt]: optional #43 │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [gte]: optional 'optional_43' #44 + │ │ │ │ ├─ [gte]: optional #43 │ │ │ │ │ └─ item: integer #42 - │ │ │ │ ├─ [lt]: optional 'optional_43' #44 + │ │ │ │ ├─ [lt]: optional #43 │ │ │ │ │ └─ item: integer #42 - │ │ │ │ └─ [lte]: optional 'optional_43' #44 + │ │ │ │ └─ [lte]: optional #43 │ │ │ │ └─ item: integer #42 - │ │ │ ├─ variant_4: struct #50 - │ │ │ │ └─ [in]: list 'list_45' #46 + │ │ │ ├─ variant_4: struct #48 + │ │ │ │ └─ [in]: list #44 │ │ │ │ └─ item: integer #42 - │ │ │ └─ variant_5: struct #51 - │ │ │ └─ [notIn]: list 'list_45' #46 + │ │ │ └─ variant_5: struct #49 + │ │ │ └─ [notIn]: list #44 │ │ │ └─ item: integer #42 - │ │ └─ variant_1: struct #54 - │ │ └─ [not]: either '_prisma_integer_filter' #53 + │ │ └─ variant_1: struct #52 + │ │ └─ [not]: either '_prisma_integer_filter' #51 │ │ ├─ variant_0: integer #42 - │ │ ├─ variant_1: struct #47 + │ │ ├─ variant_1: struct #45 │ │ │ └─ [equals]: integer #42 - │ │ ├─ variant_2: struct #48 + │ │ ├─ variant_2: struct #46 │ │ │ └─ [not]: integer #42 - │ │ ├─ variant_3: struct #49 - │ │ │ ├─ [gt]: optional 'optional_43' #44 + │ │ ├─ variant_3: struct #47 + │ │ │ ├─ [gt]: optional #43 │ │ │ │ └─ item: integer #42 - │ │ │ ├─ [gte]: optional 'optional_43' #44 + │ │ │ ├─ [gte]: optional #43 │ │ │ │ └─ item: integer #42 - │ │ │ ├─ [lt]: optional 'optional_43' #44 + │ │ │ ├─ [lt]: optional #43 │ │ │ │ └─ item: integer #42 - │ │ │ └─ [lte]: optional 'optional_43' #44 + │ │ │ └─ [lte]: optional #43 │ │ │ └─ item: integer #42 - │ │ ├─ variant_4: struct #50 - │ │ │ └─ [in]: list 'list_45' #46 + │ │ ├─ variant_4: struct #48 + │ │ │ └─ [in]: list #44 │ │ │ └─ item: integer #42 - │ │ └─ variant_5: struct #51 - │ │ └─ [notIn]: list 'list_45' #46 + │ │ └─ variant_5: struct #49 + │ │ └─ [notIn]: list #44 │ │ └─ item: integer #42 - │ └─ [title]: optional 'optional_83' #84 - │ └─ item: optional '_prisma_string_filter_ex' #82 - │ └─ item: union #79 - │ ├─ variant_0: union '_prisma_string_filter' #77 - │ │ ├─ variant_0: string #61 - │ │ ├─ variant_1: struct #66 - │ │ │ └─ [equals]: string #61 - │ │ ├─ variant_2: struct #67 - │ │ │ └─ [not]: string #61 - │ │ ├─ variant_3: struct #68 - │ │ │ └─ [in]: list 'list_64' #65 - │ │ │ └─ item: string #61 - │ │ ├─ variant_4: struct #69 - │ │ │ └─ [notIn]: list 'list_64' #65 - │ │ │ └─ item: string #61 - │ │ ├─ variant_5: struct #73 - │ │ │ ├─ [contains]: string #61 - │ │ │ └─ [mode]: optional 'optional_71' #72 - │ │ │ └─ item: string #70 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #74 - │ │ │ └─ [search]: string #61 - │ │ └─ variant_7: struct #75 - │ │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ │ └─ item: string #61 - │ │ └─ [startsWith]: optional 'optional_62' #63 - │ │ └─ item: string #61 - │ └─ variant_1: struct #78 - │ └─ [not]: union '_prisma_string_filter' #77 - │ ├─ variant_0: string #61 - │ ├─ variant_1: struct #66 - │ │ └─ [equals]: string #61 - │ ├─ variant_2: struct #67 - │ │ └─ [not]: string #61 - │ ├─ variant_3: struct #68 - │ │ └─ [in]: list 'list_64' #65 - │ │ └─ item: string #61 - │ ├─ variant_4: struct #69 - │ │ └─ [notIn]: list 'list_64' #65 - │ │ └─ item: string #61 - │ ├─ variant_5: struct #73 - │ │ ├─ [contains]: string #61 - │ │ └─ [mode]: optional 'optional_71' #72 - │ │ └─ item: string #70 enum{ '"insensitive"' } - │ ├─ variant_6: struct #74 - │ │ └─ [search]: string #61 - │ └─ variant_7: struct #75 - │ ├─ [endsWith]: optional 'optional_62' #63 - │ │ └─ item: string #61 - │ └─ [startsWith]: optional 'optional_62' #63 - │ └─ item: string #61 - └─ variant_3: struct #120 - └─ [createMany]: optional 'optional_118' #119 - └─ item: struct #117 - └─ [data]: list 'list_115' #116 - └─ item: union #41 - ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #38 - │ ├─ [id]: optional 'optional_35' #36 - │ │ └─ item: integer #30 - │ └─ [title]: string #31 - └─ variant_1: list 'list_39' #40 - └─ item: struct 'Post_create_input_excluding_rel_Post_User' #38 - ├─ [id]: optional 'optional_35' #36 - │ └─ item: integer #30 - └─ [title]: string #31 + │ └─ [title]: optional #77 + │ └─ item: optional '_prisma_string_filter_ex' #76 + │ └─ item: union #74 + │ ├─ variant_0: union '_prisma_string_filter' #72 + │ │ ├─ variant_0: string #59 + │ │ ├─ variant_1: struct #62 + │ │ │ └─ [equals]: string #59 + │ │ ├─ variant_2: struct #63 + │ │ │ └─ [not]: string #59 + │ │ ├─ variant_3: struct #64 + │ │ │ └─ [in]: list #61 + │ │ │ └─ item: string #59 + │ │ ├─ variant_4: struct #65 + │ │ │ └─ [notIn]: list #61 + │ │ │ └─ item: string #59 + │ │ ├─ variant_5: struct #68 + │ │ │ ├─ [contains]: string #59 + │ │ │ └─ [mode]: optional #67 + │ │ │ └─ item: string #66 enum{ '"insensitive"' } + │ │ ├─ variant_6: struct #69 + │ │ │ └─ [search]: string #59 + │ │ └─ variant_7: struct #70 + │ │ ├─ [endsWith]: optional #60 + │ │ │ └─ item: string #59 + │ │ └─ [startsWith]: optional #60 + │ │ └─ item: string #59 + │ └─ variant_1: struct #73 + │ └─ [not]: union '_prisma_string_filter' #72 + │ ├─ variant_0: string #59 + │ ├─ variant_1: struct #62 + │ │ └─ [equals]: string #59 + │ ├─ variant_2: struct #63 + │ │ └─ [not]: string #59 + │ ├─ variant_3: struct #64 + │ │ └─ [in]: list #61 + │ │ └─ item: string #59 + │ ├─ variant_4: struct #65 + │ │ └─ [notIn]: list #61 + │ │ └─ item: string #59 + │ ├─ variant_5: struct #68 + │ │ ├─ [contains]: string #59 + │ │ └─ [mode]: optional #67 + │ │ └─ item: string #66 enum{ '"insensitive"' } + │ ├─ variant_6: struct #69 + │ │ └─ [search]: string #59 + │ └─ variant_7: struct #70 + │ ├─ [endsWith]: optional #60 + │ │ └─ item: string #59 + │ └─ [startsWith]: optional #60 + │ └─ item: string #59 + └─ variant_3: struct #104 + └─ [createMany]: optional #103 + └─ item: struct #102 + └─ [data]: list #101 + └─ item: union #38 + ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #36 + │ ├─ [id]: optional #34 + │ │ └─ item: integer #27 + │ └─ [title]: string #28 + └─ variant_1: list #37 + └─ item: struct 'Post_create_input_excluding_rel_Post_User' #36 + ├─ [id]: optional #34 + │ └─ item: integer #27 + └─ [title]: string #28 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many User out.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many User out.snap index f285e4972e..883fd8b7b2 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many User out.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_many User out.snap @@ -2,5 +2,5 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(out) --- -root: struct #130 -└─ [count]: integer #129 +root: struct #112 +└─ [count]: integer #111 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_one Post inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_one Post inp.snap index 00e0da51bf..0e6433fee8 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_one Post inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_one Post inp.snap @@ -2,823 +2,87 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct #161 -└─ [data]: struct 'Post_create_input' #160 - ├─ [author]: union #158 - │ ├─ variant_0: struct #155 - │ │ └─ [create]: struct 'User_create_input_excluding_rel_Post_User' #126 - │ │ ├─ [id]: integer #17 - │ │ └─ [name]: string #18 - │ ├─ variant_1: struct #156 - │ │ └─ [connect]: struct 'User_where' #153 - │ │ ├─ [id]: optional 'optional_127' #128 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #54 - │ │ │ └─ item: union #51 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #49 - │ │ │ │ ├─ variant_0: integer #38 - │ │ │ │ ├─ variant_1: struct #43 - │ │ │ │ │ └─ [equals]: integer #38 - │ │ │ │ ├─ variant_2: struct #44 - │ │ │ │ │ └─ [not]: integer #38 - │ │ │ │ ├─ variant_3: struct #45 - │ │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ variant_4: struct #46 - │ │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ variant_5: struct #47 - │ │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_1: struct #50 - │ │ │ └─ [not]: either '_prisma_integer_filter' #49 - │ │ │ ├─ variant_0: integer #38 - │ │ │ ├─ variant_1: struct #43 - │ │ │ │ └─ [equals]: integer #38 - │ │ │ ├─ variant_2: struct #44 - │ │ │ │ └─ [not]: integer #38 - │ │ │ ├─ variant_3: struct #45 - │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ variant_4: struct #46 - │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_5: struct #47 - │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ └─ item: integer #38 - │ │ ├─ [name]: optional 'optional_129' #130 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #78 - │ │ │ └─ item: union #75 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #73 - │ │ │ │ ├─ variant_0: string #57 - │ │ │ │ ├─ variant_1: struct #62 - │ │ │ │ │ └─ [equals]: string #57 - │ │ │ │ ├─ variant_2: struct #63 - │ │ │ │ │ └─ [not]: string #57 - │ │ │ │ ├─ variant_3: struct #64 - │ │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ ├─ variant_4: struct #65 - │ │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ ├─ variant_5: struct #69 - │ │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #70 - │ │ │ │ │ └─ [search]: string #57 - │ │ │ │ └─ variant_7: struct #71 - │ │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ │ └─ item: string #57 - │ │ │ └─ variant_1: struct #74 - │ │ │ └─ [not]: union '_prisma_string_filter' #73 - │ │ │ ├─ variant_0: string #57 - │ │ │ ├─ variant_1: struct #62 - │ │ │ │ └─ [equals]: string #57 - │ │ │ ├─ variant_2: struct #63 - │ │ │ │ └─ [not]: string #57 - │ │ │ ├─ variant_3: struct #64 - │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_4: struct #65 - │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_5: struct #69 - │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #70 - │ │ │ │ └─ [search]: string #57 - │ │ │ └─ variant_7: struct #71 - │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ └─ item: string #57 - │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ └─ [posts]: optional 'optional_150' #151 - │ │ └─ item: union #149 - │ │ ├─ variant_0: struct #142 - │ │ │ └─ [every]: optional 'optional_140' #141 - │ │ │ └─ item: struct 'Post_where_excluding_User' #139 - │ │ │ ├─ [author]: optional 'optional_136' #137 - │ │ │ │ └─ item: &User_where #135 - │ │ │ ├─ [id]: optional 'optional_131' #132 - │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #54 - │ │ │ │ └─ item: union #51 - │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #49 - │ │ │ │ │ ├─ variant_0: integer #38 - │ │ │ │ │ ├─ variant_1: struct #43 - │ │ │ │ │ │ └─ [equals]: integer #38 - │ │ │ │ │ ├─ variant_2: struct #44 - │ │ │ │ │ │ └─ [not]: integer #38 - │ │ │ │ │ ├─ variant_3: struct #45 - │ │ │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ variant_4: struct #46 - │ │ │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ └─ variant_5: struct #47 - │ │ │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ variant_1: struct #50 - │ │ │ │ └─ [not]: either '_prisma_integer_filter' #49 - │ │ │ │ ├─ variant_0: integer #38 - │ │ │ │ ├─ variant_1: struct #43 - │ │ │ │ │ └─ [equals]: integer #38 - │ │ │ │ ├─ variant_2: struct #44 - │ │ │ │ │ └─ [not]: integer #38 - │ │ │ │ ├─ variant_3: struct #45 - │ │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ variant_4: struct #46 - │ │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ variant_5: struct #47 - │ │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ [title]: optional 'optional_133' #134 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #78 - │ │ │ └─ item: union #75 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #73 - │ │ │ │ ├─ variant_0: string #57 - │ │ │ │ ├─ variant_1: struct #62 - │ │ │ │ │ └─ [equals]: string #57 - │ │ │ │ ├─ variant_2: struct #63 - │ │ │ │ │ └─ [not]: string #57 - │ │ │ │ ├─ variant_3: struct #64 - │ │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ ├─ variant_4: struct #65 - │ │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ ├─ variant_5: struct #69 - │ │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #70 - │ │ │ │ │ └─ [search]: string #57 - │ │ │ │ └─ variant_7: struct #71 - │ │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ │ └─ item: string #57 - │ │ │ └─ variant_1: struct #74 - │ │ │ └─ [not]: union '_prisma_string_filter' #73 - │ │ │ ├─ variant_0: string #57 - │ │ │ ├─ variant_1: struct #62 - │ │ │ │ └─ [equals]: string #57 - │ │ │ ├─ variant_2: struct #63 - │ │ │ │ └─ [not]: string #57 - │ │ │ ├─ variant_3: struct #64 - │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_4: struct #65 - │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_5: struct #69 - │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #70 - │ │ │ │ └─ [search]: string #57 - │ │ │ └─ variant_7: struct #71 - │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ └─ item: string #57 - │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ ├─ variant_1: struct #145 - │ │ │ └─ [some]: optional 'optional_143' #144 - │ │ │ └─ item: struct 'Post_where_excluding_User' #139 - │ │ │ ├─ [author]: optional 'optional_136' #137 - │ │ │ │ └─ item: &User_where #135 - │ │ │ ├─ [id]: optional 'optional_131' #132 - │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #54 - │ │ │ │ └─ item: union #51 - │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #49 - │ │ │ │ │ ├─ variant_0: integer #38 - │ │ │ │ │ ├─ variant_1: struct #43 - │ │ │ │ │ │ └─ [equals]: integer #38 - │ │ │ │ │ ├─ variant_2: struct #44 - │ │ │ │ │ │ └─ [not]: integer #38 - │ │ │ │ │ ├─ variant_3: struct #45 - │ │ │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ variant_4: struct #46 - │ │ │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ └─ variant_5: struct #47 - │ │ │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ variant_1: struct #50 - │ │ │ │ └─ [not]: either '_prisma_integer_filter' #49 - │ │ │ │ ├─ variant_0: integer #38 - │ │ │ │ ├─ variant_1: struct #43 - │ │ │ │ │ └─ [equals]: integer #38 - │ │ │ │ ├─ variant_2: struct #44 - │ │ │ │ │ └─ [not]: integer #38 - │ │ │ │ ├─ variant_3: struct #45 - │ │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ variant_4: struct #46 - │ │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ variant_5: struct #47 - │ │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ [title]: optional 'optional_133' #134 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #78 - │ │ │ └─ item: union #75 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #73 - │ │ │ │ ├─ variant_0: string #57 - │ │ │ │ ├─ variant_1: struct #62 - │ │ │ │ │ └─ [equals]: string #57 - │ │ │ │ ├─ variant_2: struct #63 - │ │ │ │ │ └─ [not]: string #57 - │ │ │ │ ├─ variant_3: struct #64 - │ │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ ├─ variant_4: struct #65 - │ │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ ├─ variant_5: struct #69 - │ │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #70 - │ │ │ │ │ └─ [search]: string #57 - │ │ │ │ └─ variant_7: struct #71 - │ │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ │ └─ item: string #57 - │ │ │ └─ variant_1: struct #74 - │ │ │ └─ [not]: union '_prisma_string_filter' #73 - │ │ │ ├─ variant_0: string #57 - │ │ │ ├─ variant_1: struct #62 - │ │ │ │ └─ [equals]: string #57 - │ │ │ ├─ variant_2: struct #63 - │ │ │ │ └─ [not]: string #57 - │ │ │ ├─ variant_3: struct #64 - │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_4: struct #65 - │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_5: struct #69 - │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #70 - │ │ │ │ └─ [search]: string #57 - │ │ │ └─ variant_7: struct #71 - │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ └─ item: string #57 - │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ └─ variant_2: struct #148 - │ │ └─ [none]: optional 'optional_146' #147 - │ │ └─ item: struct 'Post_where_excluding_User' #139 - │ │ ├─ [author]: optional 'optional_136' #137 - │ │ │ └─ item: &User_where #135 - │ │ ├─ [id]: optional 'optional_131' #132 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #54 - │ │ │ └─ item: union #51 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #49 - │ │ │ │ ├─ variant_0: integer #38 - │ │ │ │ ├─ variant_1: struct #43 - │ │ │ │ │ └─ [equals]: integer #38 - │ │ │ │ ├─ variant_2: struct #44 - │ │ │ │ │ └─ [not]: integer #38 - │ │ │ │ ├─ variant_3: struct #45 - │ │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ variant_4: struct #46 - │ │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ variant_5: struct #47 - │ │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_1: struct #50 - │ │ │ └─ [not]: either '_prisma_integer_filter' #49 - │ │ │ ├─ variant_0: integer #38 - │ │ │ ├─ variant_1: struct #43 - │ │ │ │ └─ [equals]: integer #38 - │ │ │ ├─ variant_2: struct #44 - │ │ │ │ └─ [not]: integer #38 - │ │ │ ├─ variant_3: struct #45 - │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ variant_4: struct #46 - │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_5: struct #47 - │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ └─ item: integer #38 - │ │ └─ [title]: optional 'optional_133' #134 - │ │ └─ item: optional '_prisma_string_filter_ex' #78 - │ │ └─ item: union #75 - │ │ ├─ variant_0: union '_prisma_string_filter' #73 - │ │ │ ├─ variant_0: string #57 - │ │ │ ├─ variant_1: struct #62 - │ │ │ │ └─ [equals]: string #57 - │ │ │ ├─ variant_2: struct #63 - │ │ │ │ └─ [not]: string #57 - │ │ │ ├─ variant_3: struct #64 - │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_4: struct #65 - │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_5: struct #69 - │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #70 - │ │ │ │ └─ [search]: string #57 - │ │ │ └─ variant_7: struct #71 - │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ └─ item: string #57 - │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ └─ variant_1: struct #74 - │ │ └─ [not]: union '_prisma_string_filter' #73 - │ │ ├─ variant_0: string #57 - │ │ ├─ variant_1: struct #62 - │ │ │ └─ [equals]: string #57 - │ │ ├─ variant_2: struct #63 - │ │ │ └─ [not]: string #57 - │ │ ├─ variant_3: struct #64 - │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ └─ item: string #57 - │ │ ├─ variant_4: struct #65 - │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ └─ item: string #57 - │ │ ├─ variant_5: struct #69 - │ │ │ ├─ [contains]: string #57 - │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #70 - │ │ │ └─ [search]: string #57 - │ │ └─ variant_7: struct #71 - │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ └─ item: string #57 - │ └─ variant_2: struct #157 - │ └─ [connectOrCreate]: struct #154 - │ ├─ [create]: struct 'User_create_input_excluding_rel_Post_User' #126 - │ │ ├─ [id]: integer #17 - │ │ └─ [name]: string #18 - │ └─ [where]: struct 'User_where' #153 - │ ├─ [id]: optional 'optional_127' #128 - │ │ └─ item: optional '_prisma_integer_filter_ex' #54 - │ │ └─ item: union #51 - │ │ ├─ variant_0: either '_prisma_integer_filter' #49 - │ │ │ ├─ variant_0: integer #38 - │ │ │ ├─ variant_1: struct #43 - │ │ │ │ └─ [equals]: integer #38 - │ │ │ ├─ variant_2: struct #44 - │ │ │ │ └─ [not]: integer #38 - │ │ │ ├─ variant_3: struct #45 - │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ variant_4: struct #46 - │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_5: struct #47 - │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ └─ item: integer #38 - │ │ └─ variant_1: struct #50 - │ │ └─ [not]: either '_prisma_integer_filter' #49 - │ │ ├─ variant_0: integer #38 - │ │ ├─ variant_1: struct #43 - │ │ │ └─ [equals]: integer #38 - │ │ ├─ variant_2: struct #44 - │ │ │ └─ [not]: integer #38 - │ │ ├─ variant_3: struct #45 - │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ └─ item: integer #38 - │ │ ├─ variant_4: struct #46 - │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ └─ item: integer #38 - │ │ └─ variant_5: struct #47 - │ │ └─ [notIn]: list 'list_41' #42 - │ │ └─ item: integer #38 - │ ├─ [name]: optional 'optional_129' #130 - │ │ └─ item: optional '_prisma_string_filter_ex' #78 - │ │ └─ item: union #75 - │ │ ├─ variant_0: union '_prisma_string_filter' #73 - │ │ │ ├─ variant_0: string #57 - │ │ │ ├─ variant_1: struct #62 - │ │ │ │ └─ [equals]: string #57 - │ │ │ ├─ variant_2: struct #63 - │ │ │ │ └─ [not]: string #57 - │ │ │ ├─ variant_3: struct #64 - │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_4: struct #65 - │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_5: struct #69 - │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #70 - │ │ │ │ └─ [search]: string #57 - │ │ │ └─ variant_7: struct #71 - │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ └─ item: string #57 - │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ └─ variant_1: struct #74 - │ │ └─ [not]: union '_prisma_string_filter' #73 - │ │ ├─ variant_0: string #57 - │ │ ├─ variant_1: struct #62 - │ │ │ └─ [equals]: string #57 - │ │ ├─ variant_2: struct #63 - │ │ │ └─ [not]: string #57 - │ │ ├─ variant_3: struct #64 - │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ └─ item: string #57 - │ │ ├─ variant_4: struct #65 - │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ └─ item: string #57 - │ │ ├─ variant_5: struct #69 - │ │ │ ├─ [contains]: string #57 - │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #70 - │ │ │ └─ [search]: string #57 - │ │ └─ variant_7: struct #71 - │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ └─ item: string #57 - │ └─ [posts]: optional 'optional_150' #151 - │ └─ item: union #149 - │ ├─ variant_0: struct #142 - │ │ └─ [every]: optional 'optional_140' #141 - │ │ └─ item: struct 'Post_where_excluding_User' #139 - │ │ ├─ [author]: optional 'optional_136' #137 - │ │ │ └─ item: &User_where #135 - │ │ ├─ [id]: optional 'optional_131' #132 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #54 - │ │ │ └─ item: union #51 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #49 - │ │ │ │ ├─ variant_0: integer #38 - │ │ │ │ ├─ variant_1: struct #43 - │ │ │ │ │ └─ [equals]: integer #38 - │ │ │ │ ├─ variant_2: struct #44 - │ │ │ │ │ └─ [not]: integer #38 - │ │ │ │ ├─ variant_3: struct #45 - │ │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ variant_4: struct #46 - │ │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ variant_5: struct #47 - │ │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_1: struct #50 - │ │ │ └─ [not]: either '_prisma_integer_filter' #49 - │ │ │ ├─ variant_0: integer #38 - │ │ │ ├─ variant_1: struct #43 - │ │ │ │ └─ [equals]: integer #38 - │ │ │ ├─ variant_2: struct #44 - │ │ │ │ └─ [not]: integer #38 - │ │ │ ├─ variant_3: struct #45 - │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ variant_4: struct #46 - │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_5: struct #47 - │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ └─ item: integer #38 - │ │ └─ [title]: optional 'optional_133' #134 - │ │ └─ item: optional '_prisma_string_filter_ex' #78 - │ │ └─ item: union #75 - │ │ ├─ variant_0: union '_prisma_string_filter' #73 - │ │ │ ├─ variant_0: string #57 - │ │ │ ├─ variant_1: struct #62 - │ │ │ │ └─ [equals]: string #57 - │ │ │ ├─ variant_2: struct #63 - │ │ │ │ └─ [not]: string #57 - │ │ │ ├─ variant_3: struct #64 - │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_4: struct #65 - │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_5: struct #69 - │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #70 - │ │ │ │ └─ [search]: string #57 - │ │ │ └─ variant_7: struct #71 - │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ └─ item: string #57 - │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ └─ variant_1: struct #74 - │ │ └─ [not]: union '_prisma_string_filter' #73 - │ │ ├─ variant_0: string #57 - │ │ ├─ variant_1: struct #62 - │ │ │ └─ [equals]: string #57 - │ │ ├─ variant_2: struct #63 - │ │ │ └─ [not]: string #57 - │ │ ├─ variant_3: struct #64 - │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ └─ item: string #57 - │ │ ├─ variant_4: struct #65 - │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ └─ item: string #57 - │ │ ├─ variant_5: struct #69 - │ │ │ ├─ [contains]: string #57 - │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #70 - │ │ │ └─ [search]: string #57 - │ │ └─ variant_7: struct #71 - │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ └─ item: string #57 - │ ├─ variant_1: struct #145 - │ │ └─ [some]: optional 'optional_143' #144 - │ │ └─ item: struct 'Post_where_excluding_User' #139 - │ │ ├─ [author]: optional 'optional_136' #137 - │ │ │ └─ item: &User_where #135 - │ │ ├─ [id]: optional 'optional_131' #132 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #54 - │ │ │ └─ item: union #51 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #49 - │ │ │ │ ├─ variant_0: integer #38 - │ │ │ │ ├─ variant_1: struct #43 - │ │ │ │ │ └─ [equals]: integer #38 - │ │ │ │ ├─ variant_2: struct #44 - │ │ │ │ │ └─ [not]: integer #38 - │ │ │ │ ├─ variant_3: struct #45 - │ │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ variant_4: struct #46 - │ │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ variant_5: struct #47 - │ │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_1: struct #50 - │ │ │ └─ [not]: either '_prisma_integer_filter' #49 - │ │ │ ├─ variant_0: integer #38 - │ │ │ ├─ variant_1: struct #43 - │ │ │ │ └─ [equals]: integer #38 - │ │ │ ├─ variant_2: struct #44 - │ │ │ │ └─ [not]: integer #38 - │ │ │ ├─ variant_3: struct #45 - │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ variant_4: struct #46 - │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_5: struct #47 - │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ └─ item: integer #38 - │ │ └─ [title]: optional 'optional_133' #134 - │ │ └─ item: optional '_prisma_string_filter_ex' #78 - │ │ └─ item: union #75 - │ │ ├─ variant_0: union '_prisma_string_filter' #73 - │ │ │ ├─ variant_0: string #57 - │ │ │ ├─ variant_1: struct #62 - │ │ │ │ └─ [equals]: string #57 - │ │ │ ├─ variant_2: struct #63 - │ │ │ │ └─ [not]: string #57 - │ │ │ ├─ variant_3: struct #64 - │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_4: struct #65 - │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_5: struct #69 - │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #70 - │ │ │ │ └─ [search]: string #57 - │ │ │ └─ variant_7: struct #71 - │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ └─ item: string #57 - │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ └─ variant_1: struct #74 - │ │ └─ [not]: union '_prisma_string_filter' #73 - │ │ ├─ variant_0: string #57 - │ │ ├─ variant_1: struct #62 - │ │ │ └─ [equals]: string #57 - │ │ ├─ variant_2: struct #63 - │ │ │ └─ [not]: string #57 - │ │ ├─ variant_3: struct #64 - │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ └─ item: string #57 - │ │ ├─ variant_4: struct #65 - │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ └─ item: string #57 - │ │ ├─ variant_5: struct #69 - │ │ │ ├─ [contains]: string #57 - │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #70 - │ │ │ └─ [search]: string #57 - │ │ └─ variant_7: struct #71 - │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ └─ item: string #57 - │ └─ variant_2: struct #148 - │ └─ [none]: optional 'optional_146' #147 - │ └─ item: struct 'Post_where_excluding_User' #139 - │ ├─ [author]: optional 'optional_136' #137 - │ │ └─ item: &User_where #135 - │ ├─ [id]: optional 'optional_131' #132 - │ │ └─ item: optional '_prisma_integer_filter_ex' #54 - │ │ └─ item: union #51 - │ │ ├─ variant_0: either '_prisma_integer_filter' #49 - │ │ │ ├─ variant_0: integer #38 - │ │ │ ├─ variant_1: struct #43 - │ │ │ │ └─ [equals]: integer #38 - │ │ │ ├─ variant_2: struct #44 - │ │ │ │ └─ [not]: integer #38 - │ │ │ ├─ variant_3: struct #45 - │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ variant_4: struct #46 - │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_5: struct #47 - │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ └─ item: integer #38 - │ │ └─ variant_1: struct #50 - │ │ └─ [not]: either '_prisma_integer_filter' #49 - │ │ ├─ variant_0: integer #38 - │ │ ├─ variant_1: struct #43 - │ │ │ └─ [equals]: integer #38 - │ │ ├─ variant_2: struct #44 - │ │ │ └─ [not]: integer #38 - │ │ ├─ variant_3: struct #45 - │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ └─ item: integer #38 - │ │ ├─ variant_4: struct #46 - │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ └─ item: integer #38 - │ │ └─ variant_5: struct #47 - │ │ └─ [notIn]: list 'list_41' #42 - │ │ └─ item: integer #38 - │ └─ [title]: optional 'optional_133' #134 - │ └─ item: optional '_prisma_string_filter_ex' #78 - │ └─ item: union #75 - │ ├─ variant_0: union '_prisma_string_filter' #73 - │ │ ├─ variant_0: string #57 - │ │ ├─ variant_1: struct #62 - │ │ │ └─ [equals]: string #57 - │ │ ├─ variant_2: struct #63 - │ │ │ └─ [not]: string #57 - │ │ ├─ variant_3: struct #64 - │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ └─ item: string #57 - │ │ ├─ variant_4: struct #65 - │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ └─ item: string #57 - │ │ ├─ variant_5: struct #69 - │ │ │ ├─ [contains]: string #57 - │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #70 - │ │ │ └─ [search]: string #57 - │ │ └─ variant_7: struct #71 - │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ └─ item: string #57 - │ └─ variant_1: struct #74 - │ └─ [not]: union '_prisma_string_filter' #73 - │ ├─ variant_0: string #57 - │ ├─ variant_1: struct #62 - │ │ └─ [equals]: string #57 - │ ├─ variant_2: struct #63 - │ │ └─ [not]: string #57 - │ ├─ variant_3: struct #64 - │ │ └─ [in]: list 'list_60' #61 - │ │ └─ item: string #57 - │ ├─ variant_4: struct #65 - │ │ └─ [notIn]: list 'list_60' #61 - │ │ └─ item: string #57 - │ ├─ variant_5: struct #69 - │ │ ├─ [contains]: string #57 - │ │ └─ [mode]: optional 'optional_67' #68 - │ │ └─ item: string #66 enum{ '"insensitive"' } - │ ├─ variant_6: struct #70 - │ │ └─ [search]: string #57 - │ └─ variant_7: struct #71 - │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ └─ item: string #57 - │ └─ [startsWith]: optional 'optional_58' #59 - │ └─ item: string #57 - ├─ [id]: optional 'optional_123' #124 - │ └─ item: integer #26 - └─ [title]: string #27 +root: struct #139 +└─ [data]: struct 'Post_create_input' #138 + ├─ [author]: union #136 + │ ├─ variant_0: struct #133 + │ │ └─ [create]: struct 'User_create_input_excluding_rel_Post_User' #111 + │ │ ├─ [id]: integer #16 + │ │ └─ [name]: string #17 + │ ├─ variant_1: struct #134 + │ │ └─ [connect]: struct 'User_where' #131 + │ │ ├─ [id]: optional #113 + │ │ │ └─ item: &_prisma_integer_filter_ex #37 + │ │ ├─ [name]: optional #114 + │ │ │ └─ item: &_prisma_string_filter_ex #54 + │ │ └─ [posts]: optional #129 + │ │ └─ item: union #128 + │ │ ├─ variant_0: struct #123 + │ │ │ └─ [every]: optional #122 + │ │ │ └─ item: struct 'Post_where_excluding_User' #121 + │ │ │ ├─ [author]: optional #119 + │ │ │ │ └─ item: &User_where #118 + │ │ │ ├─ [id]: optional #116 + │ │ │ │ └─ item: &_prisma_integer_filter_ex #37 + │ │ │ └─ [title]: optional #117 + │ │ │ └─ item: &_prisma_string_filter_ex #54 + │ │ ├─ variant_1: struct #125 + │ │ │ └─ [some]: optional #124 + │ │ │ └─ item: struct 'Post_where_excluding_User' #121 + │ │ │ ├─ [author]: optional #119 + │ │ │ │ └─ item: &User_where #118 + │ │ │ ├─ [id]: optional #116 + │ │ │ │ └─ item: &_prisma_integer_filter_ex #37 + │ │ │ └─ [title]: optional #117 + │ │ │ └─ item: &_prisma_string_filter_ex #54 + │ │ └─ variant_2: struct #127 + │ │ └─ [none]: optional #126 + │ │ └─ item: struct 'Post_where_excluding_User' #121 + │ │ ├─ [author]: optional #119 + │ │ │ └─ item: &User_where #118 + │ │ ├─ [id]: optional #116 + │ │ │ └─ item: &_prisma_integer_filter_ex #37 + │ │ └─ [title]: optional #117 + │ │ └─ item: &_prisma_string_filter_ex #54 + │ └─ variant_2: struct #135 + │ └─ [connectOrCreate]: struct #132 + │ ├─ [create]: struct 'User_create_input_excluding_rel_Post_User' #111 + │ │ ├─ [id]: integer #16 + │ │ └─ [name]: string #17 + │ └─ [where]: struct 'User_where' #131 + │ ├─ [id]: optional #113 + │ │ └─ item: &_prisma_integer_filter_ex #37 + │ ├─ [name]: optional #114 + │ │ └─ item: &_prisma_string_filter_ex #54 + │ └─ [posts]: optional #129 + │ └─ item: union #128 + │ ├─ variant_0: struct #123 + │ │ └─ [every]: optional #122 + │ │ └─ item: struct 'Post_where_excluding_User' #121 + │ │ ├─ [author]: optional #119 + │ │ │ └─ item: &User_where #118 + │ │ ├─ [id]: optional #116 + │ │ │ └─ item: &_prisma_integer_filter_ex #37 + │ │ └─ [title]: optional #117 + │ │ └─ item: &_prisma_string_filter_ex #54 + │ ├─ variant_1: struct #125 + │ │ └─ [some]: optional #124 + │ │ └─ item: struct 'Post_where_excluding_User' #121 + │ │ ├─ [author]: optional #119 + │ │ │ └─ item: &User_where #118 + │ │ ├─ [id]: optional #116 + │ │ │ └─ item: &_prisma_integer_filter_ex #37 + │ │ └─ [title]: optional #117 + │ │ └─ item: &_prisma_string_filter_ex #54 + │ └─ variant_2: struct #127 + │ └─ [none]: optional #126 + │ └─ item: struct 'Post_where_excluding_User' #121 + │ ├─ [author]: optional #119 + │ │ └─ item: &User_where #118 + │ ├─ [id]: optional #116 + │ │ └─ item: &_prisma_integer_filter_ex #37 + │ └─ [title]: optional #117 + │ └─ item: &_prisma_string_filter_ex #54 + ├─ [id]: optional #108 + │ └─ item: integer #24 + └─ [title]: string #25 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_one Record inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_one Record inp.snap index e4e4c3a470..34c542e25d 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_one Record inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_one Record inp.snap @@ -2,11 +2,11 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct #15 -└─ [data]: struct 'Record_create_input' #14 - ├─ [age]: optional 'optional_7' #8 +root: struct #14 +└─ [data]: struct 'Record_create_input' #13 + ├─ [age]: optional #7 │ └─ item: integer #6 ├─ [created_at]: string #1 - ├─ [id]: optional 'optional_11' #12 + ├─ [id]: optional #11 │ └─ item: string #4 └─ [name]: string #5 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_one User inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_one User inp.snap index e6de6bbee7..a6fa5f44b0 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_one User inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__create_one User inp.snap @@ -2,875 +2,507 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct #122 -└─ [data]: struct 'User_create_input' #121 - ├─ [id]: integer #17 - ├─ [name]: string #18 - └─ [posts]: optional 'optional_118' #119 - └─ item: union #117 - ├─ variant_0: struct #108 - │ └─ [create]: union #37 - │ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #34 - │ │ ├─ [id]: optional 'optional_31' #32 - │ │ │ └─ item: integer #26 - │ │ └─ [title]: string #27 - │ └─ variant_1: list 'list_35' #36 - │ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #34 - │ ├─ [id]: optional 'optional_31' #32 - │ │ └─ item: integer #26 - │ └─ [title]: string #27 - ├─ variant_1: struct #109 - │ └─ [connect]: union #106 - │ ├─ variant_0: struct 'Post_where' #103 - │ │ ├─ [author]: optional 'optional_100' #101 - │ │ │ └─ item: struct 'User_where_excluding_Post' #99 - │ │ │ ├─ [id]: optional 'optional_81' #82 - │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #54 - │ │ │ │ └─ item: union #51 - │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #49 - │ │ │ │ │ ├─ variant_0: integer #38 - │ │ │ │ │ ├─ variant_1: struct #43 - │ │ │ │ │ │ └─ [equals]: integer #38 - │ │ │ │ │ ├─ variant_2: struct #44 - │ │ │ │ │ │ └─ [not]: integer #38 - │ │ │ │ │ ├─ variant_3: struct #45 - │ │ │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ variant_4: struct #46 - │ │ │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ └─ variant_5: struct #47 - │ │ │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ variant_1: struct #50 - │ │ │ │ └─ [not]: either '_prisma_integer_filter' #49 - │ │ │ │ ├─ variant_0: integer #38 - │ │ │ │ ├─ variant_1: struct #43 - │ │ │ │ │ └─ [equals]: integer #38 - │ │ │ │ ├─ variant_2: struct #44 - │ │ │ │ │ └─ [not]: integer #38 - │ │ │ │ ├─ variant_3: struct #45 - │ │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ variant_4: struct #46 - │ │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ variant_5: struct #47 - │ │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ [name]: optional 'optional_83' #84 - │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #78 - │ │ │ │ └─ item: union #75 - │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #73 - │ │ │ │ │ ├─ variant_0: string #57 - │ │ │ │ │ ├─ variant_1: struct #62 - │ │ │ │ │ │ └─ [equals]: string #57 - │ │ │ │ │ ├─ variant_2: struct #63 - │ │ │ │ │ │ └─ [not]: string #57 - │ │ │ │ │ ├─ variant_3: struct #64 - │ │ │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ │ │ └─ item: string #57 - │ │ │ │ │ ├─ variant_4: struct #65 - │ │ │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ │ │ └─ item: string #57 - │ │ │ │ │ ├─ variant_5: struct #69 - │ │ │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ │ │ ├─ variant_6: struct #70 - │ │ │ │ │ │ └─ [search]: string #57 - │ │ │ │ │ └─ variant_7: struct #71 - │ │ │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ │ │ └─ item: string #57 - │ │ │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ └─ variant_1: struct #74 - │ │ │ │ └─ [not]: union '_prisma_string_filter' #73 - │ │ │ │ ├─ variant_0: string #57 - │ │ │ │ ├─ variant_1: struct #62 - │ │ │ │ │ └─ [equals]: string #57 - │ │ │ │ ├─ variant_2: struct #63 - │ │ │ │ │ └─ [not]: string #57 - │ │ │ │ ├─ variant_3: struct #64 - │ │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ ├─ variant_4: struct #65 - │ │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ ├─ variant_5: struct #69 - │ │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #70 - │ │ │ │ │ └─ [search]: string #57 - │ │ │ │ └─ variant_7: struct #71 - │ │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ │ └─ item: string #57 - │ │ │ └─ [posts]: optional 'optional_96' #97 - │ │ │ └─ item: union #95 - │ │ │ ├─ variant_0: struct #88 - │ │ │ │ └─ [every]: optional 'optional_86' #87 - │ │ │ │ └─ item: &Post_where #85 - │ │ │ ├─ variant_1: struct #91 - │ │ │ │ └─ [some]: optional 'optional_89' #90 - │ │ │ │ └─ item: &Post_where #85 - │ │ │ └─ variant_2: struct #94 - │ │ │ └─ [none]: optional 'optional_92' #93 - │ │ │ └─ item: &Post_where #85 - │ │ ├─ [id]: optional 'optional_55' #56 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #54 - │ │ │ └─ item: union #51 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #49 - │ │ │ │ ├─ variant_0: integer #38 - │ │ │ │ ├─ variant_1: struct #43 - │ │ │ │ │ └─ [equals]: integer #38 - │ │ │ │ ├─ variant_2: struct #44 - │ │ │ │ │ └─ [not]: integer #38 - │ │ │ │ ├─ variant_3: struct #45 - │ │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ variant_4: struct #46 - │ │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ variant_5: struct #47 - │ │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_1: struct #50 - │ │ │ └─ [not]: either '_prisma_integer_filter' #49 - │ │ │ ├─ variant_0: integer #38 - │ │ │ ├─ variant_1: struct #43 - │ │ │ │ └─ [equals]: integer #38 - │ │ │ ├─ variant_2: struct #44 - │ │ │ │ └─ [not]: integer #38 - │ │ │ ├─ variant_3: struct #45 - │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ variant_4: struct #46 - │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_5: struct #47 - │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ └─ item: integer #38 - │ │ └─ [title]: optional 'optional_79' #80 - │ │ └─ item: optional '_prisma_string_filter_ex' #78 - │ │ └─ item: union #75 - │ │ ├─ variant_0: union '_prisma_string_filter' #73 - │ │ │ ├─ variant_0: string #57 - │ │ │ ├─ variant_1: struct #62 - │ │ │ │ └─ [equals]: string #57 - │ │ │ ├─ variant_2: struct #63 - │ │ │ │ └─ [not]: string #57 - │ │ │ ├─ variant_3: struct #64 - │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_4: struct #65 - │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_5: struct #69 - │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #70 - │ │ │ │ └─ [search]: string #57 - │ │ │ └─ variant_7: struct #71 - │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ └─ item: string #57 - │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ └─ variant_1: struct #74 - │ │ └─ [not]: union '_prisma_string_filter' #73 - │ │ ├─ variant_0: string #57 - │ │ ├─ variant_1: struct #62 - │ │ │ └─ [equals]: string #57 - │ │ ├─ variant_2: struct #63 - │ │ │ └─ [not]: string #57 - │ │ ├─ variant_3: struct #64 - │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ └─ item: string #57 - │ │ ├─ variant_4: struct #65 - │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ └─ item: string #57 - │ │ ├─ variant_5: struct #69 - │ │ │ ├─ [contains]: string #57 - │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #70 - │ │ │ └─ [search]: string #57 - │ │ └─ variant_7: struct #71 - │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ └─ item: string #57 - │ └─ variant_1: list 'list_104' #105 - │ └─ item: struct 'Post_where' #103 - │ ├─ [author]: optional 'optional_100' #101 - │ │ └─ item: struct 'User_where_excluding_Post' #99 - │ │ ├─ [id]: optional 'optional_81' #82 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #54 - │ │ │ └─ item: union #51 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #49 - │ │ │ │ ├─ variant_0: integer #38 - │ │ │ │ ├─ variant_1: struct #43 - │ │ │ │ │ └─ [equals]: integer #38 - │ │ │ │ ├─ variant_2: struct #44 - │ │ │ │ │ └─ [not]: integer #38 - │ │ │ │ ├─ variant_3: struct #45 - │ │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ variant_4: struct #46 - │ │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ variant_5: struct #47 - │ │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_1: struct #50 - │ │ │ └─ [not]: either '_prisma_integer_filter' #49 - │ │ │ ├─ variant_0: integer #38 - │ │ │ ├─ variant_1: struct #43 - │ │ │ │ └─ [equals]: integer #38 - │ │ │ ├─ variant_2: struct #44 - │ │ │ │ └─ [not]: integer #38 - │ │ │ ├─ variant_3: struct #45 - │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ variant_4: struct #46 - │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_5: struct #47 - │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ └─ item: integer #38 - │ │ ├─ [name]: optional 'optional_83' #84 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #78 - │ │ │ └─ item: union #75 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #73 - │ │ │ │ ├─ variant_0: string #57 - │ │ │ │ ├─ variant_1: struct #62 - │ │ │ │ │ └─ [equals]: string #57 - │ │ │ │ ├─ variant_2: struct #63 - │ │ │ │ │ └─ [not]: string #57 - │ │ │ │ ├─ variant_3: struct #64 - │ │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ ├─ variant_4: struct #65 - │ │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ ├─ variant_5: struct #69 - │ │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #70 - │ │ │ │ │ └─ [search]: string #57 - │ │ │ │ └─ variant_7: struct #71 - │ │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ │ └─ item: string #57 - │ │ │ └─ variant_1: struct #74 - │ │ │ └─ [not]: union '_prisma_string_filter' #73 - │ │ │ ├─ variant_0: string #57 - │ │ │ ├─ variant_1: struct #62 - │ │ │ │ └─ [equals]: string #57 - │ │ │ ├─ variant_2: struct #63 - │ │ │ │ └─ [not]: string #57 - │ │ │ ├─ variant_3: struct #64 - │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_4: struct #65 - │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_5: struct #69 - │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #70 - │ │ │ │ └─ [search]: string #57 - │ │ │ └─ variant_7: struct #71 - │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ └─ item: string #57 - │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ └─ [posts]: optional 'optional_96' #97 - │ │ └─ item: union #95 - │ │ ├─ variant_0: struct #88 - │ │ │ └─ [every]: optional 'optional_86' #87 - │ │ │ └─ item: &Post_where #85 - │ │ ├─ variant_1: struct #91 - │ │ │ └─ [some]: optional 'optional_89' #90 - │ │ │ └─ item: &Post_where #85 - │ │ └─ variant_2: struct #94 - │ │ └─ [none]: optional 'optional_92' #93 - │ │ └─ item: &Post_where #85 - │ ├─ [id]: optional 'optional_55' #56 - │ │ └─ item: optional '_prisma_integer_filter_ex' #54 - │ │ └─ item: union #51 - │ │ ├─ variant_0: either '_prisma_integer_filter' #49 - │ │ │ ├─ variant_0: integer #38 - │ │ │ ├─ variant_1: struct #43 - │ │ │ │ └─ [equals]: integer #38 - │ │ │ ├─ variant_2: struct #44 - │ │ │ │ └─ [not]: integer #38 - │ │ │ ├─ variant_3: struct #45 - │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ variant_4: struct #46 - │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_5: struct #47 - │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ └─ item: integer #38 - │ │ └─ variant_1: struct #50 - │ │ └─ [not]: either '_prisma_integer_filter' #49 - │ │ ├─ variant_0: integer #38 - │ │ ├─ variant_1: struct #43 - │ │ │ └─ [equals]: integer #38 - │ │ ├─ variant_2: struct #44 - │ │ │ └─ [not]: integer #38 - │ │ ├─ variant_3: struct #45 - │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ └─ item: integer #38 - │ │ ├─ variant_4: struct #46 - │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ └─ item: integer #38 - │ │ └─ variant_5: struct #47 - │ │ └─ [notIn]: list 'list_41' #42 - │ │ └─ item: integer #38 - │ └─ [title]: optional 'optional_79' #80 - │ └─ item: optional '_prisma_string_filter_ex' #78 - │ └─ item: union #75 - │ ├─ variant_0: union '_prisma_string_filter' #73 - │ │ ├─ variant_0: string #57 - │ │ ├─ variant_1: struct #62 - │ │ │ └─ [equals]: string #57 - │ │ ├─ variant_2: struct #63 - │ │ │ └─ [not]: string #57 - │ │ ├─ variant_3: struct #64 - │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ └─ item: string #57 - │ │ ├─ variant_4: struct #65 - │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ └─ item: string #57 - │ │ ├─ variant_5: struct #69 - │ │ │ ├─ [contains]: string #57 - │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #70 - │ │ │ └─ [search]: string #57 - │ │ └─ variant_7: struct #71 - │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ └─ item: string #57 - │ └─ variant_1: struct #74 - │ └─ [not]: union '_prisma_string_filter' #73 - │ ├─ variant_0: string #57 - │ ├─ variant_1: struct #62 - │ │ └─ [equals]: string #57 - │ ├─ variant_2: struct #63 - │ │ └─ [not]: string #57 - │ ├─ variant_3: struct #64 - │ │ └─ [in]: list 'list_60' #61 - │ │ └─ item: string #57 - │ ├─ variant_4: struct #65 - │ │ └─ [notIn]: list 'list_60' #61 - │ │ └─ item: string #57 - │ ├─ variant_5: struct #69 - │ │ ├─ [contains]: string #57 - │ │ └─ [mode]: optional 'optional_67' #68 - │ │ └─ item: string #66 enum{ '"insensitive"' } - │ ├─ variant_6: struct #70 - │ │ └─ [search]: string #57 - │ └─ variant_7: struct #71 - │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ └─ item: string #57 - │ └─ [startsWith]: optional 'optional_58' #59 - │ └─ item: string #57 - ├─ variant_2: struct #110 - │ └─ [connectOrCreate]: struct #107 - │ ├─ [create]: union #37 - │ │ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #34 - │ │ │ ├─ [id]: optional 'optional_31' #32 - │ │ │ │ └─ item: integer #26 - │ │ │ └─ [title]: string #27 - │ │ └─ variant_1: list 'list_35' #36 - │ │ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #34 - │ │ ├─ [id]: optional 'optional_31' #32 - │ │ │ └─ item: integer #26 - │ │ └─ [title]: string #27 - │ └─ [where]: union #106 - │ ├─ variant_0: struct 'Post_where' #103 - │ │ ├─ [author]: optional 'optional_100' #101 - │ │ │ └─ item: struct 'User_where_excluding_Post' #99 - │ │ │ ├─ [id]: optional 'optional_81' #82 - │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #54 - │ │ │ │ └─ item: union #51 - │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #49 - │ │ │ │ │ ├─ variant_0: integer #38 - │ │ │ │ │ ├─ variant_1: struct #43 - │ │ │ │ │ │ └─ [equals]: integer #38 - │ │ │ │ │ ├─ variant_2: struct #44 - │ │ │ │ │ │ └─ [not]: integer #38 - │ │ │ │ │ ├─ variant_3: struct #45 - │ │ │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ variant_4: struct #46 - │ │ │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ └─ variant_5: struct #47 - │ │ │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ variant_1: struct #50 - │ │ │ │ └─ [not]: either '_prisma_integer_filter' #49 - │ │ │ │ ├─ variant_0: integer #38 - │ │ │ │ ├─ variant_1: struct #43 - │ │ │ │ │ └─ [equals]: integer #38 - │ │ │ │ ├─ variant_2: struct #44 - │ │ │ │ │ └─ [not]: integer #38 - │ │ │ │ ├─ variant_3: struct #45 - │ │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ variant_4: struct #46 - │ │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ variant_5: struct #47 - │ │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ [name]: optional 'optional_83' #84 - │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #78 - │ │ │ │ └─ item: union #75 - │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #73 - │ │ │ │ │ ├─ variant_0: string #57 - │ │ │ │ │ ├─ variant_1: struct #62 - │ │ │ │ │ │ └─ [equals]: string #57 - │ │ │ │ │ ├─ variant_2: struct #63 - │ │ │ │ │ │ └─ [not]: string #57 - │ │ │ │ │ ├─ variant_3: struct #64 - │ │ │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ │ │ └─ item: string #57 - │ │ │ │ │ ├─ variant_4: struct #65 - │ │ │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ │ │ └─ item: string #57 - │ │ │ │ │ ├─ variant_5: struct #69 - │ │ │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ │ │ ├─ variant_6: struct #70 - │ │ │ │ │ │ └─ [search]: string #57 - │ │ │ │ │ └─ variant_7: struct #71 - │ │ │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ │ │ └─ item: string #57 - │ │ │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ └─ variant_1: struct #74 - │ │ │ │ └─ [not]: union '_prisma_string_filter' #73 - │ │ │ │ ├─ variant_0: string #57 - │ │ │ │ ├─ variant_1: struct #62 - │ │ │ │ │ └─ [equals]: string #57 - │ │ │ │ ├─ variant_2: struct #63 - │ │ │ │ │ └─ [not]: string #57 - │ │ │ │ ├─ variant_3: struct #64 - │ │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ ├─ variant_4: struct #65 - │ │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ ├─ variant_5: struct #69 - │ │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #70 - │ │ │ │ │ └─ [search]: string #57 - │ │ │ │ └─ variant_7: struct #71 - │ │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ │ └─ item: string #57 - │ │ │ └─ [posts]: optional 'optional_96' #97 - │ │ │ └─ item: union #95 - │ │ │ ├─ variant_0: struct #88 - │ │ │ │ └─ [every]: optional 'optional_86' #87 - │ │ │ │ └─ item: &Post_where #85 - │ │ │ ├─ variant_1: struct #91 - │ │ │ │ └─ [some]: optional 'optional_89' #90 - │ │ │ │ └─ item: &Post_where #85 - │ │ │ └─ variant_2: struct #94 - │ │ │ └─ [none]: optional 'optional_92' #93 - │ │ │ └─ item: &Post_where #85 - │ │ ├─ [id]: optional 'optional_55' #56 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #54 - │ │ │ └─ item: union #51 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #49 - │ │ │ │ ├─ variant_0: integer #38 - │ │ │ │ ├─ variant_1: struct #43 - │ │ │ │ │ └─ [equals]: integer #38 - │ │ │ │ ├─ variant_2: struct #44 - │ │ │ │ │ └─ [not]: integer #38 - │ │ │ │ ├─ variant_3: struct #45 - │ │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ variant_4: struct #46 - │ │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ variant_5: struct #47 - │ │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_1: struct #50 - │ │ │ └─ [not]: either '_prisma_integer_filter' #49 - │ │ │ ├─ variant_0: integer #38 - │ │ │ ├─ variant_1: struct #43 - │ │ │ │ └─ [equals]: integer #38 - │ │ │ ├─ variant_2: struct #44 - │ │ │ │ └─ [not]: integer #38 - │ │ │ ├─ variant_3: struct #45 - │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ variant_4: struct #46 - │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_5: struct #47 - │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ └─ item: integer #38 - │ │ └─ [title]: optional 'optional_79' #80 - │ │ └─ item: optional '_prisma_string_filter_ex' #78 - │ │ └─ item: union #75 - │ │ ├─ variant_0: union '_prisma_string_filter' #73 - │ │ │ ├─ variant_0: string #57 - │ │ │ ├─ variant_1: struct #62 - │ │ │ │ └─ [equals]: string #57 - │ │ │ ├─ variant_2: struct #63 - │ │ │ │ └─ [not]: string #57 - │ │ │ ├─ variant_3: struct #64 - │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_4: struct #65 - │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_5: struct #69 - │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #70 - │ │ │ │ └─ [search]: string #57 - │ │ │ └─ variant_7: struct #71 - │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ └─ item: string #57 - │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ └─ variant_1: struct #74 - │ │ └─ [not]: union '_prisma_string_filter' #73 - │ │ ├─ variant_0: string #57 - │ │ ├─ variant_1: struct #62 - │ │ │ └─ [equals]: string #57 - │ │ ├─ variant_2: struct #63 - │ │ │ └─ [not]: string #57 - │ │ ├─ variant_3: struct #64 - │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ └─ item: string #57 - │ │ ├─ variant_4: struct #65 - │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ └─ item: string #57 - │ │ ├─ variant_5: struct #69 - │ │ │ ├─ [contains]: string #57 - │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #70 - │ │ │ └─ [search]: string #57 - │ │ └─ variant_7: struct #71 - │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ └─ item: string #57 - │ └─ variant_1: list 'list_104' #105 - │ └─ item: struct 'Post_where' #103 - │ ├─ [author]: optional 'optional_100' #101 - │ │ └─ item: struct 'User_where_excluding_Post' #99 - │ │ ├─ [id]: optional 'optional_81' #82 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #54 - │ │ │ └─ item: union #51 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #49 - │ │ │ │ ├─ variant_0: integer #38 - │ │ │ │ ├─ variant_1: struct #43 - │ │ │ │ │ └─ [equals]: integer #38 - │ │ │ │ ├─ variant_2: struct #44 - │ │ │ │ │ └─ [not]: integer #38 - │ │ │ │ ├─ variant_3: struct #45 - │ │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ │ └─ item: integer #38 - │ │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ variant_4: struct #46 - │ │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ variant_5: struct #47 - │ │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_1: struct #50 - │ │ │ └─ [not]: either '_prisma_integer_filter' #49 - │ │ │ ├─ variant_0: integer #38 - │ │ │ ├─ variant_1: struct #43 - │ │ │ │ └─ [equals]: integer #38 - │ │ │ ├─ variant_2: struct #44 - │ │ │ │ └─ [not]: integer #38 - │ │ │ ├─ variant_3: struct #45 - │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ variant_4: struct #46 - │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_5: struct #47 - │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ └─ item: integer #38 - │ │ ├─ [name]: optional 'optional_83' #84 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #78 - │ │ │ └─ item: union #75 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #73 - │ │ │ │ ├─ variant_0: string #57 - │ │ │ │ ├─ variant_1: struct #62 - │ │ │ │ │ └─ [equals]: string #57 - │ │ │ │ ├─ variant_2: struct #63 - │ │ │ │ │ └─ [not]: string #57 - │ │ │ │ ├─ variant_3: struct #64 - │ │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ ├─ variant_4: struct #65 - │ │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ ├─ variant_5: struct #69 - │ │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #70 - │ │ │ │ │ └─ [search]: string #57 - │ │ │ │ └─ variant_7: struct #71 - │ │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ │ └─ item: string #57 - │ │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ │ └─ item: string #57 - │ │ │ └─ variant_1: struct #74 - │ │ │ └─ [not]: union '_prisma_string_filter' #73 - │ │ │ ├─ variant_0: string #57 - │ │ │ ├─ variant_1: struct #62 - │ │ │ │ └─ [equals]: string #57 - │ │ │ ├─ variant_2: struct #63 - │ │ │ │ └─ [not]: string #57 - │ │ │ ├─ variant_3: struct #64 - │ │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_4: struct #65 - │ │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ │ └─ item: string #57 - │ │ │ ├─ variant_5: struct #69 - │ │ │ │ ├─ [contains]: string #57 - │ │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #70 - │ │ │ │ └─ [search]: string #57 - │ │ │ └─ variant_7: struct #71 - │ │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ │ └─ item: string #57 - │ │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ └─ [posts]: optional 'optional_96' #97 - │ │ └─ item: union #95 - │ │ ├─ variant_0: struct #88 - │ │ │ └─ [every]: optional 'optional_86' #87 - │ │ │ └─ item: &Post_where #85 - │ │ ├─ variant_1: struct #91 - │ │ │ └─ [some]: optional 'optional_89' #90 - │ │ │ └─ item: &Post_where #85 - │ │ └─ variant_2: struct #94 - │ │ └─ [none]: optional 'optional_92' #93 - │ │ └─ item: &Post_where #85 - │ ├─ [id]: optional 'optional_55' #56 - │ │ └─ item: optional '_prisma_integer_filter_ex' #54 - │ │ └─ item: union #51 - │ │ ├─ variant_0: either '_prisma_integer_filter' #49 - │ │ │ ├─ variant_0: integer #38 - │ │ │ ├─ variant_1: struct #43 - │ │ │ │ └─ [equals]: integer #38 - │ │ │ ├─ variant_2: struct #44 - │ │ │ │ └─ [not]: integer #38 - │ │ │ ├─ variant_3: struct #45 - │ │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ │ └─ item: integer #38 - │ │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ variant_4: struct #46 - │ │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ variant_5: struct #47 - │ │ │ └─ [notIn]: list 'list_41' #42 - │ │ │ └─ item: integer #38 - │ │ └─ variant_1: struct #50 - │ │ └─ [not]: either '_prisma_integer_filter' #49 - │ │ ├─ variant_0: integer #38 - │ │ ├─ variant_1: struct #43 - │ │ │ └─ [equals]: integer #38 - │ │ ├─ variant_2: struct #44 - │ │ │ └─ [not]: integer #38 - │ │ ├─ variant_3: struct #45 - │ │ │ ├─ [gt]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ [gte]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ ├─ [lt]: optional 'optional_39' #40 - │ │ │ │ └─ item: integer #38 - │ │ │ └─ [lte]: optional 'optional_39' #40 - │ │ │ └─ item: integer #38 - │ │ ├─ variant_4: struct #46 - │ │ │ └─ [in]: list 'list_41' #42 - │ │ │ └─ item: integer #38 - │ │ └─ variant_5: struct #47 - │ │ └─ [notIn]: list 'list_41' #42 - │ │ └─ item: integer #38 - │ └─ [title]: optional 'optional_79' #80 - │ └─ item: optional '_prisma_string_filter_ex' #78 - │ └─ item: union #75 - │ ├─ variant_0: union '_prisma_string_filter' #73 - │ │ ├─ variant_0: string #57 - │ │ ├─ variant_1: struct #62 - │ │ │ └─ [equals]: string #57 - │ │ ├─ variant_2: struct #63 - │ │ │ └─ [not]: string #57 - │ │ ├─ variant_3: struct #64 - │ │ │ └─ [in]: list 'list_60' #61 - │ │ │ └─ item: string #57 - │ │ ├─ variant_4: struct #65 - │ │ │ └─ [notIn]: list 'list_60' #61 - │ │ │ └─ item: string #57 - │ │ ├─ variant_5: struct #69 - │ │ │ ├─ [contains]: string #57 - │ │ │ └─ [mode]: optional 'optional_67' #68 - │ │ │ └─ item: string #66 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #70 - │ │ │ └─ [search]: string #57 - │ │ └─ variant_7: struct #71 - │ │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ │ └─ item: string #57 - │ │ └─ [startsWith]: optional 'optional_58' #59 - │ │ └─ item: string #57 - │ └─ variant_1: struct #74 - │ └─ [not]: union '_prisma_string_filter' #73 - │ ├─ variant_0: string #57 - │ ├─ variant_1: struct #62 - │ │ └─ [equals]: string #57 - │ ├─ variant_2: struct #63 - │ │ └─ [not]: string #57 - │ ├─ variant_3: struct #64 - │ │ └─ [in]: list 'list_60' #61 - │ │ └─ item: string #57 - │ ├─ variant_4: struct #65 - │ │ └─ [notIn]: list 'list_60' #61 - │ │ └─ item: string #57 - │ ├─ variant_5: struct #69 - │ │ ├─ [contains]: string #57 - │ │ └─ [mode]: optional 'optional_67' #68 - │ │ └─ item: string #66 enum{ '"insensitive"' } - │ ├─ variant_6: struct #70 - │ │ └─ [search]: string #57 - │ └─ variant_7: struct #71 - │ ├─ [endsWith]: optional 'optional_58' #59 - │ │ └─ item: string #57 - │ └─ [startsWith]: optional 'optional_58' #59 - │ └─ item: string #57 - └─ variant_3: struct #116 - └─ [createMany]: optional 'optional_114' #115 - └─ item: struct #113 - └─ [data]: list 'list_111' #112 - └─ item: union #37 - ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #34 - │ ├─ [id]: optional 'optional_31' #32 - │ │ └─ item: integer #26 - │ └─ [title]: string #27 - └─ variant_1: list 'list_35' #36 - └─ item: struct 'Post_create_input_excluding_rel_Post_User' #34 - ├─ [id]: optional 'optional_31' #32 - │ └─ item: integer #26 - └─ [title]: string #27 +root: struct #106 +└─ [data]: struct 'User_create_input' #105 + ├─ [id]: integer #16 + ├─ [name]: string #17 + └─ [posts]: optional #103 + └─ item: union #102 + ├─ variant_0: struct #95 + │ └─ [create]: union #35 + │ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #33 + │ │ ├─ [id]: optional #31 + │ │ │ └─ item: integer #24 + │ │ └─ [title]: string #25 + │ └─ variant_1: list #34 + │ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #33 + │ ├─ [id]: optional #31 + │ │ └─ item: integer #24 + │ └─ [title]: string #25 + ├─ variant_1: struct #96 + │ └─ [connect]: union #93 + │ ├─ variant_0: struct 'Post_where' #91 + │ │ ├─ [author]: optional #89 + │ │ │ └─ item: struct 'User_where_excluding_Post' #88 + │ │ │ ├─ [id]: optional #76 + │ │ │ │ └─ item: &_prisma_integer_filter_ex #37 + │ │ │ ├─ [name]: optional #77 + │ │ │ │ └─ item: &_prisma_string_filter_ex #54 + │ │ │ └─ [posts]: optional #86 + │ │ │ └─ item: union #85 + │ │ │ ├─ variant_0: struct #80 + │ │ │ │ └─ [every]: optional #79 + │ │ │ │ └─ item: &Post_where #78 + │ │ │ ├─ variant_1: struct #82 + │ │ │ │ └─ [some]: optional #81 + │ │ │ │ └─ item: &Post_where #78 + │ │ │ └─ variant_2: struct #84 + │ │ │ └─ [none]: optional #83 + │ │ │ └─ item: &Post_where #78 + │ │ ├─ [id]: optional #53 + │ │ │ └─ item: optional '_prisma_integer_filter_ex' #52 + │ │ │ └─ item: union #50 + │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 + │ │ │ │ ├─ variant_0: integer #39 + │ │ │ │ ├─ variant_1: struct #42 + │ │ │ │ │ └─ [equals]: integer #39 + │ │ │ │ ├─ variant_2: struct #43 + │ │ │ │ │ └─ [not]: integer #39 + │ │ │ │ ├─ variant_3: struct #44 + │ │ │ │ │ ├─ [gt]: optional #40 + │ │ │ │ │ │ └─ item: integer #39 + │ │ │ │ │ ├─ [gte]: optional #40 + │ │ │ │ │ │ └─ item: integer #39 + │ │ │ │ │ ├─ [lt]: optional #40 + │ │ │ │ │ │ └─ item: integer #39 + │ │ │ │ │ └─ [lte]: optional #40 + │ │ │ │ │ └─ item: integer #39 + │ │ │ │ ├─ variant_4: struct #45 + │ │ │ │ │ └─ [in]: list #41 + │ │ │ │ │ └─ item: integer #39 + │ │ │ │ └─ variant_5: struct #46 + │ │ │ │ └─ [notIn]: list #41 + │ │ │ │ └─ item: integer #39 + │ │ │ └─ variant_1: struct #49 + │ │ │ └─ [not]: either '_prisma_integer_filter' #48 + │ │ │ ├─ variant_0: integer #39 + │ │ │ ├─ variant_1: struct #42 + │ │ │ │ └─ [equals]: integer #39 + │ │ │ ├─ variant_2: struct #43 + │ │ │ │ └─ [not]: integer #39 + │ │ │ ├─ variant_3: struct #44 + │ │ │ │ ├─ [gt]: optional #40 + │ │ │ │ │ └─ item: integer #39 + │ │ │ │ ├─ [gte]: optional #40 + │ │ │ │ │ └─ item: integer #39 + │ │ │ │ ├─ [lt]: optional #40 + │ │ │ │ │ └─ item: integer #39 + │ │ │ │ └─ [lte]: optional #40 + │ │ │ │ └─ item: integer #39 + │ │ │ ├─ variant_4: struct #45 + │ │ │ │ └─ [in]: list #41 + │ │ │ │ └─ item: integer #39 + │ │ │ └─ variant_5: struct #46 + │ │ │ └─ [notIn]: list #41 + │ │ │ └─ item: integer #39 + │ │ └─ [title]: optional #74 + │ │ └─ item: optional '_prisma_string_filter_ex' #73 + │ │ └─ item: union #71 + │ │ ├─ variant_0: union '_prisma_string_filter' #69 + │ │ │ ├─ variant_0: string #56 + │ │ │ ├─ variant_1: struct #59 + │ │ │ │ └─ [equals]: string #56 + │ │ │ ├─ variant_2: struct #60 + │ │ │ │ └─ [not]: string #56 + │ │ │ ├─ variant_3: struct #61 + │ │ │ │ └─ [in]: list #58 + │ │ │ │ └─ item: string #56 + │ │ │ ├─ variant_4: struct #62 + │ │ │ │ └─ [notIn]: list #58 + │ │ │ │ └─ item: string #56 + │ │ │ ├─ variant_5: struct #65 + │ │ │ │ ├─ [contains]: string #56 + │ │ │ │ └─ [mode]: optional #64 + │ │ │ │ └─ item: string #63 enum{ '"insensitive"' } + │ │ │ ├─ variant_6: struct #66 + │ │ │ │ └─ [search]: string #56 + │ │ │ └─ variant_7: struct #67 + │ │ │ ├─ [endsWith]: optional #57 + │ │ │ │ └─ item: string #56 + │ │ │ └─ [startsWith]: optional #57 + │ │ │ └─ item: string #56 + │ │ └─ variant_1: struct #70 + │ │ └─ [not]: union '_prisma_string_filter' #69 + │ │ ├─ variant_0: string #56 + │ │ ├─ variant_1: struct #59 + │ │ │ └─ [equals]: string #56 + │ │ ├─ variant_2: struct #60 + │ │ │ └─ [not]: string #56 + │ │ ├─ variant_3: struct #61 + │ │ │ └─ [in]: list #58 + │ │ │ └─ item: string #56 + │ │ ├─ variant_4: struct #62 + │ │ │ └─ [notIn]: list #58 + │ │ │ └─ item: string #56 + │ │ ├─ variant_5: struct #65 + │ │ │ ├─ [contains]: string #56 + │ │ │ └─ [mode]: optional #64 + │ │ │ └─ item: string #63 enum{ '"insensitive"' } + │ │ ├─ variant_6: struct #66 + │ │ │ └─ [search]: string #56 + │ │ └─ variant_7: struct #67 + │ │ ├─ [endsWith]: optional #57 + │ │ │ └─ item: string #56 + │ │ └─ [startsWith]: optional #57 + │ │ └─ item: string #56 + │ └─ variant_1: list #92 + │ └─ item: struct 'Post_where' #91 + │ ├─ [author]: optional #89 + │ │ └─ item: struct 'User_where_excluding_Post' #88 + │ │ ├─ [id]: optional #76 + │ │ │ └─ item: &_prisma_integer_filter_ex #37 + │ │ ├─ [name]: optional #77 + │ │ │ └─ item: &_prisma_string_filter_ex #54 + │ │ └─ [posts]: optional #86 + │ │ └─ item: union #85 + │ │ ├─ variant_0: struct #80 + │ │ │ └─ [every]: optional #79 + │ │ │ └─ item: &Post_where #78 + │ │ ├─ variant_1: struct #82 + │ │ │ └─ [some]: optional #81 + │ │ │ └─ item: &Post_where #78 + │ │ └─ variant_2: struct #84 + │ │ └─ [none]: optional #83 + │ │ └─ item: &Post_where #78 + │ ├─ [id]: optional #53 + │ │ └─ item: optional '_prisma_integer_filter_ex' #52 + │ │ └─ item: union #50 + │ │ ├─ variant_0: either '_prisma_integer_filter' #48 + │ │ │ ├─ variant_0: integer #39 + │ │ │ ├─ variant_1: struct #42 + │ │ │ │ └─ [equals]: integer #39 + │ │ │ ├─ variant_2: struct #43 + │ │ │ │ └─ [not]: integer #39 + │ │ │ ├─ variant_3: struct #44 + │ │ │ │ ├─ [gt]: optional #40 + │ │ │ │ │ └─ item: integer #39 + │ │ │ │ ├─ [gte]: optional #40 + │ │ │ │ │ └─ item: integer #39 + │ │ │ │ ├─ [lt]: optional #40 + │ │ │ │ │ └─ item: integer #39 + │ │ │ │ └─ [lte]: optional #40 + │ │ │ │ └─ item: integer #39 + │ │ │ ├─ variant_4: struct #45 + │ │ │ │ └─ [in]: list #41 + │ │ │ │ └─ item: integer #39 + │ │ │ └─ variant_5: struct #46 + │ │ │ └─ [notIn]: list #41 + │ │ │ └─ item: integer #39 + │ │ └─ variant_1: struct #49 + │ │ └─ [not]: either '_prisma_integer_filter' #48 + │ │ ├─ variant_0: integer #39 + │ │ ├─ variant_1: struct #42 + │ │ │ └─ [equals]: integer #39 + │ │ ├─ variant_2: struct #43 + │ │ │ └─ [not]: integer #39 + │ │ ├─ variant_3: struct #44 + │ │ │ ├─ [gt]: optional #40 + │ │ │ │ └─ item: integer #39 + │ │ │ ├─ [gte]: optional #40 + │ │ │ │ └─ item: integer #39 + │ │ │ ├─ [lt]: optional #40 + │ │ │ │ └─ item: integer #39 + │ │ │ └─ [lte]: optional #40 + │ │ │ └─ item: integer #39 + │ │ ├─ variant_4: struct #45 + │ │ │ └─ [in]: list #41 + │ │ │ └─ item: integer #39 + │ │ └─ variant_5: struct #46 + │ │ └─ [notIn]: list #41 + │ │ └─ item: integer #39 + │ └─ [title]: optional #74 + │ └─ item: optional '_prisma_string_filter_ex' #73 + │ └─ item: union #71 + │ ├─ variant_0: union '_prisma_string_filter' #69 + │ │ ├─ variant_0: string #56 + │ │ ├─ variant_1: struct #59 + │ │ │ └─ [equals]: string #56 + │ │ ├─ variant_2: struct #60 + │ │ │ └─ [not]: string #56 + │ │ ├─ variant_3: struct #61 + │ │ │ └─ [in]: list #58 + │ │ │ └─ item: string #56 + │ │ ├─ variant_4: struct #62 + │ │ │ └─ [notIn]: list #58 + │ │ │ └─ item: string #56 + │ │ ├─ variant_5: struct #65 + │ │ │ ├─ [contains]: string #56 + │ │ │ └─ [mode]: optional #64 + │ │ │ └─ item: string #63 enum{ '"insensitive"' } + │ │ ├─ variant_6: struct #66 + │ │ │ └─ [search]: string #56 + │ │ └─ variant_7: struct #67 + │ │ ├─ [endsWith]: optional #57 + │ │ │ └─ item: string #56 + │ │ └─ [startsWith]: optional #57 + │ │ └─ item: string #56 + │ └─ variant_1: struct #70 + │ └─ [not]: union '_prisma_string_filter' #69 + │ ├─ variant_0: string #56 + │ ├─ variant_1: struct #59 + │ │ └─ [equals]: string #56 + │ ├─ variant_2: struct #60 + │ │ └─ [not]: string #56 + │ ├─ variant_3: struct #61 + │ │ └─ [in]: list #58 + │ │ └─ item: string #56 + │ ├─ variant_4: struct #62 + │ │ └─ [notIn]: list #58 + │ │ └─ item: string #56 + │ ├─ variant_5: struct #65 + │ │ ├─ [contains]: string #56 + │ │ └─ [mode]: optional #64 + │ │ └─ item: string #63 enum{ '"insensitive"' } + │ ├─ variant_6: struct #66 + │ │ └─ [search]: string #56 + │ └─ variant_7: struct #67 + │ ├─ [endsWith]: optional #57 + │ │ └─ item: string #56 + │ └─ [startsWith]: optional #57 + │ └─ item: string #56 + ├─ variant_2: struct #97 + │ └─ [connectOrCreate]: struct #94 + │ ├─ [create]: union #35 + │ │ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #33 + │ │ │ ├─ [id]: optional #31 + │ │ │ │ └─ item: integer #24 + │ │ │ └─ [title]: string #25 + │ │ └─ variant_1: list #34 + │ │ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #33 + │ │ ├─ [id]: optional #31 + │ │ │ └─ item: integer #24 + │ │ └─ [title]: string #25 + │ └─ [where]: union #93 + │ ├─ variant_0: struct 'Post_where' #91 + │ │ ├─ [author]: optional #89 + │ │ │ └─ item: struct 'User_where_excluding_Post' #88 + │ │ │ ├─ [id]: optional #76 + │ │ │ │ └─ item: &_prisma_integer_filter_ex #37 + │ │ │ ├─ [name]: optional #77 + │ │ │ │ └─ item: &_prisma_string_filter_ex #54 + │ │ │ └─ [posts]: optional #86 + │ │ │ └─ item: union #85 + │ │ │ ├─ variant_0: struct #80 + │ │ │ │ └─ [every]: optional #79 + │ │ │ │ └─ item: &Post_where #78 + │ │ │ ├─ variant_1: struct #82 + │ │ │ │ └─ [some]: optional #81 + │ │ │ │ └─ item: &Post_where #78 + │ │ │ └─ variant_2: struct #84 + │ │ │ └─ [none]: optional #83 + │ │ │ └─ item: &Post_where #78 + │ │ ├─ [id]: optional #53 + │ │ │ └─ item: optional '_prisma_integer_filter_ex' #52 + │ │ │ └─ item: union #50 + │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 + │ │ │ │ ├─ variant_0: integer #39 + │ │ │ │ ├─ variant_1: struct #42 + │ │ │ │ │ └─ [equals]: integer #39 + │ │ │ │ ├─ variant_2: struct #43 + │ │ │ │ │ └─ [not]: integer #39 + │ │ │ │ ├─ variant_3: struct #44 + │ │ │ │ │ ├─ [gt]: optional #40 + │ │ │ │ │ │ └─ item: integer #39 + │ │ │ │ │ ├─ [gte]: optional #40 + │ │ │ │ │ │ └─ item: integer #39 + │ │ │ │ │ ├─ [lt]: optional #40 + │ │ │ │ │ │ └─ item: integer #39 + │ │ │ │ │ └─ [lte]: optional #40 + │ │ │ │ │ └─ item: integer #39 + │ │ │ │ ├─ variant_4: struct #45 + │ │ │ │ │ └─ [in]: list #41 + │ │ │ │ │ └─ item: integer #39 + │ │ │ │ └─ variant_5: struct #46 + │ │ │ │ └─ [notIn]: list #41 + │ │ │ │ └─ item: integer #39 + │ │ │ └─ variant_1: struct #49 + │ │ │ └─ [not]: either '_prisma_integer_filter' #48 + │ │ │ ├─ variant_0: integer #39 + │ │ │ ├─ variant_1: struct #42 + │ │ │ │ └─ [equals]: integer #39 + │ │ │ ├─ variant_2: struct #43 + │ │ │ │ └─ [not]: integer #39 + │ │ │ ├─ variant_3: struct #44 + │ │ │ │ ├─ [gt]: optional #40 + │ │ │ │ │ └─ item: integer #39 + │ │ │ │ ├─ [gte]: optional #40 + │ │ │ │ │ └─ item: integer #39 + │ │ │ │ ├─ [lt]: optional #40 + │ │ │ │ │ └─ item: integer #39 + │ │ │ │ └─ [lte]: optional #40 + │ │ │ │ └─ item: integer #39 + │ │ │ ├─ variant_4: struct #45 + │ │ │ │ └─ [in]: list #41 + │ │ │ │ └─ item: integer #39 + │ │ │ └─ variant_5: struct #46 + │ │ │ └─ [notIn]: list #41 + │ │ │ └─ item: integer #39 + │ │ └─ [title]: optional #74 + │ │ └─ item: optional '_prisma_string_filter_ex' #73 + │ │ └─ item: union #71 + │ │ ├─ variant_0: union '_prisma_string_filter' #69 + │ │ │ ├─ variant_0: string #56 + │ │ │ ├─ variant_1: struct #59 + │ │ │ │ └─ [equals]: string #56 + │ │ │ ├─ variant_2: struct #60 + │ │ │ │ └─ [not]: string #56 + │ │ │ ├─ variant_3: struct #61 + │ │ │ │ └─ [in]: list #58 + │ │ │ │ └─ item: string #56 + │ │ │ ├─ variant_4: struct #62 + │ │ │ │ └─ [notIn]: list #58 + │ │ │ │ └─ item: string #56 + │ │ │ ├─ variant_5: struct #65 + │ │ │ │ ├─ [contains]: string #56 + │ │ │ │ └─ [mode]: optional #64 + │ │ │ │ └─ item: string #63 enum{ '"insensitive"' } + │ │ │ ├─ variant_6: struct #66 + │ │ │ │ └─ [search]: string #56 + │ │ │ └─ variant_7: struct #67 + │ │ │ ├─ [endsWith]: optional #57 + │ │ │ │ └─ item: string #56 + │ │ │ └─ [startsWith]: optional #57 + │ │ │ └─ item: string #56 + │ │ └─ variant_1: struct #70 + │ │ └─ [not]: union '_prisma_string_filter' #69 + │ │ ├─ variant_0: string #56 + │ │ ├─ variant_1: struct #59 + │ │ │ └─ [equals]: string #56 + │ │ ├─ variant_2: struct #60 + │ │ │ └─ [not]: string #56 + │ │ ├─ variant_3: struct #61 + │ │ │ └─ [in]: list #58 + │ │ │ └─ item: string #56 + │ │ ├─ variant_4: struct #62 + │ │ │ └─ [notIn]: list #58 + │ │ │ └─ item: string #56 + │ │ ├─ variant_5: struct #65 + │ │ │ ├─ [contains]: string #56 + │ │ │ └─ [mode]: optional #64 + │ │ │ └─ item: string #63 enum{ '"insensitive"' } + │ │ ├─ variant_6: struct #66 + │ │ │ └─ [search]: string #56 + │ │ └─ variant_7: struct #67 + │ │ ├─ [endsWith]: optional #57 + │ │ │ └─ item: string #56 + │ │ └─ [startsWith]: optional #57 + │ │ └─ item: string #56 + │ └─ variant_1: list #92 + │ └─ item: struct 'Post_where' #91 + │ ├─ [author]: optional #89 + │ │ └─ item: struct 'User_where_excluding_Post' #88 + │ │ ├─ [id]: optional #76 + │ │ │ └─ item: &_prisma_integer_filter_ex #37 + │ │ ├─ [name]: optional #77 + │ │ │ └─ item: &_prisma_string_filter_ex #54 + │ │ └─ [posts]: optional #86 + │ │ └─ item: union #85 + │ │ ├─ variant_0: struct #80 + │ │ │ └─ [every]: optional #79 + │ │ │ └─ item: &Post_where #78 + │ │ ├─ variant_1: struct #82 + │ │ │ └─ [some]: optional #81 + │ │ │ └─ item: &Post_where #78 + │ │ └─ variant_2: struct #84 + │ │ └─ [none]: optional #83 + │ │ └─ item: &Post_where #78 + │ ├─ [id]: optional #53 + │ │ └─ item: optional '_prisma_integer_filter_ex' #52 + │ │ └─ item: union #50 + │ │ ├─ variant_0: either '_prisma_integer_filter' #48 + │ │ │ ├─ variant_0: integer #39 + │ │ │ ├─ variant_1: struct #42 + │ │ │ │ └─ [equals]: integer #39 + │ │ │ ├─ variant_2: struct #43 + │ │ │ │ └─ [not]: integer #39 + │ │ │ ├─ variant_3: struct #44 + │ │ │ │ ├─ [gt]: optional #40 + │ │ │ │ │ └─ item: integer #39 + │ │ │ │ ├─ [gte]: optional #40 + │ │ │ │ │ └─ item: integer #39 + │ │ │ │ ├─ [lt]: optional #40 + │ │ │ │ │ └─ item: integer #39 + │ │ │ │ └─ [lte]: optional #40 + │ │ │ │ └─ item: integer #39 + │ │ │ ├─ variant_4: struct #45 + │ │ │ │ └─ [in]: list #41 + │ │ │ │ └─ item: integer #39 + │ │ │ └─ variant_5: struct #46 + │ │ │ └─ [notIn]: list #41 + │ │ │ └─ item: integer #39 + │ │ └─ variant_1: struct #49 + │ │ └─ [not]: either '_prisma_integer_filter' #48 + │ │ ├─ variant_0: integer #39 + │ │ ├─ variant_1: struct #42 + │ │ │ └─ [equals]: integer #39 + │ │ ├─ variant_2: struct #43 + │ │ │ └─ [not]: integer #39 + │ │ ├─ variant_3: struct #44 + │ │ │ ├─ [gt]: optional #40 + │ │ │ │ └─ item: integer #39 + │ │ │ ├─ [gte]: optional #40 + │ │ │ │ └─ item: integer #39 + │ │ │ ├─ [lt]: optional #40 + │ │ │ │ └─ item: integer #39 + │ │ │ └─ [lte]: optional #40 + │ │ │ └─ item: integer #39 + │ │ ├─ variant_4: struct #45 + │ │ │ └─ [in]: list #41 + │ │ │ └─ item: integer #39 + │ │ └─ variant_5: struct #46 + │ │ └─ [notIn]: list #41 + │ │ └─ item: integer #39 + │ └─ [title]: optional #74 + │ └─ item: optional '_prisma_string_filter_ex' #73 + │ └─ item: union #71 + │ ├─ variant_0: union '_prisma_string_filter' #69 + │ │ ├─ variant_0: string #56 + │ │ ├─ variant_1: struct #59 + │ │ │ └─ [equals]: string #56 + │ │ ├─ variant_2: struct #60 + │ │ │ └─ [not]: string #56 + │ │ ├─ variant_3: struct #61 + │ │ │ └─ [in]: list #58 + │ │ │ └─ item: string #56 + │ │ ├─ variant_4: struct #62 + │ │ │ └─ [notIn]: list #58 + │ │ │ └─ item: string #56 + │ │ ├─ variant_5: struct #65 + │ │ │ ├─ [contains]: string #56 + │ │ │ └─ [mode]: optional #64 + │ │ │ └─ item: string #63 enum{ '"insensitive"' } + │ │ ├─ variant_6: struct #66 + │ │ │ └─ [search]: string #56 + │ │ └─ variant_7: struct #67 + │ │ ├─ [endsWith]: optional #57 + │ │ │ └─ item: string #56 + │ │ └─ [startsWith]: optional #57 + │ │ └─ item: string #56 + │ └─ variant_1: struct #70 + │ └─ [not]: union '_prisma_string_filter' #69 + │ ├─ variant_0: string #56 + │ ├─ variant_1: struct #59 + │ │ └─ [equals]: string #56 + │ ├─ variant_2: struct #60 + │ │ └─ [not]: string #56 + │ ├─ variant_3: struct #61 + │ │ └─ [in]: list #58 + │ │ └─ item: string #56 + │ ├─ variant_4: struct #62 + │ │ └─ [notIn]: list #58 + │ │ └─ item: string #56 + │ ├─ variant_5: struct #65 + │ │ ├─ [contains]: string #56 + │ │ └─ [mode]: optional #64 + │ │ └─ item: string #63 enum{ '"insensitive"' } + │ ├─ variant_6: struct #66 + │ │ └─ [search]: string #56 + │ └─ variant_7: struct #67 + │ ├─ [endsWith]: optional #57 + │ │ └─ item: string #56 + │ └─ [startsWith]: optional #57 + │ └─ item: string #56 + └─ variant_3: struct #101 + └─ [createMany]: optional #100 + └─ item: struct #99 + └─ [data]: list #98 + └─ item: union #35 + ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #33 + │ ├─ [id]: optional #31 + │ │ └─ item: integer #24 + │ └─ [title]: string #25 + └─ variant_1: list #34 + └─ item: struct 'Post_create_input_excluding_rel_Post_User' #33 + ├─ [id]: optional #31 + │ └─ item: integer #24 + └─ [title]: string #25 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_first Post out.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_first Post out.snap index 1fb41d0fce..2421773365 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_first Post out.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_first Post out.snap @@ -2,10 +2,10 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(out) --- -root: optional 'optional_42' #43 +root: optional #42 └─ item: struct 'Post_output' #41 ├─ [author]: struct 'User_output_excluding_rel_Post_User' #39 - │ ├─ [id]: integer #16 - │ └─ [name]: string #17 - ├─ [id]: integer #25 - └─ [title]: string #26 + │ ├─ [id]: integer #15 + │ └─ [name]: string #16 + ├─ [id]: integer #23 + └─ [title]: string #24 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_first Record out.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_first Record out.snap index 5129bf60cc..629da49299 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_first Record out.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_first Record out.snap @@ -2,9 +2,9 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(out) --- -root: optional 'optional_13' #14 +root: optional #13 └─ item: struct 'Record_output' #12 - ├─ [age]: optional 'optional_7' #8 + ├─ [age]: optional #7 │ └─ item: integer #6 ├─ [created_at]: string #1 ├─ [id]: string #4 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_first User out.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_first User out.snap index 822632aca4..23719f5c75 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_first User out.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_first User out.snap @@ -2,11 +2,11 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(out) --- -root: optional 'optional_36' #37 -└─ item: struct 'User_output' #35 - ├─ [id]: integer #16 - ├─ [name]: string #17 - └─ [posts]: list 'list_32' #33 +root: optional #35 +└─ item: struct 'User_output' #34 + ├─ [id]: integer #15 + ├─ [name]: string #16 + └─ [posts]: list #32 └─ item: struct 'Post_output_excluding_rel_Post_User' #31 - ├─ [id]: integer #25 - └─ [title]: string #26 + ├─ [id]: integer #23 + └─ [title]: string #24 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many Post inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many Post inp.snap index 865b5d4fde..18b209d8ee 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many Post inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many Post inp.snap @@ -2,552 +2,76 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct 'Post_query_input' #306 -├─ [cursor]: optional 'optional_297' #298 -│ └─ item: union 'Post_cursor' #296 -│ ├─ variant_0: struct #293 -│ │ └─ [id]: integer #129 -│ └─ variant_1: struct #294 -│ └─ [title]: string #130 -├─ [distinct]: optional 'optional_303' #304 -│ └─ item: list 'Post_keys_union' #302 -│ └─ item: string #299 enum{ '"id"', '"title"', '"author"' } -├─ [orderBy]: optional 'optional_287' #288 -│ └─ item: list 'Post_order_by' #286 -│ └─ item: struct #283 -│ ├─ [author]: optional 'optional_281' #282 -│ │ └─ item: list 'User_order_by_withoutrel_Post_User' #280 -│ │ └─ item: struct #277 -│ │ ├─ [id]: optional '_prisma_sort' #79 -│ │ │ └─ item: union #76 -│ │ │ ├─ variant_0: struct #75 -│ │ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ [name]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [id]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ └─ [title]: optional '_prisma_sort' #79 -│ └─ item: union #76 -│ ├─ variant_0: struct #75 -│ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -├─ [skip]: optional 'optional_291' #292 -│ └─ item: integer '_skip' #96 -├─ [take]: optional 'optional_289' #290 -│ └─ item: integer '_take' #92 -└─ [where]: optional 'optional_275' #276 - └─ item: struct 'Post_query_where_input' #274 - ├─ [AND]: optional 'optional_269' #270 - │ └─ item: list 'list_267' #268 - │ └─ item: &Post_query_where_input #266 - ├─ [NOT]: optional 'optional_271' #272 - │ └─ item: &Post_query_where_input #266 - ├─ [OR]: optional 'optional_269' #270 - │ └─ item: list 'list_267' #268 - │ └─ item: &Post_query_where_input #266 - ├─ [author]: optional 'optional_262' #263 - │ └─ item: struct 'User_where_excluding_Post' #261 - │ ├─ [id]: optional 'optional_235' #236 - │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ └─ item: union #50 - │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_1: struct #49 - │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ ├─ [name]: optional 'optional_237' #238 - │ │ └─ item: optional '_prisma_string_filter_ex' #32 - │ │ └─ item: union #29 - │ │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ │ ├─ variant_0: string #11 - │ │ │ ├─ variant_1: struct #16 - │ │ │ │ └─ [equals]: string #11 - │ │ │ ├─ variant_2: struct #17 - │ │ │ │ └─ [not]: string #11 - │ │ │ ├─ variant_3: struct #18 - │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_4: struct #19 - │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_5: struct #23 - │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #24 - │ │ │ │ └─ [search]: string #11 - │ │ │ └─ variant_7: struct #25 - │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ variant_1: struct #28 - │ │ └─ [not]: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [posts]: optional 'optional_258' #259 - │ └─ item: union #257 - │ ├─ variant_0: struct #250 - │ │ └─ [every]: optional 'optional_248' #249 - │ │ └─ item: struct 'Post_where_excluding_Post_and_User_where_excluding_Post' #247 - │ │ ├─ [author]: optional 'optional_244' #245 - │ │ │ └─ item: &User_where_excluding_Post #243 - │ │ ├─ [id]: optional 'optional_239' #240 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ │ └─ item: union #50 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ │ ├─ variant_0: integer #37 - │ │ │ │ ├─ variant_1: struct #42 - │ │ │ │ │ └─ [equals]: integer #37 - │ │ │ │ ├─ variant_2: struct #43 - │ │ │ │ │ └─ [not]: integer #37 - │ │ │ │ ├─ variant_3: struct #44 - │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ variant_4: struct #45 - │ │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ variant_5: struct #46 - │ │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_1: struct #49 - │ │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ [title]: optional 'optional_241' #242 - │ │ └─ item: optional '_prisma_string_filter_ex' #32 - │ │ └─ item: union #29 - │ │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ │ ├─ variant_0: string #11 - │ │ │ ├─ variant_1: struct #16 - │ │ │ │ └─ [equals]: string #11 - │ │ │ ├─ variant_2: struct #17 - │ │ │ │ └─ [not]: string #11 - │ │ │ ├─ variant_3: struct #18 - │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_4: struct #19 - │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_5: struct #23 - │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #24 - │ │ │ │ └─ [search]: string #11 - │ │ │ └─ variant_7: struct #25 - │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ variant_1: struct #28 - │ │ └─ [not]: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ ├─ variant_1: struct #253 - │ │ └─ [some]: optional 'optional_251' #252 - │ │ └─ item: struct 'Post_where_excluding_Post_and_User_where_excluding_Post' #247 - │ │ ├─ [author]: optional 'optional_244' #245 - │ │ │ └─ item: &User_where_excluding_Post #243 - │ │ ├─ [id]: optional 'optional_239' #240 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ │ └─ item: union #50 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ │ ├─ variant_0: integer #37 - │ │ │ │ ├─ variant_1: struct #42 - │ │ │ │ │ └─ [equals]: integer #37 - │ │ │ │ ├─ variant_2: struct #43 - │ │ │ │ │ └─ [not]: integer #37 - │ │ │ │ ├─ variant_3: struct #44 - │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ variant_4: struct #45 - │ │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ variant_5: struct #46 - │ │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_1: struct #49 - │ │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ [title]: optional 'optional_241' #242 - │ │ └─ item: optional '_prisma_string_filter_ex' #32 - │ │ └─ item: union #29 - │ │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ │ ├─ variant_0: string #11 - │ │ │ ├─ variant_1: struct #16 - │ │ │ │ └─ [equals]: string #11 - │ │ │ ├─ variant_2: struct #17 - │ │ │ │ └─ [not]: string #11 - │ │ │ ├─ variant_3: struct #18 - │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_4: struct #19 - │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_5: struct #23 - │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #24 - │ │ │ │ └─ [search]: string #11 - │ │ │ └─ variant_7: struct #25 - │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ variant_1: struct #28 - │ │ └─ [not]: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_2: struct #256 - │ └─ [none]: optional 'optional_254' #255 - │ └─ item: struct 'Post_where_excluding_Post_and_User_where_excluding_Post' #247 - │ ├─ [author]: optional 'optional_244' #245 - │ │ └─ item: &User_where_excluding_Post #243 - │ ├─ [id]: optional 'optional_239' #240 - │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ └─ item: union #50 - │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_1: struct #49 - │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ [title]: optional 'optional_241' #242 - │ └─ item: optional '_prisma_string_filter_ex' #32 - │ └─ item: union #29 - │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_1: struct #28 - │ └─ [not]: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - ├─ [id]: optional 'optional_231' #232 - │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_1: struct #49 - │ └─ [not]: either '_prisma_integer_filter' #48 - │ ├─ variant_0: integer #37 - │ ├─ variant_1: struct #42 - │ │ └─ [equals]: integer #37 - │ ├─ variant_2: struct #43 - │ │ └─ [not]: integer #37 - │ ├─ variant_3: struct #44 - │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ └─ [lte]: optional 'optional_38' #39 - │ │ └─ item: integer #37 - │ ├─ variant_4: struct #45 - │ │ └─ [in]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_5: struct #46 - │ └─ [notIn]: list 'list_40' #41 - │ └─ item: integer #37 - └─ [title]: optional 'optional_233' #234 - └─ item: optional '_prisma_string_filter_ex' #32 - └─ item: union #29 - ├─ variant_0: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ variant_1: struct #28 - └─ [not]: union '_prisma_string_filter' #27 - ├─ variant_0: string #11 - ├─ variant_1: struct #16 - │ └─ [equals]: string #11 - ├─ variant_2: struct #17 - │ └─ [not]: string #11 - ├─ variant_3: struct #18 - │ └─ [in]: list 'list_14' #15 - │ └─ item: string #11 - ├─ variant_4: struct #19 - │ └─ [notIn]: list 'list_14' #15 - │ └─ item: string #11 - ├─ variant_5: struct #23 - │ ├─ [contains]: string #11 - │ └─ [mode]: optional 'optional_21' #22 - │ └─ item: string #20 enum{ '"insensitive"' } - ├─ variant_6: struct #24 - │ └─ [search]: string #11 - └─ variant_7: struct #25 - ├─ [endsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ [startsWith]: optional 'optional_12' #13 - └─ item: string #11 +root: struct 'Post_query_input' #262 +├─ [cursor]: optional #255 +│ └─ item: union 'Post_cursor' #254 +│ ├─ variant_0: struct #251 +│ │ └─ [id]: integer #119 +│ └─ variant_1: struct #252 +│ └─ [title]: string #120 +├─ [distinct]: optional #260 +│ └─ item: list 'Post_keys_union' #259 +│ └─ item: string #257 enum{ '"id"', '"title"', '"author"' } +├─ [orderBy]: optional #247 +│ └─ item: list 'Post_order_by' #246 +│ └─ item: struct #244 +│ ├─ [author]: optional #243 +│ │ └─ item: list 'User_order_by_withoutrel_Post_User' #242 +│ │ └─ item: struct #240 +│ │ ├─ [id]: &_prisma_sort #63 +│ │ └─ [name]: &_prisma_sort #63 +│ ├─ [id]: &_prisma_sort #63 +│ └─ [title]: &_prisma_sort #63 +├─ [skip]: optional #249 +│ └─ item: &_skip #87 +├─ [take]: optional #248 +│ └─ item: &_take #83 +└─ [where]: optional #237 + └─ item: struct 'Post_query_where_input' #236 + ├─ [AND]: optional #233 + │ └─ item: list #232 + │ └─ item: &Post_query_where_input #231 + ├─ [NOT]: optional #234 + │ └─ item: &Post_query_where_input #231 + ├─ [OR]: optional #233 + │ └─ item: list #232 + │ └─ item: &Post_query_where_input #231 + ├─ [author]: optional #228 + │ └─ item: struct 'User_where_excluding_Post' #227 + │ ├─ [id]: optional #209 + │ │ └─ item: &_prisma_integer_filter_ex #35 + │ ├─ [name]: optional #210 + │ │ └─ item: &_prisma_string_filter_ex #13 + │ └─ [posts]: optional #225 + │ └─ item: union #224 + │ ├─ variant_0: struct #219 + │ │ └─ [every]: optional #218 + │ │ └─ item: struct 'Post_where_excluding_User_and_Post' #217 + │ │ ├─ [author]: optional #215 + │ │ │ └─ item: &User_where_excluding_Post #214 + │ │ ├─ [id]: optional #212 + │ │ │ └─ item: &_prisma_integer_filter_ex #35 + │ │ └─ [title]: optional #213 + │ │ └─ item: &_prisma_string_filter_ex #13 + │ ├─ variant_1: struct #221 + │ │ └─ [some]: optional #220 + │ │ └─ item: struct 'Post_where_excluding_User_and_Post' #217 + │ │ ├─ [author]: optional #215 + │ │ │ └─ item: &User_where_excluding_Post #214 + │ │ ├─ [id]: optional #212 + │ │ │ └─ item: &_prisma_integer_filter_ex #35 + │ │ └─ [title]: optional #213 + │ │ └─ item: &_prisma_string_filter_ex #13 + │ └─ variant_2: struct #223 + │ └─ [none]: optional #222 + │ └─ item: struct 'Post_where_excluding_User_and_Post' #217 + │ ├─ [author]: optional #215 + │ │ └─ item: &User_where_excluding_Post #214 + │ ├─ [id]: optional #212 + │ │ └─ item: &_prisma_integer_filter_ex #35 + │ └─ [title]: optional #213 + │ └─ item: &_prisma_string_filter_ex #13 + ├─ [id]: optional #206 + │ └─ item: &_prisma_integer_filter_ex #35 + └─ [title]: optional #207 + └─ item: &_prisma_string_filter_ex #13 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many Post out.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many Post out.snap index 08547cd32a..b9bef9ed9d 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many Post out.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many Post out.snap @@ -2,8 +2,8 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(out) --- -root: list 'list_309' #310 -└─ item: struct 'Post_with_nested_count' #308 - ├─ [author]: &User #131 - ├─ [id]: integer #127 - └─ [title]: string #130 +root: list #266 +└─ item: struct 'Post_with_nested_count' #265 + ├─ [author]: &User #121 + ├─ [id]: integer #117 + └─ [title]: string #120 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many Record inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many Record inp.snap index 8ccffa757c..5b5c364434 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many Record inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many Record inp.snap @@ -2,251 +2,147 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct 'Record_query_input' #114 -├─ [cursor]: optional 'optional_105' #106 -│ └─ item: union 'Record_cursor' #104 -│ ├─ variant_0: struct #99 +root: struct 'Record_query_input' #105 +├─ [cursor]: optional #98 +│ └─ item: union 'Record_cursor' #97 +│ ├─ variant_0: struct #92 │ │ └─ [id]: string #4 -│ ├─ variant_1: struct #100 +│ ├─ variant_1: struct #93 │ │ └─ [name]: string #5 -│ ├─ variant_2: struct #101 +│ ├─ variant_2: struct #94 │ │ └─ [age]: integer #6 -│ └─ variant_3: struct #102 +│ └─ variant_3: struct #95 │ └─ [created_at]: string #1 -├─ [distinct]: optional 'optional_111' #112 -│ └─ item: list 'Record_keys_union' #110 -│ └─ item: string #107 enum{ '"id"', '"name"', '"age"', '"created_at"' } -├─ [orderBy]: optional 'optional_89' #90 -│ └─ item: list 'Record_order_by' #88 -│ └─ item: struct #85 -│ ├─ [age]: optional '_prisma_sort_nullable' #84 -│ │ └─ item: union #81 -│ │ ├─ variant_0: struct #80 -│ │ │ ├─ [nulls]: string '_prisma_nulls_order' #74 enum{ '"first"', '"last"' } -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [created_at]: optional '_prisma_sort' #79 +├─ [distinct]: optional #103 +│ └─ item: list 'Record_keys_union' #102 +│ └─ item: string #100 enum{ '"id"', '"name"', '"age"', '"created_at"' } +├─ [orderBy]: optional #82 +│ └─ item: list 'Record_order_by' #81 +│ └─ item: struct #79 +│ ├─ [age]: optional '_prisma_sort_nullable' #78 │ │ └─ item: union #76 │ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [id]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ └─ [name]: optional '_prisma_sort' #79 -│ └─ item: union #76 -│ ├─ variant_0: struct #75 -│ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -├─ [skip]: optional 'optional_97' #98 -│ └─ item: integer '_skip' #96 -├─ [take]: optional 'optional_93' #94 -│ └─ item: integer '_take' #92 -└─ [where]: optional 'optional_69' #70 - └─ item: struct 'Record_query_where_input' #68 - ├─ [AND]: optional 'optional_63' #64 - │ └─ item: list 'list_61' #62 - │ └─ item: &Record_query_where_input #60 - ├─ [NOT]: optional 'optional_65' #66 - │ └─ item: &Record_query_where_input #60 - ├─ [OR]: optional 'optional_63' #64 - │ └─ item: list 'list_61' #62 - │ └─ item: &Record_query_where_input #60 - ├─ [age]: optional 'optional_54' #55 - │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: either '_prisma_integer_filter' #48 +│ │ │ ├─ [nulls]: &_prisma_nulls_order #67 enum{ '"first"', '"last"' } +│ │ │ └─ [sort]: &_prisma_sort_order #64 enum{ '"asc"', '"desc"' } +│ │ └─ variant_1: &_prisma_sort_order #64 enum{ '"asc"', '"desc"' } +│ ├─ [created_at]: &_prisma_sort #63 +│ ├─ [id]: optional '_prisma_sort' #73 +│ │ └─ item: union #71 +│ │ ├─ variant_0: struct #70 +│ │ │ └─ [sort]: string '_prisma_sort_order' #66 enum{ '"asc"', '"desc"' } +│ │ └─ variant_1: string '_prisma_sort_order' #66 enum{ '"asc"', '"desc"' } +│ └─ [name]: &_prisma_sort #63 +├─ [skip]: optional #90 +│ └─ item: integer '_skip' #89 +├─ [take]: optional #86 +│ └─ item: integer '_take' #85 +└─ [where]: optional #61 + └─ item: struct 'Record_query_where_input' #60 + ├─ [AND]: optional #57 + │ └─ item: list #56 + │ └─ item: &Record_query_where_input #55 + ├─ [NOT]: optional #58 + │ └─ item: &Record_query_where_input #55 + ├─ [OR]: optional #57 + │ └─ item: list #56 + │ └─ item: &Record_query_where_input #55 + ├─ [age]: optional #51 + │ └─ item: optional '_prisma_integer_filter_ex' #50 + │ └─ item: union #48 + │ ├─ variant_0: either '_prisma_integer_filter' #46 │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 + │ │ ├─ variant_1: struct #40 │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 + │ │ ├─ variant_2: struct #41 │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 + │ │ ├─ variant_3: struct #42 + │ │ │ ├─ [gt]: optional #38 │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 + │ │ │ ├─ [gte]: optional #38 │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 + │ │ │ ├─ [lt]: optional #38 │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 + │ │ │ └─ [lte]: optional #38 │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 + │ │ ├─ variant_4: struct #43 + │ │ │ └─ [in]: list #39 │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 + │ │ └─ variant_5: struct #44 + │ │ └─ [notIn]: list #39 │ │ └─ item: integer #37 - │ └─ variant_1: struct #49 - │ └─ [not]: either '_prisma_integer_filter' #48 + │ └─ variant_1: struct #47 + │ └─ [not]: either '_prisma_integer_filter' #46 │ ├─ variant_0: integer #37 - │ ├─ variant_1: struct #42 + │ ├─ variant_1: struct #40 │ │ └─ [equals]: integer #37 - │ ├─ variant_2: struct #43 + │ ├─ variant_2: struct #41 │ │ └─ [not]: integer #37 - │ ├─ variant_3: struct #44 - │ │ ├─ [gt]: optional 'optional_38' #39 + │ ├─ variant_3: struct #42 + │ │ ├─ [gt]: optional #38 │ │ │ └─ item: integer #37 - │ │ ├─ [gte]: optional 'optional_38' #39 + │ │ ├─ [gte]: optional #38 │ │ │ └─ item: integer #37 - │ │ ├─ [lt]: optional 'optional_38' #39 + │ │ ├─ [lt]: optional #38 │ │ │ └─ item: integer #37 - │ │ └─ [lte]: optional 'optional_38' #39 + │ │ └─ [lte]: optional #38 │ │ └─ item: integer #37 - │ ├─ variant_4: struct #45 - │ │ └─ [in]: list 'list_40' #41 + │ ├─ variant_4: struct #43 + │ │ └─ [in]: list #39 │ │ └─ item: integer #37 - │ └─ variant_5: struct #46 - │ └─ [notIn]: list 'list_40' #41 + │ └─ variant_5: struct #44 + │ └─ [notIn]: list #39 │ └─ item: integer #37 - ├─ [created_at]: optional 'optional_56' #57 - │ └─ item: optional '_prisma_string_filter_ex' #32 - │ └─ item: union #29 - │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_1: struct #28 - │ └─ [not]: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - ├─ [id]: optional 'optional_33' #34 + ├─ [created_at]: optional #52 + │ └─ item: &_prisma_string_filter_ex #13 + ├─ [id]: optional #33 │ └─ item: optional '_prisma_string_filter_ex' #32 - │ └─ item: union #29 - │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_1: struct #28 - │ └─ [not]: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ [name]: optional 'optional_35' #36 - └─ item: optional '_prisma_string_filter_ex' #32 - └─ item: union #29 - ├─ variant_0: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ variant_1: struct #28 - └─ [not]: union '_prisma_string_filter' #27 - ├─ variant_0: string #11 - ├─ variant_1: struct #16 - │ └─ [equals]: string #11 - ├─ variant_2: struct #17 - │ └─ [not]: string #11 - ├─ variant_3: struct #18 - │ └─ [in]: list 'list_14' #15 - │ └─ item: string #11 - ├─ variant_4: struct #19 - │ └─ [notIn]: list 'list_14' #15 - │ └─ item: string #11 - ├─ variant_5: struct #23 - │ ├─ [contains]: string #11 - │ └─ [mode]: optional 'optional_21' #22 - │ └─ item: string #20 enum{ '"insensitive"' } - ├─ variant_6: struct #24 - │ └─ [search]: string #11 - └─ variant_7: struct #25 - ├─ [endsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ [startsWith]: optional 'optional_12' #13 - └─ item: string #11 + │ └─ item: union #30 + │ ├─ variant_0: union '_prisma_string_filter' #28 + │ │ ├─ variant_0: string #15 + │ │ ├─ variant_1: struct #18 + │ │ │ └─ [equals]: string #15 + │ │ ├─ variant_2: struct #19 + │ │ │ └─ [not]: string #15 + │ │ ├─ variant_3: struct #20 + │ │ │ └─ [in]: list #17 + │ │ │ └─ item: string #15 + │ │ ├─ variant_4: struct #21 + │ │ │ └─ [notIn]: list #17 + │ │ │ └─ item: string #15 + │ │ ├─ variant_5: struct #24 + │ │ │ ├─ [contains]: string #15 + │ │ │ └─ [mode]: optional #23 + │ │ │ └─ item: string #22 enum{ '"insensitive"' } + │ │ ├─ variant_6: struct #25 + │ │ │ └─ [search]: string #15 + │ │ └─ variant_7: struct #26 + │ │ ├─ [endsWith]: optional #16 + │ │ │ └─ item: string #15 + │ │ └─ [startsWith]: optional #16 + │ │ └─ item: string #15 + │ └─ variant_1: struct #29 + │ └─ [not]: union '_prisma_string_filter' #28 + │ ├─ variant_0: string #15 + │ ├─ variant_1: struct #18 + │ │ └─ [equals]: string #15 + │ ├─ variant_2: struct #19 + │ │ └─ [not]: string #15 + │ ├─ variant_3: struct #20 + │ │ └─ [in]: list #17 + │ │ └─ item: string #15 + │ ├─ variant_4: struct #21 + │ │ └─ [notIn]: list #17 + │ │ └─ item: string #15 + │ ├─ variant_5: struct #24 + │ │ ├─ [contains]: string #15 + │ │ └─ [mode]: optional #23 + │ │ └─ item: string #22 enum{ '"insensitive"' } + │ ├─ variant_6: struct #25 + │ │ └─ [search]: string #15 + │ └─ variant_7: struct #26 + │ ├─ [endsWith]: optional #16 + │ │ └─ item: string #15 + │ └─ [startsWith]: optional #16 + │ └─ item: string #15 + └─ [name]: optional #34 + └─ item: &_prisma_string_filter_ex #13 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many Record out.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many Record out.snap index 985b48897e..8082e7c3be 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many Record out.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many Record out.snap @@ -2,8 +2,8 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(out) --- -root: list 'list_117' #118 -└─ item: struct 'Record_with_nested_count' #116 +root: list #109 +└─ item: struct 'Record_with_nested_count' #108 ├─ [age]: optional #7 │ └─ item: integer #6 ├─ [created_at]: string #0 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many User inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many User inp.snap index 24ce773079..48218417a3 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many User inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many User inp.snap @@ -2,789 +2,117 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct 'User_query_input' #217 -├─ [cursor]: optional 'optional_208' #209 -│ └─ item: union 'User_cursor' #207 -│ ├─ variant_0: struct #204 -│ │ └─ [id]: integer #120 -│ └─ variant_1: struct #205 -│ └─ [name]: string #121 -├─ [distinct]: optional 'optional_214' #215 -│ └─ item: list 'User_keys_union' #213 -│ └─ item: string #210 enum{ '"id"', '"name"', '"posts"' } -├─ [orderBy]: optional 'optional_198' #199 -│ └─ item: list 'User_order_by' #197 -│ └─ item: struct #194 -│ ├─ [id]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [name]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ └─ [posts]: optional '_prisma_sort_by_aggregates' #193 -│ └─ item: struct #190 -│ ├─ [_avg]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [_count]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [_max]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [_min]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ └─ [_sum]: optional '_prisma_sort' #79 -│ └─ item: union #76 -│ ├─ variant_0: struct #75 -│ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -├─ [skip]: optional 'optional_202' #203 -│ └─ item: integer '_skip' #96 -├─ [take]: optional 'optional_200' #201 -│ └─ item: integer '_take' #92 -└─ [where]: optional 'optional_188' #189 - └─ item: struct 'User_query_where_input' #187 - ├─ [AND]: optional 'optional_182' #183 - │ └─ item: list 'list_180' #181 - │ └─ item: &User_query_where_input #179 - ├─ [NOT]: optional 'optional_184' #185 - │ └─ item: &User_query_where_input #179 - ├─ [OR]: optional 'optional_182' #183 - │ └─ item: list 'list_180' #181 - │ └─ item: &User_query_where_input #179 - ├─ [id]: optional 'optional_134' #135 - │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_1: struct #49 - │ └─ [not]: either '_prisma_integer_filter' #48 - │ ├─ variant_0: integer #37 - │ ├─ variant_1: struct #42 - │ │ └─ [equals]: integer #37 - │ ├─ variant_2: struct #43 - │ │ └─ [not]: integer #37 - │ ├─ variant_3: struct #44 - │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ └─ [lte]: optional 'optional_38' #39 - │ │ └─ item: integer #37 - │ ├─ variant_4: struct #45 - │ │ └─ [in]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_5: struct #46 - │ └─ [notIn]: list 'list_40' #41 - │ └─ item: integer #37 - ├─ [name]: optional 'optional_136' #137 - │ └─ item: optional '_prisma_string_filter_ex' #32 - │ └─ item: union #29 - │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_1: struct #28 - │ └─ [not]: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ [posts]: optional 'optional_175' #176 - └─ item: union #174 - ├─ variant_0: struct #167 - │ └─ [every]: optional 'optional_165' #166 - │ └─ item: struct 'Post_where_excluding_User' #164 - │ ├─ [author]: optional 'optional_161' #162 - │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #160 - │ │ ├─ [id]: optional 'optional_142' #143 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ │ └─ item: union #50 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ │ ├─ variant_0: integer #37 - │ │ │ │ ├─ variant_1: struct #42 - │ │ │ │ │ └─ [equals]: integer #37 - │ │ │ │ ├─ variant_2: struct #43 - │ │ │ │ │ └─ [not]: integer #37 - │ │ │ │ ├─ variant_3: struct #44 - │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ variant_4: struct #45 - │ │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ variant_5: struct #46 - │ │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_1: struct #49 - │ │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ ├─ [name]: optional 'optional_144' #145 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #32 - │ │ │ └─ item: union #29 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ │ │ ├─ variant_0: string #11 - │ │ │ │ ├─ variant_1: struct #16 - │ │ │ │ │ └─ [equals]: string #11 - │ │ │ │ ├─ variant_2: struct #17 - │ │ │ │ │ └─ [not]: string #11 - │ │ │ │ ├─ variant_3: struct #18 - │ │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ │ └─ item: string #11 - │ │ │ │ ├─ variant_4: struct #19 - │ │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ │ └─ item: string #11 - │ │ │ │ ├─ variant_5: struct #23 - │ │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #24 - │ │ │ │ │ └─ [search]: string #11 - │ │ │ │ └─ variant_7: struct #25 - │ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ │ └─ item: string #11 - │ │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ variant_1: struct #28 - │ │ │ └─ [not]: union '_prisma_string_filter' #27 - │ │ │ ├─ variant_0: string #11 - │ │ │ ├─ variant_1: struct #16 - │ │ │ │ └─ [equals]: string #11 - │ │ │ ├─ variant_2: struct #17 - │ │ │ │ └─ [not]: string #11 - │ │ │ ├─ variant_3: struct #18 - │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_4: struct #19 - │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_5: struct #23 - │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #24 - │ │ │ │ └─ [search]: string #11 - │ │ │ └─ variant_7: struct #25 - │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [posts]: optional 'optional_157' #158 - │ │ └─ item: union #156 - │ │ ├─ variant_0: struct #149 - │ │ │ └─ [every]: optional 'optional_147' #148 - │ │ │ └─ item: &Post_where_excluding_User #146 - │ │ ├─ variant_1: struct #152 - │ │ │ └─ [some]: optional 'optional_150' #151 - │ │ │ └─ item: &Post_where_excluding_User #146 - │ │ └─ variant_2: struct #155 - │ │ └─ [none]: optional 'optional_153' #154 - │ │ └─ item: &Post_where_excluding_User #146 - │ ├─ [id]: optional 'optional_138' #139 - │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ └─ item: union #50 - │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_1: struct #49 - │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ [title]: optional 'optional_140' #141 - │ └─ item: optional '_prisma_string_filter_ex' #32 - │ └─ item: union #29 - │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_1: struct #28 - │ └─ [not]: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - ├─ variant_1: struct #170 - │ └─ [some]: optional 'optional_168' #169 - │ └─ item: struct 'Post_where_excluding_User' #164 - │ ├─ [author]: optional 'optional_161' #162 - │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #160 - │ │ ├─ [id]: optional 'optional_142' #143 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ │ └─ item: union #50 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ │ ├─ variant_0: integer #37 - │ │ │ │ ├─ variant_1: struct #42 - │ │ │ │ │ └─ [equals]: integer #37 - │ │ │ │ ├─ variant_2: struct #43 - │ │ │ │ │ └─ [not]: integer #37 - │ │ │ │ ├─ variant_3: struct #44 - │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ variant_4: struct #45 - │ │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ variant_5: struct #46 - │ │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_1: struct #49 - │ │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ ├─ [name]: optional 'optional_144' #145 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #32 - │ │ │ └─ item: union #29 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ │ │ ├─ variant_0: string #11 - │ │ │ │ ├─ variant_1: struct #16 - │ │ │ │ │ └─ [equals]: string #11 - │ │ │ │ ├─ variant_2: struct #17 - │ │ │ │ │ └─ [not]: string #11 - │ │ │ │ ├─ variant_3: struct #18 - │ │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ │ └─ item: string #11 - │ │ │ │ ├─ variant_4: struct #19 - │ │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ │ └─ item: string #11 - │ │ │ │ ├─ variant_5: struct #23 - │ │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #24 - │ │ │ │ │ └─ [search]: string #11 - │ │ │ │ └─ variant_7: struct #25 - │ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ │ └─ item: string #11 - │ │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ variant_1: struct #28 - │ │ │ └─ [not]: union '_prisma_string_filter' #27 - │ │ │ ├─ variant_0: string #11 - │ │ │ ├─ variant_1: struct #16 - │ │ │ │ └─ [equals]: string #11 - │ │ │ ├─ variant_2: struct #17 - │ │ │ │ └─ [not]: string #11 - │ │ │ ├─ variant_3: struct #18 - │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_4: struct #19 - │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_5: struct #23 - │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #24 - │ │ │ │ └─ [search]: string #11 - │ │ │ └─ variant_7: struct #25 - │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [posts]: optional 'optional_157' #158 - │ │ └─ item: union #156 - │ │ ├─ variant_0: struct #149 - │ │ │ └─ [every]: optional 'optional_147' #148 - │ │ │ └─ item: &Post_where_excluding_User #146 - │ │ ├─ variant_1: struct #152 - │ │ │ └─ [some]: optional 'optional_150' #151 - │ │ │ └─ item: &Post_where_excluding_User #146 - │ │ └─ variant_2: struct #155 - │ │ └─ [none]: optional 'optional_153' #154 - │ │ └─ item: &Post_where_excluding_User #146 - │ ├─ [id]: optional 'optional_138' #139 - │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ └─ item: union #50 - │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_1: struct #49 - │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ [title]: optional 'optional_140' #141 - │ └─ item: optional '_prisma_string_filter_ex' #32 - │ └─ item: union #29 - │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_1: struct #28 - │ └─ [not]: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ variant_2: struct #173 - └─ [none]: optional 'optional_171' #172 - └─ item: struct 'Post_where_excluding_User' #164 - ├─ [author]: optional 'optional_161' #162 - │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #160 - │ ├─ [id]: optional 'optional_142' #143 - │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ └─ item: union #50 - │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_1: struct #49 - │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ ├─ [name]: optional 'optional_144' #145 - │ │ └─ item: optional '_prisma_string_filter_ex' #32 - │ │ └─ item: union #29 - │ │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ │ ├─ variant_0: string #11 - │ │ │ ├─ variant_1: struct #16 - │ │ │ │ └─ [equals]: string #11 - │ │ │ ├─ variant_2: struct #17 - │ │ │ │ └─ [not]: string #11 - │ │ │ ├─ variant_3: struct #18 - │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_4: struct #19 - │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_5: struct #23 - │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #24 - │ │ │ │ └─ [search]: string #11 - │ │ │ └─ variant_7: struct #25 - │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ variant_1: struct #28 - │ │ └─ [not]: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [posts]: optional 'optional_157' #158 - │ └─ item: union #156 - │ ├─ variant_0: struct #149 - │ │ └─ [every]: optional 'optional_147' #148 - │ │ └─ item: &Post_where_excluding_User #146 - │ ├─ variant_1: struct #152 - │ │ └─ [some]: optional 'optional_150' #151 - │ │ └─ item: &Post_where_excluding_User #146 - │ └─ variant_2: struct #155 - │ └─ [none]: optional 'optional_153' #154 - │ └─ item: &Post_where_excluding_User #146 - ├─ [id]: optional 'optional_138' #139 - │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_1: struct #49 - │ └─ [not]: either '_prisma_integer_filter' #48 - │ ├─ variant_0: integer #37 - │ ├─ variant_1: struct #42 - │ │ └─ [equals]: integer #37 - │ ├─ variant_2: struct #43 - │ │ └─ [not]: integer #37 - │ ├─ variant_3: struct #44 - │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ └─ [lte]: optional 'optional_38' #39 - │ │ └─ item: integer #37 - │ ├─ variant_4: struct #45 - │ │ └─ [in]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_5: struct #46 - │ └─ [notIn]: list 'list_40' #41 - │ └─ item: integer #37 - └─ [title]: optional 'optional_140' #141 - └─ item: optional '_prisma_string_filter_ex' #32 - └─ item: union #29 - ├─ variant_0: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ variant_1: struct #28 - └─ [not]: union '_prisma_string_filter' #27 - ├─ variant_0: string #11 - ├─ variant_1: struct #16 - │ └─ [equals]: string #11 - ├─ variant_2: struct #17 - │ └─ [not]: string #11 - ├─ variant_3: struct #18 - │ └─ [in]: list 'list_14' #15 - │ └─ item: string #11 - ├─ variant_4: struct #19 - │ └─ [notIn]: list 'list_14' #15 - │ └─ item: string #11 - ├─ variant_5: struct #23 - │ ├─ [contains]: string #11 - │ └─ [mode]: optional 'optional_21' #22 - │ └─ item: string #20 enum{ '"insensitive"' } - ├─ variant_6: struct #24 - │ └─ [search]: string #11 - └─ variant_7: struct #25 - ├─ [endsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ [startsWith]: optional 'optional_12' #13 - └─ item: string #11 +root: struct 'User_query_input' #189 +├─ [cursor]: optional #182 +│ └─ item: union 'User_cursor' #181 +│ ├─ variant_0: struct #178 +│ │ └─ [id]: integer #111 +│ └─ variant_1: struct #179 +│ └─ [name]: string #112 +├─ [distinct]: optional #187 +│ └─ item: list 'User_keys_union' #186 +│ └─ item: string #184 enum{ '"id"', '"name"', '"posts"' } +├─ [orderBy]: optional #174 +│ └─ item: list 'User_order_by' #173 +│ └─ item: struct #171 +│ ├─ [id]: &_prisma_sort #63 +│ ├─ [name]: &_prisma_sort #63 +│ └─ [posts]: optional '_prisma_sort_by_aggregates' #170 +│ └─ item: struct #168 +│ ├─ [_avg]: &_prisma_sort #63 +│ ├─ [_count]: &_prisma_sort #63 +│ ├─ [_max]: &_prisma_sort #63 +│ ├─ [_min]: &_prisma_sort #63 +│ └─ [_sum]: &_prisma_sort #63 +├─ [skip]: optional #176 +│ └─ item: &_skip #87 +├─ [take]: optional #175 +│ └─ item: &_take #83 +└─ [where]: optional #165 + └─ item: struct 'User_query_where_input' #164 + ├─ [AND]: optional #161 + │ └─ item: list #160 + │ └─ item: &User_query_where_input #159 + ├─ [NOT]: optional #162 + │ └─ item: &User_query_where_input #159 + ├─ [OR]: optional #161 + │ └─ item: list #160 + │ └─ item: &User_query_where_input #159 + ├─ [id]: optional #127 + │ └─ item: &_prisma_integer_filter_ex #35 + ├─ [name]: optional #128 + │ └─ item: &_prisma_string_filter_ex #13 + └─ [posts]: optional #156 + └─ item: union #155 + ├─ variant_0: struct #150 + │ └─ [every]: optional #149 + │ └─ item: struct 'Post_where_excluding_User' #148 + │ ├─ [author]: optional #146 + │ │ └─ item: struct 'User_where_excluding_Post_and_User' #145 + │ │ ├─ [id]: optional #133 + │ │ │ └─ item: &_prisma_integer_filter_ex #35 + │ │ ├─ [name]: optional #134 + │ │ │ └─ item: &_prisma_string_filter_ex #13 + │ │ └─ [posts]: optional #143 + │ │ └─ item: union #142 + │ │ ├─ variant_0: struct #137 + │ │ │ └─ [every]: optional #136 + │ │ │ └─ item: &Post_where_excluding_User #135 + │ │ ├─ variant_1: struct #139 + │ │ │ └─ [some]: optional #138 + │ │ │ └─ item: &Post_where_excluding_User #135 + │ │ └─ variant_2: struct #141 + │ │ └─ [none]: optional #140 + │ │ └─ item: &Post_where_excluding_User #135 + │ ├─ [id]: optional #130 + │ │ └─ item: &_prisma_integer_filter_ex #35 + │ └─ [title]: optional #131 + │ └─ item: &_prisma_string_filter_ex #13 + ├─ variant_1: struct #152 + │ └─ [some]: optional #151 + │ └─ item: struct 'Post_where_excluding_User' #148 + │ ├─ [author]: optional #146 + │ │ └─ item: struct 'User_where_excluding_Post_and_User' #145 + │ │ ├─ [id]: optional #133 + │ │ │ └─ item: &_prisma_integer_filter_ex #35 + │ │ ├─ [name]: optional #134 + │ │ │ └─ item: &_prisma_string_filter_ex #13 + │ │ └─ [posts]: optional #143 + │ │ └─ item: union #142 + │ │ ├─ variant_0: struct #137 + │ │ │ └─ [every]: optional #136 + │ │ │ └─ item: &Post_where_excluding_User #135 + │ │ ├─ variant_1: struct #139 + │ │ │ └─ [some]: optional #138 + │ │ │ └─ item: &Post_where_excluding_User #135 + │ │ └─ variant_2: struct #141 + │ │ └─ [none]: optional #140 + │ │ └─ item: &Post_where_excluding_User #135 + │ ├─ [id]: optional #130 + │ │ └─ item: &_prisma_integer_filter_ex #35 + │ └─ [title]: optional #131 + │ └─ item: &_prisma_string_filter_ex #13 + └─ variant_2: struct #154 + └─ [none]: optional #153 + └─ item: struct 'Post_where_excluding_User' #148 + ├─ [author]: optional #146 + │ └─ item: struct 'User_where_excluding_Post_and_User' #145 + │ ├─ [id]: optional #133 + │ │ └─ item: &_prisma_integer_filter_ex #35 + │ ├─ [name]: optional #134 + │ │ └─ item: &_prisma_string_filter_ex #13 + │ └─ [posts]: optional #143 + │ └─ item: union #142 + │ ├─ variant_0: struct #137 + │ │ └─ [every]: optional #136 + │ │ └─ item: &Post_where_excluding_User #135 + │ ├─ variant_1: struct #139 + │ │ └─ [some]: optional #138 + │ │ └─ item: &Post_where_excluding_User #135 + │ └─ variant_2: struct #141 + │ └─ [none]: optional #140 + │ └─ item: &Post_where_excluding_User #135 + ├─ [id]: optional #130 + │ └─ item: &_prisma_integer_filter_ex #35 + └─ [title]: optional #131 + └─ item: &_prisma_string_filter_ex #13 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many User out.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many User out.snap index 1ee2632751..5b84668a2a 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many User out.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_many User out.snap @@ -2,14 +2,14 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(out) --- -root: list 'list_229' #230 -└─ item: struct 'User_with_nested_count' #228 - ├─ [_count]: struct #226 - │ └─ [posts]: optional '_count' #225 - │ └─ item: integer #222 - ├─ [id]: integer #119 - ├─ [name]: string #121 - └─ [posts]: list 'list_220' #221 - └─ item: struct 'Post_with_nested_count_excluding_rel_Post_User' #219 - ├─ [id]: integer #127 - └─ [title]: string #130 +root: list #202 +└─ item: struct 'User_with_nested_count' #201 + ├─ [_count]: struct #199 + │ └─ [posts]: optional '_count' #198 + │ └─ item: integer #196 + ├─ [id]: integer #110 + ├─ [name]: string #112 + └─ [posts]: list #194 + └─ item: struct 'Post_with_nested_count_excluding_rel_Post_User' #193 + ├─ [id]: integer #117 + └─ [title]: string #120 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique Post inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique Post inp.snap index ace0adaeff..dc008b06c2 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique Post inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique Post inp.snap @@ -2,513 +2,53 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct #207 -└─ [where]: optional 'optional_205' #206 - └─ item: struct 'Post_query_where_unique_input' #204 - ├─ [AND]: optional 'optional_199' #200 - │ └─ item: list 'list_197' #198 - │ └─ item: &Post_query_where_unique_input #196 - ├─ [NOT]: optional 'optional_201' #202 - │ └─ item: &Post_query_where_unique_input #196 - ├─ [OR]: optional 'optional_199' #200 - │ └─ item: list 'list_197' #198 - │ └─ item: &Post_query_where_unique_input #196 - ├─ [author]: optional 'optional_192' #193 - │ └─ item: struct 'User_where_excluding_Post' #191 - │ ├─ [id]: optional 'optional_165' #166 - │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ └─ item: union #50 - │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_1: struct #49 - │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ ├─ [name]: optional 'optional_167' #168 - │ │ └─ item: optional '_prisma_string_filter_ex' #32 - │ │ └─ item: union #29 - │ │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ │ ├─ variant_0: string #11 - │ │ │ ├─ variant_1: struct #16 - │ │ │ │ └─ [equals]: string #11 - │ │ │ ├─ variant_2: struct #17 - │ │ │ │ └─ [not]: string #11 - │ │ │ ├─ variant_3: struct #18 - │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_4: struct #19 - │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_5: struct #23 - │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #24 - │ │ │ │ └─ [search]: string #11 - │ │ │ └─ variant_7: struct #25 - │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ variant_1: struct #28 - │ │ └─ [not]: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [posts]: optional 'optional_188' #189 - │ └─ item: union #187 - │ ├─ variant_0: struct #180 - │ │ └─ [every]: optional 'optional_178' #179 - │ │ └─ item: struct 'Post_where_excluding_Post_and_User_where_excluding_Post' #177 - │ │ ├─ [author]: optional 'optional_174' #175 - │ │ │ └─ item: &User_where_excluding_Post #173 - │ │ ├─ [id]: optional 'optional_169' #170 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ │ └─ item: union #50 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ │ ├─ variant_0: integer #37 - │ │ │ │ ├─ variant_1: struct #42 - │ │ │ │ │ └─ [equals]: integer #37 - │ │ │ │ ├─ variant_2: struct #43 - │ │ │ │ │ └─ [not]: integer #37 - │ │ │ │ ├─ variant_3: struct #44 - │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ variant_4: struct #45 - │ │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ variant_5: struct #46 - │ │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_1: struct #49 - │ │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ [title]: optional 'optional_171' #172 - │ │ └─ item: optional '_prisma_string_filter_ex' #32 - │ │ └─ item: union #29 - │ │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ │ ├─ variant_0: string #11 - │ │ │ ├─ variant_1: struct #16 - │ │ │ │ └─ [equals]: string #11 - │ │ │ ├─ variant_2: struct #17 - │ │ │ │ └─ [not]: string #11 - │ │ │ ├─ variant_3: struct #18 - │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_4: struct #19 - │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_5: struct #23 - │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #24 - │ │ │ │ └─ [search]: string #11 - │ │ │ └─ variant_7: struct #25 - │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ variant_1: struct #28 - │ │ └─ [not]: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ ├─ variant_1: struct #183 - │ │ └─ [some]: optional 'optional_181' #182 - │ │ └─ item: struct 'Post_where_excluding_Post_and_User_where_excluding_Post' #177 - │ │ ├─ [author]: optional 'optional_174' #175 - │ │ │ └─ item: &User_where_excluding_Post #173 - │ │ ├─ [id]: optional 'optional_169' #170 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ │ └─ item: union #50 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ │ ├─ variant_0: integer #37 - │ │ │ │ ├─ variant_1: struct #42 - │ │ │ │ │ └─ [equals]: integer #37 - │ │ │ │ ├─ variant_2: struct #43 - │ │ │ │ │ └─ [not]: integer #37 - │ │ │ │ ├─ variant_3: struct #44 - │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ variant_4: struct #45 - │ │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ variant_5: struct #46 - │ │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_1: struct #49 - │ │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ [title]: optional 'optional_171' #172 - │ │ └─ item: optional '_prisma_string_filter_ex' #32 - │ │ └─ item: union #29 - │ │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ │ ├─ variant_0: string #11 - │ │ │ ├─ variant_1: struct #16 - │ │ │ │ └─ [equals]: string #11 - │ │ │ ├─ variant_2: struct #17 - │ │ │ │ └─ [not]: string #11 - │ │ │ ├─ variant_3: struct #18 - │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_4: struct #19 - │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_5: struct #23 - │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #24 - │ │ │ │ └─ [search]: string #11 - │ │ │ └─ variant_7: struct #25 - │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ variant_1: struct #28 - │ │ └─ [not]: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_2: struct #186 - │ └─ [none]: optional 'optional_184' #185 - │ └─ item: struct 'Post_where_excluding_Post_and_User_where_excluding_Post' #177 - │ ├─ [author]: optional 'optional_174' #175 - │ │ └─ item: &User_where_excluding_Post #173 - │ ├─ [id]: optional 'optional_169' #170 - │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ └─ item: union #50 - │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_1: struct #49 - │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ [title]: optional 'optional_171' #172 - │ └─ item: optional '_prisma_string_filter_ex' #32 - │ └─ item: union #29 - │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_1: struct #28 - │ └─ [not]: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - ├─ [id]: optional 'optional_161' #162 - │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_1: struct #49 - │ └─ [not]: either '_prisma_integer_filter' #48 - │ ├─ variant_0: integer #37 - │ ├─ variant_1: struct #42 - │ │ └─ [equals]: integer #37 - │ ├─ variant_2: struct #43 - │ │ └─ [not]: integer #37 - │ ├─ variant_3: struct #44 - │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ └─ [lte]: optional 'optional_38' #39 - │ │ └─ item: integer #37 - │ ├─ variant_4: struct #45 - │ │ └─ [in]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_5: struct #46 - │ └─ [notIn]: list 'list_40' #41 - │ └─ item: integer #37 - └─ [title]: optional 'optional_163' #164 - └─ item: optional '_prisma_string_filter_ex' #32 - └─ item: union #29 - ├─ variant_0: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ variant_1: struct #28 - └─ [not]: union '_prisma_string_filter' #27 - ├─ variant_0: string #11 - ├─ variant_1: struct #16 - │ └─ [equals]: string #11 - ├─ variant_2: struct #17 - │ └─ [not]: string #11 - ├─ variant_3: struct #18 - │ └─ [in]: list 'list_14' #15 - │ └─ item: string #11 - ├─ variant_4: struct #19 - │ └─ [notIn]: list 'list_14' #15 - │ └─ item: string #11 - ├─ variant_5: struct #23 - │ ├─ [contains]: string #11 - │ └─ [mode]: optional 'optional_21' #22 - │ └─ item: string #20 enum{ '"insensitive"' } - ├─ variant_6: struct #24 - │ └─ [search]: string #11 - └─ variant_7: struct #25 - ├─ [endsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ [startsWith]: optional 'optional_12' #13 - └─ item: string #11 +root: struct #169 +└─ [where]: optional #168 + └─ item: struct 'Post_query_where_unique_input' #167 + ├─ [AND]: optional #164 + │ └─ item: list #163 + │ └─ item: &Post_query_where_unique_input #162 + ├─ [NOT]: optional #165 + │ └─ item: &Post_query_where_unique_input #162 + ├─ [OR]: optional #164 + │ └─ item: list #163 + │ └─ item: &Post_query_where_unique_input #162 + ├─ [author]: optional #159 + │ └─ item: struct 'User_where_excluding_Post' #158 + │ ├─ [id]: optional #140 + │ │ └─ item: &_prisma_integer_filter_ex #34 + │ ├─ [name]: optional #141 + │ │ └─ item: &_prisma_string_filter_ex #12 + │ └─ [posts]: optional #156 + │ └─ item: union #155 + │ ├─ variant_0: struct #150 + │ │ └─ [every]: optional #149 + │ │ └─ item: struct 'Post_where_excluding_User_and_Post' #148 + │ │ ├─ [author]: optional #146 + │ │ │ └─ item: &User_where_excluding_Post #145 + │ │ ├─ [id]: optional #143 + │ │ │ └─ item: &_prisma_integer_filter_ex #34 + │ │ └─ [title]: optional #144 + │ │ └─ item: &_prisma_string_filter_ex #12 + │ ├─ variant_1: struct #152 + │ │ └─ [some]: optional #151 + │ │ └─ item: struct 'Post_where_excluding_User_and_Post' #148 + │ │ ├─ [author]: optional #146 + │ │ │ └─ item: &User_where_excluding_Post #145 + │ │ ├─ [id]: optional #143 + │ │ │ └─ item: &_prisma_integer_filter_ex #34 + │ │ └─ [title]: optional #144 + │ │ └─ item: &_prisma_string_filter_ex #12 + │ └─ variant_2: struct #154 + │ └─ [none]: optional #153 + │ └─ item: struct 'Post_where_excluding_User_and_Post' #148 + │ ├─ [author]: optional #146 + │ │ └─ item: &User_where_excluding_Post #145 + │ ├─ [id]: optional #143 + │ │ └─ item: &_prisma_integer_filter_ex #34 + │ └─ [title]: optional #144 + │ └─ item: &_prisma_string_filter_ex #12 + ├─ [id]: optional #137 + │ └─ item: &_prisma_integer_filter_ex #34 + └─ [title]: optional #138 + └─ item: &_prisma_string_filter_ex #12 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique Post out.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique Post out.snap index 833c2f8d90..23dad0dfb8 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique Post out.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique Post out.snap @@ -2,8 +2,8 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(out) --- -root: optional 'optional_210' #211 -└─ item: struct 'Post_with_nested_count' #209 - ├─ [author]: &User #88 - ├─ [id]: integer #84 - └─ [title]: string #87 +root: optional #173 +└─ item: struct 'Post_with_nested_count' #172 + ├─ [author]: &User #77 + ├─ [id]: integer #73 + └─ [title]: string #76 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique Record inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique Record inp.snap index 6ecf242a4e..ecdd7025da 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique Record inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique Record inp.snap @@ -2,210 +2,114 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct #71 -└─ [where]: optional 'optional_69' #70 - └─ item: struct 'Record_query_where_unique_input' #68 - ├─ [AND]: optional 'optional_63' #64 - │ └─ item: list 'list_61' #62 - │ └─ item: &Record_query_where_unique_input #60 - ├─ [NOT]: optional 'optional_65' #66 - │ └─ item: &Record_query_where_unique_input #60 - ├─ [OR]: optional 'optional_63' #64 - │ └─ item: list 'list_61' #62 - │ └─ item: &Record_query_where_unique_input #60 - ├─ [age]: optional 'optional_54' #55 - │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_1: struct #49 - │ └─ [not]: either '_prisma_integer_filter' #48 - │ ├─ variant_0: integer #37 - │ ├─ variant_1: struct #42 - │ │ └─ [equals]: integer #37 - │ ├─ variant_2: struct #43 - │ │ └─ [not]: integer #37 - │ ├─ variant_3: struct #44 - │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ └─ [lte]: optional 'optional_38' #39 - │ │ └─ item: integer #37 - │ ├─ variant_4: struct #45 - │ │ └─ [in]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_5: struct #46 - │ └─ [notIn]: list 'list_40' #41 - │ └─ item: integer #37 - ├─ [created_at]: optional 'optional_56' #57 - │ └─ item: optional '_prisma_string_filter_ex' #32 +root: struct #61 +└─ [where]: optional #60 + └─ item: struct 'Record_query_where_unique_input' #59 + ├─ [AND]: optional #56 + │ └─ item: list #55 + │ └─ item: &Record_query_where_unique_input #54 + ├─ [NOT]: optional #57 + │ └─ item: &Record_query_where_unique_input #54 + ├─ [OR]: optional #56 + │ └─ item: list #55 + │ └─ item: &Record_query_where_unique_input #54 + ├─ [age]: optional #50 + │ └─ item: optional '_prisma_integer_filter_ex' #49 + │ └─ item: union #47 + │ ├─ variant_0: either '_prisma_integer_filter' #45 + │ │ ├─ variant_0: integer #36 + │ │ ├─ variant_1: struct #39 + │ │ │ └─ [equals]: integer #36 + │ │ ├─ variant_2: struct #40 + │ │ │ └─ [not]: integer #36 + │ │ ├─ variant_3: struct #41 + │ │ │ ├─ [gt]: optional #37 + │ │ │ │ └─ item: integer #36 + │ │ │ ├─ [gte]: optional #37 + │ │ │ │ └─ item: integer #36 + │ │ │ ├─ [lt]: optional #37 + │ │ │ │ └─ item: integer #36 + │ │ │ └─ [lte]: optional #37 + │ │ │ └─ item: integer #36 + │ │ ├─ variant_4: struct #42 + │ │ │ └─ [in]: list #38 + │ │ │ └─ item: integer #36 + │ │ └─ variant_5: struct #43 + │ │ └─ [notIn]: list #38 + │ │ └─ item: integer #36 + │ └─ variant_1: struct #46 + │ └─ [not]: either '_prisma_integer_filter' #45 + │ ├─ variant_0: integer #36 + │ ├─ variant_1: struct #39 + │ │ └─ [equals]: integer #36 + │ ├─ variant_2: struct #40 + │ │ └─ [not]: integer #36 + │ ├─ variant_3: struct #41 + │ │ ├─ [gt]: optional #37 + │ │ │ └─ item: integer #36 + │ │ ├─ [gte]: optional #37 + │ │ │ └─ item: integer #36 + │ │ ├─ [lt]: optional #37 + │ │ │ └─ item: integer #36 + │ │ └─ [lte]: optional #37 + │ │ └─ item: integer #36 + │ ├─ variant_4: struct #42 + │ │ └─ [in]: list #38 + │ │ └─ item: integer #36 + │ └─ variant_5: struct #43 + │ └─ [notIn]: list #38 + │ └─ item: integer #36 + ├─ [created_at]: optional #51 + │ └─ item: &_prisma_string_filter_ex #12 + ├─ [id]: optional #32 + │ └─ item: optional '_prisma_string_filter_ex' #31 │ └─ item: union #29 │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 + │ │ ├─ variant_0: string #14 + │ │ ├─ variant_1: struct #17 + │ │ │ └─ [equals]: string #14 + │ │ ├─ variant_2: struct #18 + │ │ │ └─ [not]: string #14 + │ │ ├─ variant_3: struct #19 + │ │ │ └─ [in]: list #16 + │ │ │ └─ item: string #14 + │ │ ├─ variant_4: struct #20 + │ │ │ └─ [notIn]: list #16 + │ │ │ └─ item: string #14 │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } + │ │ │ ├─ [contains]: string #14 + │ │ │ └─ [mode]: optional #22 + │ │ │ └─ item: string #21 enum{ '"insensitive"' } │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 + │ │ │ └─ [search]: string #14 │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 + │ │ ├─ [endsWith]: optional #15 + │ │ │ └─ item: string #14 + │ │ └─ [startsWith]: optional #15 + │ │ └─ item: string #14 │ └─ variant_1: struct #28 │ └─ [not]: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 + │ ├─ variant_0: string #14 + │ ├─ variant_1: struct #17 + │ │ └─ [equals]: string #14 + │ ├─ variant_2: struct #18 + │ │ └─ [not]: string #14 + │ ├─ variant_3: struct #19 + │ │ └─ [in]: list #16 + │ │ └─ item: string #14 + │ ├─ variant_4: struct #20 + │ │ └─ [notIn]: list #16 + │ │ └─ item: string #14 │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } + │ │ ├─ [contains]: string #14 + │ │ └─ [mode]: optional #22 + │ │ └─ item: string #21 enum{ '"insensitive"' } │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 + │ │ └─ [search]: string #14 │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - ├─ [id]: optional 'optional_33' #34 - │ └─ item: optional '_prisma_string_filter_ex' #32 - │ └─ item: union #29 - │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_1: struct #28 - │ └─ [not]: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ [name]: optional 'optional_35' #36 - └─ item: optional '_prisma_string_filter_ex' #32 - └─ item: union #29 - ├─ variant_0: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ variant_1: struct #28 - └─ [not]: union '_prisma_string_filter' #27 - ├─ variant_0: string #11 - ├─ variant_1: struct #16 - │ └─ [equals]: string #11 - ├─ variant_2: struct #17 - │ └─ [not]: string #11 - ├─ variant_3: struct #18 - │ └─ [in]: list 'list_14' #15 - │ └─ item: string #11 - ├─ variant_4: struct #19 - │ └─ [notIn]: list 'list_14' #15 - │ └─ item: string #11 - ├─ variant_5: struct #23 - │ ├─ [contains]: string #11 - │ └─ [mode]: optional 'optional_21' #22 - │ └─ item: string #20 enum{ '"insensitive"' } - ├─ variant_6: struct #24 - │ └─ [search]: string #11 - └─ variant_7: struct #25 - ├─ [endsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ [startsWith]: optional 'optional_12' #13 - └─ item: string #11 + │ ├─ [endsWith]: optional #15 + │ │ └─ item: string #14 + │ └─ [startsWith]: optional #15 + │ └─ item: string #14 + └─ [name]: optional #33 + └─ item: &_prisma_string_filter_ex #12 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique Record out.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique Record out.snap index cf6fdea085..b4a80e4655 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique Record out.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique Record out.snap @@ -2,8 +2,8 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(out) --- -root: optional 'optional_74' #75 -└─ item: struct 'Record_with_nested_count' #73 +root: optional #65 +└─ item: struct 'Record_with_nested_count' #64 ├─ [age]: optional #7 │ └─ item: integer #6 ├─ [created_at]: string #0 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique User inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique User inp.snap index bcb718265a..97c231ae40 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique User inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique User inp.snap @@ -2,736 +2,92 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct #147 -└─ [where]: optional 'optional_145' #146 - └─ item: struct 'User_query_where_unique_input' #144 - ├─ [AND]: optional 'optional_139' #140 - │ └─ item: list 'list_137' #138 - │ └─ item: &User_query_where_unique_input #136 - ├─ [NOT]: optional 'optional_141' #142 - │ └─ item: &User_query_where_unique_input #136 - ├─ [OR]: optional 'optional_139' #140 - │ └─ item: list 'list_137' #138 - │ └─ item: &User_query_where_unique_input #136 - ├─ [id]: optional 'optional_91' #92 - │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_1: struct #49 - │ └─ [not]: either '_prisma_integer_filter' #48 - │ ├─ variant_0: integer #37 - │ ├─ variant_1: struct #42 - │ │ └─ [equals]: integer #37 - │ ├─ variant_2: struct #43 - │ │ └─ [not]: integer #37 - │ ├─ variant_3: struct #44 - │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ └─ [lte]: optional 'optional_38' #39 - │ │ └─ item: integer #37 - │ ├─ variant_4: struct #45 - │ │ └─ [in]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_5: struct #46 - │ └─ [notIn]: list 'list_40' #41 - │ └─ item: integer #37 - ├─ [name]: optional 'optional_93' #94 - │ └─ item: optional '_prisma_string_filter_ex' #32 - │ └─ item: union #29 - │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_1: struct #28 - │ └─ [not]: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ [posts]: optional 'optional_132' #133 - └─ item: union #131 - ├─ variant_0: struct #124 - │ └─ [every]: optional 'optional_122' #123 - │ └─ item: struct 'Post_where_excluding_User' #121 - │ ├─ [author]: optional 'optional_118' #119 - │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #117 - │ │ ├─ [id]: optional 'optional_99' #100 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ │ └─ item: union #50 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ │ ├─ variant_0: integer #37 - │ │ │ │ ├─ variant_1: struct #42 - │ │ │ │ │ └─ [equals]: integer #37 - │ │ │ │ ├─ variant_2: struct #43 - │ │ │ │ │ └─ [not]: integer #37 - │ │ │ │ ├─ variant_3: struct #44 - │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ variant_4: struct #45 - │ │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ variant_5: struct #46 - │ │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_1: struct #49 - │ │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ ├─ [name]: optional 'optional_101' #102 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #32 - │ │ │ └─ item: union #29 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ │ │ ├─ variant_0: string #11 - │ │ │ │ ├─ variant_1: struct #16 - │ │ │ │ │ └─ [equals]: string #11 - │ │ │ │ ├─ variant_2: struct #17 - │ │ │ │ │ └─ [not]: string #11 - │ │ │ │ ├─ variant_3: struct #18 - │ │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ │ └─ item: string #11 - │ │ │ │ ├─ variant_4: struct #19 - │ │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ │ └─ item: string #11 - │ │ │ │ ├─ variant_5: struct #23 - │ │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #24 - │ │ │ │ │ └─ [search]: string #11 - │ │ │ │ └─ variant_7: struct #25 - │ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ │ └─ item: string #11 - │ │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ variant_1: struct #28 - │ │ │ └─ [not]: union '_prisma_string_filter' #27 - │ │ │ ├─ variant_0: string #11 - │ │ │ ├─ variant_1: struct #16 - │ │ │ │ └─ [equals]: string #11 - │ │ │ ├─ variant_2: struct #17 - │ │ │ │ └─ [not]: string #11 - │ │ │ ├─ variant_3: struct #18 - │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_4: struct #19 - │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_5: struct #23 - │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #24 - │ │ │ │ └─ [search]: string #11 - │ │ │ └─ variant_7: struct #25 - │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [posts]: optional 'optional_114' #115 - │ │ └─ item: union #113 - │ │ ├─ variant_0: struct #106 - │ │ │ └─ [every]: optional 'optional_104' #105 - │ │ │ └─ item: &Post_where_excluding_User #103 - │ │ ├─ variant_1: struct #109 - │ │ │ └─ [some]: optional 'optional_107' #108 - │ │ │ └─ item: &Post_where_excluding_User #103 - │ │ └─ variant_2: struct #112 - │ │ └─ [none]: optional 'optional_110' #111 - │ │ └─ item: &Post_where_excluding_User #103 - │ ├─ [id]: optional 'optional_95' #96 - │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ └─ item: union #50 - │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_1: struct #49 - │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ [title]: optional 'optional_97' #98 - │ └─ item: optional '_prisma_string_filter_ex' #32 - │ └─ item: union #29 - │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_1: struct #28 - │ └─ [not]: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - ├─ variant_1: struct #127 - │ └─ [some]: optional 'optional_125' #126 - │ └─ item: struct 'Post_where_excluding_User' #121 - │ ├─ [author]: optional 'optional_118' #119 - │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #117 - │ │ ├─ [id]: optional 'optional_99' #100 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ │ └─ item: union #50 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ │ ├─ variant_0: integer #37 - │ │ │ │ ├─ variant_1: struct #42 - │ │ │ │ │ └─ [equals]: integer #37 - │ │ │ │ ├─ variant_2: struct #43 - │ │ │ │ │ └─ [not]: integer #37 - │ │ │ │ ├─ variant_3: struct #44 - │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ variant_4: struct #45 - │ │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ variant_5: struct #46 - │ │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_1: struct #49 - │ │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ ├─ [name]: optional 'optional_101' #102 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #32 - │ │ │ └─ item: union #29 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ │ │ ├─ variant_0: string #11 - │ │ │ │ ├─ variant_1: struct #16 - │ │ │ │ │ └─ [equals]: string #11 - │ │ │ │ ├─ variant_2: struct #17 - │ │ │ │ │ └─ [not]: string #11 - │ │ │ │ ├─ variant_3: struct #18 - │ │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ │ └─ item: string #11 - │ │ │ │ ├─ variant_4: struct #19 - │ │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ │ └─ item: string #11 - │ │ │ │ ├─ variant_5: struct #23 - │ │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #24 - │ │ │ │ │ └─ [search]: string #11 - │ │ │ │ └─ variant_7: struct #25 - │ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ │ └─ item: string #11 - │ │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ variant_1: struct #28 - │ │ │ └─ [not]: union '_prisma_string_filter' #27 - │ │ │ ├─ variant_0: string #11 - │ │ │ ├─ variant_1: struct #16 - │ │ │ │ └─ [equals]: string #11 - │ │ │ ├─ variant_2: struct #17 - │ │ │ │ └─ [not]: string #11 - │ │ │ ├─ variant_3: struct #18 - │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_4: struct #19 - │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_5: struct #23 - │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #24 - │ │ │ │ └─ [search]: string #11 - │ │ │ └─ variant_7: struct #25 - │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [posts]: optional 'optional_114' #115 - │ │ └─ item: union #113 - │ │ ├─ variant_0: struct #106 - │ │ │ └─ [every]: optional 'optional_104' #105 - │ │ │ └─ item: &Post_where_excluding_User #103 - │ │ ├─ variant_1: struct #109 - │ │ │ └─ [some]: optional 'optional_107' #108 - │ │ │ └─ item: &Post_where_excluding_User #103 - │ │ └─ variant_2: struct #112 - │ │ └─ [none]: optional 'optional_110' #111 - │ │ └─ item: &Post_where_excluding_User #103 - │ ├─ [id]: optional 'optional_95' #96 - │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ └─ item: union #50 - │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_1: struct #49 - │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ [title]: optional 'optional_97' #98 - │ └─ item: optional '_prisma_string_filter_ex' #32 - │ └─ item: union #29 - │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_1: struct #28 - │ └─ [not]: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ variant_2: struct #130 - └─ [none]: optional 'optional_128' #129 - └─ item: struct 'Post_where_excluding_User' #121 - ├─ [author]: optional 'optional_118' #119 - │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #117 - │ ├─ [id]: optional 'optional_99' #100 - │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ └─ item: union #50 - │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_1: struct #49 - │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ ├─ [name]: optional 'optional_101' #102 - │ │ └─ item: optional '_prisma_string_filter_ex' #32 - │ │ └─ item: union #29 - │ │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ │ ├─ variant_0: string #11 - │ │ │ ├─ variant_1: struct #16 - │ │ │ │ └─ [equals]: string #11 - │ │ │ ├─ variant_2: struct #17 - │ │ │ │ └─ [not]: string #11 - │ │ │ ├─ variant_3: struct #18 - │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_4: struct #19 - │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_5: struct #23 - │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #24 - │ │ │ │ └─ [search]: string #11 - │ │ │ └─ variant_7: struct #25 - │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ variant_1: struct #28 - │ │ └─ [not]: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [posts]: optional 'optional_114' #115 - │ └─ item: union #113 - │ ├─ variant_0: struct #106 - │ │ └─ [every]: optional 'optional_104' #105 - │ │ └─ item: &Post_where_excluding_User #103 - │ ├─ variant_1: struct #109 - │ │ └─ [some]: optional 'optional_107' #108 - │ │ └─ item: &Post_where_excluding_User #103 - │ └─ variant_2: struct #112 - │ └─ [none]: optional 'optional_110' #111 - │ └─ item: &Post_where_excluding_User #103 - ├─ [id]: optional 'optional_95' #96 - │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_1: struct #49 - │ └─ [not]: either '_prisma_integer_filter' #48 - │ ├─ variant_0: integer #37 - │ ├─ variant_1: struct #42 - │ │ └─ [equals]: integer #37 - │ ├─ variant_2: struct #43 - │ │ └─ [not]: integer #37 - │ ├─ variant_3: struct #44 - │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ └─ [lte]: optional 'optional_38' #39 - │ │ └─ item: integer #37 - │ ├─ variant_4: struct #45 - │ │ └─ [in]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_5: struct #46 - │ └─ [notIn]: list 'list_40' #41 - │ └─ item: integer #37 - └─ [title]: optional 'optional_97' #98 - └─ item: optional '_prisma_string_filter_ex' #32 - └─ item: union #29 - ├─ variant_0: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ variant_1: struct #28 - └─ [not]: union '_prisma_string_filter' #27 - ├─ variant_0: string #11 - ├─ variant_1: struct #16 - │ └─ [equals]: string #11 - ├─ variant_2: struct #17 - │ └─ [not]: string #11 - ├─ variant_3: struct #18 - │ └─ [in]: list 'list_14' #15 - │ └─ item: string #11 - ├─ variant_4: struct #19 - │ └─ [notIn]: list 'list_14' #15 - │ └─ item: string #11 - ├─ variant_5: struct #23 - │ ├─ [contains]: string #11 - │ └─ [mode]: optional 'optional_21' #22 - │ └─ item: string #20 enum{ '"insensitive"' } - ├─ variant_6: struct #24 - │ └─ [search]: string #11 - └─ variant_7: struct #25 - ├─ [endsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ [startsWith]: optional 'optional_12' #13 - └─ item: string #11 +root: struct #121 +└─ [where]: optional #120 + └─ item: struct 'User_query_where_unique_input' #119 + ├─ [AND]: optional #116 + │ └─ item: list #115 + │ └─ item: &User_query_where_unique_input #114 + ├─ [NOT]: optional #117 + │ └─ item: &User_query_where_unique_input #114 + ├─ [OR]: optional #116 + │ └─ item: list #115 + │ └─ item: &User_query_where_unique_input #114 + ├─ [id]: optional #82 + │ └─ item: &_prisma_integer_filter_ex #34 + ├─ [name]: optional #83 + │ └─ item: &_prisma_string_filter_ex #12 + └─ [posts]: optional #111 + └─ item: union #110 + ├─ variant_0: struct #105 + │ └─ [every]: optional #104 + │ └─ item: struct 'Post_where_excluding_User' #103 + │ ├─ [author]: optional #101 + │ │ └─ item: struct 'User_where_excluding_Post_and_User' #100 + │ │ ├─ [id]: optional #88 + │ │ │ └─ item: &_prisma_integer_filter_ex #34 + │ │ ├─ [name]: optional #89 + │ │ │ └─ item: &_prisma_string_filter_ex #12 + │ │ └─ [posts]: optional #98 + │ │ └─ item: union #97 + │ │ ├─ variant_0: struct #92 + │ │ │ └─ [every]: optional #91 + │ │ │ └─ item: &Post_where_excluding_User #90 + │ │ ├─ variant_1: struct #94 + │ │ │ └─ [some]: optional #93 + │ │ │ └─ item: &Post_where_excluding_User #90 + │ │ └─ variant_2: struct #96 + │ │ └─ [none]: optional #95 + │ │ └─ item: &Post_where_excluding_User #90 + │ ├─ [id]: optional #85 + │ │ └─ item: &_prisma_integer_filter_ex #34 + │ └─ [title]: optional #86 + │ └─ item: &_prisma_string_filter_ex #12 + ├─ variant_1: struct #107 + │ └─ [some]: optional #106 + │ └─ item: struct 'Post_where_excluding_User' #103 + │ ├─ [author]: optional #101 + │ │ └─ item: struct 'User_where_excluding_Post_and_User' #100 + │ │ ├─ [id]: optional #88 + │ │ │ └─ item: &_prisma_integer_filter_ex #34 + │ │ ├─ [name]: optional #89 + │ │ │ └─ item: &_prisma_string_filter_ex #12 + │ │ └─ [posts]: optional #98 + │ │ └─ item: union #97 + │ │ ├─ variant_0: struct #92 + │ │ │ └─ [every]: optional #91 + │ │ │ └─ item: &Post_where_excluding_User #90 + │ │ ├─ variant_1: struct #94 + │ │ │ └─ [some]: optional #93 + │ │ │ └─ item: &Post_where_excluding_User #90 + │ │ └─ variant_2: struct #96 + │ │ └─ [none]: optional #95 + │ │ └─ item: &Post_where_excluding_User #90 + │ ├─ [id]: optional #85 + │ │ └─ item: &_prisma_integer_filter_ex #34 + │ └─ [title]: optional #86 + │ └─ item: &_prisma_string_filter_ex #12 + └─ variant_2: struct #109 + └─ [none]: optional #108 + └─ item: struct 'Post_where_excluding_User' #103 + ├─ [author]: optional #101 + │ └─ item: struct 'User_where_excluding_Post_and_User' #100 + │ ├─ [id]: optional #88 + │ │ └─ item: &_prisma_integer_filter_ex #34 + │ ├─ [name]: optional #89 + │ │ └─ item: &_prisma_string_filter_ex #12 + │ └─ [posts]: optional #98 + │ └─ item: union #97 + │ ├─ variant_0: struct #92 + │ │ └─ [every]: optional #91 + │ │ └─ item: &Post_where_excluding_User #90 + │ ├─ variant_1: struct #94 + │ │ └─ [some]: optional #93 + │ │ └─ item: &Post_where_excluding_User #90 + │ └─ variant_2: struct #96 + │ └─ [none]: optional #95 + │ └─ item: &Post_where_excluding_User #90 + ├─ [id]: optional #85 + │ └─ item: &_prisma_integer_filter_ex #34 + └─ [title]: optional #86 + └─ item: &_prisma_string_filter_ex #12 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique User out.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique User out.snap index c0e088d323..10894dc1c6 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique User out.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__find_unique User out.snap @@ -2,14 +2,14 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(out) --- -root: optional 'optional_159' #160 -└─ item: struct 'User_with_nested_count' #158 - ├─ [_count]: struct #156 - │ └─ [posts]: optional '_count' #155 - │ └─ item: integer #152 - ├─ [id]: integer #76 - ├─ [name]: string #78 - └─ [posts]: list 'list_150' #151 - └─ item: struct 'Post_with_nested_count_excluding_rel_Post_User' #149 - ├─ [id]: integer #84 - └─ [title]: string #87 +root: optional #134 +└─ item: struct 'User_with_nested_count' #133 + ├─ [_count]: struct #131 + │ └─ [posts]: optional '_count' #130 + │ └─ item: integer #128 + ├─ [id]: integer #66 + ├─ [name]: string #68 + └─ [posts]: list #126 + └─ item: struct 'Post_with_nested_count_excluding_rel_Post_User' #125 + ├─ [id]: integer #73 + └─ [title]: string #76 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by Post inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by Post inp.snap index 3b5e65e4dd..4551206a76 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by Post inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by Post inp.snap @@ -2,2216 +2,142 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct 'Post_group_by_query_input' #501 -├─ [by]: list 'Post_group_by' #452 -│ └─ item: string #449 enum{ '"id"', '"title"' } -├─ [cursor]: optional 'optional_447' #448 -│ └─ item: union 'Post_cursor' #446 -│ ├─ variant_0: struct #443 -│ │ └─ [id]: integer #199 -│ └─ variant_1: struct #444 -│ └─ [title]: string #200 -├─ [having]: optional 'optional_498' #499 -│ └─ item: union 'Post_having' #497 -│ ├─ variant_0: struct 'Post_where_with_aggregates' #487 -│ │ ├─ [author]: optional 'optional_484' #485 -│ │ │ └─ item: struct 'User_where_with_aggregates_excluding_Post' #483 -│ │ │ ├─ [id]: optional 'optional_457' #458 -│ │ │ │ └─ item: optional '_prisma_integer_filter_with_aggregates_ex' #146 -│ │ │ │ └─ item: union #143 -│ │ │ │ ├─ variant_0: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #139 -│ │ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_1: struct #142 -│ │ │ │ └─ [not]: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ └─ item: float #123 -│ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #139 -│ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ ├─ [name]: optional 'optional_459' #460 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #32 -│ │ │ │ └─ item: union #29 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #27 -│ │ │ │ │ ├─ variant_0: string #11 -│ │ │ │ │ ├─ variant_1: struct #16 -│ │ │ │ │ │ └─ [equals]: string #11 -│ │ │ │ │ ├─ variant_2: struct #17 -│ │ │ │ │ │ └─ [not]: string #11 -│ │ │ │ │ ├─ variant_3: struct #18 -│ │ │ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ ├─ variant_4: struct #19 -│ │ │ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ ├─ variant_5: struct #23 -│ │ │ │ │ │ ├─ [contains]: string #11 -│ │ │ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #24 -│ │ │ │ │ │ └─ [search]: string #11 -│ │ │ │ │ └─ variant_7: struct #25 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ └─ variant_1: struct #28 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #27 -│ │ │ │ ├─ variant_0: string #11 -│ │ │ │ ├─ variant_1: struct #16 -│ │ │ │ │ └─ [equals]: string #11 -│ │ │ │ ├─ variant_2: struct #17 -│ │ │ │ │ └─ [not]: string #11 -│ │ │ │ ├─ variant_3: struct #18 -│ │ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_4: struct #19 -│ │ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_5: struct #23 -│ │ │ │ │ ├─ [contains]: string #11 -│ │ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #24 -│ │ │ │ │ └─ [search]: string #11 -│ │ │ │ └─ variant_7: struct #25 -│ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ │ └─ item: string #11 -│ │ │ └─ [posts]: optional 'optional_480' #481 -│ │ │ └─ item: union #479 -│ │ │ ├─ variant_0: struct #472 -│ │ │ │ └─ [every]: optional 'optional_470' #471 -│ │ │ │ └─ item: struct 'Post_where_with_aggregates_excluding_Post_and_User_where_with_aggregates_excluding_Post' #469 -│ │ │ │ ├─ [author]: optional 'optional_466' #467 -│ │ │ │ │ └─ item: &User_where_with_aggregates_excluding_Post #465 -│ │ │ │ ├─ [id]: optional 'optional_461' #462 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_with_aggregates_ex' #146 -│ │ │ │ │ └─ item: union #143 -│ │ │ │ │ ├─ variant_0: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #139 -│ │ │ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_1: struct #142 -│ │ │ │ │ └─ [not]: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #139 -│ │ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ [title]: optional 'optional_463' #464 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #32 -│ │ │ │ └─ item: union #29 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #27 -│ │ │ │ │ ├─ variant_0: string #11 -│ │ │ │ │ ├─ variant_1: struct #16 -│ │ │ │ │ │ └─ [equals]: string #11 -│ │ │ │ │ ├─ variant_2: struct #17 -│ │ │ │ │ │ └─ [not]: string #11 -│ │ │ │ │ ├─ variant_3: struct #18 -│ │ │ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ ├─ variant_4: struct #19 -│ │ │ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ ├─ variant_5: struct #23 -│ │ │ │ │ │ ├─ [contains]: string #11 -│ │ │ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #24 -│ │ │ │ │ │ └─ [search]: string #11 -│ │ │ │ │ └─ variant_7: struct #25 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ └─ variant_1: struct #28 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #27 -│ │ │ │ ├─ variant_0: string #11 -│ │ │ │ ├─ variant_1: struct #16 -│ │ │ │ │ └─ [equals]: string #11 -│ │ │ │ ├─ variant_2: struct #17 -│ │ │ │ │ └─ [not]: string #11 -│ │ │ │ ├─ variant_3: struct #18 -│ │ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_4: struct #19 -│ │ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_5: struct #23 -│ │ │ │ │ ├─ [contains]: string #11 -│ │ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #24 -│ │ │ │ │ └─ [search]: string #11 -│ │ │ │ └─ variant_7: struct #25 -│ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ │ └─ item: string #11 -│ │ │ ├─ variant_1: struct #475 -│ │ │ │ └─ [some]: optional 'optional_473' #474 -│ │ │ │ └─ item: struct 'Post_where_with_aggregates_excluding_Post_and_User_where_with_aggregates_excluding_Post' #469 -│ │ │ │ ├─ [author]: optional 'optional_466' #467 -│ │ │ │ │ └─ item: &User_where_with_aggregates_excluding_Post #465 -│ │ │ │ ├─ [id]: optional 'optional_461' #462 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_with_aggregates_ex' #146 -│ │ │ │ │ └─ item: union #143 -│ │ │ │ │ ├─ variant_0: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #139 -│ │ │ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_1: struct #142 -│ │ │ │ │ └─ [not]: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #139 -│ │ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ [title]: optional 'optional_463' #464 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #32 -│ │ │ │ └─ item: union #29 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #27 -│ │ │ │ │ ├─ variant_0: string #11 -│ │ │ │ │ ├─ variant_1: struct #16 -│ │ │ │ │ │ └─ [equals]: string #11 -│ │ │ │ │ ├─ variant_2: struct #17 -│ │ │ │ │ │ └─ [not]: string #11 -│ │ │ │ │ ├─ variant_3: struct #18 -│ │ │ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ ├─ variant_4: struct #19 -│ │ │ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ ├─ variant_5: struct #23 -│ │ │ │ │ │ ├─ [contains]: string #11 -│ │ │ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #24 -│ │ │ │ │ │ └─ [search]: string #11 -│ │ │ │ │ └─ variant_7: struct #25 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ └─ variant_1: struct #28 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #27 -│ │ │ │ ├─ variant_0: string #11 -│ │ │ │ ├─ variant_1: struct #16 -│ │ │ │ │ └─ [equals]: string #11 -│ │ │ │ ├─ variant_2: struct #17 -│ │ │ │ │ └─ [not]: string #11 -│ │ │ │ ├─ variant_3: struct #18 -│ │ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_4: struct #19 -│ │ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_5: struct #23 -│ │ │ │ │ ├─ [contains]: string #11 -│ │ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #24 -│ │ │ │ │ └─ [search]: string #11 -│ │ │ │ └─ variant_7: struct #25 -│ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ │ └─ item: string #11 -│ │ │ └─ variant_2: struct #478 -│ │ │ └─ [none]: optional 'optional_476' #477 -│ │ │ └─ item: struct 'Post_where_with_aggregates_excluding_Post_and_User_where_with_aggregates_excluding_Post' #469 -│ │ │ ├─ [author]: optional 'optional_466' #467 -│ │ │ │ └─ item: &User_where_with_aggregates_excluding_Post #465 -│ │ │ ├─ [id]: optional 'optional_461' #462 -│ │ │ │ └─ item: optional '_prisma_integer_filter_with_aggregates_ex' #146 -│ │ │ │ └─ item: union #143 -│ │ │ │ ├─ variant_0: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #139 -│ │ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_1: struct #142 -│ │ │ │ └─ [not]: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ └─ item: float #123 -│ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #139 -│ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ └─ [title]: optional 'optional_463' #464 -│ │ │ └─ item: optional '_prisma_string_filter_ex' #32 -│ │ │ └─ item: union #29 -│ │ │ ├─ variant_0: union '_prisma_string_filter' #27 -│ │ │ │ ├─ variant_0: string #11 -│ │ │ │ ├─ variant_1: struct #16 -│ │ │ │ │ └─ [equals]: string #11 -│ │ │ │ ├─ variant_2: struct #17 -│ │ │ │ │ └─ [not]: string #11 -│ │ │ │ ├─ variant_3: struct #18 -│ │ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_4: struct #19 -│ │ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_5: struct #23 -│ │ │ │ │ ├─ [contains]: string #11 -│ │ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #24 -│ │ │ │ │ └─ [search]: string #11 -│ │ │ │ └─ variant_7: struct #25 -│ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ │ └─ item: string #11 -│ │ │ └─ variant_1: struct #28 -│ │ │ └─ [not]: union '_prisma_string_filter' #27 -│ │ │ ├─ variant_0: string #11 -│ │ │ ├─ variant_1: struct #16 -│ │ │ │ └─ [equals]: string #11 -│ │ │ ├─ variant_2: struct #17 -│ │ │ │ └─ [not]: string #11 -│ │ │ ├─ variant_3: struct #18 -│ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ └─ item: string #11 -│ │ │ ├─ variant_4: struct #19 -│ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ └─ item: string #11 -│ │ │ ├─ variant_5: struct #23 -│ │ │ │ ├─ [contains]: string #11 -│ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #24 -│ │ │ │ └─ [search]: string #11 -│ │ │ └─ variant_7: struct #25 -│ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ └─ item: string #11 -│ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ └─ item: string #11 -│ │ ├─ [id]: optional 'optional_453' #454 -│ │ │ └─ item: optional '_prisma_integer_filter_with_aggregates_ex' #146 -│ │ │ └─ item: union #143 -│ │ │ ├─ variant_0: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ └─ item: float #123 -│ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #139 -│ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ └─ variant_1: struct #142 -│ │ │ └─ [not]: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ ├─ variant_1: struct #135 -│ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ ├─ variant_2: struct #136 -│ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ ├─ variant_3: struct #137 -│ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ ├─ variant_0: float #123 -│ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ └─ [not]: float #123 -│ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ └─ item: float #123 -│ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ └─ item: float #123 -│ │ │ │ └─ variant_5: struct #132 -│ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ └─ item: float #123 -│ │ │ ├─ variant_4: struct #138 -│ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ └─ variant_5: struct #139 -│ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ ├─ variant_0: integer #37 -│ │ │ ├─ variant_1: struct #42 -│ │ │ │ └─ [equals]: integer #37 -│ │ │ ├─ variant_2: struct #43 -│ │ │ │ └─ [not]: integer #37 -│ │ │ ├─ variant_3: struct #44 -│ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ └─ item: integer #37 -│ │ │ ├─ variant_4: struct #45 -│ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ └─ variant_5: struct #46 -│ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ └─ item: integer #37 -│ │ └─ [title]: optional 'optional_455' #456 -│ │ └─ item: optional '_prisma_string_filter_ex' #32 -│ │ └─ item: union #29 -│ │ ├─ variant_0: union '_prisma_string_filter' #27 -│ │ │ ├─ variant_0: string #11 -│ │ │ ├─ variant_1: struct #16 -│ │ │ │ └─ [equals]: string #11 -│ │ │ ├─ variant_2: struct #17 -│ │ │ │ └─ [not]: string #11 -│ │ │ ├─ variant_3: struct #18 -│ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ └─ item: string #11 -│ │ │ ├─ variant_4: struct #19 -│ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ └─ item: string #11 -│ │ │ ├─ variant_5: struct #23 -│ │ │ │ ├─ [contains]: string #11 -│ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #24 -│ │ │ │ └─ [search]: string #11 -│ │ │ └─ variant_7: struct #25 -│ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ └─ item: string #11 -│ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ └─ item: string #11 -│ │ └─ variant_1: struct #28 -│ │ └─ [not]: union '_prisma_string_filter' #27 -│ │ ├─ variant_0: string #11 -│ │ ├─ variant_1: struct #16 -│ │ │ └─ [equals]: string #11 -│ │ ├─ variant_2: struct #17 -│ │ │ └─ [not]: string #11 -│ │ ├─ variant_3: struct #18 -│ │ │ └─ [in]: list 'list_14' #15 -│ │ │ └─ item: string #11 -│ │ ├─ variant_4: struct #19 -│ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ └─ item: string #11 -│ │ ├─ variant_5: struct #23 -│ │ │ ├─ [contains]: string #11 -│ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ ├─ variant_6: struct #24 -│ │ │ └─ [search]: string #11 -│ │ └─ variant_7: struct #25 -│ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ └─ item: string #11 -│ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ └─ item: string #11 -│ ├─ variant_1: struct #491 -│ │ └─ [AND]: list 'list_489' #490 -│ │ └─ item: &Post_having #488 -│ ├─ variant_2: struct #494 -│ │ └─ [OR]: list 'list_492' #493 -│ │ └─ item: &Post_having #488 -│ └─ variant_3: struct #495 -│ └─ [NOT]: &Post_having #488 -├─ [orderBy]: optional 'optional_437' #438 -│ └─ item: list 'Post_order_by_with_aggregates' #436 -│ └─ item: struct #433 -│ ├─ [_avg]: optional 'optional_423' #424 -│ │ └─ item: struct #422 -│ │ └─ [id]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [_count]: optional 'optional_420' #421 -│ │ └─ item: struct #419 -│ │ ├─ [author]: optional '_prisma_sort' #79 -│ │ │ └─ item: union #76 -│ │ │ ├─ variant_0: struct #75 -│ │ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ ├─ [id]: optional '_prisma_sort' #79 -│ │ │ └─ item: union #76 -│ │ │ ├─ variant_0: struct #75 -│ │ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ [title]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [_max]: optional 'optional_423' #424 -│ │ └─ item: struct #422 -│ │ └─ [id]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [_min]: optional 'optional_423' #424 -│ │ └─ item: struct #422 -│ │ └─ [id]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [_sum]: optional 'optional_423' #424 -│ │ └─ item: struct #422 -│ │ └─ [id]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [author]: optional 'optional_431' #432 -│ │ └─ item: list 'User_order_by_withoutrel_Post_User' #430 -│ │ └─ item: struct #427 -│ │ ├─ [id]: optional '_prisma_sort' #79 -│ │ │ └─ item: union #76 -│ │ │ ├─ variant_0: struct #75 -│ │ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ [name]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [id]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ └─ [title]: optional '_prisma_sort' #79 -│ └─ item: union #76 -│ ├─ variant_0: struct #75 -│ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -├─ [skip]: optional 'optional_441' #442 -│ └─ item: integer '_skip' #104 -├─ [take]: optional 'optional_439' #440 -│ └─ item: integer '_take' #100 -└─ [where]: optional 'optional_417' #418 - └─ item: struct 'Post_query_where_input' #416 - ├─ [AND]: optional 'optional_411' #412 - │ └─ item: list 'list_409' #410 - │ └─ item: &Post_query_where_input #408 - ├─ [NOT]: optional 'optional_413' #414 - │ └─ item: &Post_query_where_input #408 - ├─ [OR]: optional 'optional_411' #412 - │ └─ item: list 'list_409' #410 - │ └─ item: &Post_query_where_input #408 - ├─ [author]: optional 'optional_404' #405 - │ └─ item: struct 'User_where_excluding_Post' #403 - │ ├─ [id]: optional 'optional_377' #378 - │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ └─ item: union #50 - │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_1: struct #49 - │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ ├─ [name]: optional 'optional_379' #380 - │ │ └─ item: optional '_prisma_string_filter_ex' #32 - │ │ └─ item: union #29 - │ │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ │ ├─ variant_0: string #11 - │ │ │ ├─ variant_1: struct #16 - │ │ │ │ └─ [equals]: string #11 - │ │ │ ├─ variant_2: struct #17 - │ │ │ │ └─ [not]: string #11 - │ │ │ ├─ variant_3: struct #18 - │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_4: struct #19 - │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_5: struct #23 - │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #24 - │ │ │ │ └─ [search]: string #11 - │ │ │ └─ variant_7: struct #25 - │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ variant_1: struct #28 - │ │ └─ [not]: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [posts]: optional 'optional_400' #401 - │ └─ item: union #399 - │ ├─ variant_0: struct #392 - │ │ └─ [every]: optional 'optional_390' #391 - │ │ └─ item: struct 'Post_where_excluding_Post_and_User_where_excluding_Post' #389 - │ │ ├─ [author]: optional 'optional_386' #387 - │ │ │ └─ item: &User_where_excluding_Post #385 - │ │ ├─ [id]: optional 'optional_381' #382 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ │ └─ item: union #50 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ │ ├─ variant_0: integer #37 - │ │ │ │ ├─ variant_1: struct #42 - │ │ │ │ │ └─ [equals]: integer #37 - │ │ │ │ ├─ variant_2: struct #43 - │ │ │ │ │ └─ [not]: integer #37 - │ │ │ │ ├─ variant_3: struct #44 - │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ variant_4: struct #45 - │ │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ variant_5: struct #46 - │ │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_1: struct #49 - │ │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ [title]: optional 'optional_383' #384 - │ │ └─ item: optional '_prisma_string_filter_ex' #32 - │ │ └─ item: union #29 - │ │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ │ ├─ variant_0: string #11 - │ │ │ ├─ variant_1: struct #16 - │ │ │ │ └─ [equals]: string #11 - │ │ │ ├─ variant_2: struct #17 - │ │ │ │ └─ [not]: string #11 - │ │ │ ├─ variant_3: struct #18 - │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_4: struct #19 - │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_5: struct #23 - │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #24 - │ │ │ │ └─ [search]: string #11 - │ │ │ └─ variant_7: struct #25 - │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ variant_1: struct #28 - │ │ └─ [not]: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ ├─ variant_1: struct #395 - │ │ └─ [some]: optional 'optional_393' #394 - │ │ └─ item: struct 'Post_where_excluding_Post_and_User_where_excluding_Post' #389 - │ │ ├─ [author]: optional 'optional_386' #387 - │ │ │ └─ item: &User_where_excluding_Post #385 - │ │ ├─ [id]: optional 'optional_381' #382 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ │ └─ item: union #50 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ │ ├─ variant_0: integer #37 - │ │ │ │ ├─ variant_1: struct #42 - │ │ │ │ │ └─ [equals]: integer #37 - │ │ │ │ ├─ variant_2: struct #43 - │ │ │ │ │ └─ [not]: integer #37 - │ │ │ │ ├─ variant_3: struct #44 - │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ variant_4: struct #45 - │ │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ variant_5: struct #46 - │ │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_1: struct #49 - │ │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ [title]: optional 'optional_383' #384 - │ │ └─ item: optional '_prisma_string_filter_ex' #32 - │ │ └─ item: union #29 - │ │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ │ ├─ variant_0: string #11 - │ │ │ ├─ variant_1: struct #16 - │ │ │ │ └─ [equals]: string #11 - │ │ │ ├─ variant_2: struct #17 - │ │ │ │ └─ [not]: string #11 - │ │ │ ├─ variant_3: struct #18 - │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_4: struct #19 - │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_5: struct #23 - │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #24 - │ │ │ │ └─ [search]: string #11 - │ │ │ └─ variant_7: struct #25 - │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ variant_1: struct #28 - │ │ └─ [not]: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_2: struct #398 - │ └─ [none]: optional 'optional_396' #397 - │ └─ item: struct 'Post_where_excluding_Post_and_User_where_excluding_Post' #389 - │ ├─ [author]: optional 'optional_386' #387 - │ │ └─ item: &User_where_excluding_Post #385 - │ ├─ [id]: optional 'optional_381' #382 - │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ └─ item: union #50 - │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_1: struct #49 - │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ [title]: optional 'optional_383' #384 - │ └─ item: optional '_prisma_string_filter_ex' #32 - │ └─ item: union #29 - │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_1: struct #28 - │ └─ [not]: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - ├─ [id]: optional 'optional_373' #374 - │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_1: struct #49 - │ └─ [not]: either '_prisma_integer_filter' #48 - │ ├─ variant_0: integer #37 - │ ├─ variant_1: struct #42 - │ │ └─ [equals]: integer #37 - │ ├─ variant_2: struct #43 - │ │ └─ [not]: integer #37 - │ ├─ variant_3: struct #44 - │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ └─ [lte]: optional 'optional_38' #39 - │ │ └─ item: integer #37 - │ ├─ variant_4: struct #45 - │ │ └─ [in]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_5: struct #46 - │ └─ [notIn]: list 'list_40' #41 - │ └─ item: integer #37 - └─ [title]: optional 'optional_375' #376 - └─ item: optional '_prisma_string_filter_ex' #32 - └─ item: union #29 - ├─ variant_0: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ variant_1: struct #28 - └─ [not]: union '_prisma_string_filter' #27 - ├─ variant_0: string #11 - ├─ variant_1: struct #16 - │ └─ [equals]: string #11 - ├─ variant_2: struct #17 - │ └─ [not]: string #11 - ├─ variant_3: struct #18 - │ └─ [in]: list 'list_14' #15 - │ └─ item: string #11 - ├─ variant_4: struct #19 - │ └─ [notIn]: list 'list_14' #15 - │ └─ item: string #11 - ├─ variant_5: struct #23 - │ ├─ [contains]: string #11 - │ └─ [mode]: optional 'optional_21' #22 - │ └─ item: string #20 enum{ '"insensitive"' } - ├─ variant_6: struct #24 - │ └─ [search]: string #11 - └─ variant_7: struct #25 - ├─ [endsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ [startsWith]: optional 'optional_12' #13 - └─ item: string #11 +root: struct 'Post_group_by_query_input' #425 +├─ [by]: list 'Post_group_by' #387 +│ └─ item: string #385 enum{ '"id"', '"title"' } +├─ [cursor]: optional #383 +│ └─ item: union 'Post_cursor' #382 +│ ├─ variant_0: struct #379 +│ │ └─ [id]: integer #183 +│ └─ variant_1: struct #380 +│ └─ [title]: string #184 +├─ [having]: optional #423 +│ └─ item: union 'Post_having' #422 +│ ├─ variant_0: struct 'Post_where_with_aggregates' #414 +│ │ ├─ [author]: optional #412 +│ │ │ └─ item: struct 'User_where_with_aggregates_excluding_Post' #411 +│ │ │ ├─ [id]: optional #393 +│ │ │ │ └─ item: &_prisma_integer_filter_with_aggregates_ex #114 +│ │ │ ├─ [name]: optional #394 +│ │ │ │ └─ item: &_prisma_string_filter_ex #13 +│ │ │ └─ [posts]: optional #409 +│ │ │ └─ item: union #408 +│ │ │ ├─ variant_0: struct #403 +│ │ │ │ └─ [every]: optional #402 +│ │ │ │ └─ item: struct 'Post_where_with_aggregates_excluding_User_and_Post' #401 +│ │ │ │ ├─ [author]: optional #399 +│ │ │ │ │ └─ item: &User_where_with_aggregates_excluding_Post #398 +│ │ │ │ ├─ [id]: optional #396 +│ │ │ │ │ └─ item: &_prisma_integer_filter_with_aggregates_ex #114 +│ │ │ │ └─ [title]: optional #397 +│ │ │ │ └─ item: &_prisma_string_filter_ex #13 +│ │ │ ├─ variant_1: struct #405 +│ │ │ │ └─ [some]: optional #404 +│ │ │ │ └─ item: struct 'Post_where_with_aggregates_excluding_User_and_Post' #401 +│ │ │ │ ├─ [author]: optional #399 +│ │ │ │ │ └─ item: &User_where_with_aggregates_excluding_Post #398 +│ │ │ │ ├─ [id]: optional #396 +│ │ │ │ │ └─ item: &_prisma_integer_filter_with_aggregates_ex #114 +│ │ │ │ └─ [title]: optional #397 +│ │ │ │ └─ item: &_prisma_string_filter_ex #13 +│ │ │ └─ variant_2: struct #407 +│ │ │ └─ [none]: optional #406 +│ │ │ └─ item: struct 'Post_where_with_aggregates_excluding_User_and_Post' #401 +│ │ │ ├─ [author]: optional #399 +│ │ │ │ └─ item: &User_where_with_aggregates_excluding_Post #398 +│ │ │ ├─ [id]: optional #396 +│ │ │ │ └─ item: &_prisma_integer_filter_with_aggregates_ex #114 +│ │ │ └─ [title]: optional #397 +│ │ │ └─ item: &_prisma_string_filter_ex #13 +│ │ ├─ [id]: optional #390 +│ │ │ └─ item: &_prisma_integer_filter_with_aggregates_ex #114 +│ │ └─ [title]: optional #391 +│ │ └─ item: &_prisma_string_filter_ex #13 +│ ├─ variant_1: struct #417 +│ │ └─ [AND]: list #416 +│ │ └─ item: &Post_having #415 +│ ├─ variant_2: struct #419 +│ │ └─ [OR]: list #418 +│ │ └─ item: &Post_having #415 +│ └─ variant_3: struct #420 +│ └─ [NOT]: &Post_having #415 +├─ [orderBy]: optional #375 +│ └─ item: list 'Post_order_by_with_aggregates' #374 +│ └─ item: struct #372 +│ ├─ [_avg]: optional #364 +│ │ └─ item: struct #363 +│ │ └─ [id]: &_prisma_sort #64 +│ ├─ [_count]: optional #362 +│ │ └─ item: struct #361 +│ │ ├─ [author]: &_prisma_sort #64 +│ │ ├─ [id]: &_prisma_sort #64 +│ │ └─ [title]: &_prisma_sort #64 +│ ├─ [_max]: optional #364 +│ │ └─ item: struct #363 +│ │ └─ [id]: &_prisma_sort #64 +│ ├─ [_min]: optional #364 +│ │ └─ item: struct #363 +│ │ └─ [id]: &_prisma_sort #64 +│ ├─ [_sum]: optional #364 +│ │ └─ item: struct #363 +│ │ └─ [id]: &_prisma_sort #64 +│ ├─ [author]: optional #371 +│ │ └─ item: list 'User_order_by_withoutrel_Post_User' #370 +│ │ └─ item: struct #368 +│ │ ├─ [id]: &_prisma_sort #64 +│ │ └─ [name]: &_prisma_sort #64 +│ ├─ [id]: &_prisma_sort #64 +│ └─ [title]: &_prisma_sort #64 +├─ [skip]: optional #377 +│ └─ item: &_skip #94 +├─ [take]: optional #376 +│ └─ item: &_take #90 +└─ [where]: optional #358 + └─ item: struct 'Post_query_where_input' #357 + ├─ [AND]: optional #354 + │ └─ item: list #353 + │ └─ item: &Post_query_where_input #352 + ├─ [NOT]: optional #355 + │ └─ item: &Post_query_where_input #352 + ├─ [OR]: optional #354 + │ └─ item: list #353 + │ └─ item: &Post_query_where_input #352 + ├─ [author]: optional #349 + │ └─ item: struct 'User_where_excluding_Post' #348 + │ ├─ [id]: optional #330 + │ │ └─ item: &_prisma_integer_filter_ex #35 + │ ├─ [name]: optional #331 + │ │ └─ item: &_prisma_string_filter_ex #13 + │ └─ [posts]: optional #346 + │ └─ item: union #345 + │ ├─ variant_0: struct #340 + │ │ └─ [every]: optional #339 + │ │ └─ item: struct 'Post_where_excluding_User_and_Post' #338 + │ │ ├─ [author]: optional #336 + │ │ │ └─ item: &User_where_excluding_Post #335 + │ │ ├─ [id]: optional #333 + │ │ │ └─ item: &_prisma_integer_filter_ex #35 + │ │ └─ [title]: optional #334 + │ │ └─ item: &_prisma_string_filter_ex #13 + │ ├─ variant_1: struct #342 + │ │ └─ [some]: optional #341 + │ │ └─ item: struct 'Post_where_excluding_User_and_Post' #338 + │ │ ├─ [author]: optional #336 + │ │ │ └─ item: &User_where_excluding_Post #335 + │ │ ├─ [id]: optional #333 + │ │ │ └─ item: &_prisma_integer_filter_ex #35 + │ │ └─ [title]: optional #334 + │ │ └─ item: &_prisma_string_filter_ex #13 + │ └─ variant_2: struct #344 + │ └─ [none]: optional #343 + │ └─ item: struct 'Post_where_excluding_User_and_Post' #338 + │ ├─ [author]: optional #336 + │ │ └─ item: &User_where_excluding_Post #335 + │ ├─ [id]: optional #333 + │ │ └─ item: &_prisma_integer_filter_ex #35 + │ └─ [title]: optional #334 + │ └─ item: &_prisma_string_filter_ex #13 + ├─ [id]: optional #327 + │ └─ item: &_prisma_integer_filter_ex #35 + └─ [title]: optional #328 + └─ item: &_prisma_string_filter_ex #13 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by Post out.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by Post out.snap index 81ab6ef9be..c27cb995dc 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by Post out.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by Post out.snap @@ -2,29 +2,25 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(out) --- -root: list 'Post_group' #523 -└─ item: struct #520 - ├─ [_avg]: struct 'Post_number_fields_float' #511 - │ └─ [id]: optional 'optional_508' #509 - │ └─ item: float #507 - ├─ [_count]: struct 'Post_count_aggregate' #506 - │ ├─ [_all]: optional 'optional_503' #504 - │ │ └─ item: integer #502 - │ ├─ [author]: optional 'optional_503' #504 - │ │ └─ item: integer #502 - │ ├─ [id]: optional 'optional_503' #504 - │ │ └─ item: integer #502 - │ └─ [title]: optional 'optional_503' #504 - │ └─ item: integer #502 - ├─ [_max]: struct 'Post_number_fields' #519 - │ └─ [id]: optional 'optional_516' #517 - │ └─ item: integer #515 - ├─ [_min]: struct 'Post_number_fields' #519 - │ └─ [id]: optional 'optional_516' #517 - │ └─ item: integer #515 - ├─ [_sum]: struct 'Post_number_fields' #519 - │ └─ [id]: optional 'optional_516' #517 - │ └─ item: integer #515 - ├─ [author]: &User #201 - ├─ [id]: integer #199 - └─ [title]: string #200 +root: list 'Post_group' #446 +└─ item: struct #444 + ├─ [_avg]: struct 'Post_number_fields_float' #436 + │ └─ [id]: optional #434 + │ └─ item: float #433 + ├─ [_count]: struct 'Post_count_aggregate' #431 + │ ├─ [_all]: optional #429 + │ │ └─ item: integer #428 + │ ├─ [author]: optional #429 + │ │ └─ item: integer #428 + │ ├─ [id]: optional #429 + │ │ └─ item: integer #428 + │ └─ [title]: optional #429 + │ └─ item: integer #428 + ├─ [_max]: &Post_number_fields #437 + ├─ [_min]: &Post_number_fields #437 + ├─ [_sum]: struct 'Post_number_fields' #443 + │ └─ [id]: optional #441 + │ └─ item: integer #440 + ├─ [author]: &User #185 + ├─ [id]: integer #183 + └─ [title]: string #184 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by Record inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by Record inp.snap index 9a07711a17..ecaa96da01 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by Record inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by Record inp.snap @@ -2,734 +2,249 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct 'Record_group_by_query_input' #166 -├─ [by]: list 'Record_group_by' #118 -│ └─ item: string #115 enum{ '"id"', '"name"', '"age"', '"created_at"' } -├─ [cursor]: optional 'optional_113' #114 -│ └─ item: union 'Record_cursor' #112 -│ ├─ variant_0: struct #107 +root: struct 'Record_group_by_query_input' #152 +├─ [by]: list 'Record_group_by' #109 +│ └─ item: string #107 enum{ '"id"', '"name"', '"age"', '"created_at"' } +├─ [cursor]: optional #105 +│ └─ item: union 'Record_cursor' #104 +│ ├─ variant_0: struct #99 │ │ └─ [id]: string #4 -│ ├─ variant_1: struct #108 +│ ├─ variant_1: struct #100 │ │ └─ [name]: string #5 -│ ├─ variant_2: struct #109 +│ ├─ variant_2: struct #101 │ │ └─ [age]: integer #6 -│ └─ variant_3: struct #110 +│ └─ variant_3: struct #102 │ └─ [created_at]: string #1 -├─ [having]: optional 'optional_163' #164 -│ └─ item: union 'Record_having' #162 -│ ├─ variant_0: struct 'Record_where_with_aggregates' #152 -│ │ ├─ [age]: optional 'optional_147' #148 -│ │ │ └─ item: optional '_prisma_integer_filter_with_aggregates_ex' #146 -│ │ │ └─ item: union #143 -│ │ │ ├─ variant_0: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ └─ item: float #123 -│ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #139 -│ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ └─ variant_1: struct #142 -│ │ │ └─ [not]: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ ├─ variant_1: struct #135 -│ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ ├─ variant_2: struct #136 -│ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ ├─ variant_3: struct #137 -│ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ ├─ variant_0: float #123 -│ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ └─ [not]: float #123 -│ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ └─ item: float #123 -│ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ └─ item: float #123 -│ │ │ │ └─ variant_5: struct #132 -│ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ └─ item: float #123 -│ │ │ ├─ variant_4: struct #138 -│ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ └─ variant_5: struct #139 -│ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ ├─ variant_0: integer #37 -│ │ │ ├─ variant_1: struct #42 -│ │ │ │ └─ [equals]: integer #37 -│ │ │ ├─ variant_2: struct #43 -│ │ │ │ └─ [not]: integer #37 -│ │ │ ├─ variant_3: struct #44 -│ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ └─ item: integer #37 -│ │ │ ├─ variant_4: struct #45 -│ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ └─ variant_5: struct #46 -│ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ └─ item: integer #37 -│ │ ├─ [created_at]: optional 'optional_149' #150 -│ │ │ └─ item: optional '_prisma_string_filter_ex' #32 -│ │ │ └─ item: union #29 -│ │ │ ├─ variant_0: union '_prisma_string_filter' #27 -│ │ │ │ ├─ variant_0: string #11 -│ │ │ │ ├─ variant_1: struct #16 -│ │ │ │ │ └─ [equals]: string #11 -│ │ │ │ ├─ variant_2: struct #17 -│ │ │ │ │ └─ [not]: string #11 -│ │ │ │ ├─ variant_3: struct #18 -│ │ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_4: struct #19 -│ │ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_5: struct #23 -│ │ │ │ │ ├─ [contains]: string #11 -│ │ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #24 -│ │ │ │ │ └─ [search]: string #11 -│ │ │ │ └─ variant_7: struct #25 -│ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ │ └─ item: string #11 -│ │ │ └─ variant_1: struct #28 -│ │ │ └─ [not]: union '_prisma_string_filter' #27 -│ │ │ ├─ variant_0: string #11 -│ │ │ ├─ variant_1: struct #16 -│ │ │ │ └─ [equals]: string #11 -│ │ │ ├─ variant_2: struct #17 -│ │ │ │ └─ [not]: string #11 -│ │ │ ├─ variant_3: struct #18 -│ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ └─ item: string #11 -│ │ │ ├─ variant_4: struct #19 -│ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ └─ item: string #11 -│ │ │ ├─ variant_5: struct #23 -│ │ │ │ ├─ [contains]: string #11 -│ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #24 -│ │ │ │ └─ [search]: string #11 -│ │ │ └─ variant_7: struct #25 -│ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ └─ item: string #11 -│ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ └─ item: string #11 -│ │ ├─ [id]: optional 'optional_119' #120 -│ │ │ └─ item: optional '_prisma_string_filter_ex' #32 -│ │ │ └─ item: union #29 -│ │ │ ├─ variant_0: union '_prisma_string_filter' #27 -│ │ │ │ ├─ variant_0: string #11 -│ │ │ │ ├─ variant_1: struct #16 -│ │ │ │ │ └─ [equals]: string #11 -│ │ │ │ ├─ variant_2: struct #17 -│ │ │ │ │ └─ [not]: string #11 -│ │ │ │ ├─ variant_3: struct #18 -│ │ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_4: struct #19 -│ │ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_5: struct #23 -│ │ │ │ │ ├─ [contains]: string #11 -│ │ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #24 -│ │ │ │ │ └─ [search]: string #11 -│ │ │ │ └─ variant_7: struct #25 -│ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ │ └─ item: string #11 -│ │ │ └─ variant_1: struct #28 -│ │ │ └─ [not]: union '_prisma_string_filter' #27 -│ │ │ ├─ variant_0: string #11 -│ │ │ ├─ variant_1: struct #16 -│ │ │ │ └─ [equals]: string #11 -│ │ │ ├─ variant_2: struct #17 -│ │ │ │ └─ [not]: string #11 -│ │ │ ├─ variant_3: struct #18 -│ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ └─ item: string #11 -│ │ │ ├─ variant_4: struct #19 -│ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ └─ item: string #11 -│ │ │ ├─ variant_5: struct #23 -│ │ │ │ ├─ [contains]: string #11 -│ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #24 -│ │ │ │ └─ [search]: string #11 -│ │ │ └─ variant_7: struct #25 -│ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ └─ item: string #11 -│ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ └─ item: string #11 -│ │ └─ [name]: optional 'optional_121' #122 -│ │ └─ item: optional '_prisma_string_filter_ex' #32 -│ │ └─ item: union #29 -│ │ ├─ variant_0: union '_prisma_string_filter' #27 -│ │ │ ├─ variant_0: string #11 -│ │ │ ├─ variant_1: struct #16 -│ │ │ │ └─ [equals]: string #11 -│ │ │ ├─ variant_2: struct #17 -│ │ │ │ └─ [not]: string #11 -│ │ │ ├─ variant_3: struct #18 -│ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ └─ item: string #11 -│ │ │ ├─ variant_4: struct #19 -│ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ └─ item: string #11 -│ │ │ ├─ variant_5: struct #23 -│ │ │ │ ├─ [contains]: string #11 -│ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #24 -│ │ │ │ └─ [search]: string #11 -│ │ │ └─ variant_7: struct #25 -│ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ └─ item: string #11 -│ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ └─ item: string #11 -│ │ └─ variant_1: struct #28 -│ │ └─ [not]: union '_prisma_string_filter' #27 -│ │ ├─ variant_0: string #11 -│ │ ├─ variant_1: struct #16 -│ │ │ └─ [equals]: string #11 -│ │ ├─ variant_2: struct #17 -│ │ │ └─ [not]: string #11 -│ │ ├─ variant_3: struct #18 -│ │ │ └─ [in]: list 'list_14' #15 -│ │ │ └─ item: string #11 -│ │ ├─ variant_4: struct #19 -│ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ └─ item: string #11 -│ │ ├─ variant_5: struct #23 -│ │ │ ├─ [contains]: string #11 -│ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ ├─ variant_6: struct #24 -│ │ │ └─ [search]: string #11 -│ │ └─ variant_7: struct #25 -│ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ └─ item: string #11 -│ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ └─ item: string #11 -│ ├─ variant_1: struct #156 -│ │ └─ [AND]: list 'list_154' #155 -│ │ └─ item: &Record_having #153 -│ ├─ variant_2: struct #159 -│ │ └─ [OR]: list 'list_157' #158 -│ │ └─ item: &Record_having #153 -│ └─ variant_3: struct #160 -│ └─ [NOT]: &Record_having #153 -├─ [orderBy]: optional 'optional_97' #98 -│ └─ item: list 'Record_order_by_with_aggregates' #96 -│ └─ item: struct #93 -│ ├─ [_avg]: optional 'optional_89' #90 -│ │ └─ item: struct #88 -│ │ └─ [age]: optional '_prisma_sort_nullable' #84 -│ │ └─ item: union #81 -│ │ ├─ variant_0: struct #80 -│ │ │ ├─ [nulls]: string '_prisma_nulls_order' #74 enum{ '"first"', '"last"' } -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [_count]: optional 'optional_86' #87 -│ │ └─ item: struct #85 -│ │ ├─ [age]: optional '_prisma_sort_nullable' #84 -│ │ │ └─ item: union #81 -│ │ │ ├─ variant_0: struct #80 -│ │ │ │ ├─ [nulls]: string '_prisma_nulls_order' #74 enum{ '"first"', '"last"' } -│ │ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ ├─ [created_at]: optional '_prisma_sort' #79 -│ │ │ └─ item: union #76 -│ │ │ ├─ variant_0: struct #75 -│ │ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ ├─ [id]: optional '_prisma_sort' #79 -│ │ │ └─ item: union #76 -│ │ │ ├─ variant_0: struct #75 -│ │ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ [name]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [_max]: optional 'optional_89' #90 -│ │ └─ item: struct #88 -│ │ └─ [age]: optional '_prisma_sort_nullable' #84 -│ │ └─ item: union #81 -│ │ ├─ variant_0: struct #80 -│ │ │ ├─ [nulls]: string '_prisma_nulls_order' #74 enum{ '"first"', '"last"' } -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [_min]: optional 'optional_89' #90 -│ │ └─ item: struct #88 -│ │ └─ [age]: optional '_prisma_sort_nullable' #84 -│ │ └─ item: union #81 -│ │ ├─ variant_0: struct #80 -│ │ │ ├─ [nulls]: string '_prisma_nulls_order' #74 enum{ '"first"', '"last"' } -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [_sum]: optional 'optional_89' #90 -│ │ └─ item: struct #88 -│ │ └─ [age]: optional '_prisma_sort_nullable' #84 -│ │ └─ item: union #81 -│ │ ├─ variant_0: struct #80 -│ │ │ ├─ [nulls]: string '_prisma_nulls_order' #74 enum{ '"first"', '"last"' } -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [age]: optional '_prisma_sort_nullable' #84 -│ │ └─ item: union #81 -│ │ ├─ variant_0: struct #80 -│ │ │ ├─ [nulls]: string '_prisma_nulls_order' #74 enum{ '"first"', '"last"' } -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [created_at]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [id]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ └─ [name]: optional '_prisma_sort' #79 -│ └─ item: union #76 -│ ├─ variant_0: struct #75 -│ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -├─ [skip]: optional 'optional_105' #106 -│ └─ item: integer '_skip' #104 -├─ [take]: optional 'optional_101' #102 -│ └─ item: integer '_take' #100 -└─ [where]: optional 'optional_69' #70 - └─ item: struct 'Record_query_where_input' #68 - ├─ [AND]: optional 'optional_63' #64 - │ └─ item: list 'list_61' #62 - │ └─ item: &Record_query_where_input #60 - ├─ [NOT]: optional 'optional_65' #66 - │ └─ item: &Record_query_where_input #60 - ├─ [OR]: optional 'optional_63' #64 - │ └─ item: list 'list_61' #62 - │ └─ item: &Record_query_where_input #60 - ├─ [age]: optional 'optional_54' #55 - │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: either '_prisma_integer_filter' #48 +├─ [having]: optional #150 +│ └─ item: union 'Record_having' #149 +│ ├─ variant_0: struct 'Record_where_with_aggregates' #141 +│ │ ├─ [age]: optional #138 +│ │ │ └─ item: optional '_prisma_integer_filter_with_aggregates_ex' #137 +│ │ │ └─ item: union #135 +│ │ │ ├─ variant_0: union '_prisma_integer_filter_with_aggregates' #133 +│ │ │ │ ├─ variant_0: &_prisma_integer_filter #36 +│ │ │ │ ├─ variant_1: struct #127 +│ │ │ │ │ └─ [_count]: &_prisma_integer_filter #36 +│ │ │ │ ├─ variant_2: struct #128 +│ │ │ │ │ └─ [_sum]: &_prisma_integer_filter #36 +│ │ │ │ ├─ variant_3: struct #129 +│ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #126 +│ │ │ │ │ ├─ variant_0: float #117 +│ │ │ │ │ ├─ variant_1: struct #120 +│ │ │ │ │ │ └─ [equals]: float #117 +│ │ │ │ │ ├─ variant_2: struct #121 +│ │ │ │ │ │ └─ [not]: float #117 +│ │ │ │ │ ├─ variant_3: struct #122 +│ │ │ │ │ │ ├─ [gt]: optional #118 +│ │ │ │ │ │ │ └─ item: float #117 +│ │ │ │ │ │ ├─ [gte]: optional #118 +│ │ │ │ │ │ │ └─ item: float #117 +│ │ │ │ │ │ ├─ [lt]: optional #118 +│ │ │ │ │ │ │ └─ item: float #117 +│ │ │ │ │ │ └─ [lte]: optional #118 +│ │ │ │ │ │ └─ item: float #117 +│ │ │ │ │ ├─ variant_4: struct #123 +│ │ │ │ │ │ └─ [in]: list #119 +│ │ │ │ │ │ └─ item: float #117 +│ │ │ │ │ └─ variant_5: struct #124 +│ │ │ │ │ └─ [notIn]: list #119 +│ │ │ │ │ └─ item: float #117 +│ │ │ │ ├─ variant_4: struct #130 +│ │ │ │ │ └─ [_min]: &_prisma_integer_filter #36 +│ │ │ │ └─ variant_5: struct #131 +│ │ │ │ └─ [_max]: &_prisma_integer_filter #36 +│ │ │ └─ variant_1: struct #134 +│ │ │ └─ [not]: union '_prisma_integer_filter_with_aggregates' #133 +│ │ │ ├─ variant_0: &_prisma_integer_filter #36 +│ │ │ ├─ variant_1: struct #127 +│ │ │ │ └─ [_count]: &_prisma_integer_filter #36 +│ │ │ ├─ variant_2: struct #128 +│ │ │ │ └─ [_sum]: &_prisma_integer_filter #36 +│ │ │ ├─ variant_3: struct #129 +│ │ │ │ └─ [_avg]: either '_prisma_float_filter' #126 +│ │ │ │ ├─ variant_0: float #117 +│ │ │ │ ├─ variant_1: struct #120 +│ │ │ │ │ └─ [equals]: float #117 +│ │ │ │ ├─ variant_2: struct #121 +│ │ │ │ │ └─ [not]: float #117 +│ │ │ │ ├─ variant_3: struct #122 +│ │ │ │ │ ├─ [gt]: optional #118 +│ │ │ │ │ │ └─ item: float #117 +│ │ │ │ │ ├─ [gte]: optional #118 +│ │ │ │ │ │ └─ item: float #117 +│ │ │ │ │ ├─ [lt]: optional #118 +│ │ │ │ │ │ └─ item: float #117 +│ │ │ │ │ └─ [lte]: optional #118 +│ │ │ │ │ └─ item: float #117 +│ │ │ │ ├─ variant_4: struct #123 +│ │ │ │ │ └─ [in]: list #119 +│ │ │ │ │ └─ item: float #117 +│ │ │ │ └─ variant_5: struct #124 +│ │ │ │ └─ [notIn]: list #119 +│ │ │ │ └─ item: float #117 +│ │ │ ├─ variant_4: struct #130 +│ │ │ │ └─ [_min]: &_prisma_integer_filter #36 +│ │ │ └─ variant_5: struct #131 +│ │ │ └─ [_max]: &_prisma_integer_filter #36 +│ │ ├─ [created_at]: optional #139 +│ │ │ └─ item: &_prisma_string_filter_ex #13 +│ │ ├─ [id]: optional #112 +│ │ │ └─ item: &_prisma_string_filter_ex #13 +│ │ └─ [name]: optional #113 +│ │ └─ item: &_prisma_string_filter_ex #13 +│ ├─ variant_1: struct #144 +│ │ └─ [AND]: list #143 +│ │ └─ item: &Record_having #142 +│ ├─ variant_2: struct #146 +│ │ └─ [OR]: list #145 +│ │ └─ item: &Record_having #142 +│ └─ variant_3: struct #147 +│ └─ [NOT]: &Record_having #142 +├─ [orderBy]: optional #89 +│ └─ item: list 'Record_order_by_with_aggregates' #88 +│ └─ item: struct #86 +│ ├─ [_avg]: optional #83 +│ │ └─ item: struct #82 +│ │ └─ [age]: &_prisma_sort_nullable #75 +│ ├─ [_count]: optional #81 +│ │ └─ item: struct #80 +│ │ ├─ [age]: optional '_prisma_sort_nullable' #79 +│ │ │ └─ item: union #77 +│ │ │ ├─ variant_0: struct #76 +│ │ │ │ ├─ [nulls]: &_prisma_nulls_order #68 enum{ '"first"', '"last"' } +│ │ │ │ └─ [sort]: &_prisma_sort_order #65 enum{ '"asc"', '"desc"' } +│ │ │ └─ variant_1: &_prisma_sort_order #65 enum{ '"asc"', '"desc"' } +│ │ ├─ [created_at]: &_prisma_sort #64 +│ │ ├─ [id]: optional '_prisma_sort' #74 +│ │ │ └─ item: union #72 +│ │ │ ├─ variant_0: struct #71 +│ │ │ │ └─ [sort]: string '_prisma_sort_order' #67 enum{ '"asc"', '"desc"' } +│ │ │ └─ variant_1: string '_prisma_sort_order' #67 enum{ '"asc"', '"desc"' } +│ │ └─ [name]: &_prisma_sort #64 +│ ├─ [_max]: optional #83 +│ │ └─ item: struct #82 +│ │ └─ [age]: &_prisma_sort_nullable #75 +│ ├─ [_min]: optional #83 +│ │ └─ item: struct #82 +│ │ └─ [age]: &_prisma_sort_nullable #75 +│ ├─ [_sum]: optional #83 +│ │ └─ item: struct #82 +│ │ └─ [age]: &_prisma_sort_nullable #75 +│ ├─ [age]: &_prisma_sort_nullable #75 +│ ├─ [created_at]: &_prisma_sort #64 +│ ├─ [id]: &_prisma_sort #64 +│ └─ [name]: &_prisma_sort #64 +├─ [skip]: optional #97 +│ └─ item: integer '_skip' #96 +├─ [take]: optional #93 +│ └─ item: integer '_take' #92 +└─ [where]: optional #61 + └─ item: struct 'Record_query_where_input' #60 + ├─ [AND]: optional #57 + │ └─ item: list #56 + │ └─ item: &Record_query_where_input #55 + ├─ [NOT]: optional #58 + │ └─ item: &Record_query_where_input #55 + ├─ [OR]: optional #57 + │ └─ item: list #56 + │ └─ item: &Record_query_where_input #55 + ├─ [age]: optional #51 + │ └─ item: optional '_prisma_integer_filter_ex' #50 + │ └─ item: union #48 + │ ├─ variant_0: either '_prisma_integer_filter' #46 │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 + │ │ ├─ variant_1: struct #40 │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 + │ │ ├─ variant_2: struct #41 │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 + │ │ ├─ variant_3: struct #42 + │ │ │ ├─ [gt]: optional #38 │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 + │ │ │ ├─ [gte]: optional #38 │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 + │ │ │ ├─ [lt]: optional #38 │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 + │ │ │ └─ [lte]: optional #38 │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 + │ │ ├─ variant_4: struct #43 + │ │ │ └─ [in]: list #39 │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 + │ │ └─ variant_5: struct #44 + │ │ └─ [notIn]: list #39 │ │ └─ item: integer #37 - │ └─ variant_1: struct #49 - │ └─ [not]: either '_prisma_integer_filter' #48 + │ └─ variant_1: struct #47 + │ └─ [not]: either '_prisma_integer_filter' #46 │ ├─ variant_0: integer #37 - │ ├─ variant_1: struct #42 + │ ├─ variant_1: struct #40 │ │ └─ [equals]: integer #37 - │ ├─ variant_2: struct #43 + │ ├─ variant_2: struct #41 │ │ └─ [not]: integer #37 - │ ├─ variant_3: struct #44 - │ │ ├─ [gt]: optional 'optional_38' #39 + │ ├─ variant_3: struct #42 + │ │ ├─ [gt]: optional #38 │ │ │ └─ item: integer #37 - │ │ ├─ [gte]: optional 'optional_38' #39 + │ │ ├─ [gte]: optional #38 │ │ │ └─ item: integer #37 - │ │ ├─ [lt]: optional 'optional_38' #39 + │ │ ├─ [lt]: optional #38 │ │ │ └─ item: integer #37 - │ │ └─ [lte]: optional 'optional_38' #39 + │ │ └─ [lte]: optional #38 │ │ └─ item: integer #37 - │ ├─ variant_4: struct #45 - │ │ └─ [in]: list 'list_40' #41 + │ ├─ variant_4: struct #43 + │ │ └─ [in]: list #39 │ │ └─ item: integer #37 - │ └─ variant_5: struct #46 - │ └─ [notIn]: list 'list_40' #41 + │ └─ variant_5: struct #44 + │ └─ [notIn]: list #39 │ └─ item: integer #37 - ├─ [created_at]: optional 'optional_56' #57 + ├─ [created_at]: optional #52 + │ └─ item: &_prisma_string_filter_ex #13 + ├─ [id]: optional #33 │ └─ item: optional '_prisma_string_filter_ex' #32 - │ └─ item: union #29 - │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_1: struct #28 - │ └─ [not]: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - ├─ [id]: optional 'optional_33' #34 - │ └─ item: optional '_prisma_string_filter_ex' #32 - │ └─ item: union #29 - │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_1: struct #28 - │ └─ [not]: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ [name]: optional 'optional_35' #36 - └─ item: optional '_prisma_string_filter_ex' #32 - └─ item: union #29 - ├─ variant_0: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ variant_1: struct #28 - └─ [not]: union '_prisma_string_filter' #27 - ├─ variant_0: string #11 - ├─ variant_1: struct #16 - │ └─ [equals]: string #11 - ├─ variant_2: struct #17 - │ └─ [not]: string #11 - ├─ variant_3: struct #18 - │ └─ [in]: list 'list_14' #15 - │ └─ item: string #11 - ├─ variant_4: struct #19 - │ └─ [notIn]: list 'list_14' #15 - │ └─ item: string #11 - ├─ variant_5: struct #23 - │ ├─ [contains]: string #11 - │ └─ [mode]: optional 'optional_21' #22 - │ └─ item: string #20 enum{ '"insensitive"' } - ├─ variant_6: struct #24 - │ └─ [search]: string #11 - └─ variant_7: struct #25 - ├─ [endsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ [startsWith]: optional 'optional_12' #13 - └─ item: string #11 + │ └─ item: union #30 + │ ├─ variant_0: union '_prisma_string_filter' #28 + │ │ ├─ variant_0: string #15 + │ │ ├─ variant_1: struct #18 + │ │ │ └─ [equals]: string #15 + │ │ ├─ variant_2: struct #19 + │ │ │ └─ [not]: string #15 + │ │ ├─ variant_3: struct #20 + │ │ │ └─ [in]: list #17 + │ │ │ └─ item: string #15 + │ │ ├─ variant_4: struct #21 + │ │ │ └─ [notIn]: list #17 + │ │ │ └─ item: string #15 + │ │ ├─ variant_5: struct #24 + │ │ │ ├─ [contains]: string #15 + │ │ │ └─ [mode]: optional #23 + │ │ │ └─ item: string #22 enum{ '"insensitive"' } + │ │ ├─ variant_6: struct #25 + │ │ │ └─ [search]: string #15 + │ │ └─ variant_7: struct #26 + │ │ ├─ [endsWith]: optional #16 + │ │ │ └─ item: string #15 + │ │ └─ [startsWith]: optional #16 + │ │ └─ item: string #15 + │ └─ variant_1: struct #29 + │ └─ [not]: union '_prisma_string_filter' #28 + │ ├─ variant_0: string #15 + │ ├─ variant_1: struct #18 + │ │ └─ [equals]: string #15 + │ ├─ variant_2: struct #19 + │ │ └─ [not]: string #15 + │ ├─ variant_3: struct #20 + │ │ └─ [in]: list #17 + │ │ └─ item: string #15 + │ ├─ variant_4: struct #21 + │ │ └─ [notIn]: list #17 + │ │ └─ item: string #15 + │ ├─ variant_5: struct #24 + │ │ ├─ [contains]: string #15 + │ │ └─ [mode]: optional #23 + │ │ └─ item: string #22 enum{ '"insensitive"' } + │ ├─ variant_6: struct #25 + │ │ └─ [search]: string #15 + │ └─ variant_7: struct #26 + │ ├─ [endsWith]: optional #16 + │ │ └─ item: string #15 + │ └─ [startsWith]: optional #16 + │ └─ item: string #15 + └─ [name]: optional #34 + └─ item: &_prisma_string_filter_ex #13 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by Record out.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by Record out.snap index c712e6e9fa..6d904a4a14 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by Record out.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by Record out.snap @@ -2,32 +2,28 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(out) --- -root: list 'Record_group' #188 -└─ item: struct #185 - ├─ [_avg]: struct 'Record_number_fields_float' #176 - │ └─ [age]: optional 'optional_173' #174 - │ └─ item: float #172 - ├─ [_count]: struct 'Record_count_aggregate' #171 - │ ├─ [_all]: optional 'optional_168' #169 - │ │ └─ item: integer #167 - │ ├─ [age]: optional 'optional_168' #169 - │ │ └─ item: integer #167 - │ ├─ [created_at]: optional 'optional_168' #169 - │ │ └─ item: integer #167 - │ ├─ [id]: optional 'optional_168' #169 - │ │ └─ item: integer #167 - │ └─ [name]: optional 'optional_168' #169 +root: list 'Record_group' #173 +└─ item: struct #171 + ├─ [_avg]: struct 'Record_number_fields_float' #163 + │ └─ [age]: optional #161 + │ └─ item: float #160 + ├─ [_count]: struct 'Record_count_aggregate' #158 + │ ├─ [_all]: optional #156 + │ │ └─ item: integer #155 + │ ├─ [age]: optional #156 + │ │ └─ item: integer #155 + │ ├─ [created_at]: optional #156 + │ │ └─ item: integer #155 + │ ├─ [id]: optional #156 + │ │ └─ item: integer #155 + │ └─ [name]: optional #156 + │ └─ item: integer #155 + ├─ [_max]: &Record_number_fields #164 + ├─ [_min]: &Record_number_fields #164 + ├─ [_sum]: struct 'Record_number_fields' #170 + │ └─ [age]: optional #168 │ └─ item: integer #167 - ├─ [_max]: struct 'Record_number_fields' #184 - │ └─ [age]: optional 'optional_181' #182 - │ └─ item: integer #180 - ├─ [_min]: struct 'Record_number_fields' #184 - │ └─ [age]: optional 'optional_181' #182 - │ └─ item: integer #180 - ├─ [_sum]: struct 'Record_number_fields' #184 - │ └─ [age]: optional 'optional_181' #182 - │ └─ item: integer #180 - ├─ [age]: optional 'optional_7' #8 + ├─ [age]: optional #7 │ └─ item: integer #6 ├─ [created_at]: string #1 ├─ [id]: string #4 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by User inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by User inp.snap index 9a680d2ffd..3114acce7e 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by User inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by User inp.snap @@ -2,3120 +2,222 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct 'User_group_by_query_input' #350 -├─ [by]: list 'User_group_by' #291 -│ └─ item: string #288 enum{ '"id"', '"name"' } -├─ [cursor]: optional 'optional_286' #287 -│ └─ item: union 'User_cursor' #285 -│ ├─ variant_0: struct #282 -│ │ └─ [id]: integer #190 -│ └─ variant_1: struct #283 -│ └─ [name]: string #191 -├─ [having]: optional 'optional_347' #348 -│ └─ item: union 'User_having' #346 -│ ├─ variant_0: struct 'User_where_with_aggregates' #336 -│ │ ├─ [id]: optional 'optional_292' #293 -│ │ │ └─ item: optional '_prisma_integer_filter_with_aggregates_ex' #146 -│ │ │ └─ item: union #143 -│ │ │ ├─ variant_0: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ └─ item: float #123 -│ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #139 -│ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ └─ variant_1: struct #142 -│ │ │ └─ [not]: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ ├─ variant_1: struct #135 -│ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ ├─ variant_2: struct #136 -│ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ ├─ variant_3: struct #137 -│ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ ├─ variant_0: float #123 -│ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ └─ [not]: float #123 -│ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ └─ item: float #123 -│ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ └─ item: float #123 -│ │ │ │ └─ variant_5: struct #132 -│ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ └─ item: float #123 -│ │ │ ├─ variant_4: struct #138 -│ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ └─ variant_5: struct #139 -│ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ ├─ variant_0: integer #37 -│ │ │ ├─ variant_1: struct #42 -│ │ │ │ └─ [equals]: integer #37 -│ │ │ ├─ variant_2: struct #43 -│ │ │ │ └─ [not]: integer #37 -│ │ │ ├─ variant_3: struct #44 -│ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ └─ item: integer #37 -│ │ │ ├─ variant_4: struct #45 -│ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ └─ variant_5: struct #46 -│ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ └─ item: integer #37 -│ │ ├─ [name]: optional 'optional_294' #295 -│ │ │ └─ item: optional '_prisma_string_filter_ex' #32 -│ │ │ └─ item: union #29 -│ │ │ ├─ variant_0: union '_prisma_string_filter' #27 -│ │ │ │ ├─ variant_0: string #11 -│ │ │ │ ├─ variant_1: struct #16 -│ │ │ │ │ └─ [equals]: string #11 -│ │ │ │ ├─ variant_2: struct #17 -│ │ │ │ │ └─ [not]: string #11 -│ │ │ │ ├─ variant_3: struct #18 -│ │ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_4: struct #19 -│ │ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_5: struct #23 -│ │ │ │ │ ├─ [contains]: string #11 -│ │ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #24 -│ │ │ │ │ └─ [search]: string #11 -│ │ │ │ └─ variant_7: struct #25 -│ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ │ └─ item: string #11 -│ │ │ └─ variant_1: struct #28 -│ │ │ └─ [not]: union '_prisma_string_filter' #27 -│ │ │ ├─ variant_0: string #11 -│ │ │ ├─ variant_1: struct #16 -│ │ │ │ └─ [equals]: string #11 -│ │ │ ├─ variant_2: struct #17 -│ │ │ │ └─ [not]: string #11 -│ │ │ ├─ variant_3: struct #18 -│ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ └─ item: string #11 -│ │ │ ├─ variant_4: struct #19 -│ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ └─ item: string #11 -│ │ │ ├─ variant_5: struct #23 -│ │ │ │ ├─ [contains]: string #11 -│ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #24 -│ │ │ │ └─ [search]: string #11 -│ │ │ └─ variant_7: struct #25 -│ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ └─ item: string #11 -│ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ └─ item: string #11 -│ │ └─ [posts]: optional 'optional_333' #334 -│ │ └─ item: union #332 -│ │ ├─ variant_0: struct #325 -│ │ │ └─ [every]: optional 'optional_323' #324 -│ │ │ └─ item: struct 'Post_where_with_aggregates_excluding_User' #322 -│ │ │ ├─ [author]: optional 'optional_319' #320 -│ │ │ │ └─ item: struct 'User_where_with_aggregates_excluding_User_and_Post_where_with_aggregates_excluding_User' #318 -│ │ │ │ ├─ [id]: optional 'optional_300' #301 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_with_aggregates_ex' #146 -│ │ │ │ │ └─ item: union #143 -│ │ │ │ │ ├─ variant_0: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #139 -│ │ │ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_1: struct #142 -│ │ │ │ │ └─ [not]: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #139 -│ │ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ [name]: optional 'optional_302' #303 -│ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #32 -│ │ │ │ │ └─ item: union #29 -│ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #27 -│ │ │ │ │ │ ├─ variant_0: string #11 -│ │ │ │ │ │ ├─ variant_1: struct #16 -│ │ │ │ │ │ │ └─ [equals]: string #11 -│ │ │ │ │ │ ├─ variant_2: struct #17 -│ │ │ │ │ │ │ └─ [not]: string #11 -│ │ │ │ │ │ ├─ variant_3: struct #18 -│ │ │ │ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ │ ├─ variant_4: struct #19 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ │ ├─ variant_5: struct #23 -│ │ │ │ │ │ │ ├─ [contains]: string #11 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #24 -│ │ │ │ │ │ │ └─ [search]: string #11 -│ │ │ │ │ │ └─ variant_7: struct #25 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ └─ variant_1: struct #28 -│ │ │ │ │ └─ [not]: union '_prisma_string_filter' #27 -│ │ │ │ │ ├─ variant_0: string #11 -│ │ │ │ │ ├─ variant_1: struct #16 -│ │ │ │ │ │ └─ [equals]: string #11 -│ │ │ │ │ ├─ variant_2: struct #17 -│ │ │ │ │ │ └─ [not]: string #11 -│ │ │ │ │ ├─ variant_3: struct #18 -│ │ │ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ ├─ variant_4: struct #19 -│ │ │ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ ├─ variant_5: struct #23 -│ │ │ │ │ │ ├─ [contains]: string #11 -│ │ │ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #24 -│ │ │ │ │ │ └─ [search]: string #11 -│ │ │ │ │ └─ variant_7: struct #25 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ └─ [posts]: optional 'optional_315' #316 -│ │ │ │ └─ item: union #314 -│ │ │ │ ├─ variant_0: struct #307 -│ │ │ │ │ └─ [every]: optional 'optional_305' #306 -│ │ │ │ │ └─ item: &Post_where_with_aggregates_excluding_User #304 -│ │ │ │ ├─ variant_1: struct #310 -│ │ │ │ │ └─ [some]: optional 'optional_308' #309 -│ │ │ │ │ └─ item: &Post_where_with_aggregates_excluding_User #304 -│ │ │ │ └─ variant_2: struct #313 -│ │ │ │ └─ [none]: optional 'optional_311' #312 -│ │ │ │ └─ item: &Post_where_with_aggregates_excluding_User #304 -│ │ │ ├─ [id]: optional 'optional_296' #297 -│ │ │ │ └─ item: optional '_prisma_integer_filter_with_aggregates_ex' #146 -│ │ │ │ └─ item: union #143 -│ │ │ │ ├─ variant_0: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #139 -│ │ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_1: struct #142 -│ │ │ │ └─ [not]: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ └─ item: float #123 -│ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #139 -│ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ └─ [title]: optional 'optional_298' #299 -│ │ │ └─ item: optional '_prisma_string_filter_ex' #32 -│ │ │ └─ item: union #29 -│ │ │ ├─ variant_0: union '_prisma_string_filter' #27 -│ │ │ │ ├─ variant_0: string #11 -│ │ │ │ ├─ variant_1: struct #16 -│ │ │ │ │ └─ [equals]: string #11 -│ │ │ │ ├─ variant_2: struct #17 -│ │ │ │ │ └─ [not]: string #11 -│ │ │ │ ├─ variant_3: struct #18 -│ │ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_4: struct #19 -│ │ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_5: struct #23 -│ │ │ │ │ ├─ [contains]: string #11 -│ │ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #24 -│ │ │ │ │ └─ [search]: string #11 -│ │ │ │ └─ variant_7: struct #25 -│ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ │ └─ item: string #11 -│ │ │ └─ variant_1: struct #28 -│ │ │ └─ [not]: union '_prisma_string_filter' #27 -│ │ │ ├─ variant_0: string #11 -│ │ │ ├─ variant_1: struct #16 -│ │ │ │ └─ [equals]: string #11 -│ │ │ ├─ variant_2: struct #17 -│ │ │ │ └─ [not]: string #11 -│ │ │ ├─ variant_3: struct #18 -│ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ └─ item: string #11 -│ │ │ ├─ variant_4: struct #19 -│ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ └─ item: string #11 -│ │ │ ├─ variant_5: struct #23 -│ │ │ │ ├─ [contains]: string #11 -│ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #24 -│ │ │ │ └─ [search]: string #11 -│ │ │ └─ variant_7: struct #25 -│ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ └─ item: string #11 -│ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ └─ item: string #11 -│ │ ├─ variant_1: struct #328 -│ │ │ └─ [some]: optional 'optional_326' #327 -│ │ │ └─ item: struct 'Post_where_with_aggregates_excluding_User' #322 -│ │ │ ├─ [author]: optional 'optional_319' #320 -│ │ │ │ └─ item: struct 'User_where_with_aggregates_excluding_User_and_Post_where_with_aggregates_excluding_User' #318 -│ │ │ │ ├─ [id]: optional 'optional_300' #301 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_with_aggregates_ex' #146 -│ │ │ │ │ └─ item: union #143 -│ │ │ │ │ ├─ variant_0: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #139 -│ │ │ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_1: struct #142 -│ │ │ │ │ └─ [not]: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #139 -│ │ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ [name]: optional 'optional_302' #303 -│ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #32 -│ │ │ │ │ └─ item: union #29 -│ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #27 -│ │ │ │ │ │ ├─ variant_0: string #11 -│ │ │ │ │ │ ├─ variant_1: struct #16 -│ │ │ │ │ │ │ └─ [equals]: string #11 -│ │ │ │ │ │ ├─ variant_2: struct #17 -│ │ │ │ │ │ │ └─ [not]: string #11 -│ │ │ │ │ │ ├─ variant_3: struct #18 -│ │ │ │ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ │ ├─ variant_4: struct #19 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ │ ├─ variant_5: struct #23 -│ │ │ │ │ │ │ ├─ [contains]: string #11 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #24 -│ │ │ │ │ │ │ └─ [search]: string #11 -│ │ │ │ │ │ └─ variant_7: struct #25 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ └─ variant_1: struct #28 -│ │ │ │ │ └─ [not]: union '_prisma_string_filter' #27 -│ │ │ │ │ ├─ variant_0: string #11 -│ │ │ │ │ ├─ variant_1: struct #16 -│ │ │ │ │ │ └─ [equals]: string #11 -│ │ │ │ │ ├─ variant_2: struct #17 -│ │ │ │ │ │ └─ [not]: string #11 -│ │ │ │ │ ├─ variant_3: struct #18 -│ │ │ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ ├─ variant_4: struct #19 -│ │ │ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ ├─ variant_5: struct #23 -│ │ │ │ │ │ ├─ [contains]: string #11 -│ │ │ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #24 -│ │ │ │ │ │ └─ [search]: string #11 -│ │ │ │ │ └─ variant_7: struct #25 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ └─ [posts]: optional 'optional_315' #316 -│ │ │ │ └─ item: union #314 -│ │ │ │ ├─ variant_0: struct #307 -│ │ │ │ │ └─ [every]: optional 'optional_305' #306 -│ │ │ │ │ └─ item: &Post_where_with_aggregates_excluding_User #304 -│ │ │ │ ├─ variant_1: struct #310 -│ │ │ │ │ └─ [some]: optional 'optional_308' #309 -│ │ │ │ │ └─ item: &Post_where_with_aggregates_excluding_User #304 -│ │ │ │ └─ variant_2: struct #313 -│ │ │ │ └─ [none]: optional 'optional_311' #312 -│ │ │ │ └─ item: &Post_where_with_aggregates_excluding_User #304 -│ │ │ ├─ [id]: optional 'optional_296' #297 -│ │ │ │ └─ item: optional '_prisma_integer_filter_with_aggregates_ex' #146 -│ │ │ │ └─ item: union #143 -│ │ │ │ ├─ variant_0: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #139 -│ │ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_1: struct #142 -│ │ │ │ └─ [not]: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ └─ item: float #123 -│ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #139 -│ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ └─ [title]: optional 'optional_298' #299 -│ │ │ └─ item: optional '_prisma_string_filter_ex' #32 -│ │ │ └─ item: union #29 -│ │ │ ├─ variant_0: union '_prisma_string_filter' #27 -│ │ │ │ ├─ variant_0: string #11 -│ │ │ │ ├─ variant_1: struct #16 -│ │ │ │ │ └─ [equals]: string #11 -│ │ │ │ ├─ variant_2: struct #17 -│ │ │ │ │ └─ [not]: string #11 -│ │ │ │ ├─ variant_3: struct #18 -│ │ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_4: struct #19 -│ │ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_5: struct #23 -│ │ │ │ │ ├─ [contains]: string #11 -│ │ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #24 -│ │ │ │ │ └─ [search]: string #11 -│ │ │ │ └─ variant_7: struct #25 -│ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ │ └─ item: string #11 -│ │ │ └─ variant_1: struct #28 -│ │ │ └─ [not]: union '_prisma_string_filter' #27 -│ │ │ ├─ variant_0: string #11 -│ │ │ ├─ variant_1: struct #16 -│ │ │ │ └─ [equals]: string #11 -│ │ │ ├─ variant_2: struct #17 -│ │ │ │ └─ [not]: string #11 -│ │ │ ├─ variant_3: struct #18 -│ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ └─ item: string #11 -│ │ │ ├─ variant_4: struct #19 -│ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ └─ item: string #11 -│ │ │ ├─ variant_5: struct #23 -│ │ │ │ ├─ [contains]: string #11 -│ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #24 -│ │ │ │ └─ [search]: string #11 -│ │ │ └─ variant_7: struct #25 -│ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ └─ item: string #11 -│ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ └─ item: string #11 -│ │ └─ variant_2: struct #331 -│ │ └─ [none]: optional 'optional_329' #330 -│ │ └─ item: struct 'Post_where_with_aggregates_excluding_User' #322 -│ │ ├─ [author]: optional 'optional_319' #320 -│ │ │ └─ item: struct 'User_where_with_aggregates_excluding_User_and_Post_where_with_aggregates_excluding_User' #318 -│ │ │ ├─ [id]: optional 'optional_300' #301 -│ │ │ │ └─ item: optional '_prisma_integer_filter_with_aggregates_ex' #146 -│ │ │ │ └─ item: union #143 -│ │ │ │ ├─ variant_0: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #139 -│ │ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_1: struct #142 -│ │ │ │ └─ [not]: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ └─ item: float #123 -│ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #139 -│ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ ├─ [name]: optional 'optional_302' #303 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #32 -│ │ │ │ └─ item: union #29 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #27 -│ │ │ │ │ ├─ variant_0: string #11 -│ │ │ │ │ ├─ variant_1: struct #16 -│ │ │ │ │ │ └─ [equals]: string #11 -│ │ │ │ │ ├─ variant_2: struct #17 -│ │ │ │ │ │ └─ [not]: string #11 -│ │ │ │ │ ├─ variant_3: struct #18 -│ │ │ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ ├─ variant_4: struct #19 -│ │ │ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ ├─ variant_5: struct #23 -│ │ │ │ │ │ ├─ [contains]: string #11 -│ │ │ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #24 -│ │ │ │ │ │ └─ [search]: string #11 -│ │ │ │ │ └─ variant_7: struct #25 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ │ │ └─ item: string #11 -│ │ │ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ └─ variant_1: struct #28 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #27 -│ │ │ │ ├─ variant_0: string #11 -│ │ │ │ ├─ variant_1: struct #16 -│ │ │ │ │ └─ [equals]: string #11 -│ │ │ │ ├─ variant_2: struct #17 -│ │ │ │ │ └─ [not]: string #11 -│ │ │ │ ├─ variant_3: struct #18 -│ │ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_4: struct #19 -│ │ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ ├─ variant_5: struct #23 -│ │ │ │ │ ├─ [contains]: string #11 -│ │ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #24 -│ │ │ │ │ └─ [search]: string #11 -│ │ │ │ └─ variant_7: struct #25 -│ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ │ └─ item: string #11 -│ │ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ │ └─ item: string #11 -│ │ │ └─ [posts]: optional 'optional_315' #316 -│ │ │ └─ item: union #314 -│ │ │ ├─ variant_0: struct #307 -│ │ │ │ └─ [every]: optional 'optional_305' #306 -│ │ │ │ └─ item: &Post_where_with_aggregates_excluding_User #304 -│ │ │ ├─ variant_1: struct #310 -│ │ │ │ └─ [some]: optional 'optional_308' #309 -│ │ │ │ └─ item: &Post_where_with_aggregates_excluding_User #304 -│ │ │ └─ variant_2: struct #313 -│ │ │ └─ [none]: optional 'optional_311' #312 -│ │ │ └─ item: &Post_where_with_aggregates_excluding_User #304 -│ │ ├─ [id]: optional 'optional_296' #297 -│ │ │ └─ item: optional '_prisma_integer_filter_with_aggregates_ex' #146 -│ │ │ └─ item: union #143 -│ │ │ ├─ variant_0: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_1: struct #135 -│ │ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_2: struct #136 -│ │ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_3: struct #137 -│ │ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ │ ├─ variant_0: float #123 -│ │ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ │ └─ [not]: float #123 -│ │ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ └─ variant_5: struct #132 -│ │ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ │ └─ item: float #123 -│ │ │ │ ├─ variant_4: struct #138 -│ │ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ variant_5: struct #46 -│ │ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #139 -│ │ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ └─ variant_1: struct #142 -│ │ │ └─ [not]: union '_prisma_integer_filter_with_aggregates' #141 -│ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ ├─ variant_1: struct #135 -│ │ │ │ └─ [_count]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ ├─ variant_2: struct #136 -│ │ │ │ └─ [_sum]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ ├─ variant_3: struct #137 -│ │ │ │ └─ [_avg]: either '_prisma_float_filter' #134 -│ │ │ │ ├─ variant_0: float #123 -│ │ │ │ ├─ variant_1: struct #128 -│ │ │ │ │ └─ [equals]: float #123 -│ │ │ │ ├─ variant_2: struct #129 -│ │ │ │ │ └─ [not]: float #123 -│ │ │ │ ├─ variant_3: struct #130 -│ │ │ │ │ ├─ [gt]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ [gte]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ ├─ [lt]: optional 'optional_124' #125 -│ │ │ │ │ │ └─ item: float #123 -│ │ │ │ │ └─ [lte]: optional 'optional_124' #125 -│ │ │ │ │ └─ item: float #123 -│ │ │ │ ├─ variant_4: struct #131 -│ │ │ │ │ └─ [in]: list 'list_126' #127 -│ │ │ │ │ └─ item: float #123 -│ │ │ │ └─ variant_5: struct #132 -│ │ │ │ └─ [notIn]: list 'list_126' #127 -│ │ │ │ └─ item: float #123 -│ │ │ ├─ variant_4: struct #138 -│ │ │ │ └─ [_min]: either '_prisma_integer_filter' #48 -│ │ │ │ ├─ variant_0: integer #37 -│ │ │ │ ├─ variant_1: struct #42 -│ │ │ │ │ └─ [equals]: integer #37 -│ │ │ │ ├─ variant_2: struct #43 -│ │ │ │ │ └─ [not]: integer #37 -│ │ │ │ ├─ variant_3: struct #44 -│ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └─ item: integer #37 -│ │ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ variant_4: struct #45 -│ │ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ variant_5: struct #46 -│ │ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ └─ variant_5: struct #139 -│ │ │ └─ [_max]: either '_prisma_integer_filter' #48 -│ │ │ ├─ variant_0: integer #37 -│ │ │ ├─ variant_1: struct #42 -│ │ │ │ └─ [equals]: integer #37 -│ │ │ ├─ variant_2: struct #43 -│ │ │ │ └─ [not]: integer #37 -│ │ │ ├─ variant_3: struct #44 -│ │ │ │ ├─ [gt]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ [gte]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ ├─ [lt]: optional 'optional_38' #39 -│ │ │ │ │ └─ item: integer #37 -│ │ │ │ └─ [lte]: optional 'optional_38' #39 -│ │ │ │ └─ item: integer #37 -│ │ │ ├─ variant_4: struct #45 -│ │ │ │ └─ [in]: list 'list_40' #41 -│ │ │ │ └─ item: integer #37 -│ │ │ └─ variant_5: struct #46 -│ │ │ └─ [notIn]: list 'list_40' #41 -│ │ │ └─ item: integer #37 -│ │ └─ [title]: optional 'optional_298' #299 -│ │ └─ item: optional '_prisma_string_filter_ex' #32 -│ │ └─ item: union #29 -│ │ ├─ variant_0: union '_prisma_string_filter' #27 -│ │ │ ├─ variant_0: string #11 -│ │ │ ├─ variant_1: struct #16 -│ │ │ │ └─ [equals]: string #11 -│ │ │ ├─ variant_2: struct #17 -│ │ │ │ └─ [not]: string #11 -│ │ │ ├─ variant_3: struct #18 -│ │ │ │ └─ [in]: list 'list_14' #15 -│ │ │ │ └─ item: string #11 -│ │ │ ├─ variant_4: struct #19 -│ │ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ │ └─ item: string #11 -│ │ │ ├─ variant_5: struct #23 -│ │ │ │ ├─ [contains]: string #11 -│ │ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #24 -│ │ │ │ └─ [search]: string #11 -│ │ │ └─ variant_7: struct #25 -│ │ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ │ └─ item: string #11 -│ │ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ │ └─ item: string #11 -│ │ └─ variant_1: struct #28 -│ │ └─ [not]: union '_prisma_string_filter' #27 -│ │ ├─ variant_0: string #11 -│ │ ├─ variant_1: struct #16 -│ │ │ └─ [equals]: string #11 -│ │ ├─ variant_2: struct #17 -│ │ │ └─ [not]: string #11 -│ │ ├─ variant_3: struct #18 -│ │ │ └─ [in]: list 'list_14' #15 -│ │ │ └─ item: string #11 -│ │ ├─ variant_4: struct #19 -│ │ │ └─ [notIn]: list 'list_14' #15 -│ │ │ └─ item: string #11 -│ │ ├─ variant_5: struct #23 -│ │ │ ├─ [contains]: string #11 -│ │ │ └─ [mode]: optional 'optional_21' #22 -│ │ │ └─ item: string #20 enum{ '"insensitive"' } -│ │ ├─ variant_6: struct #24 -│ │ │ └─ [search]: string #11 -│ │ └─ variant_7: struct #25 -│ │ ├─ [endsWith]: optional 'optional_12' #13 -│ │ │ └─ item: string #11 -│ │ └─ [startsWith]: optional 'optional_12' #13 -│ │ └─ item: string #11 -│ ├─ variant_1: struct #340 -│ │ └─ [AND]: list 'list_338' #339 -│ │ └─ item: &User_having #337 -│ ├─ variant_2: struct #343 -│ │ └─ [OR]: list 'list_341' #342 -│ │ └─ item: &User_having #337 -│ └─ variant_3: struct #344 -│ └─ [NOT]: &User_having #337 -├─ [orderBy]: optional 'optional_276' #277 -│ └─ item: list 'User_order_by_with_aggregates' #275 -│ └─ item: struct #272 -│ ├─ [_avg]: optional 'optional_264' #265 -│ │ └─ item: struct #263 -│ │ └─ [id]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [_count]: optional 'optional_261' #262 -│ │ └─ item: struct #260 -│ │ ├─ [id]: optional '_prisma_sort' #79 -│ │ │ └─ item: union #76 -│ │ │ ├─ variant_0: struct #75 -│ │ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ ├─ [name]: optional '_prisma_sort' #79 -│ │ │ └─ item: union #76 -│ │ │ ├─ variant_0: struct #75 -│ │ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ [posts]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [_max]: optional 'optional_264' #265 -│ │ └─ item: struct #263 -│ │ └─ [id]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [_min]: optional 'optional_264' #265 -│ │ └─ item: struct #263 -│ │ └─ [id]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [_sum]: optional 'optional_264' #265 -│ │ └─ item: struct #263 -│ │ └─ [id]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [id]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [name]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ └─ [posts]: optional '_prisma_sort_by_aggregates' #271 -│ └─ item: struct #268 -│ ├─ [_avg]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [_count]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [_max]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ ├─ [_min]: optional '_prisma_sort' #79 -│ │ └─ item: union #76 -│ │ ├─ variant_0: struct #75 -│ │ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ │ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ └─ [_sum]: optional '_prisma_sort' #79 -│ └─ item: union #76 -│ ├─ variant_0: struct #75 -│ │ └─ [sort]: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -│ └─ variant_1: string '_prisma_sort_order' #72 enum{ '"asc"', '"desc"' } -├─ [skip]: optional 'optional_280' #281 -│ └─ item: integer '_skip' #104 -├─ [take]: optional 'optional_278' #279 -│ └─ item: integer '_take' #100 -└─ [where]: optional 'optional_258' #259 - └─ item: struct 'User_query_where_input' #257 - ├─ [AND]: optional 'optional_252' #253 - │ └─ item: list 'list_250' #251 - │ └─ item: &User_query_where_input #249 - ├─ [NOT]: optional 'optional_254' #255 - │ └─ item: &User_query_where_input #249 - ├─ [OR]: optional 'optional_252' #253 - │ └─ item: list 'list_250' #251 - │ └─ item: &User_query_where_input #249 - ├─ [id]: optional 'optional_204' #205 - │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_1: struct #49 - │ └─ [not]: either '_prisma_integer_filter' #48 - │ ├─ variant_0: integer #37 - │ ├─ variant_1: struct #42 - │ │ └─ [equals]: integer #37 - │ ├─ variant_2: struct #43 - │ │ └─ [not]: integer #37 - │ ├─ variant_3: struct #44 - │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ └─ [lte]: optional 'optional_38' #39 - │ │ └─ item: integer #37 - │ ├─ variant_4: struct #45 - │ │ └─ [in]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_5: struct #46 - │ └─ [notIn]: list 'list_40' #41 - │ └─ item: integer #37 - ├─ [name]: optional 'optional_206' #207 - │ └─ item: optional '_prisma_string_filter_ex' #32 - │ └─ item: union #29 - │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_1: struct #28 - │ └─ [not]: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ [posts]: optional 'optional_245' #246 - └─ item: union #244 - ├─ variant_0: struct #237 - │ └─ [every]: optional 'optional_235' #236 - │ └─ item: struct 'Post_where_excluding_User' #234 - │ ├─ [author]: optional 'optional_231' #232 - │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #230 - │ │ ├─ [id]: optional 'optional_212' #213 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ │ └─ item: union #50 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ │ ├─ variant_0: integer #37 - │ │ │ │ ├─ variant_1: struct #42 - │ │ │ │ │ └─ [equals]: integer #37 - │ │ │ │ ├─ variant_2: struct #43 - │ │ │ │ │ └─ [not]: integer #37 - │ │ │ │ ├─ variant_3: struct #44 - │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ variant_4: struct #45 - │ │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ variant_5: struct #46 - │ │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_1: struct #49 - │ │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ ├─ [name]: optional 'optional_214' #215 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #32 - │ │ │ └─ item: union #29 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ │ │ ├─ variant_0: string #11 - │ │ │ │ ├─ variant_1: struct #16 - │ │ │ │ │ └─ [equals]: string #11 - │ │ │ │ ├─ variant_2: struct #17 - │ │ │ │ │ └─ [not]: string #11 - │ │ │ │ ├─ variant_3: struct #18 - │ │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ │ └─ item: string #11 - │ │ │ │ ├─ variant_4: struct #19 - │ │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ │ └─ item: string #11 - │ │ │ │ ├─ variant_5: struct #23 - │ │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #24 - │ │ │ │ │ └─ [search]: string #11 - │ │ │ │ └─ variant_7: struct #25 - │ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ │ └─ item: string #11 - │ │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ variant_1: struct #28 - │ │ │ └─ [not]: union '_prisma_string_filter' #27 - │ │ │ ├─ variant_0: string #11 - │ │ │ ├─ variant_1: struct #16 - │ │ │ │ └─ [equals]: string #11 - │ │ │ ├─ variant_2: struct #17 - │ │ │ │ └─ [not]: string #11 - │ │ │ ├─ variant_3: struct #18 - │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_4: struct #19 - │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_5: struct #23 - │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #24 - │ │ │ │ └─ [search]: string #11 - │ │ │ └─ variant_7: struct #25 - │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [posts]: optional 'optional_227' #228 - │ │ └─ item: union #226 - │ │ ├─ variant_0: struct #219 - │ │ │ └─ [every]: optional 'optional_217' #218 - │ │ │ └─ item: &Post_where_excluding_User #216 - │ │ ├─ variant_1: struct #222 - │ │ │ └─ [some]: optional 'optional_220' #221 - │ │ │ └─ item: &Post_where_excluding_User #216 - │ │ └─ variant_2: struct #225 - │ │ └─ [none]: optional 'optional_223' #224 - │ │ └─ item: &Post_where_excluding_User #216 - │ ├─ [id]: optional 'optional_208' #209 - │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ └─ item: union #50 - │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_1: struct #49 - │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ [title]: optional 'optional_210' #211 - │ └─ item: optional '_prisma_string_filter_ex' #32 - │ └─ item: union #29 - │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_1: struct #28 - │ └─ [not]: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - ├─ variant_1: struct #240 - │ └─ [some]: optional 'optional_238' #239 - │ └─ item: struct 'Post_where_excluding_User' #234 - │ ├─ [author]: optional 'optional_231' #232 - │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #230 - │ │ ├─ [id]: optional 'optional_212' #213 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ │ └─ item: union #50 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ │ ├─ variant_0: integer #37 - │ │ │ │ ├─ variant_1: struct #42 - │ │ │ │ │ └─ [equals]: integer #37 - │ │ │ │ ├─ variant_2: struct #43 - │ │ │ │ │ └─ [not]: integer #37 - │ │ │ │ ├─ variant_3: struct #44 - │ │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ │ └─ item: integer #37 - │ │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ variant_4: struct #45 - │ │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ variant_5: struct #46 - │ │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_1: struct #49 - │ │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ ├─ [name]: optional 'optional_214' #215 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #32 - │ │ │ └─ item: union #29 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ │ │ ├─ variant_0: string #11 - │ │ │ │ ├─ variant_1: struct #16 - │ │ │ │ │ └─ [equals]: string #11 - │ │ │ │ ├─ variant_2: struct #17 - │ │ │ │ │ └─ [not]: string #11 - │ │ │ │ ├─ variant_3: struct #18 - │ │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ │ └─ item: string #11 - │ │ │ │ ├─ variant_4: struct #19 - │ │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ │ └─ item: string #11 - │ │ │ │ ├─ variant_5: struct #23 - │ │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #24 - │ │ │ │ │ └─ [search]: string #11 - │ │ │ │ └─ variant_7: struct #25 - │ │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ │ └─ item: string #11 - │ │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ variant_1: struct #28 - │ │ │ └─ [not]: union '_prisma_string_filter' #27 - │ │ │ ├─ variant_0: string #11 - │ │ │ ├─ variant_1: struct #16 - │ │ │ │ └─ [equals]: string #11 - │ │ │ ├─ variant_2: struct #17 - │ │ │ │ └─ [not]: string #11 - │ │ │ ├─ variant_3: struct #18 - │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_4: struct #19 - │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_5: struct #23 - │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #24 - │ │ │ │ └─ [search]: string #11 - │ │ │ └─ variant_7: struct #25 - │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [posts]: optional 'optional_227' #228 - │ │ └─ item: union #226 - │ │ ├─ variant_0: struct #219 - │ │ │ └─ [every]: optional 'optional_217' #218 - │ │ │ └─ item: &Post_where_excluding_User #216 - │ │ ├─ variant_1: struct #222 - │ │ │ └─ [some]: optional 'optional_220' #221 - │ │ │ └─ item: &Post_where_excluding_User #216 - │ │ └─ variant_2: struct #225 - │ │ └─ [none]: optional 'optional_223' #224 - │ │ └─ item: &Post_where_excluding_User #216 - │ ├─ [id]: optional 'optional_208' #209 - │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ └─ item: union #50 - │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_1: struct #49 - │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ [title]: optional 'optional_210' #211 - │ └─ item: optional '_prisma_string_filter_ex' #32 - │ └─ item: union #29 - │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ variant_1: struct #28 - │ └─ [not]: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ variant_2: struct #243 - └─ [none]: optional 'optional_241' #242 - └─ item: struct 'Post_where_excluding_User' #234 - ├─ [author]: optional 'optional_231' #232 - │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #230 - │ ├─ [id]: optional 'optional_212' #213 - │ │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ │ └─ item: union #50 - │ │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ │ ├─ variant_0: integer #37 - │ │ │ ├─ variant_1: struct #42 - │ │ │ │ └─ [equals]: integer #37 - │ │ │ ├─ variant_2: struct #43 - │ │ │ │ └─ [not]: integer #37 - │ │ │ ├─ variant_3: struct #44 - │ │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ │ └─ item: integer #37 - │ │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ variant_4: struct #45 - │ │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ variant_5: struct #46 - │ │ │ └─ [notIn]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_1: struct #49 - │ │ └─ [not]: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ ├─ [name]: optional 'optional_214' #215 - │ │ └─ item: optional '_prisma_string_filter_ex' #32 - │ │ └─ item: union #29 - │ │ ├─ variant_0: union '_prisma_string_filter' #27 - │ │ │ ├─ variant_0: string #11 - │ │ │ ├─ variant_1: struct #16 - │ │ │ │ └─ [equals]: string #11 - │ │ │ ├─ variant_2: struct #17 - │ │ │ │ └─ [not]: string #11 - │ │ │ ├─ variant_3: struct #18 - │ │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_4: struct #19 - │ │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ │ └─ item: string #11 - │ │ │ ├─ variant_5: struct #23 - │ │ │ │ ├─ [contains]: string #11 - │ │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #24 - │ │ │ │ └─ [search]: string #11 - │ │ │ └─ variant_7: struct #25 - │ │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ │ └─ item: string #11 - │ │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ variant_1: struct #28 - │ │ └─ [not]: union '_prisma_string_filter' #27 - │ │ ├─ variant_0: string #11 - │ │ ├─ variant_1: struct #16 - │ │ │ └─ [equals]: string #11 - │ │ ├─ variant_2: struct #17 - │ │ │ └─ [not]: string #11 - │ │ ├─ variant_3: struct #18 - │ │ │ └─ [in]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_4: struct #19 - │ │ │ └─ [notIn]: list 'list_14' #15 - │ │ │ └─ item: string #11 - │ │ ├─ variant_5: struct #23 - │ │ │ ├─ [contains]: string #11 - │ │ │ └─ [mode]: optional 'optional_21' #22 - │ │ │ └─ item: string #20 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #24 - │ │ │ └─ [search]: string #11 - │ │ └─ variant_7: struct #25 - │ │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ │ └─ item: string #11 - │ │ └─ [startsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [posts]: optional 'optional_227' #228 - │ └─ item: union #226 - │ ├─ variant_0: struct #219 - │ │ └─ [every]: optional 'optional_217' #218 - │ │ └─ item: &Post_where_excluding_User #216 - │ ├─ variant_1: struct #222 - │ │ └─ [some]: optional 'optional_220' #221 - │ │ └─ item: &Post_where_excluding_User #216 - │ └─ variant_2: struct #225 - │ └─ [none]: optional 'optional_223' #224 - │ └─ item: &Post_where_excluding_User #216 - ├─ [id]: optional 'optional_208' #209 - │ └─ item: optional '_prisma_integer_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: either '_prisma_integer_filter' #48 - │ │ ├─ variant_0: integer #37 - │ │ ├─ variant_1: struct #42 - │ │ │ └─ [equals]: integer #37 - │ │ ├─ variant_2: struct #43 - │ │ │ └─ [not]: integer #37 - │ │ ├─ variant_3: struct #44 - │ │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ │ └─ item: integer #37 - │ │ │ └─ [lte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ variant_4: struct #45 - │ │ │ └─ [in]: list 'list_40' #41 - │ │ │ └─ item: integer #37 - │ │ └─ variant_5: struct #46 - │ │ └─ [notIn]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_1: struct #49 - │ └─ [not]: either '_prisma_integer_filter' #48 - │ ├─ variant_0: integer #37 - │ ├─ variant_1: struct #42 - │ │ └─ [equals]: integer #37 - │ ├─ variant_2: struct #43 - │ │ └─ [not]: integer #37 - │ ├─ variant_3: struct #44 - │ │ ├─ [gt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [gte]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ ├─ [lt]: optional 'optional_38' #39 - │ │ │ └─ item: integer #37 - │ │ └─ [lte]: optional 'optional_38' #39 - │ │ └─ item: integer #37 - │ ├─ variant_4: struct #45 - │ │ └─ [in]: list 'list_40' #41 - │ │ └─ item: integer #37 - │ └─ variant_5: struct #46 - │ └─ [notIn]: list 'list_40' #41 - │ └─ item: integer #37 - └─ [title]: optional 'optional_210' #211 - └─ item: optional '_prisma_string_filter_ex' #32 - └─ item: union #29 - ├─ variant_0: union '_prisma_string_filter' #27 - │ ├─ variant_0: string #11 - │ ├─ variant_1: struct #16 - │ │ └─ [equals]: string #11 - │ ├─ variant_2: struct #17 - │ │ └─ [not]: string #11 - │ ├─ variant_3: struct #18 - │ │ └─ [in]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_4: struct #19 - │ │ └─ [notIn]: list 'list_14' #15 - │ │ └─ item: string #11 - │ ├─ variant_5: struct #23 - │ │ ├─ [contains]: string #11 - │ │ └─ [mode]: optional 'optional_21' #22 - │ │ └─ item: string #20 enum{ '"insensitive"' } - │ ├─ variant_6: struct #24 - │ │ └─ [search]: string #11 - │ └─ variant_7: struct #25 - │ ├─ [endsWith]: optional 'optional_12' #13 - │ │ └─ item: string #11 - │ └─ [startsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ variant_1: struct #28 - └─ [not]: union '_prisma_string_filter' #27 - ├─ variant_0: string #11 - ├─ variant_1: struct #16 - │ └─ [equals]: string #11 - ├─ variant_2: struct #17 - │ └─ [not]: string #11 - ├─ variant_3: struct #18 - │ └─ [in]: list 'list_14' #15 - │ └─ item: string #11 - ├─ variant_4: struct #19 - │ └─ [notIn]: list 'list_14' #15 - │ └─ item: string #11 - ├─ variant_5: struct #23 - │ ├─ [contains]: string #11 - │ └─ [mode]: optional 'optional_21' #22 - │ └─ item: string #20 enum{ '"insensitive"' } - ├─ variant_6: struct #24 - │ └─ [search]: string #11 - └─ variant_7: struct #25 - ├─ [endsWith]: optional 'optional_12' #13 - │ └─ item: string #11 - └─ [startsWith]: optional 'optional_12' #13 - └─ item: string #11 +root: struct 'User_group_by_query_input' #302 +├─ [by]: list 'User_group_by' #257 +│ └─ item: string #255 enum{ '"id"', '"name"' } +├─ [cursor]: optional #253 +│ └─ item: union 'User_cursor' #252 +│ ├─ variant_0: struct #249 +│ │ └─ [id]: integer #175 +│ └─ variant_1: struct #250 +│ └─ [name]: string #176 +├─ [having]: optional #300 +│ └─ item: union 'User_having' #299 +│ ├─ variant_0: struct 'User_where_with_aggregates' #291 +│ │ ├─ [id]: optional #260 +│ │ │ └─ item: &_prisma_integer_filter_with_aggregates_ex #114 +│ │ ├─ [name]: optional #261 +│ │ │ └─ item: &_prisma_string_filter_ex #13 +│ │ └─ [posts]: optional #289 +│ │ └─ item: union #288 +│ │ ├─ variant_0: struct #283 +│ │ │ └─ [every]: optional #282 +│ │ │ └─ item: struct 'Post_where_with_aggregates_excluding_User' #281 +│ │ │ ├─ [author]: optional #279 +│ │ │ │ └─ item: struct 'User_where_with_aggregates_excluding_Post_and_User' #278 +│ │ │ │ ├─ [id]: optional #266 +│ │ │ │ │ └─ item: &_prisma_integer_filter_with_aggregates_ex #114 +│ │ │ │ ├─ [name]: optional #267 +│ │ │ │ │ └─ item: &_prisma_string_filter_ex #13 +│ │ │ │ └─ [posts]: optional #276 +│ │ │ │ └─ item: union #275 +│ │ │ │ ├─ variant_0: struct #270 +│ │ │ │ │ └─ [every]: optional #269 +│ │ │ │ │ └─ item: &Post_where_with_aggregates_excluding_User #268 +│ │ │ │ ├─ variant_1: struct #272 +│ │ │ │ │ └─ [some]: optional #271 +│ │ │ │ │ └─ item: &Post_where_with_aggregates_excluding_User #268 +│ │ │ │ └─ variant_2: struct #274 +│ │ │ │ └─ [none]: optional #273 +│ │ │ │ └─ item: &Post_where_with_aggregates_excluding_User #268 +│ │ │ ├─ [id]: optional #263 +│ │ │ │ └─ item: &_prisma_integer_filter_with_aggregates_ex #114 +│ │ │ └─ [title]: optional #264 +│ │ │ └─ item: &_prisma_string_filter_ex #13 +│ │ ├─ variant_1: struct #285 +│ │ │ └─ [some]: optional #284 +│ │ │ └─ item: struct 'Post_where_with_aggregates_excluding_User' #281 +│ │ │ ├─ [author]: optional #279 +│ │ │ │ └─ item: struct 'User_where_with_aggregates_excluding_Post_and_User' #278 +│ │ │ │ ├─ [id]: optional #266 +│ │ │ │ │ └─ item: &_prisma_integer_filter_with_aggregates_ex #114 +│ │ │ │ ├─ [name]: optional #267 +│ │ │ │ │ └─ item: &_prisma_string_filter_ex #13 +│ │ │ │ └─ [posts]: optional #276 +│ │ │ │ └─ item: union #275 +│ │ │ │ ├─ variant_0: struct #270 +│ │ │ │ │ └─ [every]: optional #269 +│ │ │ │ │ └─ item: &Post_where_with_aggregates_excluding_User #268 +│ │ │ │ ├─ variant_1: struct #272 +│ │ │ │ │ └─ [some]: optional #271 +│ │ │ │ │ └─ item: &Post_where_with_aggregates_excluding_User #268 +│ │ │ │ └─ variant_2: struct #274 +│ │ │ │ └─ [none]: optional #273 +│ │ │ │ └─ item: &Post_where_with_aggregates_excluding_User #268 +│ │ │ ├─ [id]: optional #263 +│ │ │ │ └─ item: &_prisma_integer_filter_with_aggregates_ex #114 +│ │ │ └─ [title]: optional #264 +│ │ │ └─ item: &_prisma_string_filter_ex #13 +│ │ └─ variant_2: struct #287 +│ │ └─ [none]: optional #286 +│ │ └─ item: struct 'Post_where_with_aggregates_excluding_User' #281 +│ │ ├─ [author]: optional #279 +│ │ │ └─ item: struct 'User_where_with_aggregates_excluding_Post_and_User' #278 +│ │ │ ├─ [id]: optional #266 +│ │ │ │ └─ item: &_prisma_integer_filter_with_aggregates_ex #114 +│ │ │ ├─ [name]: optional #267 +│ │ │ │ └─ item: &_prisma_string_filter_ex #13 +│ │ │ └─ [posts]: optional #276 +│ │ │ └─ item: union #275 +│ │ │ ├─ variant_0: struct #270 +│ │ │ │ └─ [every]: optional #269 +│ │ │ │ └─ item: &Post_where_with_aggregates_excluding_User #268 +│ │ │ ├─ variant_1: struct #272 +│ │ │ │ └─ [some]: optional #271 +│ │ │ │ └─ item: &Post_where_with_aggregates_excluding_User #268 +│ │ │ └─ variant_2: struct #274 +│ │ │ └─ [none]: optional #273 +│ │ │ └─ item: &Post_where_with_aggregates_excluding_User #268 +│ │ ├─ [id]: optional #263 +│ │ │ └─ item: &_prisma_integer_filter_with_aggregates_ex #114 +│ │ └─ [title]: optional #264 +│ │ └─ item: &_prisma_string_filter_ex #13 +│ ├─ variant_1: struct #294 +│ │ └─ [AND]: list #293 +│ │ └─ item: &User_having #292 +│ ├─ variant_2: struct #296 +│ │ └─ [OR]: list #295 +│ │ └─ item: &User_having #292 +│ └─ variant_3: struct #297 +│ └─ [NOT]: &User_having #292 +├─ [orderBy]: optional #245 +│ └─ item: list 'User_order_by_with_aggregates' #244 +│ └─ item: struct #242 +│ ├─ [_avg]: optional #235 +│ │ └─ item: struct #234 +│ │ └─ [id]: &_prisma_sort #64 +│ ├─ [_count]: optional #233 +│ │ └─ item: struct #232 +│ │ ├─ [id]: &_prisma_sort #64 +│ │ ├─ [name]: &_prisma_sort #64 +│ │ └─ [posts]: &_prisma_sort #64 +│ ├─ [_max]: optional #235 +│ │ └─ item: struct #234 +│ │ └─ [id]: &_prisma_sort #64 +│ ├─ [_min]: optional #235 +│ │ └─ item: struct #234 +│ │ └─ [id]: &_prisma_sort #64 +│ ├─ [_sum]: optional #235 +│ │ └─ item: struct #234 +│ │ └─ [id]: &_prisma_sort #64 +│ ├─ [id]: &_prisma_sort #64 +│ ├─ [name]: &_prisma_sort #64 +│ └─ [posts]: optional '_prisma_sort_by_aggregates' #241 +│ └─ item: struct #239 +│ ├─ [_avg]: &_prisma_sort #64 +│ ├─ [_count]: &_prisma_sort #64 +│ ├─ [_max]: &_prisma_sort #64 +│ ├─ [_min]: &_prisma_sort #64 +│ └─ [_sum]: &_prisma_sort #64 +├─ [skip]: optional #247 +│ └─ item: &_skip #94 +├─ [take]: optional #246 +│ └─ item: &_take #90 +└─ [where]: optional #229 + └─ item: struct 'User_query_where_input' #228 + ├─ [AND]: optional #225 + │ └─ item: list #224 + │ └─ item: &User_query_where_input #223 + ├─ [NOT]: optional #226 + │ └─ item: &User_query_where_input #223 + ├─ [OR]: optional #225 + │ └─ item: list #224 + │ └─ item: &User_query_where_input #223 + ├─ [id]: optional #191 + │ └─ item: &_prisma_integer_filter_ex #35 + ├─ [name]: optional #192 + │ └─ item: &_prisma_string_filter_ex #13 + └─ [posts]: optional #220 + └─ item: union #219 + ├─ variant_0: struct #214 + │ └─ [every]: optional #213 + │ └─ item: struct 'Post_where_excluding_User' #212 + │ ├─ [author]: optional #210 + │ │ └─ item: struct 'User_where_excluding_Post_and_User' #209 + │ │ ├─ [id]: optional #197 + │ │ │ └─ item: &_prisma_integer_filter_ex #35 + │ │ ├─ [name]: optional #198 + │ │ │ └─ item: &_prisma_string_filter_ex #13 + │ │ └─ [posts]: optional #207 + │ │ └─ item: union #206 + │ │ ├─ variant_0: struct #201 + │ │ │ └─ [every]: optional #200 + │ │ │ └─ item: &Post_where_excluding_User #199 + │ │ ├─ variant_1: struct #203 + │ │ │ └─ [some]: optional #202 + │ │ │ └─ item: &Post_where_excluding_User #199 + │ │ └─ variant_2: struct #205 + │ │ └─ [none]: optional #204 + │ │ └─ item: &Post_where_excluding_User #199 + │ ├─ [id]: optional #194 + │ │ └─ item: &_prisma_integer_filter_ex #35 + │ └─ [title]: optional #195 + │ └─ item: &_prisma_string_filter_ex #13 + ├─ variant_1: struct #216 + │ └─ [some]: optional #215 + │ └─ item: struct 'Post_where_excluding_User' #212 + │ ├─ [author]: optional #210 + │ │ └─ item: struct 'User_where_excluding_Post_and_User' #209 + │ │ ├─ [id]: optional #197 + │ │ │ └─ item: &_prisma_integer_filter_ex #35 + │ │ ├─ [name]: optional #198 + │ │ │ └─ item: &_prisma_string_filter_ex #13 + │ │ └─ [posts]: optional #207 + │ │ └─ item: union #206 + │ │ ├─ variant_0: struct #201 + │ │ │ └─ [every]: optional #200 + │ │ │ └─ item: &Post_where_excluding_User #199 + │ │ ├─ variant_1: struct #203 + │ │ │ └─ [some]: optional #202 + │ │ │ └─ item: &Post_where_excluding_User #199 + │ │ └─ variant_2: struct #205 + │ │ └─ [none]: optional #204 + │ │ └─ item: &Post_where_excluding_User #199 + │ ├─ [id]: optional #194 + │ │ └─ item: &_prisma_integer_filter_ex #35 + │ └─ [title]: optional #195 + │ └─ item: &_prisma_string_filter_ex #13 + └─ variant_2: struct #218 + └─ [none]: optional #217 + └─ item: struct 'Post_where_excluding_User' #212 + ├─ [author]: optional #210 + │ └─ item: struct 'User_where_excluding_Post_and_User' #209 + │ ├─ [id]: optional #197 + │ │ └─ item: &_prisma_integer_filter_ex #35 + │ ├─ [name]: optional #198 + │ │ └─ item: &_prisma_string_filter_ex #13 + │ └─ [posts]: optional #207 + │ └─ item: union #206 + │ ├─ variant_0: struct #201 + │ │ └─ [every]: optional #200 + │ │ └─ item: &Post_where_excluding_User #199 + │ ├─ variant_1: struct #203 + │ │ └─ [some]: optional #202 + │ │ └─ item: &Post_where_excluding_User #199 + │ └─ variant_2: struct #205 + │ └─ [none]: optional #204 + │ └─ item: &Post_where_excluding_User #199 + ├─ [id]: optional #194 + │ └─ item: &_prisma_integer_filter_ex #35 + └─ [title]: optional #195 + └─ item: &_prisma_string_filter_ex #13 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by User out.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by User out.snap index c24b63ff3c..8c415a746e 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by User out.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__group_by User out.snap @@ -2,30 +2,26 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(out) --- -root: list 'User_group' #372 -└─ item: struct #369 - ├─ [_avg]: struct 'User_number_fields_float' #360 - │ └─ [id]: optional 'optional_357' #358 - │ └─ item: float #356 - ├─ [_count]: struct 'User_count_aggregate' #355 - │ ├─ [_all]: optional 'optional_352' #353 - │ │ └─ item: integer #351 - │ ├─ [id]: optional 'optional_352' #353 - │ │ └─ item: integer #351 - │ ├─ [name]: optional 'optional_352' #353 - │ │ └─ item: integer #351 - │ └─ [posts]: optional 'optional_352' #353 - │ └─ item: integer #351 - ├─ [_max]: struct 'User_number_fields' #368 - │ └─ [id]: optional 'optional_365' #366 - │ └─ item: integer #364 - ├─ [_min]: struct 'User_number_fields' #368 - │ └─ [id]: optional 'optional_365' #366 - │ └─ item: integer #364 - ├─ [_sum]: struct 'User_number_fields' #368 - │ └─ [id]: optional 'optional_365' #366 - │ └─ item: integer #364 - ├─ [id]: integer #190 - ├─ [name]: string #191 - └─ [posts]: list 'list_193' #194 - └─ item: &Post #192 +root: list 'User_group' #323 +└─ item: struct #321 + ├─ [_avg]: struct 'User_number_fields_float' #313 + │ └─ [id]: optional #311 + │ └─ item: float #310 + ├─ [_count]: struct 'User_count_aggregate' #308 + │ ├─ [_all]: optional #306 + │ │ └─ item: integer #305 + │ ├─ [id]: optional #306 + │ │ └─ item: integer #305 + │ ├─ [name]: optional #306 + │ │ └─ item: integer #305 + │ └─ [posts]: optional #306 + │ └─ item: integer #305 + ├─ [_max]: &User_number_fields #314 + ├─ [_min]: &User_number_fields #314 + ├─ [_sum]: struct 'User_number_fields' #320 + │ └─ [id]: optional #318 + │ └─ item: integer #317 + ├─ [id]: integer #175 + ├─ [name]: string #176 + └─ [posts]: list #178 + └─ item: &Post #177 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_many Post inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_many Post inp.snap index b3af755486..6ddf21df83 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_many Post inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_many Post inp.snap @@ -2,1712 +2,84 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct #297 -├─ [data]: struct 'Post_update_input' #285 -│ ├─ [author]: optional 'optional_282' #283 -│ │ └─ item: union #281 -│ │ ├─ variant_0: struct #264 -│ │ │ └─ [create]: struct 'User_create_input_excluding_rel_Post_User' #262 -│ │ │ ├─ [id]: integer #94 -│ │ │ └─ [name]: string #95 -│ │ ├─ variant_1: struct #265 -│ │ │ └─ [connect]: struct 'User_where' #237 -│ │ │ ├─ [id]: optional 'optional_193' #194 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ [name]: optional 'optional_195' #196 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [posts]: optional 'optional_234' #235 -│ │ │ └─ item: union #233 -│ │ │ ├─ variant_0: struct #226 -│ │ │ │ └─ [every]: optional 'optional_224' #225 -│ │ │ │ └─ item: struct 'Post_where_excluding_User' #223 -│ │ │ │ ├─ [author]: optional 'optional_220' #221 -│ │ │ │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #219 -│ │ │ │ │ ├─ [id]: optional 'optional_201' #202 -│ │ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ │ └─ item: union #71 -│ │ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [name]: optional 'optional_203' #204 -│ │ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ │ └─ item: union #50 -│ │ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [posts]: optional 'optional_216' #217 -│ │ │ │ │ └─ item: union #215 -│ │ │ │ │ ├─ variant_0: struct #208 -│ │ │ │ │ │ └─ [every]: optional 'optional_206' #207 -│ │ │ │ │ │ └─ item: &Post_where_excluding_User #205 -│ │ │ │ │ ├─ variant_1: struct #211 -│ │ │ │ │ │ └─ [some]: optional 'optional_209' #210 -│ │ │ │ │ │ └─ item: &Post_where_excluding_User #205 -│ │ │ │ │ └─ variant_2: struct #214 -│ │ │ │ │ └─ [none]: optional 'optional_212' #213 -│ │ │ │ │ └─ item: &Post_where_excluding_User #205 -│ │ │ │ ├─ [id]: optional 'optional_197' #198 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ [title]: optional 'optional_199' #200 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_1: struct #229 -│ │ │ │ └─ [some]: optional 'optional_227' #228 -│ │ │ │ └─ item: struct 'Post_where_excluding_User' #223 -│ │ │ │ ├─ [author]: optional 'optional_220' #221 -│ │ │ │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #219 -│ │ │ │ │ ├─ [id]: optional 'optional_201' #202 -│ │ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ │ └─ item: union #71 -│ │ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [name]: optional 'optional_203' #204 -│ │ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ │ └─ item: union #50 -│ │ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [posts]: optional 'optional_216' #217 -│ │ │ │ │ └─ item: union #215 -│ │ │ │ │ ├─ variant_0: struct #208 -│ │ │ │ │ │ └─ [every]: optional 'optional_206' #207 -│ │ │ │ │ │ └─ item: &Post_where_excluding_User #205 -│ │ │ │ │ ├─ variant_1: struct #211 -│ │ │ │ │ │ └─ [some]: optional 'optional_209' #210 -│ │ │ │ │ │ └─ item: &Post_where_excluding_User #205 -│ │ │ │ │ └─ variant_2: struct #214 -│ │ │ │ │ └─ [none]: optional 'optional_212' #213 -│ │ │ │ │ └─ item: &Post_where_excluding_User #205 -│ │ │ │ ├─ [id]: optional 'optional_197' #198 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ [title]: optional 'optional_199' #200 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ variant_2: struct #232 -│ │ │ └─ [none]: optional 'optional_230' #231 -│ │ │ └─ item: struct 'Post_where_excluding_User' #223 -│ │ │ ├─ [author]: optional 'optional_220' #221 -│ │ │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #219 -│ │ │ │ ├─ [id]: optional 'optional_201' #202 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [name]: optional 'optional_203' #204 -│ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ └─ item: union #50 -│ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [posts]: optional 'optional_216' #217 -│ │ │ │ └─ item: union #215 -│ │ │ │ ├─ variant_0: struct #208 -│ │ │ │ │ └─ [every]: optional 'optional_206' #207 -│ │ │ │ │ └─ item: &Post_where_excluding_User #205 -│ │ │ │ ├─ variant_1: struct #211 -│ │ │ │ │ └─ [some]: optional 'optional_209' #210 -│ │ │ │ │ └─ item: &Post_where_excluding_User #205 -│ │ │ │ └─ variant_2: struct #214 -│ │ │ │ └─ [none]: optional 'optional_212' #213 -│ │ │ │ └─ item: &Post_where_excluding_User #205 -│ │ │ ├─ [id]: optional 'optional_197' #198 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ [title]: optional 'optional_199' #200 -│ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ └─ item: union #50 -│ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ variant_1: struct #49 -│ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ ├─ variant_2: struct #266 -│ │ │ └─ [connectOrCreate]: struct #263 -│ │ │ ├─ [create]: struct 'User_create_input_excluding_rel_Post_User' #262 -│ │ │ │ ├─ [id]: integer #94 -│ │ │ │ └─ [name]: string #95 -│ │ │ └─ [where]: struct 'User_where' #237 -│ │ │ ├─ [id]: optional 'optional_193' #194 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ [name]: optional 'optional_195' #196 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [posts]: optional 'optional_234' #235 -│ │ │ └─ item: union #233 -│ │ │ ├─ variant_0: struct #226 -│ │ │ │ └─ [every]: optional 'optional_224' #225 -│ │ │ │ └─ item: struct 'Post_where_excluding_User' #223 -│ │ │ │ ├─ [author]: optional 'optional_220' #221 -│ │ │ │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #219 -│ │ │ │ │ ├─ [id]: optional 'optional_201' #202 -│ │ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ │ └─ item: union #71 -│ │ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [name]: optional 'optional_203' #204 -│ │ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ │ └─ item: union #50 -│ │ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [posts]: optional 'optional_216' #217 -│ │ │ │ │ └─ item: union #215 -│ │ │ │ │ ├─ variant_0: struct #208 -│ │ │ │ │ │ └─ [every]: optional 'optional_206' #207 -│ │ │ │ │ │ └─ item: &Post_where_excluding_User #205 -│ │ │ │ │ ├─ variant_1: struct #211 -│ │ │ │ │ │ └─ [some]: optional 'optional_209' #210 -│ │ │ │ │ │ └─ item: &Post_where_excluding_User #205 -│ │ │ │ │ └─ variant_2: struct #214 -│ │ │ │ │ └─ [none]: optional 'optional_212' #213 -│ │ │ │ │ └─ item: &Post_where_excluding_User #205 -│ │ │ │ ├─ [id]: optional 'optional_197' #198 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ [title]: optional 'optional_199' #200 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_1: struct #229 -│ │ │ │ └─ [some]: optional 'optional_227' #228 -│ │ │ │ └─ item: struct 'Post_where_excluding_User' #223 -│ │ │ │ ├─ [author]: optional 'optional_220' #221 -│ │ │ │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #219 -│ │ │ │ │ ├─ [id]: optional 'optional_201' #202 -│ │ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ │ └─ item: union #71 -│ │ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [name]: optional 'optional_203' #204 -│ │ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ │ └─ item: union #50 -│ │ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [posts]: optional 'optional_216' #217 -│ │ │ │ │ └─ item: union #215 -│ │ │ │ │ ├─ variant_0: struct #208 -│ │ │ │ │ │ └─ [every]: optional 'optional_206' #207 -│ │ │ │ │ │ └─ item: &Post_where_excluding_User #205 -│ │ │ │ │ ├─ variant_1: struct #211 -│ │ │ │ │ │ └─ [some]: optional 'optional_209' #210 -│ │ │ │ │ │ └─ item: &Post_where_excluding_User #205 -│ │ │ │ │ └─ variant_2: struct #214 -│ │ │ │ │ └─ [none]: optional 'optional_212' #213 -│ │ │ │ │ └─ item: &Post_where_excluding_User #205 -│ │ │ │ ├─ [id]: optional 'optional_197' #198 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ [title]: optional 'optional_199' #200 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ variant_2: struct #232 -│ │ │ └─ [none]: optional 'optional_230' #231 -│ │ │ └─ item: struct 'Post_where_excluding_User' #223 -│ │ │ ├─ [author]: optional 'optional_220' #221 -│ │ │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #219 -│ │ │ │ ├─ [id]: optional 'optional_201' #202 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [name]: optional 'optional_203' #204 -│ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ └─ item: union #50 -│ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [posts]: optional 'optional_216' #217 -│ │ │ │ └─ item: union #215 -│ │ │ │ ├─ variant_0: struct #208 -│ │ │ │ │ └─ [every]: optional 'optional_206' #207 -│ │ │ │ │ └─ item: &Post_where_excluding_User #205 -│ │ │ │ ├─ variant_1: struct #211 -│ │ │ │ │ └─ [some]: optional 'optional_209' #210 -│ │ │ │ │ └─ item: &Post_where_excluding_User #205 -│ │ │ │ └─ variant_2: struct #214 -│ │ │ │ └─ [none]: optional 'optional_212' #213 -│ │ │ │ └─ item: &Post_where_excluding_User #205 -│ │ │ ├─ [id]: optional 'optional_197' #198 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ [title]: optional 'optional_199' #200 -│ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ └─ item: union #50 -│ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ variant_1: struct #49 -│ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ variant_3: struct #280 -│ │ └─ [update]: struct 'User_update_input_excluding_rel_Post_User' #279 -│ │ ├─ [id]: optional 'optional_272' #273 -│ │ │ └─ item: union #271 -│ │ │ ├─ variant_0: integer #94 -│ │ │ ├─ variant_1: struct #267 -│ │ │ │ └─ [set]: integer #94 -│ │ │ ├─ variant_2: struct #268 -│ │ │ │ └─ [multiply]: integer #94 -│ │ │ ├─ variant_3: struct #269 -│ │ │ │ └─ [decrement]: integer #94 -│ │ │ └─ variant_4: struct #270 -│ │ │ └─ [increment]: integer #94 -│ │ └─ [name]: optional 'optional_276' #277 -│ │ └─ item: union #275 -│ │ ├─ variant_0: string #95 -│ │ └─ variant_1: struct #274 -│ │ └─ [set]: string #95 -│ ├─ [id]: optional 'optional_255' #256 -│ │ └─ item: union #254 -│ │ ├─ variant_0: integer #103 -│ │ ├─ variant_1: struct #250 -│ │ │ └─ [set]: integer #103 -│ │ ├─ variant_2: struct #251 -│ │ │ └─ [multiply]: integer #103 -│ │ ├─ variant_3: struct #252 -│ │ │ └─ [decrement]: integer #103 -│ │ └─ variant_4: struct #253 -│ │ └─ [increment]: integer #103 -│ └─ [title]: optional 'optional_259' #260 -│ └─ item: union #258 -│ ├─ variant_0: string #104 -│ └─ variant_1: struct #257 -│ └─ [set]: string #104 -└─ [where]: optional 'optional_295' #296 - └─ item: struct 'Post_query_where_input' #294 - ├─ [AND]: optional 'optional_289' #290 - │ └─ item: list 'list_287' #288 - │ └─ item: &Post_query_where_input #286 - ├─ [NOT]: optional 'optional_291' #292 - │ └─ item: &Post_query_where_input #286 - ├─ [OR]: optional 'optional_289' #290 - │ └─ item: list 'list_287' #288 - │ └─ item: &Post_query_where_input #286 - ├─ [author]: optional 'optional_149' #150 - │ └─ item: struct 'User_where_excluding_Post' #148 - │ ├─ [id]: optional 'optional_130' #131 - │ │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ │ └─ item: union #71 - │ │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ │ ├─ variant_0: integer #58 - │ │ │ ├─ variant_1: struct #63 - │ │ │ │ └─ [equals]: integer #58 - │ │ │ ├─ variant_2: struct #64 - │ │ │ │ └─ [not]: integer #58 - │ │ │ ├─ variant_3: struct #65 - │ │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ variant_4: struct #66 - │ │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ variant_5: struct #67 - │ │ │ └─ [notIn]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_1: struct #70 - │ │ └─ [not]: either '_prisma_integer_filter' #69 - │ │ ├─ variant_0: integer #58 - │ │ ├─ variant_1: struct #63 - │ │ │ └─ [equals]: integer #58 - │ │ ├─ variant_2: struct #64 - │ │ │ └─ [not]: integer #58 - │ │ ├─ variant_3: struct #65 - │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ variant_4: struct #66 - │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_5: struct #67 - │ │ └─ [notIn]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ ├─ [name]: optional 'optional_132' #133 - │ │ └─ item: optional '_prisma_string_filter_ex' #53 - │ │ └─ item: union #50 - │ │ ├─ variant_0: union '_prisma_string_filter' #48 - │ │ │ ├─ variant_0: string #32 - │ │ │ ├─ variant_1: struct #37 - │ │ │ │ └─ [equals]: string #32 - │ │ │ ├─ variant_2: struct #38 - │ │ │ │ └─ [not]: string #32 - │ │ │ ├─ variant_3: struct #39 - │ │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ │ └─ item: string #32 - │ │ │ ├─ variant_4: struct #40 - │ │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ │ └─ item: string #32 - │ │ │ ├─ variant_5: struct #44 - │ │ │ │ ├─ [contains]: string #32 - │ │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #45 - │ │ │ │ └─ [search]: string #32 - │ │ │ └─ variant_7: struct #46 - │ │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ │ └─ item: string #32 - │ │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ variant_1: struct #49 - │ │ └─ [not]: union '_prisma_string_filter' #48 - │ │ ├─ variant_0: string #32 - │ │ ├─ variant_1: struct #37 - │ │ │ └─ [equals]: string #32 - │ │ ├─ variant_2: struct #38 - │ │ │ └─ [not]: string #32 - │ │ ├─ variant_3: struct #39 - │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_4: struct #40 - │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_5: struct #44 - │ │ │ ├─ [contains]: string #32 - │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #45 - │ │ │ └─ [search]: string #32 - │ │ └─ variant_7: struct #46 - │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ [posts]: optional 'optional_145' #146 - │ └─ item: union #144 - │ ├─ variant_0: struct #137 - │ │ └─ [every]: optional 'optional_135' #136 - │ │ └─ item: &Post_where #134 - │ ├─ variant_1: struct #140 - │ │ └─ [some]: optional 'optional_138' #139 - │ │ └─ item: &Post_where #134 - │ └─ variant_2: struct #143 - │ └─ [none]: optional 'optional_141' #142 - │ └─ item: &Post_where #134 - ├─ [id]: optional 'optional_126' #127 - │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ └─ item: union #71 - │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ ├─ variant_0: integer #58 - │ │ ├─ variant_1: struct #63 - │ │ │ └─ [equals]: integer #58 - │ │ ├─ variant_2: struct #64 - │ │ │ └─ [not]: integer #58 - │ │ ├─ variant_3: struct #65 - │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ variant_4: struct #66 - │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_5: struct #67 - │ │ └─ [notIn]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ variant_1: struct #70 - │ └─ [not]: either '_prisma_integer_filter' #69 - │ ├─ variant_0: integer #58 - │ ├─ variant_1: struct #63 - │ │ └─ [equals]: integer #58 - │ ├─ variant_2: struct #64 - │ │ └─ [not]: integer #58 - │ ├─ variant_3: struct #65 - │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ └─ [lte]: optional 'optional_59' #60 - │ │ └─ item: integer #58 - │ ├─ variant_4: struct #66 - │ │ └─ [in]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ variant_5: struct #67 - │ └─ [notIn]: list 'list_61' #62 - │ └─ item: integer #58 - └─ [title]: optional 'optional_128' #129 - └─ item: optional '_prisma_string_filter_ex' #53 - └─ item: union #50 - ├─ variant_0: union '_prisma_string_filter' #48 - │ ├─ variant_0: string #32 - │ ├─ variant_1: struct #37 - │ │ └─ [equals]: string #32 - │ ├─ variant_2: struct #38 - │ │ └─ [not]: string #32 - │ ├─ variant_3: struct #39 - │ │ └─ [in]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_4: struct #40 - │ │ └─ [notIn]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_5: struct #44 - │ │ ├─ [contains]: string #32 - │ │ └─ [mode]: optional 'optional_42' #43 - │ │ └─ item: string #41 enum{ '"insensitive"' } - │ ├─ variant_6: struct #45 - │ │ └─ [search]: string #32 - │ └─ variant_7: struct #46 - │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ [startsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - └─ variant_1: struct #49 - └─ [not]: union '_prisma_string_filter' #48 - ├─ variant_0: string #32 - ├─ variant_1: struct #37 - │ └─ [equals]: string #32 - ├─ variant_2: struct #38 - │ └─ [not]: string #32 - ├─ variant_3: struct #39 - │ └─ [in]: list 'list_35' #36 - │ └─ item: string #32 - ├─ variant_4: struct #40 - │ └─ [notIn]: list 'list_35' #36 - │ └─ item: string #32 - ├─ variant_5: struct #44 - │ ├─ [contains]: string #32 - │ └─ [mode]: optional 'optional_42' #43 - │ └─ item: string #41 enum{ '"insensitive"' } - ├─ variant_6: struct #45 - │ └─ [search]: string #32 - └─ variant_7: struct #46 - ├─ [endsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - └─ [startsWith]: optional 'optional_33' #34 - └─ item: string #32 +root: struct #247 +├─ [data]: struct 'Post_update_input' #238 +│ ├─ [author]: optional #236 +│ │ └─ item: union #235 +│ │ ├─ variant_0: struct #219 +│ │ │ └─ [create]: struct 'User_create_input_excluding_rel_Post_User' #217 +│ │ │ ├─ [id]: integer #81 +│ │ │ └─ [name]: string #82 +│ │ ├─ variant_1: struct #220 +│ │ │ └─ [connect]: &User_where #164 +│ │ ├─ variant_2: struct #221 +│ │ │ └─ [connectOrCreate]: struct #218 +│ │ │ ├─ [create]: struct 'User_create_input_excluding_rel_Post_User' #217 +│ │ │ │ ├─ [id]: integer #81 +│ │ │ │ └─ [name]: string #82 +│ │ │ └─ [where]: &User_where #164 +│ │ └─ variant_3: struct #234 +│ │ └─ [update]: struct 'User_update_input_excluding_rel_Post_User' #233 +│ │ ├─ [id]: optional #228 +│ │ │ └─ item: union #227 +│ │ │ ├─ variant_0: integer #81 +│ │ │ ├─ variant_1: struct #223 +│ │ │ │ └─ [set]: integer #81 +│ │ │ ├─ variant_2: struct #224 +│ │ │ │ └─ [multiply]: integer #81 +│ │ │ ├─ variant_3: struct #225 +│ │ │ │ └─ [decrement]: integer #81 +│ │ │ └─ variant_4: struct #226 +│ │ │ └─ [increment]: integer #81 +│ │ └─ [name]: optional #231 +│ │ └─ item: union #230 +│ │ ├─ variant_0: string #82 +│ │ └─ variant_1: struct #229 +│ │ └─ [set]: string #82 +│ ├─ [id]: optional #211 +│ │ └─ item: union #210 +│ │ ├─ variant_0: integer #89 +│ │ ├─ variant_1: struct #206 +│ │ │ └─ [set]: integer #89 +│ │ ├─ variant_2: struct #207 +│ │ │ └─ [multiply]: integer #89 +│ │ ├─ variant_3: struct #208 +│ │ │ └─ [decrement]: integer #89 +│ │ └─ variant_4: struct #209 +│ │ └─ [increment]: integer #89 +│ └─ [title]: optional #214 +│ └─ item: union #213 +│ ├─ variant_0: string #90 +│ └─ variant_1: struct #212 +│ └─ [set]: string #90 +└─ [where]: optional #246 + └─ item: struct 'Post_query_where_input' #245 + ├─ [AND]: optional #242 + │ └─ item: list #241 + │ └─ item: &Post_query_where_input #240 + ├─ [NOT]: optional #243 + │ └─ item: &Post_query_where_input #240 + ├─ [OR]: optional #242 + │ └─ item: list #241 + │ └─ item: &Post_query_where_input #240 + ├─ [author]: optional #127 + │ └─ item: struct 'User_where_excluding_Post' #126 + │ ├─ [id]: optional #114 + │ │ └─ item: &_prisma_integer_filter_ex #52 + │ ├─ [name]: optional #115 + │ │ └─ item: &_prisma_string_filter_ex #30 + │ └─ [posts]: optional #124 + │ └─ item: union #123 + │ ├─ variant_0: struct #118 + │ │ └─ [every]: optional #117 + │ │ └─ item: &Post_where #116 + │ ├─ variant_1: struct #120 + │ │ └─ [some]: optional #119 + │ │ └─ item: &Post_where #116 + │ └─ variant_2: struct #122 + │ └─ [none]: optional #121 + │ └─ item: &Post_where #116 + ├─ [id]: optional #111 + │ └─ item: &_prisma_integer_filter_ex #52 + └─ [title]: optional #112 + └─ item: &_prisma_string_filter_ex #30 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_many Record inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_many Record inp.snap index c2b062e929..93454d016e 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_many Record inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_many Record inp.snap @@ -2,239 +2,143 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct #92 -├─ [data]: struct 'Record_update_input' #31 -│ ├─ [age]: optional 'optional_24' #25 -│ │ └─ item: union #23 -│ │ ├─ variant_0: optional 'optional_7' #8 +root: struct #79 +├─ [data]: struct 'Record_update_input' #27 +│ ├─ [age]: optional #22 +│ │ └─ item: union #21 +│ │ ├─ variant_0: optional #7 │ │ │ └─ item: integer #6 -│ │ ├─ variant_1: struct #19 -│ │ │ └─ [set]: optional 'optional_7' #8 +│ │ ├─ variant_1: struct #17 +│ │ │ └─ [set]: optional #7 │ │ │ └─ item: integer #6 -│ │ ├─ variant_2: struct #20 +│ │ ├─ variant_2: struct #18 │ │ │ └─ [multiply]: integer #6 -│ │ ├─ variant_3: struct #21 +│ │ ├─ variant_3: struct #19 │ │ │ └─ [decrement]: integer #6 -│ │ └─ variant_4: struct #22 +│ │ └─ variant_4: struct #20 │ │ └─ [increment]: integer #6 -│ ├─ [created_at]: optional 'optional_28' #29 -│ │ └─ item: union #27 +│ ├─ [created_at]: optional #25 +│ │ └─ item: union #24 │ │ ├─ variant_0: string #1 -│ │ └─ variant_1: struct #26 +│ │ └─ variant_1: struct #23 │ │ └─ [set]: string #1 -│ ├─ [id]: optional 'optional_13' #14 +│ ├─ [id]: optional #13 │ │ └─ item: union #12 │ │ ├─ variant_0: string #4 │ │ └─ variant_1: struct #11 │ │ └─ [set]: string #4 -│ └─ [name]: optional 'optional_17' #18 -│ └─ item: union #16 +│ └─ [name]: optional #16 +│ └─ item: union #15 │ ├─ variant_0: string #5 -│ └─ variant_1: struct #15 +│ └─ variant_1: struct #14 │ └─ [set]: string #5 -└─ [where]: optional 'optional_90' #91 - └─ item: struct 'Record_query_where_input' #89 - ├─ [AND]: optional 'optional_84' #85 - │ └─ item: list 'list_82' #83 - │ └─ item: &Record_query_where_input #81 - ├─ [NOT]: optional 'optional_86' #87 - │ └─ item: &Record_query_where_input #81 - ├─ [OR]: optional 'optional_84' #85 - │ └─ item: list 'list_82' #83 - │ └─ item: &Record_query_where_input #81 - ├─ [age]: optional 'optional_75' #76 - │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ └─ item: union #71 - │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ ├─ variant_0: integer #58 - │ │ ├─ variant_1: struct #63 - │ │ │ └─ [equals]: integer #58 - │ │ ├─ variant_2: struct #64 - │ │ │ └─ [not]: integer #58 - │ │ ├─ variant_3: struct #65 - │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ variant_4: struct #66 - │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_5: struct #67 - │ │ └─ [notIn]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ variant_1: struct #70 - │ └─ [not]: either '_prisma_integer_filter' #69 - │ ├─ variant_0: integer #58 - │ ├─ variant_1: struct #63 - │ │ └─ [equals]: integer #58 - │ ├─ variant_2: struct #64 - │ │ └─ [not]: integer #58 - │ ├─ variant_3: struct #65 - │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ └─ [lte]: optional 'optional_59' #60 - │ │ └─ item: integer #58 - │ ├─ variant_4: struct #66 - │ │ └─ [in]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ variant_5: struct #67 - │ └─ [notIn]: list 'list_61' #62 - │ └─ item: integer #58 - ├─ [created_at]: optional 'optional_77' #78 - │ └─ item: optional '_prisma_string_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: union '_prisma_string_filter' #48 +└─ [where]: optional #78 + └─ item: struct 'Record_query_where_input' #77 + ├─ [AND]: optional #74 + │ └─ item: list #73 + │ └─ item: &Record_query_where_input #72 + ├─ [NOT]: optional #75 + │ └─ item: &Record_query_where_input #72 + ├─ [OR]: optional #74 + │ └─ item: list #73 + │ └─ item: &Record_query_where_input #72 + ├─ [age]: optional #68 + │ └─ item: optional '_prisma_integer_filter_ex' #67 + │ └─ item: union #65 + │ ├─ variant_0: either '_prisma_integer_filter' #63 + │ │ ├─ variant_0: integer #54 + │ │ ├─ variant_1: struct #57 + │ │ │ └─ [equals]: integer #54 + │ │ ├─ variant_2: struct #58 + │ │ │ └─ [not]: integer #54 + │ │ ├─ variant_3: struct #59 + │ │ │ ├─ [gt]: optional #55 + │ │ │ │ └─ item: integer #54 + │ │ │ ├─ [gte]: optional #55 + │ │ │ │ └─ item: integer #54 + │ │ │ ├─ [lt]: optional #55 + │ │ │ │ └─ item: integer #54 + │ │ │ └─ [lte]: optional #55 + │ │ │ └─ item: integer #54 + │ │ ├─ variant_4: struct #60 + │ │ │ └─ [in]: list #56 + │ │ │ └─ item: integer #54 + │ │ └─ variant_5: struct #61 + │ │ └─ [notIn]: list #56 + │ │ └─ item: integer #54 + │ └─ variant_1: struct #64 + │ └─ [not]: either '_prisma_integer_filter' #63 + │ ├─ variant_0: integer #54 + │ ├─ variant_1: struct #57 + │ │ └─ [equals]: integer #54 + │ ├─ variant_2: struct #58 + │ │ └─ [not]: integer #54 + │ ├─ variant_3: struct #59 + │ │ ├─ [gt]: optional #55 + │ │ │ └─ item: integer #54 + │ │ ├─ [gte]: optional #55 + │ │ │ └─ item: integer #54 + │ │ ├─ [lt]: optional #55 + │ │ │ └─ item: integer #54 + │ │ └─ [lte]: optional #55 + │ │ └─ item: integer #54 + │ ├─ variant_4: struct #60 + │ │ └─ [in]: list #56 + │ │ └─ item: integer #54 + │ └─ variant_5: struct #61 + │ └─ [notIn]: list #56 + │ └─ item: integer #54 + ├─ [created_at]: optional #69 + │ └─ item: &_prisma_string_filter_ex #30 + ├─ [id]: optional #50 + │ └─ item: optional '_prisma_string_filter_ex' #49 + │ └─ item: union #47 + │ ├─ variant_0: union '_prisma_string_filter' #45 │ │ ├─ variant_0: string #32 - │ │ ├─ variant_1: struct #37 + │ │ ├─ variant_1: struct #35 │ │ │ └─ [equals]: string #32 - │ │ ├─ variant_2: struct #38 + │ │ ├─ variant_2: struct #36 │ │ │ └─ [not]: string #32 - │ │ ├─ variant_3: struct #39 - │ │ │ └─ [in]: list 'list_35' #36 + │ │ ├─ variant_3: struct #37 + │ │ │ └─ [in]: list #34 │ │ │ └─ item: string #32 - │ │ ├─ variant_4: struct #40 - │ │ │ └─ [notIn]: list 'list_35' #36 + │ │ ├─ variant_4: struct #38 + │ │ │ └─ [notIn]: list #34 │ │ │ └─ item: string #32 - │ │ ├─ variant_5: struct #44 + │ │ ├─ variant_5: struct #41 │ │ │ ├─ [contains]: string #32 - │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #45 + │ │ │ └─ [mode]: optional #40 + │ │ │ └─ item: string #39 enum{ '"insensitive"' } + │ │ ├─ variant_6: struct #42 │ │ │ └─ [search]: string #32 - │ │ └─ variant_7: struct #46 - │ │ ├─ [endsWith]: optional 'optional_33' #34 + │ │ └─ variant_7: struct #43 + │ │ ├─ [endsWith]: optional #33 │ │ │ └─ item: string #32 - │ │ └─ [startsWith]: optional 'optional_33' #34 + │ │ └─ [startsWith]: optional #33 │ │ └─ item: string #32 - │ └─ variant_1: struct #49 - │ └─ [not]: union '_prisma_string_filter' #48 + │ └─ variant_1: struct #46 + │ └─ [not]: union '_prisma_string_filter' #45 │ ├─ variant_0: string #32 - │ ├─ variant_1: struct #37 + │ ├─ variant_1: struct #35 │ │ └─ [equals]: string #32 - │ ├─ variant_2: struct #38 + │ ├─ variant_2: struct #36 │ │ └─ [not]: string #32 - │ ├─ variant_3: struct #39 - │ │ └─ [in]: list 'list_35' #36 + │ ├─ variant_3: struct #37 + │ │ └─ [in]: list #34 │ │ └─ item: string #32 - │ ├─ variant_4: struct #40 - │ │ └─ [notIn]: list 'list_35' #36 + │ ├─ variant_4: struct #38 + │ │ └─ [notIn]: list #34 │ │ └─ item: string #32 - │ ├─ variant_5: struct #44 + │ ├─ variant_5: struct #41 │ │ ├─ [contains]: string #32 - │ │ └─ [mode]: optional 'optional_42' #43 - │ │ └─ item: string #41 enum{ '"insensitive"' } - │ ├─ variant_6: struct #45 + │ │ └─ [mode]: optional #40 + │ │ └─ item: string #39 enum{ '"insensitive"' } + │ ├─ variant_6: struct #42 │ │ └─ [search]: string #32 - │ └─ variant_7: struct #46 - │ ├─ [endsWith]: optional 'optional_33' #34 + │ └─ variant_7: struct #43 + │ ├─ [endsWith]: optional #33 │ │ └─ item: string #32 - │ └─ [startsWith]: optional 'optional_33' #34 + │ └─ [startsWith]: optional #33 │ └─ item: string #32 - ├─ [id]: optional 'optional_54' #55 - │ └─ item: optional '_prisma_string_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: union '_prisma_string_filter' #48 - │ │ ├─ variant_0: string #32 - │ │ ├─ variant_1: struct #37 - │ │ │ └─ [equals]: string #32 - │ │ ├─ variant_2: struct #38 - │ │ │ └─ [not]: string #32 - │ │ ├─ variant_3: struct #39 - │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_4: struct #40 - │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_5: struct #44 - │ │ │ ├─ [contains]: string #32 - │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #45 - │ │ │ └─ [search]: string #32 - │ │ └─ variant_7: struct #46 - │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ variant_1: struct #49 - │ └─ [not]: union '_prisma_string_filter' #48 - │ ├─ variant_0: string #32 - │ ├─ variant_1: struct #37 - │ │ └─ [equals]: string #32 - │ ├─ variant_2: struct #38 - │ │ └─ [not]: string #32 - │ ├─ variant_3: struct #39 - │ │ └─ [in]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_4: struct #40 - │ │ └─ [notIn]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_5: struct #44 - │ │ ├─ [contains]: string #32 - │ │ └─ [mode]: optional 'optional_42' #43 - │ │ └─ item: string #41 enum{ '"insensitive"' } - │ ├─ variant_6: struct #45 - │ │ └─ [search]: string #32 - │ └─ variant_7: struct #46 - │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ [startsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - └─ [name]: optional 'optional_56' #57 - └─ item: optional '_prisma_string_filter_ex' #53 - └─ item: union #50 - ├─ variant_0: union '_prisma_string_filter' #48 - │ ├─ variant_0: string #32 - │ ├─ variant_1: struct #37 - │ │ └─ [equals]: string #32 - │ ├─ variant_2: struct #38 - │ │ └─ [not]: string #32 - │ ├─ variant_3: struct #39 - │ │ └─ [in]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_4: struct #40 - │ │ └─ [notIn]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_5: struct #44 - │ │ ├─ [contains]: string #32 - │ │ └─ [mode]: optional 'optional_42' #43 - │ │ └─ item: string #41 enum{ '"insensitive"' } - │ ├─ variant_6: struct #45 - │ │ └─ [search]: string #32 - │ └─ variant_7: struct #46 - │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ [startsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - └─ variant_1: struct #49 - └─ [not]: union '_prisma_string_filter' #48 - ├─ variant_0: string #32 - ├─ variant_1: struct #37 - │ └─ [equals]: string #32 - ├─ variant_2: struct #38 - │ └─ [not]: string #32 - ├─ variant_3: struct #39 - │ └─ [in]: list 'list_35' #36 - │ └─ item: string #32 - ├─ variant_4: struct #40 - │ └─ [notIn]: list 'list_35' #36 - │ └─ item: string #32 - ├─ variant_5: struct #44 - │ ├─ [contains]: string #32 - │ └─ [mode]: optional 'optional_42' #43 - │ └─ item: string #41 enum{ '"insensitive"' } - ├─ variant_6: struct #45 - │ └─ [search]: string #32 - └─ variant_7: struct #46 - ├─ [endsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - └─ [startsWith]: optional 'optional_33' #34 - └─ item: string #32 + └─ [name]: optional #51 + └─ item: &_prisma_string_filter_ex #30 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_many User inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_many User inp.snap index f5b040de1e..bb1469af54 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_many User inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_many User inp.snap @@ -2,2490 +2,374 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct #249 -├─ [data]: struct 'User_update_input' #192 -│ ├─ [id]: optional 'optional_113' #114 -│ │ └─ item: union #112 -│ │ ├─ variant_0: integer #94 -│ │ ├─ variant_1: struct #108 -│ │ │ └─ [set]: integer #94 -│ │ ├─ variant_2: struct #109 -│ │ │ └─ [multiply]: integer #94 -│ │ ├─ variant_3: struct #110 -│ │ │ └─ [decrement]: integer #94 -│ │ └─ variant_4: struct #111 -│ │ └─ [increment]: integer #94 -│ ├─ [name]: optional 'optional_117' #118 -│ │ └─ item: union #116 -│ │ ├─ variant_0: string #95 -│ │ └─ variant_1: struct #115 -│ │ └─ [set]: string #95 -│ └─ [posts]: optional 'optional_189' #190 -│ └─ item: union #188 -│ ├─ variant_0: struct #157 -│ │ └─ [create]: union #125 -│ │ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #122 -│ │ │ ├─ [id]: optional 'optional_119' #120 -│ │ │ │ └─ item: integer #103 -│ │ │ └─ [title]: string #104 -│ │ └─ variant_1: list 'list_123' #124 -│ │ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #122 -│ │ ├─ [id]: optional 'optional_119' #120 -│ │ │ └─ item: integer #103 -│ │ └─ [title]: string #104 -│ ├─ variant_1: struct #158 -│ │ └─ [connect]: union #155 -│ │ ├─ variant_0: struct 'Post_where' #152 -│ │ │ ├─ [author]: optional 'optional_149' #150 -│ │ │ │ └─ item: struct 'User_where_excluding_Post' #148 -│ │ │ │ ├─ [id]: optional 'optional_130' #131 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [name]: optional 'optional_132' #133 -│ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ └─ item: union #50 -│ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [posts]: optional 'optional_145' #146 -│ │ │ │ └─ item: union #144 -│ │ │ │ ├─ variant_0: struct #137 -│ │ │ │ │ └─ [every]: optional 'optional_135' #136 -│ │ │ │ │ └─ item: &Post_where #134 -│ │ │ │ ├─ variant_1: struct #140 -│ │ │ │ │ └─ [some]: optional 'optional_138' #139 -│ │ │ │ │ └─ item: &Post_where #134 -│ │ │ │ └─ variant_2: struct #143 -│ │ │ │ └─ [none]: optional 'optional_141' #142 -│ │ │ │ └─ item: &Post_where #134 -│ │ │ ├─ [id]: optional 'optional_126' #127 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ [title]: optional 'optional_128' #129 -│ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ └─ item: union #50 -│ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ variant_1: struct #49 -│ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ variant_1: list 'list_153' #154 -│ │ └─ item: struct 'Post_where' #152 -│ │ ├─ [author]: optional 'optional_149' #150 -│ │ │ └─ item: struct 'User_where_excluding_Post' #148 -│ │ │ ├─ [id]: optional 'optional_130' #131 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ [name]: optional 'optional_132' #133 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [posts]: optional 'optional_145' #146 -│ │ │ └─ item: union #144 -│ │ │ ├─ variant_0: struct #137 -│ │ │ │ └─ [every]: optional 'optional_135' #136 -│ │ │ │ └─ item: &Post_where #134 -│ │ │ ├─ variant_1: struct #140 -│ │ │ │ └─ [some]: optional 'optional_138' #139 -│ │ │ │ └─ item: &Post_where #134 -│ │ │ └─ variant_2: struct #143 -│ │ │ └─ [none]: optional 'optional_141' #142 -│ │ │ └─ item: &Post_where #134 -│ │ ├─ [id]: optional 'optional_126' #127 -│ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ └─ item: union #71 -│ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ variant_1: struct #70 -│ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ ├─ variant_0: integer #58 -│ │ │ ├─ variant_1: struct #63 -│ │ │ │ └─ [equals]: integer #58 -│ │ │ ├─ variant_2: struct #64 -│ │ │ │ └─ [not]: integer #58 -│ │ │ ├─ variant_3: struct #65 -│ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ variant_4: struct #66 -│ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ variant_5: struct #67 -│ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ └─ item: integer #58 -│ │ └─ [title]: optional 'optional_128' #129 -│ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ └─ item: union #50 -│ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ variant_1: struct #49 -│ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ ├─ variant_0: string #32 -│ │ ├─ variant_1: struct #37 -│ │ │ └─ [equals]: string #32 -│ │ ├─ variant_2: struct #38 -│ │ │ └─ [not]: string #32 -│ │ ├─ variant_3: struct #39 -│ │ │ └─ [in]: list 'list_35' #36 -│ │ │ └─ item: string #32 -│ │ ├─ variant_4: struct #40 -│ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ └─ item: string #32 -│ │ ├─ variant_5: struct #44 -│ │ │ ├─ [contains]: string #32 -│ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ ├─ variant_6: struct #45 -│ │ │ └─ [search]: string #32 -│ │ └─ variant_7: struct #46 -│ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ └─ item: string #32 -│ ├─ variant_2: struct #159 -│ │ └─ [connectOrCreate]: struct #156 -│ │ ├─ [create]: union #125 -│ │ │ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #122 -│ │ │ │ ├─ [id]: optional 'optional_119' #120 -│ │ │ │ │ └─ item: integer #103 -│ │ │ │ └─ [title]: string #104 -│ │ │ └─ variant_1: list 'list_123' #124 -│ │ │ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #122 -│ │ │ ├─ [id]: optional 'optional_119' #120 -│ │ │ │ └─ item: integer #103 -│ │ │ └─ [title]: string #104 -│ │ └─ [where]: union #155 -│ │ ├─ variant_0: struct 'Post_where' #152 -│ │ │ ├─ [author]: optional 'optional_149' #150 -│ │ │ │ └─ item: struct 'User_where_excluding_Post' #148 -│ │ │ │ ├─ [id]: optional 'optional_130' #131 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [name]: optional 'optional_132' #133 -│ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ └─ item: union #50 -│ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [posts]: optional 'optional_145' #146 -│ │ │ │ └─ item: union #144 -│ │ │ │ ├─ variant_0: struct #137 -│ │ │ │ │ └─ [every]: optional 'optional_135' #136 -│ │ │ │ │ └─ item: &Post_where #134 -│ │ │ │ ├─ variant_1: struct #140 -│ │ │ │ │ └─ [some]: optional 'optional_138' #139 -│ │ │ │ │ └─ item: &Post_where #134 -│ │ │ │ └─ variant_2: struct #143 -│ │ │ │ └─ [none]: optional 'optional_141' #142 -│ │ │ │ └─ item: &Post_where #134 -│ │ │ ├─ [id]: optional 'optional_126' #127 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ [title]: optional 'optional_128' #129 -│ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ └─ item: union #50 -│ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ variant_1: struct #49 -│ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ variant_1: list 'list_153' #154 -│ │ └─ item: struct 'Post_where' #152 -│ │ ├─ [author]: optional 'optional_149' #150 -│ │ │ └─ item: struct 'User_where_excluding_Post' #148 -│ │ │ ├─ [id]: optional 'optional_130' #131 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ [name]: optional 'optional_132' #133 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [posts]: optional 'optional_145' #146 -│ │ │ └─ item: union #144 -│ │ │ ├─ variant_0: struct #137 -│ │ │ │ └─ [every]: optional 'optional_135' #136 -│ │ │ │ └─ item: &Post_where #134 -│ │ │ ├─ variant_1: struct #140 -│ │ │ │ └─ [some]: optional 'optional_138' #139 -│ │ │ │ └─ item: &Post_where #134 -│ │ │ └─ variant_2: struct #143 -│ │ │ └─ [none]: optional 'optional_141' #142 -│ │ │ └─ item: &Post_where #134 -│ │ ├─ [id]: optional 'optional_126' #127 -│ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ └─ item: union #71 -│ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ variant_1: struct #70 -│ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ ├─ variant_0: integer #58 -│ │ │ ├─ variant_1: struct #63 -│ │ │ │ └─ [equals]: integer #58 -│ │ │ ├─ variant_2: struct #64 -│ │ │ │ └─ [not]: integer #58 -│ │ │ ├─ variant_3: struct #65 -│ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ variant_4: struct #66 -│ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ variant_5: struct #67 -│ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ └─ item: integer #58 -│ │ └─ [title]: optional 'optional_128' #129 -│ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ └─ item: union #50 -│ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ variant_1: struct #49 -│ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ ├─ variant_0: string #32 -│ │ ├─ variant_1: struct #37 -│ │ │ └─ [equals]: string #32 -│ │ ├─ variant_2: struct #38 -│ │ │ └─ [not]: string #32 -│ │ ├─ variant_3: struct #39 -│ │ │ └─ [in]: list 'list_35' #36 -│ │ │ └─ item: string #32 -│ │ ├─ variant_4: struct #40 -│ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ └─ item: string #32 -│ │ ├─ variant_5: struct #44 -│ │ │ ├─ [contains]: string #32 -│ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ ├─ variant_6: struct #45 -│ │ │ └─ [search]: string #32 -│ │ └─ variant_7: struct #46 -│ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ └─ item: string #32 -│ ├─ variant_3: struct #173 -│ │ └─ [update]: struct 'Post_update_input_excluding_rel_Post_User' #172 -│ │ ├─ [id]: optional 'optional_165' #166 -│ │ │ └─ item: union #164 -│ │ │ ├─ variant_0: integer #103 -│ │ │ ├─ variant_1: struct #160 -│ │ │ │ └─ [set]: integer #103 -│ │ │ ├─ variant_2: struct #161 -│ │ │ │ └─ [multiply]: integer #103 -│ │ │ ├─ variant_3: struct #162 -│ │ │ │ └─ [decrement]: integer #103 -│ │ │ └─ variant_4: struct #163 -│ │ │ └─ [increment]: integer #103 -│ │ └─ [title]: optional 'optional_169' #170 -│ │ └─ item: union #168 -│ │ ├─ variant_0: string #104 -│ │ └─ variant_1: struct #167 -│ │ └─ [set]: string #104 -│ ├─ variant_4: struct #177 -│ │ └─ [updateMany]: struct #176 -│ │ ├─ [data]: struct 'Post_update_input_excluding_rel_Post_User' #172 -│ │ │ ├─ [id]: optional 'optional_165' #166 -│ │ │ │ └─ item: union #164 -│ │ │ │ ├─ variant_0: integer #103 -│ │ │ │ ├─ variant_1: struct #160 -│ │ │ │ │ └─ [set]: integer #103 -│ │ │ │ ├─ variant_2: struct #161 -│ │ │ │ │ └─ [multiply]: integer #103 -│ │ │ │ ├─ variant_3: struct #162 -│ │ │ │ │ └─ [decrement]: integer #103 -│ │ │ │ └─ variant_4: struct #163 -│ │ │ │ └─ [increment]: integer #103 -│ │ │ └─ [title]: optional 'optional_169' #170 -│ │ │ └─ item: union #168 -│ │ │ ├─ variant_0: string #104 -│ │ │ └─ variant_1: struct #167 -│ │ │ └─ [set]: string #104 -│ │ └─ [where]: optional 'optional_174' #175 -│ │ └─ item: union #155 -│ │ ├─ variant_0: struct 'Post_where' #152 -│ │ │ ├─ [author]: optional 'optional_149' #150 -│ │ │ │ └─ item: struct 'User_where_excluding_Post' #148 -│ │ │ │ ├─ [id]: optional 'optional_130' #131 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [name]: optional 'optional_132' #133 -│ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ └─ item: union #50 -│ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [posts]: optional 'optional_145' #146 -│ │ │ │ └─ item: union #144 -│ │ │ │ ├─ variant_0: struct #137 -│ │ │ │ │ └─ [every]: optional 'optional_135' #136 -│ │ │ │ │ └─ item: &Post_where #134 -│ │ │ │ ├─ variant_1: struct #140 -│ │ │ │ │ └─ [some]: optional 'optional_138' #139 -│ │ │ │ │ └─ item: &Post_where #134 -│ │ │ │ └─ variant_2: struct #143 -│ │ │ │ └─ [none]: optional 'optional_141' #142 -│ │ │ │ └─ item: &Post_where #134 -│ │ │ ├─ [id]: optional 'optional_126' #127 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ [title]: optional 'optional_128' #129 -│ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ └─ item: union #50 -│ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ variant_1: struct #49 -│ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ variant_1: list 'list_153' #154 -│ │ └─ item: struct 'Post_where' #152 -│ │ ├─ [author]: optional 'optional_149' #150 -│ │ │ └─ item: struct 'User_where_excluding_Post' #148 -│ │ │ ├─ [id]: optional 'optional_130' #131 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ [name]: optional 'optional_132' #133 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [posts]: optional 'optional_145' #146 -│ │ │ └─ item: union #144 -│ │ │ ├─ variant_0: struct #137 -│ │ │ │ └─ [every]: optional 'optional_135' #136 -│ │ │ │ └─ item: &Post_where #134 -│ │ │ ├─ variant_1: struct #140 -│ │ │ │ └─ [some]: optional 'optional_138' #139 -│ │ │ │ └─ item: &Post_where #134 -│ │ │ └─ variant_2: struct #143 -│ │ │ └─ [none]: optional 'optional_141' #142 -│ │ │ └─ item: &Post_where #134 -│ │ ├─ [id]: optional 'optional_126' #127 -│ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ └─ item: union #71 -│ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ variant_1: struct #70 -│ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ ├─ variant_0: integer #58 -│ │ │ ├─ variant_1: struct #63 -│ │ │ │ └─ [equals]: integer #58 -│ │ │ ├─ variant_2: struct #64 -│ │ │ │ └─ [not]: integer #58 -│ │ │ ├─ variant_3: struct #65 -│ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ variant_4: struct #66 -│ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ variant_5: struct #67 -│ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ └─ item: integer #58 -│ │ └─ [title]: optional 'optional_128' #129 -│ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ └─ item: union #50 -│ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ variant_1: struct #49 -│ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ ├─ variant_0: string #32 -│ │ ├─ variant_1: struct #37 -│ │ │ └─ [equals]: string #32 -│ │ ├─ variant_2: struct #38 -│ │ │ └─ [not]: string #32 -│ │ ├─ variant_3: struct #39 -│ │ │ └─ [in]: list 'list_35' #36 -│ │ │ └─ item: string #32 -│ │ ├─ variant_4: struct #40 -│ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ └─ item: string #32 -│ │ ├─ variant_5: struct #44 -│ │ │ ├─ [contains]: string #32 -│ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ ├─ variant_6: struct #45 -│ │ │ └─ [search]: string #32 -│ │ └─ variant_7: struct #46 -│ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ └─ item: string #32 -│ ├─ variant_5: struct #181 -│ │ └─ [deleteMany]: struct #180 -│ │ └─ [where]: optional 'optional_178' #179 -│ │ └─ item: union #155 -│ │ ├─ variant_0: struct 'Post_where' #152 -│ │ │ ├─ [author]: optional 'optional_149' #150 -│ │ │ │ └─ item: struct 'User_where_excluding_Post' #148 -│ │ │ │ ├─ [id]: optional 'optional_130' #131 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [name]: optional 'optional_132' #133 -│ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ └─ item: union #50 -│ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [posts]: optional 'optional_145' #146 -│ │ │ │ └─ item: union #144 -│ │ │ │ ├─ variant_0: struct #137 -│ │ │ │ │ └─ [every]: optional 'optional_135' #136 -│ │ │ │ │ └─ item: &Post_where #134 -│ │ │ │ ├─ variant_1: struct #140 -│ │ │ │ │ └─ [some]: optional 'optional_138' #139 -│ │ │ │ │ └─ item: &Post_where #134 -│ │ │ │ └─ variant_2: struct #143 -│ │ │ │ └─ [none]: optional 'optional_141' #142 -│ │ │ │ └─ item: &Post_where #134 -│ │ │ ├─ [id]: optional 'optional_126' #127 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ [title]: optional 'optional_128' #129 -│ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ └─ item: union #50 -│ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ variant_1: struct #49 -│ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ variant_1: list 'list_153' #154 -│ │ └─ item: struct 'Post_where' #152 -│ │ ├─ [author]: optional 'optional_149' #150 -│ │ │ └─ item: struct 'User_where_excluding_Post' #148 -│ │ │ ├─ [id]: optional 'optional_130' #131 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ [name]: optional 'optional_132' #133 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [posts]: optional 'optional_145' #146 -│ │ │ └─ item: union #144 -│ │ │ ├─ variant_0: struct #137 -│ │ │ │ └─ [every]: optional 'optional_135' #136 -│ │ │ │ └─ item: &Post_where #134 -│ │ │ ├─ variant_1: struct #140 -│ │ │ │ └─ [some]: optional 'optional_138' #139 -│ │ │ │ └─ item: &Post_where #134 -│ │ │ └─ variant_2: struct #143 -│ │ │ └─ [none]: optional 'optional_141' #142 -│ │ │ └─ item: &Post_where #134 -│ │ ├─ [id]: optional 'optional_126' #127 -│ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ └─ item: union #71 -│ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ variant_1: struct #70 -│ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ ├─ variant_0: integer #58 -│ │ │ ├─ variant_1: struct #63 -│ │ │ │ └─ [equals]: integer #58 -│ │ │ ├─ variant_2: struct #64 -│ │ │ │ └─ [not]: integer #58 -│ │ │ ├─ variant_3: struct #65 -│ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ variant_4: struct #66 -│ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ variant_5: struct #67 -│ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ └─ item: integer #58 -│ │ └─ [title]: optional 'optional_128' #129 -│ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ └─ item: union #50 -│ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ variant_1: struct #49 -│ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ ├─ variant_0: string #32 -│ │ ├─ variant_1: struct #37 -│ │ │ └─ [equals]: string #32 -│ │ ├─ variant_2: struct #38 -│ │ │ └─ [not]: string #32 -│ │ ├─ variant_3: struct #39 -│ │ │ └─ [in]: list 'list_35' #36 -│ │ │ └─ item: string #32 -│ │ ├─ variant_4: struct #40 -│ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ └─ item: string #32 -│ │ ├─ variant_5: struct #44 -│ │ │ ├─ [contains]: string #32 -│ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ ├─ variant_6: struct #45 -│ │ │ └─ [search]: string #32 -│ │ └─ variant_7: struct #46 -│ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ └─ item: string #32 -│ └─ variant_6: struct #187 -│ └─ [createMany]: optional 'optional_185' #186 -│ └─ item: struct #184 -│ └─ [data]: list 'list_182' #183 -│ └─ item: union #125 -│ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #122 -│ │ ├─ [id]: optional 'optional_119' #120 -│ │ │ └─ item: integer #103 -│ │ └─ [title]: string #104 -│ └─ variant_1: list 'list_123' #124 -│ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #122 -│ ├─ [id]: optional 'optional_119' #120 -│ │ └─ item: integer #103 -│ └─ [title]: string #104 -└─ [where]: optional 'optional_247' #248 - └─ item: struct 'User_query_where_input' #246 - ├─ [AND]: optional 'optional_241' #242 - │ └─ item: list 'list_239' #240 - │ └─ item: &User_query_where_input #238 - ├─ [NOT]: optional 'optional_243' #244 - │ └─ item: &User_query_where_input #238 - ├─ [OR]: optional 'optional_241' #242 - │ └─ item: list 'list_239' #240 - │ └─ item: &User_query_where_input #238 - ├─ [id]: optional 'optional_193' #194 - │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ └─ item: union #71 - │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ ├─ variant_0: integer #58 - │ │ ├─ variant_1: struct #63 - │ │ │ └─ [equals]: integer #58 - │ │ ├─ variant_2: struct #64 - │ │ │ └─ [not]: integer #58 - │ │ ├─ variant_3: struct #65 - │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ variant_4: struct #66 - │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_5: struct #67 - │ │ └─ [notIn]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ variant_1: struct #70 - │ └─ [not]: either '_prisma_integer_filter' #69 - │ ├─ variant_0: integer #58 - │ ├─ variant_1: struct #63 - │ │ └─ [equals]: integer #58 - │ ├─ variant_2: struct #64 - │ │ └─ [not]: integer #58 - │ ├─ variant_3: struct #65 - │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ └─ [lte]: optional 'optional_59' #60 - │ │ └─ item: integer #58 - │ ├─ variant_4: struct #66 - │ │ └─ [in]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ variant_5: struct #67 - │ └─ [notIn]: list 'list_61' #62 - │ └─ item: integer #58 - ├─ [name]: optional 'optional_195' #196 - │ └─ item: optional '_prisma_string_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: union '_prisma_string_filter' #48 - │ │ ├─ variant_0: string #32 - │ │ ├─ variant_1: struct #37 - │ │ │ └─ [equals]: string #32 - │ │ ├─ variant_2: struct #38 - │ │ │ └─ [not]: string #32 - │ │ ├─ variant_3: struct #39 - │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_4: struct #40 - │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_5: struct #44 - │ │ │ ├─ [contains]: string #32 - │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #45 - │ │ │ └─ [search]: string #32 - │ │ └─ variant_7: struct #46 - │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ variant_1: struct #49 - │ └─ [not]: union '_prisma_string_filter' #48 - │ ├─ variant_0: string #32 - │ ├─ variant_1: struct #37 - │ │ └─ [equals]: string #32 - │ ├─ variant_2: struct #38 - │ │ └─ [not]: string #32 - │ ├─ variant_3: struct #39 - │ │ └─ [in]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_4: struct #40 - │ │ └─ [notIn]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_5: struct #44 - │ │ ├─ [contains]: string #32 - │ │ └─ [mode]: optional 'optional_42' #43 - │ │ └─ item: string #41 enum{ '"insensitive"' } - │ ├─ variant_6: struct #45 - │ │ └─ [search]: string #32 - │ └─ variant_7: struct #46 - │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ [startsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - └─ [posts]: optional 'optional_234' #235 - └─ item: union #233 - ├─ variant_0: struct #226 - │ └─ [every]: optional 'optional_224' #225 - │ └─ item: struct 'Post_where_excluding_User' #223 - │ ├─ [author]: optional 'optional_220' #221 - │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #219 - │ │ ├─ [id]: optional 'optional_201' #202 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ │ │ └─ item: union #71 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ │ │ ├─ variant_0: integer #58 - │ │ │ │ ├─ variant_1: struct #63 - │ │ │ │ │ └─ [equals]: integer #58 - │ │ │ │ ├─ variant_2: struct #64 - │ │ │ │ │ └─ [not]: integer #58 - │ │ │ │ ├─ variant_3: struct #65 - │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ │ │ └─ item: integer #58 - │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ │ │ └─ item: integer #58 - │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ │ │ └─ item: integer #58 - │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ variant_4: struct #66 - │ │ │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ └─ variant_5: struct #67 - │ │ │ │ └─ [notIn]: list 'list_61' #62 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ variant_1: struct #70 - │ │ │ └─ [not]: either '_prisma_integer_filter' #69 - │ │ │ ├─ variant_0: integer #58 - │ │ │ ├─ variant_1: struct #63 - │ │ │ │ └─ [equals]: integer #58 - │ │ │ ├─ variant_2: struct #64 - │ │ │ │ └─ [not]: integer #58 - │ │ │ ├─ variant_3: struct #65 - │ │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ variant_4: struct #66 - │ │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ variant_5: struct #67 - │ │ │ └─ [notIn]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ ├─ [name]: optional 'optional_203' #204 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 - │ │ │ └─ item: union #50 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 - │ │ │ │ ├─ variant_0: string #32 - │ │ │ │ ├─ variant_1: struct #37 - │ │ │ │ │ └─ [equals]: string #32 - │ │ │ │ ├─ variant_2: struct #38 - │ │ │ │ │ └─ [not]: string #32 - │ │ │ │ ├─ variant_3: struct #39 - │ │ │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ │ │ └─ item: string #32 - │ │ │ │ ├─ variant_4: struct #40 - │ │ │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ │ │ └─ item: string #32 - │ │ │ │ ├─ variant_5: struct #44 - │ │ │ │ │ ├─ [contains]: string #32 - │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #45 - │ │ │ │ │ └─ [search]: string #32 - │ │ │ │ └─ variant_7: struct #46 - │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ │ │ └─ item: string #32 - │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ │ │ └─ item: string #32 - │ │ │ └─ variant_1: struct #49 - │ │ │ └─ [not]: union '_prisma_string_filter' #48 - │ │ │ ├─ variant_0: string #32 - │ │ │ ├─ variant_1: struct #37 - │ │ │ │ └─ [equals]: string #32 - │ │ │ ├─ variant_2: struct #38 - │ │ │ │ └─ [not]: string #32 - │ │ │ ├─ variant_3: struct #39 - │ │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ │ └─ item: string #32 - │ │ │ ├─ variant_4: struct #40 - │ │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ │ └─ item: string #32 - │ │ │ ├─ variant_5: struct #44 - │ │ │ │ ├─ [contains]: string #32 - │ │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #45 - │ │ │ │ └─ [search]: string #32 - │ │ │ └─ variant_7: struct #46 - │ │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ │ └─ item: string #32 - │ │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ [posts]: optional 'optional_216' #217 - │ │ └─ item: union #215 - │ │ ├─ variant_0: struct #208 - │ │ │ └─ [every]: optional 'optional_206' #207 - │ │ │ └─ item: &Post_where_excluding_User #205 - │ │ ├─ variant_1: struct #211 - │ │ │ └─ [some]: optional 'optional_209' #210 - │ │ │ └─ item: &Post_where_excluding_User #205 - │ │ └─ variant_2: struct #214 - │ │ └─ [none]: optional 'optional_212' #213 - │ │ └─ item: &Post_where_excluding_User #205 - │ ├─ [id]: optional 'optional_197' #198 - │ │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ │ └─ item: union #71 - │ │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ │ ├─ variant_0: integer #58 - │ │ │ ├─ variant_1: struct #63 - │ │ │ │ └─ [equals]: integer #58 - │ │ │ ├─ variant_2: struct #64 - │ │ │ │ └─ [not]: integer #58 - │ │ │ ├─ variant_3: struct #65 - │ │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ variant_4: struct #66 - │ │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ variant_5: struct #67 - │ │ │ └─ [notIn]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_1: struct #70 - │ │ └─ [not]: either '_prisma_integer_filter' #69 - │ │ ├─ variant_0: integer #58 - │ │ ├─ variant_1: struct #63 - │ │ │ └─ [equals]: integer #58 - │ │ ├─ variant_2: struct #64 - │ │ │ └─ [not]: integer #58 - │ │ ├─ variant_3: struct #65 - │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ variant_4: struct #66 - │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_5: struct #67 - │ │ └─ [notIn]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ [title]: optional 'optional_199' #200 - │ └─ item: optional '_prisma_string_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: union '_prisma_string_filter' #48 - │ │ ├─ variant_0: string #32 - │ │ ├─ variant_1: struct #37 - │ │ │ └─ [equals]: string #32 - │ │ ├─ variant_2: struct #38 - │ │ │ └─ [not]: string #32 - │ │ ├─ variant_3: struct #39 - │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_4: struct #40 - │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_5: struct #44 - │ │ │ ├─ [contains]: string #32 - │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #45 - │ │ │ └─ [search]: string #32 - │ │ └─ variant_7: struct #46 - │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ variant_1: struct #49 - │ └─ [not]: union '_prisma_string_filter' #48 - │ ├─ variant_0: string #32 - │ ├─ variant_1: struct #37 - │ │ └─ [equals]: string #32 - │ ├─ variant_2: struct #38 - │ │ └─ [not]: string #32 - │ ├─ variant_3: struct #39 - │ │ └─ [in]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_4: struct #40 - │ │ └─ [notIn]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_5: struct #44 - │ │ ├─ [contains]: string #32 - │ │ └─ [mode]: optional 'optional_42' #43 - │ │ └─ item: string #41 enum{ '"insensitive"' } - │ ├─ variant_6: struct #45 - │ │ └─ [search]: string #32 - │ └─ variant_7: struct #46 - │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ [startsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - ├─ variant_1: struct #229 - │ └─ [some]: optional 'optional_227' #228 - │ └─ item: struct 'Post_where_excluding_User' #223 - │ ├─ [author]: optional 'optional_220' #221 - │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #219 - │ │ ├─ [id]: optional 'optional_201' #202 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ │ │ └─ item: union #71 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ │ │ ├─ variant_0: integer #58 - │ │ │ │ ├─ variant_1: struct #63 - │ │ │ │ │ └─ [equals]: integer #58 - │ │ │ │ ├─ variant_2: struct #64 - │ │ │ │ │ └─ [not]: integer #58 - │ │ │ │ ├─ variant_3: struct #65 - │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ │ │ └─ item: integer #58 - │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ │ │ └─ item: integer #58 - │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ │ │ └─ item: integer #58 - │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ variant_4: struct #66 - │ │ │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ └─ variant_5: struct #67 - │ │ │ │ └─ [notIn]: list 'list_61' #62 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ variant_1: struct #70 - │ │ │ └─ [not]: either '_prisma_integer_filter' #69 - │ │ │ ├─ variant_0: integer #58 - │ │ │ ├─ variant_1: struct #63 - │ │ │ │ └─ [equals]: integer #58 - │ │ │ ├─ variant_2: struct #64 - │ │ │ │ └─ [not]: integer #58 - │ │ │ ├─ variant_3: struct #65 - │ │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ variant_4: struct #66 - │ │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ variant_5: struct #67 - │ │ │ └─ [notIn]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ ├─ [name]: optional 'optional_203' #204 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 - │ │ │ └─ item: union #50 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 - │ │ │ │ ├─ variant_0: string #32 - │ │ │ │ ├─ variant_1: struct #37 - │ │ │ │ │ └─ [equals]: string #32 - │ │ │ │ ├─ variant_2: struct #38 - │ │ │ │ │ └─ [not]: string #32 - │ │ │ │ ├─ variant_3: struct #39 - │ │ │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ │ │ └─ item: string #32 - │ │ │ │ ├─ variant_4: struct #40 - │ │ │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ │ │ └─ item: string #32 - │ │ │ │ ├─ variant_5: struct #44 - │ │ │ │ │ ├─ [contains]: string #32 - │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #45 - │ │ │ │ │ └─ [search]: string #32 - │ │ │ │ └─ variant_7: struct #46 - │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ │ │ └─ item: string #32 - │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ │ │ └─ item: string #32 - │ │ │ └─ variant_1: struct #49 - │ │ │ └─ [not]: union '_prisma_string_filter' #48 - │ │ │ ├─ variant_0: string #32 - │ │ │ ├─ variant_1: struct #37 - │ │ │ │ └─ [equals]: string #32 - │ │ │ ├─ variant_2: struct #38 - │ │ │ │ └─ [not]: string #32 - │ │ │ ├─ variant_3: struct #39 - │ │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ │ └─ item: string #32 - │ │ │ ├─ variant_4: struct #40 - │ │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ │ └─ item: string #32 - │ │ │ ├─ variant_5: struct #44 - │ │ │ │ ├─ [contains]: string #32 - │ │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #45 - │ │ │ │ └─ [search]: string #32 - │ │ │ └─ variant_7: struct #46 - │ │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ │ └─ item: string #32 - │ │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ [posts]: optional 'optional_216' #217 - │ │ └─ item: union #215 - │ │ ├─ variant_0: struct #208 - │ │ │ └─ [every]: optional 'optional_206' #207 - │ │ │ └─ item: &Post_where_excluding_User #205 - │ │ ├─ variant_1: struct #211 - │ │ │ └─ [some]: optional 'optional_209' #210 - │ │ │ └─ item: &Post_where_excluding_User #205 - │ │ └─ variant_2: struct #214 - │ │ └─ [none]: optional 'optional_212' #213 - │ │ └─ item: &Post_where_excluding_User #205 - │ ├─ [id]: optional 'optional_197' #198 - │ │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ │ └─ item: union #71 - │ │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ │ ├─ variant_0: integer #58 - │ │ │ ├─ variant_1: struct #63 - │ │ │ │ └─ [equals]: integer #58 - │ │ │ ├─ variant_2: struct #64 - │ │ │ │ └─ [not]: integer #58 - │ │ │ ├─ variant_3: struct #65 - │ │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ variant_4: struct #66 - │ │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ variant_5: struct #67 - │ │ │ └─ [notIn]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_1: struct #70 - │ │ └─ [not]: either '_prisma_integer_filter' #69 - │ │ ├─ variant_0: integer #58 - │ │ ├─ variant_1: struct #63 - │ │ │ └─ [equals]: integer #58 - │ │ ├─ variant_2: struct #64 - │ │ │ └─ [not]: integer #58 - │ │ ├─ variant_3: struct #65 - │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ variant_4: struct #66 - │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_5: struct #67 - │ │ └─ [notIn]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ [title]: optional 'optional_199' #200 - │ └─ item: optional '_prisma_string_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: union '_prisma_string_filter' #48 - │ │ ├─ variant_0: string #32 - │ │ ├─ variant_1: struct #37 - │ │ │ └─ [equals]: string #32 - │ │ ├─ variant_2: struct #38 - │ │ │ └─ [not]: string #32 - │ │ ├─ variant_3: struct #39 - │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_4: struct #40 - │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_5: struct #44 - │ │ │ ├─ [contains]: string #32 - │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #45 - │ │ │ └─ [search]: string #32 - │ │ └─ variant_7: struct #46 - │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ variant_1: struct #49 - │ └─ [not]: union '_prisma_string_filter' #48 - │ ├─ variant_0: string #32 - │ ├─ variant_1: struct #37 - │ │ └─ [equals]: string #32 - │ ├─ variant_2: struct #38 - │ │ └─ [not]: string #32 - │ ├─ variant_3: struct #39 - │ │ └─ [in]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_4: struct #40 - │ │ └─ [notIn]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_5: struct #44 - │ │ ├─ [contains]: string #32 - │ │ └─ [mode]: optional 'optional_42' #43 - │ │ └─ item: string #41 enum{ '"insensitive"' } - │ ├─ variant_6: struct #45 - │ │ └─ [search]: string #32 - │ └─ variant_7: struct #46 - │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ [startsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - └─ variant_2: struct #232 - └─ [none]: optional 'optional_230' #231 - └─ item: struct 'Post_where_excluding_User' #223 - ├─ [author]: optional 'optional_220' #221 - │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #219 - │ ├─ [id]: optional 'optional_201' #202 - │ │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ │ └─ item: union #71 - │ │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ │ ├─ variant_0: integer #58 - │ │ │ ├─ variant_1: struct #63 - │ │ │ │ └─ [equals]: integer #58 - │ │ │ ├─ variant_2: struct #64 - │ │ │ │ └─ [not]: integer #58 - │ │ │ ├─ variant_3: struct #65 - │ │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ variant_4: struct #66 - │ │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ variant_5: struct #67 - │ │ │ └─ [notIn]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_1: struct #70 - │ │ └─ [not]: either '_prisma_integer_filter' #69 - │ │ ├─ variant_0: integer #58 - │ │ ├─ variant_1: struct #63 - │ │ │ └─ [equals]: integer #58 - │ │ ├─ variant_2: struct #64 - │ │ │ └─ [not]: integer #58 - │ │ ├─ variant_3: struct #65 - │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ variant_4: struct #66 - │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_5: struct #67 - │ │ └─ [notIn]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ ├─ [name]: optional 'optional_203' #204 - │ │ └─ item: optional '_prisma_string_filter_ex' #53 - │ │ └─ item: union #50 - │ │ ├─ variant_0: union '_prisma_string_filter' #48 - │ │ │ ├─ variant_0: string #32 - │ │ │ ├─ variant_1: struct #37 - │ │ │ │ └─ [equals]: string #32 - │ │ │ ├─ variant_2: struct #38 - │ │ │ │ └─ [not]: string #32 - │ │ │ ├─ variant_3: struct #39 - │ │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ │ └─ item: string #32 - │ │ │ ├─ variant_4: struct #40 - │ │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ │ └─ item: string #32 - │ │ │ ├─ variant_5: struct #44 - │ │ │ │ ├─ [contains]: string #32 - │ │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #45 - │ │ │ │ └─ [search]: string #32 - │ │ │ └─ variant_7: struct #46 - │ │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ │ └─ item: string #32 - │ │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ variant_1: struct #49 - │ │ └─ [not]: union '_prisma_string_filter' #48 - │ │ ├─ variant_0: string #32 - │ │ ├─ variant_1: struct #37 - │ │ │ └─ [equals]: string #32 - │ │ ├─ variant_2: struct #38 - │ │ │ └─ [not]: string #32 - │ │ ├─ variant_3: struct #39 - │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_4: struct #40 - │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_5: struct #44 - │ │ │ ├─ [contains]: string #32 - │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #45 - │ │ │ └─ [search]: string #32 - │ │ └─ variant_7: struct #46 - │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ [posts]: optional 'optional_216' #217 - │ └─ item: union #215 - │ ├─ variant_0: struct #208 - │ │ └─ [every]: optional 'optional_206' #207 - │ │ └─ item: &Post_where_excluding_User #205 - │ ├─ variant_1: struct #211 - │ │ └─ [some]: optional 'optional_209' #210 - │ │ └─ item: &Post_where_excluding_User #205 - │ └─ variant_2: struct #214 - │ └─ [none]: optional 'optional_212' #213 - │ └─ item: &Post_where_excluding_User #205 - ├─ [id]: optional 'optional_197' #198 - │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ └─ item: union #71 - │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ ├─ variant_0: integer #58 - │ │ ├─ variant_1: struct #63 - │ │ │ └─ [equals]: integer #58 - │ │ ├─ variant_2: struct #64 - │ │ │ └─ [not]: integer #58 - │ │ ├─ variant_3: struct #65 - │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ variant_4: struct #66 - │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_5: struct #67 - │ │ └─ [notIn]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ variant_1: struct #70 - │ └─ [not]: either '_prisma_integer_filter' #69 - │ ├─ variant_0: integer #58 - │ ├─ variant_1: struct #63 - │ │ └─ [equals]: integer #58 - │ ├─ variant_2: struct #64 - │ │ └─ [not]: integer #58 - │ ├─ variant_3: struct #65 - │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ └─ [lte]: optional 'optional_59' #60 - │ │ └─ item: integer #58 - │ ├─ variant_4: struct #66 - │ │ └─ [in]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ variant_5: struct #67 - │ └─ [notIn]: list 'list_61' #62 - │ └─ item: integer #58 - └─ [title]: optional 'optional_199' #200 - └─ item: optional '_prisma_string_filter_ex' #53 - └─ item: union #50 - ├─ variant_0: union '_prisma_string_filter' #48 - │ ├─ variant_0: string #32 - │ ├─ variant_1: struct #37 - │ │ └─ [equals]: string #32 - │ ├─ variant_2: struct #38 - │ │ └─ [not]: string #32 - │ ├─ variant_3: struct #39 - │ │ └─ [in]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_4: struct #40 - │ │ └─ [notIn]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_5: struct #44 - │ │ ├─ [contains]: string #32 - │ │ └─ [mode]: optional 'optional_42' #43 - │ │ └─ item: string #41 enum{ '"insensitive"' } - │ ├─ variant_6: struct #45 - │ │ └─ [search]: string #32 - │ └─ variant_7: struct #46 - │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ [startsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - └─ variant_1: struct #49 - └─ [not]: union '_prisma_string_filter' #48 - ├─ variant_0: string #32 - ├─ variant_1: struct #37 - │ └─ [equals]: string #32 - ├─ variant_2: struct #38 - │ └─ [not]: string #32 - ├─ variant_3: struct #39 - │ └─ [in]: list 'list_35' #36 - │ └─ item: string #32 - ├─ variant_4: struct #40 - │ └─ [notIn]: list 'list_35' #36 - │ └─ item: string #32 - ├─ variant_5: struct #44 - │ ├─ [contains]: string #32 - │ └─ [mode]: optional 'optional_42' #43 - │ └─ item: string #41 enum{ '"insensitive"' } - ├─ variant_6: struct #45 - │ └─ [search]: string #32 - └─ variant_7: struct #46 - ├─ [endsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - └─ [startsWith]: optional 'optional_33' #34 - └─ item: string #32 +root: struct #204 +├─ [data]: struct 'User_update_input' #162 +│ ├─ [id]: optional #100 +│ │ └─ item: union #99 +│ │ ├─ variant_0: integer #81 +│ │ ├─ variant_1: struct #95 +│ │ │ └─ [set]: integer #81 +│ │ ├─ variant_2: struct #96 +│ │ │ └─ [multiply]: integer #81 +│ │ ├─ variant_3: struct #97 +│ │ │ └─ [decrement]: integer #81 +│ │ └─ variant_4: struct #98 +│ │ └─ [increment]: integer #81 +│ ├─ [name]: optional #103 +│ │ └─ item: union #102 +│ │ ├─ variant_0: string #82 +│ │ └─ variant_1: struct #101 +│ │ └─ [set]: string #82 +│ └─ [posts]: optional #160 +│ └─ item: union #159 +│ ├─ variant_0: struct #133 +│ │ └─ [create]: union #109 +│ │ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #107 +│ │ │ ├─ [id]: optional #105 +│ │ │ │ └─ item: integer #89 +│ │ │ └─ [title]: string #90 +│ │ └─ variant_1: list #108 +│ │ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #107 +│ │ ├─ [id]: optional #105 +│ │ │ └─ item: integer #89 +│ │ └─ [title]: string #90 +│ ├─ variant_1: struct #134 +│ │ └─ [connect]: union #131 +│ │ ├─ variant_0: struct 'Post_where' #129 +│ │ │ ├─ [author]: optional #127 +│ │ │ │ └─ item: struct 'User_where_excluding_Post' #126 +│ │ │ │ ├─ [id]: optional #114 +│ │ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ │ ├─ [name]: optional #115 +│ │ │ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ │ │ └─ [posts]: optional #124 +│ │ │ │ └─ item: union #123 +│ │ │ │ ├─ variant_0: struct #118 +│ │ │ │ │ └─ [every]: optional #117 +│ │ │ │ │ └─ item: &Post_where #116 +│ │ │ │ ├─ variant_1: struct #120 +│ │ │ │ │ └─ [some]: optional #119 +│ │ │ │ │ └─ item: &Post_where #116 +│ │ │ │ └─ variant_2: struct #122 +│ │ │ │ └─ [none]: optional #121 +│ │ │ │ └─ item: &Post_where #116 +│ │ │ ├─ [id]: optional #111 +│ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ └─ [title]: optional #112 +│ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ └─ variant_1: list #130 +│ │ └─ item: struct 'Post_where' #129 +│ │ ├─ [author]: optional #127 +│ │ │ └─ item: struct 'User_where_excluding_Post' #126 +│ │ │ ├─ [id]: optional #114 +│ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ ├─ [name]: optional #115 +│ │ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ │ └─ [posts]: optional #124 +│ │ │ └─ item: union #123 +│ │ │ ├─ variant_0: struct #118 +│ │ │ │ └─ [every]: optional #117 +│ │ │ │ └─ item: &Post_where #116 +│ │ │ ├─ variant_1: struct #120 +│ │ │ │ └─ [some]: optional #119 +│ │ │ │ └─ item: &Post_where #116 +│ │ │ └─ variant_2: struct #122 +│ │ │ └─ [none]: optional #121 +│ │ │ └─ item: &Post_where #116 +│ │ ├─ [id]: optional #111 +│ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ └─ [title]: optional #112 +│ │ └─ item: &_prisma_string_filter_ex #30 +│ ├─ variant_2: struct #135 +│ │ └─ [connectOrCreate]: struct #132 +│ │ ├─ [create]: union #109 +│ │ │ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #107 +│ │ │ │ ├─ [id]: optional #105 +│ │ │ │ │ └─ item: integer #89 +│ │ │ │ └─ [title]: string #90 +│ │ │ └─ variant_1: list #108 +│ │ │ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #107 +│ │ │ ├─ [id]: optional #105 +│ │ │ │ └─ item: integer #89 +│ │ │ └─ [title]: string #90 +│ │ └─ [where]: union #131 +│ │ ├─ variant_0: struct 'Post_where' #129 +│ │ │ ├─ [author]: optional #127 +│ │ │ │ └─ item: struct 'User_where_excluding_Post' #126 +│ │ │ │ ├─ [id]: optional #114 +│ │ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ │ ├─ [name]: optional #115 +│ │ │ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ │ │ └─ [posts]: optional #124 +│ │ │ │ └─ item: union #123 +│ │ │ │ ├─ variant_0: struct #118 +│ │ │ │ │ └─ [every]: optional #117 +│ │ │ │ │ └─ item: &Post_where #116 +│ │ │ │ ├─ variant_1: struct #120 +│ │ │ │ │ └─ [some]: optional #119 +│ │ │ │ │ └─ item: &Post_where #116 +│ │ │ │ └─ variant_2: struct #122 +│ │ │ │ └─ [none]: optional #121 +│ │ │ │ └─ item: &Post_where #116 +│ │ │ ├─ [id]: optional #111 +│ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ └─ [title]: optional #112 +│ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ └─ variant_1: list #130 +│ │ └─ item: struct 'Post_where' #129 +│ │ ├─ [author]: optional #127 +│ │ │ └─ item: struct 'User_where_excluding_Post' #126 +│ │ │ ├─ [id]: optional #114 +│ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ ├─ [name]: optional #115 +│ │ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ │ └─ [posts]: optional #124 +│ │ │ └─ item: union #123 +│ │ │ ├─ variant_0: struct #118 +│ │ │ │ └─ [every]: optional #117 +│ │ │ │ └─ item: &Post_where #116 +│ │ │ ├─ variant_1: struct #120 +│ │ │ │ └─ [some]: optional #119 +│ │ │ │ └─ item: &Post_where #116 +│ │ │ └─ variant_2: struct #122 +│ │ │ └─ [none]: optional #121 +│ │ │ └─ item: &Post_where #116 +│ │ ├─ [id]: optional #111 +│ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ └─ [title]: optional #112 +│ │ └─ item: &_prisma_string_filter_ex #30 +│ ├─ variant_3: struct #148 +│ │ └─ [update]: struct 'Post_update_input_excluding_rel_Post_User' #147 +│ │ ├─ [id]: optional #142 +│ │ │ └─ item: union #141 +│ │ │ ├─ variant_0: integer #89 +│ │ │ ├─ variant_1: struct #137 +│ │ │ │ └─ [set]: integer #89 +│ │ │ ├─ variant_2: struct #138 +│ │ │ │ └─ [multiply]: integer #89 +│ │ │ ├─ variant_3: struct #139 +│ │ │ │ └─ [decrement]: integer #89 +│ │ │ └─ variant_4: struct #140 +│ │ │ └─ [increment]: integer #89 +│ │ └─ [title]: optional #145 +│ │ └─ item: union #144 +│ │ ├─ variant_0: string #90 +│ │ └─ variant_1: struct #143 +│ │ └─ [set]: string #90 +│ ├─ variant_4: struct #151 +│ │ └─ [updateMany]: struct #150 +│ │ ├─ [data]: struct 'Post_update_input_excluding_rel_Post_User' #147 +│ │ │ ├─ [id]: optional #142 +│ │ │ │ └─ item: union #141 +│ │ │ │ ├─ variant_0: integer #89 +│ │ │ │ ├─ variant_1: struct #137 +│ │ │ │ │ └─ [set]: integer #89 +│ │ │ │ ├─ variant_2: struct #138 +│ │ │ │ │ └─ [multiply]: integer #89 +│ │ │ │ ├─ variant_3: struct #139 +│ │ │ │ │ └─ [decrement]: integer #89 +│ │ │ │ └─ variant_4: struct #140 +│ │ │ │ └─ [increment]: integer #89 +│ │ │ └─ [title]: optional #145 +│ │ │ └─ item: union #144 +│ │ │ ├─ variant_0: string #90 +│ │ │ └─ variant_1: struct #143 +│ │ │ └─ [set]: string #90 +│ │ └─ [where]: optional #149 +│ │ └─ item: union #131 +│ │ ├─ variant_0: struct 'Post_where' #129 +│ │ │ ├─ [author]: optional #127 +│ │ │ │ └─ item: struct 'User_where_excluding_Post' #126 +│ │ │ │ ├─ [id]: optional #114 +│ │ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ │ ├─ [name]: optional #115 +│ │ │ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ │ │ └─ [posts]: optional #124 +│ │ │ │ └─ item: union #123 +│ │ │ │ ├─ variant_0: struct #118 +│ │ │ │ │ └─ [every]: optional #117 +│ │ │ │ │ └─ item: &Post_where #116 +│ │ │ │ ├─ variant_1: struct #120 +│ │ │ │ │ └─ [some]: optional #119 +│ │ │ │ │ └─ item: &Post_where #116 +│ │ │ │ └─ variant_2: struct #122 +│ │ │ │ └─ [none]: optional #121 +│ │ │ │ └─ item: &Post_where #116 +│ │ │ ├─ [id]: optional #111 +│ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ └─ [title]: optional #112 +│ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ └─ variant_1: list #130 +│ │ └─ item: struct 'Post_where' #129 +│ │ ├─ [author]: optional #127 +│ │ │ └─ item: struct 'User_where_excluding_Post' #126 +│ │ │ ├─ [id]: optional #114 +│ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ ├─ [name]: optional #115 +│ │ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ │ └─ [posts]: optional #124 +│ │ │ └─ item: union #123 +│ │ │ ├─ variant_0: struct #118 +│ │ │ │ └─ [every]: optional #117 +│ │ │ │ └─ item: &Post_where #116 +│ │ │ ├─ variant_1: struct #120 +│ │ │ │ └─ [some]: optional #119 +│ │ │ │ └─ item: &Post_where #116 +│ │ │ └─ variant_2: struct #122 +│ │ │ └─ [none]: optional #121 +│ │ │ └─ item: &Post_where #116 +│ │ ├─ [id]: optional #111 +│ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ └─ [title]: optional #112 +│ │ └─ item: &_prisma_string_filter_ex #30 +│ ├─ variant_5: struct #154 +│ │ └─ [deleteMany]: struct #153 +│ │ └─ [where]: optional #152 +│ │ └─ item: union #131 +│ │ ├─ variant_0: struct 'Post_where' #129 +│ │ │ ├─ [author]: optional #127 +│ │ │ │ └─ item: struct 'User_where_excluding_Post' #126 +│ │ │ │ ├─ [id]: optional #114 +│ │ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ │ ├─ [name]: optional #115 +│ │ │ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ │ │ └─ [posts]: optional #124 +│ │ │ │ └─ item: union #123 +│ │ │ │ ├─ variant_0: struct #118 +│ │ │ │ │ └─ [every]: optional #117 +│ │ │ │ │ └─ item: &Post_where #116 +│ │ │ │ ├─ variant_1: struct #120 +│ │ │ │ │ └─ [some]: optional #119 +│ │ │ │ │ └─ item: &Post_where #116 +│ │ │ │ └─ variant_2: struct #122 +│ │ │ │ └─ [none]: optional #121 +│ │ │ │ └─ item: &Post_where #116 +│ │ │ ├─ [id]: optional #111 +│ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ └─ [title]: optional #112 +│ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ └─ variant_1: list #130 +│ │ └─ item: struct 'Post_where' #129 +│ │ ├─ [author]: optional #127 +│ │ │ └─ item: struct 'User_where_excluding_Post' #126 +│ │ │ ├─ [id]: optional #114 +│ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ ├─ [name]: optional #115 +│ │ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ │ └─ [posts]: optional #124 +│ │ │ └─ item: union #123 +│ │ │ ├─ variant_0: struct #118 +│ │ │ │ └─ [every]: optional #117 +│ │ │ │ └─ item: &Post_where #116 +│ │ │ ├─ variant_1: struct #120 +│ │ │ │ └─ [some]: optional #119 +│ │ │ │ └─ item: &Post_where #116 +│ │ │ └─ variant_2: struct #122 +│ │ │ └─ [none]: optional #121 +│ │ │ └─ item: &Post_where #116 +│ │ ├─ [id]: optional #111 +│ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ └─ [title]: optional #112 +│ │ └─ item: &_prisma_string_filter_ex #30 +│ └─ variant_6: struct #158 +│ └─ [createMany]: optional #157 +│ └─ item: struct #156 +│ └─ [data]: list #155 +│ └─ item: union #109 +│ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #107 +│ │ ├─ [id]: optional #105 +│ │ │ └─ item: integer #89 +│ │ └─ [title]: string #90 +│ └─ variant_1: list #108 +│ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #107 +│ ├─ [id]: optional #105 +│ │ └─ item: integer #89 +│ └─ [title]: string #90 +└─ [where]: optional #203 + └─ item: struct 'User_query_where_input' #202 + ├─ [AND]: optional #199 + │ └─ item: list #198 + │ └─ item: &User_query_where_input #197 + ├─ [NOT]: optional #200 + │ └─ item: &User_query_where_input #197 + ├─ [OR]: optional #199 + │ └─ item: list #198 + │ └─ item: &User_query_where_input #197 + ├─ [id]: optional #165 + │ └─ item: &_prisma_integer_filter_ex #52 + ├─ [name]: optional #166 + │ └─ item: &_prisma_string_filter_ex #30 + └─ [posts]: optional #194 + └─ item: union #193 + ├─ variant_0: struct #188 + │ └─ [every]: optional #187 + │ └─ item: struct 'Post_where_excluding_User' #186 + │ ├─ [author]: optional #184 + │ │ └─ item: struct 'User_where_excluding_Post_and_User' #183 + │ │ ├─ [id]: optional #171 + │ │ │ └─ item: &_prisma_integer_filter_ex #52 + │ │ ├─ [name]: optional #172 + │ │ │ └─ item: &_prisma_string_filter_ex #30 + │ │ └─ [posts]: optional #181 + │ │ └─ item: union #180 + │ │ ├─ variant_0: struct #175 + │ │ │ └─ [every]: optional #174 + │ │ │ └─ item: &Post_where_excluding_User #173 + │ │ ├─ variant_1: struct #177 + │ │ │ └─ [some]: optional #176 + │ │ │ └─ item: &Post_where_excluding_User #173 + │ │ └─ variant_2: struct #179 + │ │ └─ [none]: optional #178 + │ │ └─ item: &Post_where_excluding_User #173 + │ ├─ [id]: optional #168 + │ │ └─ item: &_prisma_integer_filter_ex #52 + │ └─ [title]: optional #169 + │ └─ item: &_prisma_string_filter_ex #30 + ├─ variant_1: struct #190 + │ └─ [some]: optional #189 + │ └─ item: struct 'Post_where_excluding_User' #186 + │ ├─ [author]: optional #184 + │ │ └─ item: struct 'User_where_excluding_Post_and_User' #183 + │ │ ├─ [id]: optional #171 + │ │ │ └─ item: &_prisma_integer_filter_ex #52 + │ │ ├─ [name]: optional #172 + │ │ │ └─ item: &_prisma_string_filter_ex #30 + │ │ └─ [posts]: optional #181 + │ │ └─ item: union #180 + │ │ ├─ variant_0: struct #175 + │ │ │ └─ [every]: optional #174 + │ │ │ └─ item: &Post_where_excluding_User #173 + │ │ ├─ variant_1: struct #177 + │ │ │ └─ [some]: optional #176 + │ │ │ └─ item: &Post_where_excluding_User #173 + │ │ └─ variant_2: struct #179 + │ │ └─ [none]: optional #178 + │ │ └─ item: &Post_where_excluding_User #173 + │ ├─ [id]: optional #168 + │ │ └─ item: &_prisma_integer_filter_ex #52 + │ └─ [title]: optional #169 + │ └─ item: &_prisma_string_filter_ex #30 + └─ variant_2: struct #192 + └─ [none]: optional #191 + └─ item: struct 'Post_where_excluding_User' #186 + ├─ [author]: optional #184 + │ └─ item: struct 'User_where_excluding_Post_and_User' #183 + │ ├─ [id]: optional #171 + │ │ └─ item: &_prisma_integer_filter_ex #52 + │ ├─ [name]: optional #172 + │ │ └─ item: &_prisma_string_filter_ex #30 + │ └─ [posts]: optional #181 + │ └─ item: union #180 + │ ├─ variant_0: struct #175 + │ │ └─ [every]: optional #174 + │ │ └─ item: &Post_where_excluding_User #173 + │ ├─ variant_1: struct #177 + │ │ └─ [some]: optional #176 + │ │ └─ item: &Post_where_excluding_User #173 + │ └─ variant_2: struct #179 + │ └─ [none]: optional #178 + │ └─ item: &Post_where_excluding_User #173 + ├─ [id]: optional #168 + │ └─ item: &_prisma_integer_filter_ex #52 + └─ [title]: optional #169 + └─ item: &_prisma_string_filter_ex #30 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_one Post inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_one Post inp.snap index d75e4b6a24..195331f774 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_one Post inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_one Post inp.snap @@ -2,1711 +2,83 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct #291 -├─ [data]: struct 'Post_update_input' #281 -│ ├─ [author]: optional 'optional_278' #279 -│ │ └─ item: union #277 -│ │ ├─ variant_0: struct #260 -│ │ │ └─ [create]: struct 'User_create_input_excluding_rel_Post_User' #258 -│ │ │ ├─ [id]: integer #92 -│ │ │ └─ [name]: string #93 -│ │ ├─ variant_1: struct #261 -│ │ │ └─ [connect]: struct 'User_where' #235 -│ │ │ ├─ [id]: optional 'optional_191' #192 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ [name]: optional 'optional_193' #194 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [posts]: optional 'optional_232' #233 -│ │ │ └─ item: union #231 -│ │ │ ├─ variant_0: struct #224 -│ │ │ │ └─ [every]: optional 'optional_222' #223 -│ │ │ │ └─ item: struct 'Post_where_excluding_User' #221 -│ │ │ │ ├─ [author]: optional 'optional_218' #219 -│ │ │ │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #217 -│ │ │ │ │ ├─ [id]: optional 'optional_199' #200 -│ │ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ │ └─ item: union #71 -│ │ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [name]: optional 'optional_201' #202 -│ │ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ │ └─ item: union #50 -│ │ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [posts]: optional 'optional_214' #215 -│ │ │ │ │ └─ item: union #213 -│ │ │ │ │ ├─ variant_0: struct #206 -│ │ │ │ │ │ └─ [every]: optional 'optional_204' #205 -│ │ │ │ │ │ └─ item: &Post_where_excluding_User #203 -│ │ │ │ │ ├─ variant_1: struct #209 -│ │ │ │ │ │ └─ [some]: optional 'optional_207' #208 -│ │ │ │ │ │ └─ item: &Post_where_excluding_User #203 -│ │ │ │ │ └─ variant_2: struct #212 -│ │ │ │ │ └─ [none]: optional 'optional_210' #211 -│ │ │ │ │ └─ item: &Post_where_excluding_User #203 -│ │ │ │ ├─ [id]: optional 'optional_195' #196 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ [title]: optional 'optional_197' #198 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_1: struct #227 -│ │ │ │ └─ [some]: optional 'optional_225' #226 -│ │ │ │ └─ item: struct 'Post_where_excluding_User' #221 -│ │ │ │ ├─ [author]: optional 'optional_218' #219 -│ │ │ │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #217 -│ │ │ │ │ ├─ [id]: optional 'optional_199' #200 -│ │ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ │ └─ item: union #71 -│ │ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [name]: optional 'optional_201' #202 -│ │ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ │ └─ item: union #50 -│ │ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [posts]: optional 'optional_214' #215 -│ │ │ │ │ └─ item: union #213 -│ │ │ │ │ ├─ variant_0: struct #206 -│ │ │ │ │ │ └─ [every]: optional 'optional_204' #205 -│ │ │ │ │ │ └─ item: &Post_where_excluding_User #203 -│ │ │ │ │ ├─ variant_1: struct #209 -│ │ │ │ │ │ └─ [some]: optional 'optional_207' #208 -│ │ │ │ │ │ └─ item: &Post_where_excluding_User #203 -│ │ │ │ │ └─ variant_2: struct #212 -│ │ │ │ │ └─ [none]: optional 'optional_210' #211 -│ │ │ │ │ └─ item: &Post_where_excluding_User #203 -│ │ │ │ ├─ [id]: optional 'optional_195' #196 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ [title]: optional 'optional_197' #198 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ variant_2: struct #230 -│ │ │ └─ [none]: optional 'optional_228' #229 -│ │ │ └─ item: struct 'Post_where_excluding_User' #221 -│ │ │ ├─ [author]: optional 'optional_218' #219 -│ │ │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #217 -│ │ │ │ ├─ [id]: optional 'optional_199' #200 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [name]: optional 'optional_201' #202 -│ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ └─ item: union #50 -│ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [posts]: optional 'optional_214' #215 -│ │ │ │ └─ item: union #213 -│ │ │ │ ├─ variant_0: struct #206 -│ │ │ │ │ └─ [every]: optional 'optional_204' #205 -│ │ │ │ │ └─ item: &Post_where_excluding_User #203 -│ │ │ │ ├─ variant_1: struct #209 -│ │ │ │ │ └─ [some]: optional 'optional_207' #208 -│ │ │ │ │ └─ item: &Post_where_excluding_User #203 -│ │ │ │ └─ variant_2: struct #212 -│ │ │ │ └─ [none]: optional 'optional_210' #211 -│ │ │ │ └─ item: &Post_where_excluding_User #203 -│ │ │ ├─ [id]: optional 'optional_195' #196 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ [title]: optional 'optional_197' #198 -│ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ └─ item: union #50 -│ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ variant_1: struct #49 -│ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ ├─ variant_2: struct #262 -│ │ │ └─ [connectOrCreate]: struct #259 -│ │ │ ├─ [create]: struct 'User_create_input_excluding_rel_Post_User' #258 -│ │ │ │ ├─ [id]: integer #92 -│ │ │ │ └─ [name]: string #93 -│ │ │ └─ [where]: struct 'User_where' #235 -│ │ │ ├─ [id]: optional 'optional_191' #192 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ [name]: optional 'optional_193' #194 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [posts]: optional 'optional_232' #233 -│ │ │ └─ item: union #231 -│ │ │ ├─ variant_0: struct #224 -│ │ │ │ └─ [every]: optional 'optional_222' #223 -│ │ │ │ └─ item: struct 'Post_where_excluding_User' #221 -│ │ │ │ ├─ [author]: optional 'optional_218' #219 -│ │ │ │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #217 -│ │ │ │ │ ├─ [id]: optional 'optional_199' #200 -│ │ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ │ └─ item: union #71 -│ │ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [name]: optional 'optional_201' #202 -│ │ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ │ └─ item: union #50 -│ │ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [posts]: optional 'optional_214' #215 -│ │ │ │ │ └─ item: union #213 -│ │ │ │ │ ├─ variant_0: struct #206 -│ │ │ │ │ │ └─ [every]: optional 'optional_204' #205 -│ │ │ │ │ │ └─ item: &Post_where_excluding_User #203 -│ │ │ │ │ ├─ variant_1: struct #209 -│ │ │ │ │ │ └─ [some]: optional 'optional_207' #208 -│ │ │ │ │ │ └─ item: &Post_where_excluding_User #203 -│ │ │ │ │ └─ variant_2: struct #212 -│ │ │ │ │ └─ [none]: optional 'optional_210' #211 -│ │ │ │ │ └─ item: &Post_where_excluding_User #203 -│ │ │ │ ├─ [id]: optional 'optional_195' #196 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ [title]: optional 'optional_197' #198 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_1: struct #227 -│ │ │ │ └─ [some]: optional 'optional_225' #226 -│ │ │ │ └─ item: struct 'Post_where_excluding_User' #221 -│ │ │ │ ├─ [author]: optional 'optional_218' #219 -│ │ │ │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #217 -│ │ │ │ │ ├─ [id]: optional 'optional_199' #200 -│ │ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ │ └─ item: union #71 -│ │ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [name]: optional 'optional_201' #202 -│ │ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ │ └─ item: union #50 -│ │ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [posts]: optional 'optional_214' #215 -│ │ │ │ │ └─ item: union #213 -│ │ │ │ │ ├─ variant_0: struct #206 -│ │ │ │ │ │ └─ [every]: optional 'optional_204' #205 -│ │ │ │ │ │ └─ item: &Post_where_excluding_User #203 -│ │ │ │ │ ├─ variant_1: struct #209 -│ │ │ │ │ │ └─ [some]: optional 'optional_207' #208 -│ │ │ │ │ │ └─ item: &Post_where_excluding_User #203 -│ │ │ │ │ └─ variant_2: struct #212 -│ │ │ │ │ └─ [none]: optional 'optional_210' #211 -│ │ │ │ │ └─ item: &Post_where_excluding_User #203 -│ │ │ │ ├─ [id]: optional 'optional_195' #196 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ [title]: optional 'optional_197' #198 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ variant_2: struct #230 -│ │ │ └─ [none]: optional 'optional_228' #229 -│ │ │ └─ item: struct 'Post_where_excluding_User' #221 -│ │ │ ├─ [author]: optional 'optional_218' #219 -│ │ │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #217 -│ │ │ │ ├─ [id]: optional 'optional_199' #200 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [name]: optional 'optional_201' #202 -│ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ └─ item: union #50 -│ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [posts]: optional 'optional_214' #215 -│ │ │ │ └─ item: union #213 -│ │ │ │ ├─ variant_0: struct #206 -│ │ │ │ │ └─ [every]: optional 'optional_204' #205 -│ │ │ │ │ └─ item: &Post_where_excluding_User #203 -│ │ │ │ ├─ variant_1: struct #209 -│ │ │ │ │ └─ [some]: optional 'optional_207' #208 -│ │ │ │ │ └─ item: &Post_where_excluding_User #203 -│ │ │ │ └─ variant_2: struct #212 -│ │ │ │ └─ [none]: optional 'optional_210' #211 -│ │ │ │ └─ item: &Post_where_excluding_User #203 -│ │ │ ├─ [id]: optional 'optional_195' #196 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ [title]: optional 'optional_197' #198 -│ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ └─ item: union #50 -│ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ variant_1: struct #49 -│ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ variant_3: struct #276 -│ │ └─ [update]: struct 'User_update_input_excluding_rel_Post_User' #275 -│ │ ├─ [id]: optional 'optional_268' #269 -│ │ │ └─ item: union #267 -│ │ │ ├─ variant_0: integer #92 -│ │ │ ├─ variant_1: struct #263 -│ │ │ │ └─ [set]: integer #92 -│ │ │ ├─ variant_2: struct #264 -│ │ │ │ └─ [multiply]: integer #92 -│ │ │ ├─ variant_3: struct #265 -│ │ │ │ └─ [decrement]: integer #92 -│ │ │ └─ variant_4: struct #266 -│ │ │ └─ [increment]: integer #92 -│ │ └─ [name]: optional 'optional_272' #273 -│ │ └─ item: union #271 -│ │ ├─ variant_0: string #93 -│ │ └─ variant_1: struct #270 -│ │ └─ [set]: string #93 -│ ├─ [id]: optional 'optional_251' #252 -│ │ └─ item: union #250 -│ │ ├─ variant_0: integer #101 -│ │ ├─ variant_1: struct #246 -│ │ │ └─ [set]: integer #101 -│ │ ├─ variant_2: struct #247 -│ │ │ └─ [multiply]: integer #101 -│ │ ├─ variant_3: struct #248 -│ │ │ └─ [decrement]: integer #101 -│ │ └─ variant_4: struct #249 -│ │ └─ [increment]: integer #101 -│ └─ [title]: optional 'optional_255' #256 -│ └─ item: union #254 -│ ├─ variant_0: string #102 -│ └─ variant_1: struct #253 -│ └─ [set]: string #102 -└─ [where]: struct 'Post_query_where_unique_input' #290 - ├─ [AND]: optional 'optional_285' #286 - │ └─ item: list 'list_283' #284 - │ └─ item: &Post_query_where_unique_input #282 - ├─ [NOT]: optional 'optional_287' #288 - │ └─ item: &Post_query_where_unique_input #282 - ├─ [OR]: optional 'optional_285' #286 - │ └─ item: list 'list_283' #284 - │ └─ item: &Post_query_where_unique_input #282 - ├─ [author]: optional 'optional_147' #148 - │ └─ item: struct 'User_where_excluding_Post' #146 - │ ├─ [id]: optional 'optional_128' #129 - │ │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ │ └─ item: union #71 - │ │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ │ ├─ variant_0: integer #58 - │ │ │ ├─ variant_1: struct #63 - │ │ │ │ └─ [equals]: integer #58 - │ │ │ ├─ variant_2: struct #64 - │ │ │ │ └─ [not]: integer #58 - │ │ │ ├─ variant_3: struct #65 - │ │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ variant_4: struct #66 - │ │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ variant_5: struct #67 - │ │ │ └─ [notIn]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_1: struct #70 - │ │ └─ [not]: either '_prisma_integer_filter' #69 - │ │ ├─ variant_0: integer #58 - │ │ ├─ variant_1: struct #63 - │ │ │ └─ [equals]: integer #58 - │ │ ├─ variant_2: struct #64 - │ │ │ └─ [not]: integer #58 - │ │ ├─ variant_3: struct #65 - │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ variant_4: struct #66 - │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_5: struct #67 - │ │ └─ [notIn]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ ├─ [name]: optional 'optional_130' #131 - │ │ └─ item: optional '_prisma_string_filter_ex' #53 - │ │ └─ item: union #50 - │ │ ├─ variant_0: union '_prisma_string_filter' #48 - │ │ │ ├─ variant_0: string #32 - │ │ │ ├─ variant_1: struct #37 - │ │ │ │ └─ [equals]: string #32 - │ │ │ ├─ variant_2: struct #38 - │ │ │ │ └─ [not]: string #32 - │ │ │ ├─ variant_3: struct #39 - │ │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ │ └─ item: string #32 - │ │ │ ├─ variant_4: struct #40 - │ │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ │ └─ item: string #32 - │ │ │ ├─ variant_5: struct #44 - │ │ │ │ ├─ [contains]: string #32 - │ │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #45 - │ │ │ │ └─ [search]: string #32 - │ │ │ └─ variant_7: struct #46 - │ │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ │ └─ item: string #32 - │ │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ variant_1: struct #49 - │ │ └─ [not]: union '_prisma_string_filter' #48 - │ │ ├─ variant_0: string #32 - │ │ ├─ variant_1: struct #37 - │ │ │ └─ [equals]: string #32 - │ │ ├─ variant_2: struct #38 - │ │ │ └─ [not]: string #32 - │ │ ├─ variant_3: struct #39 - │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_4: struct #40 - │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_5: struct #44 - │ │ │ ├─ [contains]: string #32 - │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #45 - │ │ │ └─ [search]: string #32 - │ │ └─ variant_7: struct #46 - │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ [posts]: optional 'optional_143' #144 - │ └─ item: union #142 - │ ├─ variant_0: struct #135 - │ │ └─ [every]: optional 'optional_133' #134 - │ │ └─ item: &Post_where #132 - │ ├─ variant_1: struct #138 - │ │ └─ [some]: optional 'optional_136' #137 - │ │ └─ item: &Post_where #132 - │ └─ variant_2: struct #141 - │ └─ [none]: optional 'optional_139' #140 - │ └─ item: &Post_where #132 - ├─ [id]: optional 'optional_124' #125 - │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ └─ item: union #71 - │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ ├─ variant_0: integer #58 - │ │ ├─ variant_1: struct #63 - │ │ │ └─ [equals]: integer #58 - │ │ ├─ variant_2: struct #64 - │ │ │ └─ [not]: integer #58 - │ │ ├─ variant_3: struct #65 - │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ variant_4: struct #66 - │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_5: struct #67 - │ │ └─ [notIn]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ variant_1: struct #70 - │ └─ [not]: either '_prisma_integer_filter' #69 - │ ├─ variant_0: integer #58 - │ ├─ variant_1: struct #63 - │ │ └─ [equals]: integer #58 - │ ├─ variant_2: struct #64 - │ │ └─ [not]: integer #58 - │ ├─ variant_3: struct #65 - │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ └─ [lte]: optional 'optional_59' #60 - │ │ └─ item: integer #58 - │ ├─ variant_4: struct #66 - │ │ └─ [in]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ variant_5: struct #67 - │ └─ [notIn]: list 'list_61' #62 - │ └─ item: integer #58 - └─ [title]: optional 'optional_126' #127 - └─ item: optional '_prisma_string_filter_ex' #53 - └─ item: union #50 - ├─ variant_0: union '_prisma_string_filter' #48 - │ ├─ variant_0: string #32 - │ ├─ variant_1: struct #37 - │ │ └─ [equals]: string #32 - │ ├─ variant_2: struct #38 - │ │ └─ [not]: string #32 - │ ├─ variant_3: struct #39 - │ │ └─ [in]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_4: struct #40 - │ │ └─ [notIn]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_5: struct #44 - │ │ ├─ [contains]: string #32 - │ │ └─ [mode]: optional 'optional_42' #43 - │ │ └─ item: string #41 enum{ '"insensitive"' } - │ ├─ variant_6: struct #45 - │ │ └─ [search]: string #32 - │ └─ variant_7: struct #46 - │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ [startsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - └─ variant_1: struct #49 - └─ [not]: union '_prisma_string_filter' #48 - ├─ variant_0: string #32 - ├─ variant_1: struct #37 - │ └─ [equals]: string #32 - ├─ variant_2: struct #38 - │ └─ [not]: string #32 - ├─ variant_3: struct #39 - │ └─ [in]: list 'list_35' #36 - │ └─ item: string #32 - ├─ variant_4: struct #40 - │ └─ [notIn]: list 'list_35' #36 - │ └─ item: string #32 - ├─ variant_5: struct #44 - │ ├─ [contains]: string #32 - │ └─ [mode]: optional 'optional_42' #43 - │ └─ item: string #41 enum{ '"insensitive"' } - ├─ variant_6: struct #45 - │ └─ [search]: string #32 - └─ variant_7: struct #46 - ├─ [endsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - └─ [startsWith]: optional 'optional_33' #34 - └─ item: string #32 +root: struct #244 +├─ [data]: struct 'Post_update_input' #236 +│ ├─ [author]: optional #234 +│ │ └─ item: union #233 +│ │ ├─ variant_0: struct #217 +│ │ │ └─ [create]: struct 'User_create_input_excluding_rel_Post_User' #215 +│ │ │ ├─ [id]: integer #80 +│ │ │ └─ [name]: string #81 +│ │ ├─ variant_1: struct #218 +│ │ │ └─ [connect]: &User_where #163 +│ │ ├─ variant_2: struct #219 +│ │ │ └─ [connectOrCreate]: struct #216 +│ │ │ ├─ [create]: struct 'User_create_input_excluding_rel_Post_User' #215 +│ │ │ │ ├─ [id]: integer #80 +│ │ │ │ └─ [name]: string #81 +│ │ │ └─ [where]: &User_where #163 +│ │ └─ variant_3: struct #232 +│ │ └─ [update]: struct 'User_update_input_excluding_rel_Post_User' #231 +│ │ ├─ [id]: optional #226 +│ │ │ └─ item: union #225 +│ │ │ ├─ variant_0: integer #80 +│ │ │ ├─ variant_1: struct #221 +│ │ │ │ └─ [set]: integer #80 +│ │ │ ├─ variant_2: struct #222 +│ │ │ │ └─ [multiply]: integer #80 +│ │ │ ├─ variant_3: struct #223 +│ │ │ │ └─ [decrement]: integer #80 +│ │ │ └─ variant_4: struct #224 +│ │ │ └─ [increment]: integer #80 +│ │ └─ [name]: optional #229 +│ │ └─ item: union #228 +│ │ ├─ variant_0: string #81 +│ │ └─ variant_1: struct #227 +│ │ └─ [set]: string #81 +│ ├─ [id]: optional #209 +│ │ └─ item: union #208 +│ │ ├─ variant_0: integer #88 +│ │ ├─ variant_1: struct #204 +│ │ │ └─ [set]: integer #88 +│ │ ├─ variant_2: struct #205 +│ │ │ └─ [multiply]: integer #88 +│ │ ├─ variant_3: struct #206 +│ │ │ └─ [decrement]: integer #88 +│ │ └─ variant_4: struct #207 +│ │ └─ [increment]: integer #88 +│ └─ [title]: optional #212 +│ └─ item: union #211 +│ ├─ variant_0: string #89 +│ └─ variant_1: struct #210 +│ └─ [set]: string #89 +└─ [where]: struct 'Post_query_where_unique_input' #243 + ├─ [AND]: optional #240 + │ └─ item: list #239 + │ └─ item: &Post_query_where_unique_input #238 + ├─ [NOT]: optional #241 + │ └─ item: &Post_query_where_unique_input #238 + ├─ [OR]: optional #240 + │ └─ item: list #239 + │ └─ item: &Post_query_where_unique_input #238 + ├─ [author]: optional #126 + │ └─ item: struct 'User_where_excluding_Post' #125 + │ ├─ [id]: optional #113 + │ │ └─ item: &_prisma_integer_filter_ex #52 + │ ├─ [name]: optional #114 + │ │ └─ item: &_prisma_string_filter_ex #30 + │ └─ [posts]: optional #123 + │ └─ item: union #122 + │ ├─ variant_0: struct #117 + │ │ └─ [every]: optional #116 + │ │ └─ item: &Post_where #115 + │ ├─ variant_1: struct #119 + │ │ └─ [some]: optional #118 + │ │ └─ item: &Post_where #115 + │ └─ variant_2: struct #121 + │ └─ [none]: optional #120 + │ └─ item: &Post_where #115 + ├─ [id]: optional #110 + │ └─ item: &_prisma_integer_filter_ex #52 + └─ [title]: optional #111 + └─ item: &_prisma_string_filter_ex #30 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_one Record inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_one Record inp.snap index ebfe6d0edb..a54ddd2f8c 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_one Record inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_one Record inp.snap @@ -2,238 +2,142 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct #90 -├─ [data]: struct 'Record_update_input' #31 -│ ├─ [age]: optional 'optional_24' #25 -│ │ └─ item: union #23 -│ │ ├─ variant_0: optional 'optional_7' #8 +root: struct #78 +├─ [data]: struct 'Record_update_input' #27 +│ ├─ [age]: optional #22 +│ │ └─ item: union #21 +│ │ ├─ variant_0: optional #7 │ │ │ └─ item: integer #6 -│ │ ├─ variant_1: struct #19 -│ │ │ └─ [set]: optional 'optional_7' #8 +│ │ ├─ variant_1: struct #17 +│ │ │ └─ [set]: optional #7 │ │ │ └─ item: integer #6 -│ │ ├─ variant_2: struct #20 +│ │ ├─ variant_2: struct #18 │ │ │ └─ [multiply]: integer #6 -│ │ ├─ variant_3: struct #21 +│ │ ├─ variant_3: struct #19 │ │ │ └─ [decrement]: integer #6 -│ │ └─ variant_4: struct #22 +│ │ └─ variant_4: struct #20 │ │ └─ [increment]: integer #6 -│ ├─ [created_at]: optional 'optional_28' #29 -│ │ └─ item: union #27 +│ ├─ [created_at]: optional #25 +│ │ └─ item: union #24 │ │ ├─ variant_0: string #1 -│ │ └─ variant_1: struct #26 +│ │ └─ variant_1: struct #23 │ │ └─ [set]: string #1 -│ ├─ [id]: optional 'optional_13' #14 +│ ├─ [id]: optional #13 │ │ └─ item: union #12 │ │ ├─ variant_0: string #4 │ │ └─ variant_1: struct #11 │ │ └─ [set]: string #4 -│ └─ [name]: optional 'optional_17' #18 -│ └─ item: union #16 +│ └─ [name]: optional #16 +│ └─ item: union #15 │ ├─ variant_0: string #5 -│ └─ variant_1: struct #15 +│ └─ variant_1: struct #14 │ └─ [set]: string #5 -└─ [where]: struct 'Record_query_where_unique_input' #89 - ├─ [AND]: optional 'optional_84' #85 - │ └─ item: list 'list_82' #83 - │ └─ item: &Record_query_where_unique_input #81 - ├─ [NOT]: optional 'optional_86' #87 - │ └─ item: &Record_query_where_unique_input #81 - ├─ [OR]: optional 'optional_84' #85 - │ └─ item: list 'list_82' #83 - │ └─ item: &Record_query_where_unique_input #81 - ├─ [age]: optional 'optional_75' #76 - │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ └─ item: union #71 - │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ ├─ variant_0: integer #58 - │ │ ├─ variant_1: struct #63 - │ │ │ └─ [equals]: integer #58 - │ │ ├─ variant_2: struct #64 - │ │ │ └─ [not]: integer #58 - │ │ ├─ variant_3: struct #65 - │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ variant_4: struct #66 - │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_5: struct #67 - │ │ └─ [notIn]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ variant_1: struct #70 - │ └─ [not]: either '_prisma_integer_filter' #69 - │ ├─ variant_0: integer #58 - │ ├─ variant_1: struct #63 - │ │ └─ [equals]: integer #58 - │ ├─ variant_2: struct #64 - │ │ └─ [not]: integer #58 - │ ├─ variant_3: struct #65 - │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ └─ [lte]: optional 'optional_59' #60 - │ │ └─ item: integer #58 - │ ├─ variant_4: struct #66 - │ │ └─ [in]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ variant_5: struct #67 - │ └─ [notIn]: list 'list_61' #62 - │ └─ item: integer #58 - ├─ [created_at]: optional 'optional_77' #78 - │ └─ item: optional '_prisma_string_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: union '_prisma_string_filter' #48 +└─ [where]: struct 'Record_query_where_unique_input' #77 + ├─ [AND]: optional #74 + │ └─ item: list #73 + │ └─ item: &Record_query_where_unique_input #72 + ├─ [NOT]: optional #75 + │ └─ item: &Record_query_where_unique_input #72 + ├─ [OR]: optional #74 + │ └─ item: list #73 + │ └─ item: &Record_query_where_unique_input #72 + ├─ [age]: optional #68 + │ └─ item: optional '_prisma_integer_filter_ex' #67 + │ └─ item: union #65 + │ ├─ variant_0: either '_prisma_integer_filter' #63 + │ │ ├─ variant_0: integer #54 + │ │ ├─ variant_1: struct #57 + │ │ │ └─ [equals]: integer #54 + │ │ ├─ variant_2: struct #58 + │ │ │ └─ [not]: integer #54 + │ │ ├─ variant_3: struct #59 + │ │ │ ├─ [gt]: optional #55 + │ │ │ │ └─ item: integer #54 + │ │ │ ├─ [gte]: optional #55 + │ │ │ │ └─ item: integer #54 + │ │ │ ├─ [lt]: optional #55 + │ │ │ │ └─ item: integer #54 + │ │ │ └─ [lte]: optional #55 + │ │ │ └─ item: integer #54 + │ │ ├─ variant_4: struct #60 + │ │ │ └─ [in]: list #56 + │ │ │ └─ item: integer #54 + │ │ └─ variant_5: struct #61 + │ │ └─ [notIn]: list #56 + │ │ └─ item: integer #54 + │ └─ variant_1: struct #64 + │ └─ [not]: either '_prisma_integer_filter' #63 + │ ├─ variant_0: integer #54 + │ ├─ variant_1: struct #57 + │ │ └─ [equals]: integer #54 + │ ├─ variant_2: struct #58 + │ │ └─ [not]: integer #54 + │ ├─ variant_3: struct #59 + │ │ ├─ [gt]: optional #55 + │ │ │ └─ item: integer #54 + │ │ ├─ [gte]: optional #55 + │ │ │ └─ item: integer #54 + │ │ ├─ [lt]: optional #55 + │ │ │ └─ item: integer #54 + │ │ └─ [lte]: optional #55 + │ │ └─ item: integer #54 + │ ├─ variant_4: struct #60 + │ │ └─ [in]: list #56 + │ │ └─ item: integer #54 + │ └─ variant_5: struct #61 + │ └─ [notIn]: list #56 + │ └─ item: integer #54 + ├─ [created_at]: optional #69 + │ └─ item: &_prisma_string_filter_ex #30 + ├─ [id]: optional #50 + │ └─ item: optional '_prisma_string_filter_ex' #49 + │ └─ item: union #47 + │ ├─ variant_0: union '_prisma_string_filter' #45 │ │ ├─ variant_0: string #32 - │ │ ├─ variant_1: struct #37 + │ │ ├─ variant_1: struct #35 │ │ │ └─ [equals]: string #32 - │ │ ├─ variant_2: struct #38 + │ │ ├─ variant_2: struct #36 │ │ │ └─ [not]: string #32 - │ │ ├─ variant_3: struct #39 - │ │ │ └─ [in]: list 'list_35' #36 + │ │ ├─ variant_3: struct #37 + │ │ │ └─ [in]: list #34 │ │ │ └─ item: string #32 - │ │ ├─ variant_4: struct #40 - │ │ │ └─ [notIn]: list 'list_35' #36 + │ │ ├─ variant_4: struct #38 + │ │ │ └─ [notIn]: list #34 │ │ │ └─ item: string #32 - │ │ ├─ variant_5: struct #44 + │ │ ├─ variant_5: struct #41 │ │ │ ├─ [contains]: string #32 - │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #45 + │ │ │ └─ [mode]: optional #40 + │ │ │ └─ item: string #39 enum{ '"insensitive"' } + │ │ ├─ variant_6: struct #42 │ │ │ └─ [search]: string #32 - │ │ └─ variant_7: struct #46 - │ │ ├─ [endsWith]: optional 'optional_33' #34 + │ │ └─ variant_7: struct #43 + │ │ ├─ [endsWith]: optional #33 │ │ │ └─ item: string #32 - │ │ └─ [startsWith]: optional 'optional_33' #34 + │ │ └─ [startsWith]: optional #33 │ │ └─ item: string #32 - │ └─ variant_1: struct #49 - │ └─ [not]: union '_prisma_string_filter' #48 + │ └─ variant_1: struct #46 + │ └─ [not]: union '_prisma_string_filter' #45 │ ├─ variant_0: string #32 - │ ├─ variant_1: struct #37 + │ ├─ variant_1: struct #35 │ │ └─ [equals]: string #32 - │ ├─ variant_2: struct #38 + │ ├─ variant_2: struct #36 │ │ └─ [not]: string #32 - │ ├─ variant_3: struct #39 - │ │ └─ [in]: list 'list_35' #36 + │ ├─ variant_3: struct #37 + │ │ └─ [in]: list #34 │ │ └─ item: string #32 - │ ├─ variant_4: struct #40 - │ │ └─ [notIn]: list 'list_35' #36 + │ ├─ variant_4: struct #38 + │ │ └─ [notIn]: list #34 │ │ └─ item: string #32 - │ ├─ variant_5: struct #44 + │ ├─ variant_5: struct #41 │ │ ├─ [contains]: string #32 - │ │ └─ [mode]: optional 'optional_42' #43 - │ │ └─ item: string #41 enum{ '"insensitive"' } - │ ├─ variant_6: struct #45 + │ │ └─ [mode]: optional #40 + │ │ └─ item: string #39 enum{ '"insensitive"' } + │ ├─ variant_6: struct #42 │ │ └─ [search]: string #32 - │ └─ variant_7: struct #46 - │ ├─ [endsWith]: optional 'optional_33' #34 + │ └─ variant_7: struct #43 + │ ├─ [endsWith]: optional #33 │ │ └─ item: string #32 - │ └─ [startsWith]: optional 'optional_33' #34 + │ └─ [startsWith]: optional #33 │ └─ item: string #32 - ├─ [id]: optional 'optional_54' #55 - │ └─ item: optional '_prisma_string_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: union '_prisma_string_filter' #48 - │ │ ├─ variant_0: string #32 - │ │ ├─ variant_1: struct #37 - │ │ │ └─ [equals]: string #32 - │ │ ├─ variant_2: struct #38 - │ │ │ └─ [not]: string #32 - │ │ ├─ variant_3: struct #39 - │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_4: struct #40 - │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_5: struct #44 - │ │ │ ├─ [contains]: string #32 - │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #45 - │ │ │ └─ [search]: string #32 - │ │ └─ variant_7: struct #46 - │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ variant_1: struct #49 - │ └─ [not]: union '_prisma_string_filter' #48 - │ ├─ variant_0: string #32 - │ ├─ variant_1: struct #37 - │ │ └─ [equals]: string #32 - │ ├─ variant_2: struct #38 - │ │ └─ [not]: string #32 - │ ├─ variant_3: struct #39 - │ │ └─ [in]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_4: struct #40 - │ │ └─ [notIn]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_5: struct #44 - │ │ ├─ [contains]: string #32 - │ │ └─ [mode]: optional 'optional_42' #43 - │ │ └─ item: string #41 enum{ '"insensitive"' } - │ ├─ variant_6: struct #45 - │ │ └─ [search]: string #32 - │ └─ variant_7: struct #46 - │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ [startsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - └─ [name]: optional 'optional_56' #57 - └─ item: optional '_prisma_string_filter_ex' #53 - └─ item: union #50 - ├─ variant_0: union '_prisma_string_filter' #48 - │ ├─ variant_0: string #32 - │ ├─ variant_1: struct #37 - │ │ └─ [equals]: string #32 - │ ├─ variant_2: struct #38 - │ │ └─ [not]: string #32 - │ ├─ variant_3: struct #39 - │ │ └─ [in]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_4: struct #40 - │ │ └─ [notIn]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_5: struct #44 - │ │ ├─ [contains]: string #32 - │ │ └─ [mode]: optional 'optional_42' #43 - │ │ └─ item: string #41 enum{ '"insensitive"' } - │ ├─ variant_6: struct #45 - │ │ └─ [search]: string #32 - │ └─ variant_7: struct #46 - │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ [startsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - └─ variant_1: struct #49 - └─ [not]: union '_prisma_string_filter' #48 - ├─ variant_0: string #32 - ├─ variant_1: struct #37 - │ └─ [equals]: string #32 - ├─ variant_2: struct #38 - │ └─ [not]: string #32 - ├─ variant_3: struct #39 - │ └─ [in]: list 'list_35' #36 - │ └─ item: string #32 - ├─ variant_4: struct #40 - │ └─ [notIn]: list 'list_35' #36 - │ └─ item: string #32 - ├─ variant_5: struct #44 - │ ├─ [contains]: string #32 - │ └─ [mode]: optional 'optional_42' #43 - │ └─ item: string #41 enum{ '"insensitive"' } - ├─ variant_6: struct #45 - │ └─ [search]: string #32 - └─ variant_7: struct #46 - ├─ [endsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - └─ [startsWith]: optional 'optional_33' #34 - └─ item: string #32 + └─ [name]: optional #51 + └─ item: &_prisma_string_filter_ex #30 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_one User inp.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_one User inp.snap index b592848ba5..e16f249b23 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_one User inp.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__test__update_one User inp.snap @@ -2,2489 +2,373 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/mod.rs expression: tp.print(inp) --- -root: struct #245 -├─ [data]: struct 'User_update_input' #190 -│ ├─ [id]: optional 'optional_111' #112 -│ │ └─ item: union #110 -│ │ ├─ variant_0: integer #92 -│ │ ├─ variant_1: struct #106 -│ │ │ └─ [set]: integer #92 -│ │ ├─ variant_2: struct #107 -│ │ │ └─ [multiply]: integer #92 -│ │ ├─ variant_3: struct #108 -│ │ │ └─ [decrement]: integer #92 -│ │ └─ variant_4: struct #109 -│ │ └─ [increment]: integer #92 -│ ├─ [name]: optional 'optional_115' #116 -│ │ └─ item: union #114 -│ │ ├─ variant_0: string #93 -│ │ └─ variant_1: struct #113 -│ │ └─ [set]: string #93 -│ └─ [posts]: optional 'optional_187' #188 -│ └─ item: union #186 -│ ├─ variant_0: struct #155 -│ │ └─ [create]: union #123 -│ │ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #120 -│ │ │ ├─ [id]: optional 'optional_117' #118 -│ │ │ │ └─ item: integer #101 -│ │ │ └─ [title]: string #102 -│ │ └─ variant_1: list 'list_121' #122 -│ │ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #120 -│ │ ├─ [id]: optional 'optional_117' #118 -│ │ │ └─ item: integer #101 -│ │ └─ [title]: string #102 -│ ├─ variant_1: struct #156 -│ │ └─ [connect]: union #153 -│ │ ├─ variant_0: struct 'Post_where' #150 -│ │ │ ├─ [author]: optional 'optional_147' #148 -│ │ │ │ └─ item: struct 'User_where_excluding_Post' #146 -│ │ │ │ ├─ [id]: optional 'optional_128' #129 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [name]: optional 'optional_130' #131 -│ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ └─ item: union #50 -│ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [posts]: optional 'optional_143' #144 -│ │ │ │ └─ item: union #142 -│ │ │ │ ├─ variant_0: struct #135 -│ │ │ │ │ └─ [every]: optional 'optional_133' #134 -│ │ │ │ │ └─ item: &Post_where #132 -│ │ │ │ ├─ variant_1: struct #138 -│ │ │ │ │ └─ [some]: optional 'optional_136' #137 -│ │ │ │ │ └─ item: &Post_where #132 -│ │ │ │ └─ variant_2: struct #141 -│ │ │ │ └─ [none]: optional 'optional_139' #140 -│ │ │ │ └─ item: &Post_where #132 -│ │ │ ├─ [id]: optional 'optional_124' #125 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ [title]: optional 'optional_126' #127 -│ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ └─ item: union #50 -│ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ variant_1: struct #49 -│ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ variant_1: list 'list_151' #152 -│ │ └─ item: struct 'Post_where' #150 -│ │ ├─ [author]: optional 'optional_147' #148 -│ │ │ └─ item: struct 'User_where_excluding_Post' #146 -│ │ │ ├─ [id]: optional 'optional_128' #129 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ [name]: optional 'optional_130' #131 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [posts]: optional 'optional_143' #144 -│ │ │ └─ item: union #142 -│ │ │ ├─ variant_0: struct #135 -│ │ │ │ └─ [every]: optional 'optional_133' #134 -│ │ │ │ └─ item: &Post_where #132 -│ │ │ ├─ variant_1: struct #138 -│ │ │ │ └─ [some]: optional 'optional_136' #137 -│ │ │ │ └─ item: &Post_where #132 -│ │ │ └─ variant_2: struct #141 -│ │ │ └─ [none]: optional 'optional_139' #140 -│ │ │ └─ item: &Post_where #132 -│ │ ├─ [id]: optional 'optional_124' #125 -│ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ └─ item: union #71 -│ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ variant_1: struct #70 -│ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ ├─ variant_0: integer #58 -│ │ │ ├─ variant_1: struct #63 -│ │ │ │ └─ [equals]: integer #58 -│ │ │ ├─ variant_2: struct #64 -│ │ │ │ └─ [not]: integer #58 -│ │ │ ├─ variant_3: struct #65 -│ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ variant_4: struct #66 -│ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ variant_5: struct #67 -│ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ └─ item: integer #58 -│ │ └─ [title]: optional 'optional_126' #127 -│ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ └─ item: union #50 -│ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ variant_1: struct #49 -│ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ ├─ variant_0: string #32 -│ │ ├─ variant_1: struct #37 -│ │ │ └─ [equals]: string #32 -│ │ ├─ variant_2: struct #38 -│ │ │ └─ [not]: string #32 -│ │ ├─ variant_3: struct #39 -│ │ │ └─ [in]: list 'list_35' #36 -│ │ │ └─ item: string #32 -│ │ ├─ variant_4: struct #40 -│ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ └─ item: string #32 -│ │ ├─ variant_5: struct #44 -│ │ │ ├─ [contains]: string #32 -│ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ ├─ variant_6: struct #45 -│ │ │ └─ [search]: string #32 -│ │ └─ variant_7: struct #46 -│ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ └─ item: string #32 -│ ├─ variant_2: struct #157 -│ │ └─ [connectOrCreate]: struct #154 -│ │ ├─ [create]: union #123 -│ │ │ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #120 -│ │ │ │ ├─ [id]: optional 'optional_117' #118 -│ │ │ │ │ └─ item: integer #101 -│ │ │ │ └─ [title]: string #102 -│ │ │ └─ variant_1: list 'list_121' #122 -│ │ │ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #120 -│ │ │ ├─ [id]: optional 'optional_117' #118 -│ │ │ │ └─ item: integer #101 -│ │ │ └─ [title]: string #102 -│ │ └─ [where]: union #153 -│ │ ├─ variant_0: struct 'Post_where' #150 -│ │ │ ├─ [author]: optional 'optional_147' #148 -│ │ │ │ └─ item: struct 'User_where_excluding_Post' #146 -│ │ │ │ ├─ [id]: optional 'optional_128' #129 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [name]: optional 'optional_130' #131 -│ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ └─ item: union #50 -│ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [posts]: optional 'optional_143' #144 -│ │ │ │ └─ item: union #142 -│ │ │ │ ├─ variant_0: struct #135 -│ │ │ │ │ └─ [every]: optional 'optional_133' #134 -│ │ │ │ │ └─ item: &Post_where #132 -│ │ │ │ ├─ variant_1: struct #138 -│ │ │ │ │ └─ [some]: optional 'optional_136' #137 -│ │ │ │ │ └─ item: &Post_where #132 -│ │ │ │ └─ variant_2: struct #141 -│ │ │ │ └─ [none]: optional 'optional_139' #140 -│ │ │ │ └─ item: &Post_where #132 -│ │ │ ├─ [id]: optional 'optional_124' #125 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ [title]: optional 'optional_126' #127 -│ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ └─ item: union #50 -│ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ variant_1: struct #49 -│ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ variant_1: list 'list_151' #152 -│ │ └─ item: struct 'Post_where' #150 -│ │ ├─ [author]: optional 'optional_147' #148 -│ │ │ └─ item: struct 'User_where_excluding_Post' #146 -│ │ │ ├─ [id]: optional 'optional_128' #129 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ [name]: optional 'optional_130' #131 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [posts]: optional 'optional_143' #144 -│ │ │ └─ item: union #142 -│ │ │ ├─ variant_0: struct #135 -│ │ │ │ └─ [every]: optional 'optional_133' #134 -│ │ │ │ └─ item: &Post_where #132 -│ │ │ ├─ variant_1: struct #138 -│ │ │ │ └─ [some]: optional 'optional_136' #137 -│ │ │ │ └─ item: &Post_where #132 -│ │ │ └─ variant_2: struct #141 -│ │ │ └─ [none]: optional 'optional_139' #140 -│ │ │ └─ item: &Post_where #132 -│ │ ├─ [id]: optional 'optional_124' #125 -│ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ └─ item: union #71 -│ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ variant_1: struct #70 -│ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ ├─ variant_0: integer #58 -│ │ │ ├─ variant_1: struct #63 -│ │ │ │ └─ [equals]: integer #58 -│ │ │ ├─ variant_2: struct #64 -│ │ │ │ └─ [not]: integer #58 -│ │ │ ├─ variant_3: struct #65 -│ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ variant_4: struct #66 -│ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ variant_5: struct #67 -│ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ └─ item: integer #58 -│ │ └─ [title]: optional 'optional_126' #127 -│ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ └─ item: union #50 -│ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ variant_1: struct #49 -│ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ ├─ variant_0: string #32 -│ │ ├─ variant_1: struct #37 -│ │ │ └─ [equals]: string #32 -│ │ ├─ variant_2: struct #38 -│ │ │ └─ [not]: string #32 -│ │ ├─ variant_3: struct #39 -│ │ │ └─ [in]: list 'list_35' #36 -│ │ │ └─ item: string #32 -│ │ ├─ variant_4: struct #40 -│ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ └─ item: string #32 -│ │ ├─ variant_5: struct #44 -│ │ │ ├─ [contains]: string #32 -│ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ ├─ variant_6: struct #45 -│ │ │ └─ [search]: string #32 -│ │ └─ variant_7: struct #46 -│ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ └─ item: string #32 -│ ├─ variant_3: struct #171 -│ │ └─ [update]: struct 'Post_update_input_excluding_rel_Post_User' #170 -│ │ ├─ [id]: optional 'optional_163' #164 -│ │ │ └─ item: union #162 -│ │ │ ├─ variant_0: integer #101 -│ │ │ ├─ variant_1: struct #158 -│ │ │ │ └─ [set]: integer #101 -│ │ │ ├─ variant_2: struct #159 -│ │ │ │ └─ [multiply]: integer #101 -│ │ │ ├─ variant_3: struct #160 -│ │ │ │ └─ [decrement]: integer #101 -│ │ │ └─ variant_4: struct #161 -│ │ │ └─ [increment]: integer #101 -│ │ └─ [title]: optional 'optional_167' #168 -│ │ └─ item: union #166 -│ │ ├─ variant_0: string #102 -│ │ └─ variant_1: struct #165 -│ │ └─ [set]: string #102 -│ ├─ variant_4: struct #175 -│ │ └─ [updateMany]: struct #174 -│ │ ├─ [data]: struct 'Post_update_input_excluding_rel_Post_User' #170 -│ │ │ ├─ [id]: optional 'optional_163' #164 -│ │ │ │ └─ item: union #162 -│ │ │ │ ├─ variant_0: integer #101 -│ │ │ │ ├─ variant_1: struct #158 -│ │ │ │ │ └─ [set]: integer #101 -│ │ │ │ ├─ variant_2: struct #159 -│ │ │ │ │ └─ [multiply]: integer #101 -│ │ │ │ ├─ variant_3: struct #160 -│ │ │ │ │ └─ [decrement]: integer #101 -│ │ │ │ └─ variant_4: struct #161 -│ │ │ │ └─ [increment]: integer #101 -│ │ │ └─ [title]: optional 'optional_167' #168 -│ │ │ └─ item: union #166 -│ │ │ ├─ variant_0: string #102 -│ │ │ └─ variant_1: struct #165 -│ │ │ └─ [set]: string #102 -│ │ └─ [where]: optional 'optional_172' #173 -│ │ └─ item: union #153 -│ │ ├─ variant_0: struct 'Post_where' #150 -│ │ │ ├─ [author]: optional 'optional_147' #148 -│ │ │ │ └─ item: struct 'User_where_excluding_Post' #146 -│ │ │ │ ├─ [id]: optional 'optional_128' #129 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [name]: optional 'optional_130' #131 -│ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ └─ item: union #50 -│ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [posts]: optional 'optional_143' #144 -│ │ │ │ └─ item: union #142 -│ │ │ │ ├─ variant_0: struct #135 -│ │ │ │ │ └─ [every]: optional 'optional_133' #134 -│ │ │ │ │ └─ item: &Post_where #132 -│ │ │ │ ├─ variant_1: struct #138 -│ │ │ │ │ └─ [some]: optional 'optional_136' #137 -│ │ │ │ │ └─ item: &Post_where #132 -│ │ │ │ └─ variant_2: struct #141 -│ │ │ │ └─ [none]: optional 'optional_139' #140 -│ │ │ │ └─ item: &Post_where #132 -│ │ │ ├─ [id]: optional 'optional_124' #125 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ [title]: optional 'optional_126' #127 -│ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ └─ item: union #50 -│ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ variant_1: struct #49 -│ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ variant_1: list 'list_151' #152 -│ │ └─ item: struct 'Post_where' #150 -│ │ ├─ [author]: optional 'optional_147' #148 -│ │ │ └─ item: struct 'User_where_excluding_Post' #146 -│ │ │ ├─ [id]: optional 'optional_128' #129 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ [name]: optional 'optional_130' #131 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [posts]: optional 'optional_143' #144 -│ │ │ └─ item: union #142 -│ │ │ ├─ variant_0: struct #135 -│ │ │ │ └─ [every]: optional 'optional_133' #134 -│ │ │ │ └─ item: &Post_where #132 -│ │ │ ├─ variant_1: struct #138 -│ │ │ │ └─ [some]: optional 'optional_136' #137 -│ │ │ │ └─ item: &Post_where #132 -│ │ │ └─ variant_2: struct #141 -│ │ │ └─ [none]: optional 'optional_139' #140 -│ │ │ └─ item: &Post_where #132 -│ │ ├─ [id]: optional 'optional_124' #125 -│ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ └─ item: union #71 -│ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ variant_1: struct #70 -│ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ ├─ variant_0: integer #58 -│ │ │ ├─ variant_1: struct #63 -│ │ │ │ └─ [equals]: integer #58 -│ │ │ ├─ variant_2: struct #64 -│ │ │ │ └─ [not]: integer #58 -│ │ │ ├─ variant_3: struct #65 -│ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ variant_4: struct #66 -│ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ variant_5: struct #67 -│ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ └─ item: integer #58 -│ │ └─ [title]: optional 'optional_126' #127 -│ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ └─ item: union #50 -│ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ variant_1: struct #49 -│ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ ├─ variant_0: string #32 -│ │ ├─ variant_1: struct #37 -│ │ │ └─ [equals]: string #32 -│ │ ├─ variant_2: struct #38 -│ │ │ └─ [not]: string #32 -│ │ ├─ variant_3: struct #39 -│ │ │ └─ [in]: list 'list_35' #36 -│ │ │ └─ item: string #32 -│ │ ├─ variant_4: struct #40 -│ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ └─ item: string #32 -│ │ ├─ variant_5: struct #44 -│ │ │ ├─ [contains]: string #32 -│ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ ├─ variant_6: struct #45 -│ │ │ └─ [search]: string #32 -│ │ └─ variant_7: struct #46 -│ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ └─ item: string #32 -│ ├─ variant_5: struct #179 -│ │ └─ [deleteMany]: struct #178 -│ │ └─ [where]: optional 'optional_176' #177 -│ │ └─ item: union #153 -│ │ ├─ variant_0: struct 'Post_where' #150 -│ │ │ ├─ [author]: optional 'optional_147' #148 -│ │ │ │ └─ item: struct 'User_where_excluding_Post' #146 -│ │ │ │ ├─ [id]: optional 'optional_128' #129 -│ │ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ │ └─ item: union #71 -│ │ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_1: struct #70 -│ │ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [name]: optional 'optional_130' #131 -│ │ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ │ └─ item: union #50 -│ │ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ variant_1: struct #49 -│ │ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [posts]: optional 'optional_143' #144 -│ │ │ │ └─ item: union #142 -│ │ │ │ ├─ variant_0: struct #135 -│ │ │ │ │ └─ [every]: optional 'optional_133' #134 -│ │ │ │ │ └─ item: &Post_where #132 -│ │ │ │ ├─ variant_1: struct #138 -│ │ │ │ │ └─ [some]: optional 'optional_136' #137 -│ │ │ │ │ └─ item: &Post_where #132 -│ │ │ │ └─ variant_2: struct #141 -│ │ │ │ └─ [none]: optional 'optional_139' #140 -│ │ │ │ └─ item: &Post_where #132 -│ │ │ ├─ [id]: optional 'optional_124' #125 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ [title]: optional 'optional_126' #127 -│ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ └─ item: union #50 -│ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ variant_1: struct #49 -│ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ variant_1: list 'list_151' #152 -│ │ └─ item: struct 'Post_where' #150 -│ │ ├─ [author]: optional 'optional_147' #148 -│ │ │ └─ item: struct 'User_where_excluding_Post' #146 -│ │ │ ├─ [id]: optional 'optional_128' #129 -│ │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ │ └─ item: union #71 -│ │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ variant_5: struct #67 -│ │ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_1: struct #70 -│ │ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ [name]: optional 'optional_130' #131 -│ │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ │ │ └─ item: union #50 -│ │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ │ │ ├─ variant_0: string #32 -│ │ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ │ └─ [not]: string #32 -│ │ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ │ └─ [search]: string #32 -│ │ │ │ │ └─ variant_7: struct #46 -│ │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ │ └─ item: string #32 -│ │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ variant_1: struct #49 -│ │ │ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ │ │ ├─ variant_0: string #32 -│ │ │ │ ├─ variant_1: struct #37 -│ │ │ │ │ └─ [equals]: string #32 -│ │ │ │ ├─ variant_2: struct #38 -│ │ │ │ │ └─ [not]: string #32 -│ │ │ │ ├─ variant_3: struct #39 -│ │ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_4: struct #40 -│ │ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ ├─ variant_5: struct #44 -│ │ │ │ │ ├─ [contains]: string #32 -│ │ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ │ ├─ variant_6: struct #45 -│ │ │ │ │ └─ [search]: string #32 -│ │ │ │ └─ variant_7: struct #46 -│ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ │ └─ item: string #32 -│ │ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [posts]: optional 'optional_143' #144 -│ │ │ └─ item: union #142 -│ │ │ ├─ variant_0: struct #135 -│ │ │ │ └─ [every]: optional 'optional_133' #134 -│ │ │ │ └─ item: &Post_where #132 -│ │ │ ├─ variant_1: struct #138 -│ │ │ │ └─ [some]: optional 'optional_136' #137 -│ │ │ │ └─ item: &Post_where #132 -│ │ │ └─ variant_2: struct #141 -│ │ │ └─ [none]: optional 'optional_139' #140 -│ │ │ └─ item: &Post_where #132 -│ │ ├─ [id]: optional 'optional_124' #125 -│ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 -│ │ │ └─ item: union #71 -│ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 -│ │ │ │ ├─ variant_0: integer #58 -│ │ │ │ ├─ variant_1: struct #63 -│ │ │ │ │ └─ [equals]: integer #58 -│ │ │ │ ├─ variant_2: struct #64 -│ │ │ │ │ └─ [not]: integer #58 -│ │ │ │ ├─ variant_3: struct #65 -│ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ │ └─ item: integer #58 -│ │ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ variant_4: struct #66 -│ │ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ variant_5: struct #67 -│ │ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ variant_1: struct #70 -│ │ │ └─ [not]: either '_prisma_integer_filter' #69 -│ │ │ ├─ variant_0: integer #58 -│ │ │ ├─ variant_1: struct #63 -│ │ │ │ └─ [equals]: integer #58 -│ │ │ ├─ variant_2: struct #64 -│ │ │ │ └─ [not]: integer #58 -│ │ │ ├─ variant_3: struct #65 -│ │ │ │ ├─ [gt]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [gte]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ ├─ [lt]: optional 'optional_59' #60 -│ │ │ │ │ └─ item: integer #58 -│ │ │ │ └─ [lte]: optional 'optional_59' #60 -│ │ │ │ └─ item: integer #58 -│ │ │ ├─ variant_4: struct #66 -│ │ │ │ └─ [in]: list 'list_61' #62 -│ │ │ │ └─ item: integer #58 -│ │ │ └─ variant_5: struct #67 -│ │ │ └─ [notIn]: list 'list_61' #62 -│ │ │ └─ item: integer #58 -│ │ └─ [title]: optional 'optional_126' #127 -│ │ └─ item: optional '_prisma_string_filter_ex' #53 -│ │ └─ item: union #50 -│ │ ├─ variant_0: union '_prisma_string_filter' #48 -│ │ │ ├─ variant_0: string #32 -│ │ │ ├─ variant_1: struct #37 -│ │ │ │ └─ [equals]: string #32 -│ │ │ ├─ variant_2: struct #38 -│ │ │ │ └─ [not]: string #32 -│ │ │ ├─ variant_3: struct #39 -│ │ │ │ └─ [in]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_4: struct #40 -│ │ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ │ └─ item: string #32 -│ │ │ ├─ variant_5: struct #44 -│ │ │ │ ├─ [contains]: string #32 -│ │ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ │ ├─ variant_6: struct #45 -│ │ │ │ └─ [search]: string #32 -│ │ │ └─ variant_7: struct #46 -│ │ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ │ └─ item: string #32 -│ │ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ variant_1: struct #49 -│ │ └─ [not]: union '_prisma_string_filter' #48 -│ │ ├─ variant_0: string #32 -│ │ ├─ variant_1: struct #37 -│ │ │ └─ [equals]: string #32 -│ │ ├─ variant_2: struct #38 -│ │ │ └─ [not]: string #32 -│ │ ├─ variant_3: struct #39 -│ │ │ └─ [in]: list 'list_35' #36 -│ │ │ └─ item: string #32 -│ │ ├─ variant_4: struct #40 -│ │ │ └─ [notIn]: list 'list_35' #36 -│ │ │ └─ item: string #32 -│ │ ├─ variant_5: struct #44 -│ │ │ ├─ [contains]: string #32 -│ │ │ └─ [mode]: optional 'optional_42' #43 -│ │ │ └─ item: string #41 enum{ '"insensitive"' } -│ │ ├─ variant_6: struct #45 -│ │ │ └─ [search]: string #32 -│ │ └─ variant_7: struct #46 -│ │ ├─ [endsWith]: optional 'optional_33' #34 -│ │ │ └─ item: string #32 -│ │ └─ [startsWith]: optional 'optional_33' #34 -│ │ └─ item: string #32 -│ └─ variant_6: struct #185 -│ └─ [createMany]: optional 'optional_183' #184 -│ └─ item: struct #182 -│ └─ [data]: list 'list_180' #181 -│ └─ item: union #123 -│ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #120 -│ │ ├─ [id]: optional 'optional_117' #118 -│ │ │ └─ item: integer #101 -│ │ └─ [title]: string #102 -│ └─ variant_1: list 'list_121' #122 -│ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #120 -│ ├─ [id]: optional 'optional_117' #118 -│ │ └─ item: integer #101 -│ └─ [title]: string #102 -└─ [where]: struct 'User_query_where_unique_input' #244 - ├─ [AND]: optional 'optional_239' #240 - │ └─ item: list 'list_237' #238 - │ └─ item: &User_query_where_unique_input #236 - ├─ [NOT]: optional 'optional_241' #242 - │ └─ item: &User_query_where_unique_input #236 - ├─ [OR]: optional 'optional_239' #240 - │ └─ item: list 'list_237' #238 - │ └─ item: &User_query_where_unique_input #236 - ├─ [id]: optional 'optional_191' #192 - │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ └─ item: union #71 - │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ ├─ variant_0: integer #58 - │ │ ├─ variant_1: struct #63 - │ │ │ └─ [equals]: integer #58 - │ │ ├─ variant_2: struct #64 - │ │ │ └─ [not]: integer #58 - │ │ ├─ variant_3: struct #65 - │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ variant_4: struct #66 - │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_5: struct #67 - │ │ └─ [notIn]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ variant_1: struct #70 - │ └─ [not]: either '_prisma_integer_filter' #69 - │ ├─ variant_0: integer #58 - │ ├─ variant_1: struct #63 - │ │ └─ [equals]: integer #58 - │ ├─ variant_2: struct #64 - │ │ └─ [not]: integer #58 - │ ├─ variant_3: struct #65 - │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ └─ [lte]: optional 'optional_59' #60 - │ │ └─ item: integer #58 - │ ├─ variant_4: struct #66 - │ │ └─ [in]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ variant_5: struct #67 - │ └─ [notIn]: list 'list_61' #62 - │ └─ item: integer #58 - ├─ [name]: optional 'optional_193' #194 - │ └─ item: optional '_prisma_string_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: union '_prisma_string_filter' #48 - │ │ ├─ variant_0: string #32 - │ │ ├─ variant_1: struct #37 - │ │ │ └─ [equals]: string #32 - │ │ ├─ variant_2: struct #38 - │ │ │ └─ [not]: string #32 - │ │ ├─ variant_3: struct #39 - │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_4: struct #40 - │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_5: struct #44 - │ │ │ ├─ [contains]: string #32 - │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #45 - │ │ │ └─ [search]: string #32 - │ │ └─ variant_7: struct #46 - │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ variant_1: struct #49 - │ └─ [not]: union '_prisma_string_filter' #48 - │ ├─ variant_0: string #32 - │ ├─ variant_1: struct #37 - │ │ └─ [equals]: string #32 - │ ├─ variant_2: struct #38 - │ │ └─ [not]: string #32 - │ ├─ variant_3: struct #39 - │ │ └─ [in]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_4: struct #40 - │ │ └─ [notIn]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_5: struct #44 - │ │ ├─ [contains]: string #32 - │ │ └─ [mode]: optional 'optional_42' #43 - │ │ └─ item: string #41 enum{ '"insensitive"' } - │ ├─ variant_6: struct #45 - │ │ └─ [search]: string #32 - │ └─ variant_7: struct #46 - │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ [startsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - └─ [posts]: optional 'optional_232' #233 - └─ item: union #231 - ├─ variant_0: struct #224 - │ └─ [every]: optional 'optional_222' #223 - │ └─ item: struct 'Post_where_excluding_User' #221 - │ ├─ [author]: optional 'optional_218' #219 - │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #217 - │ │ ├─ [id]: optional 'optional_199' #200 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ │ │ └─ item: union #71 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ │ │ ├─ variant_0: integer #58 - │ │ │ │ ├─ variant_1: struct #63 - │ │ │ │ │ └─ [equals]: integer #58 - │ │ │ │ ├─ variant_2: struct #64 - │ │ │ │ │ └─ [not]: integer #58 - │ │ │ │ ├─ variant_3: struct #65 - │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ │ │ └─ item: integer #58 - │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ │ │ └─ item: integer #58 - │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ │ │ └─ item: integer #58 - │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ variant_4: struct #66 - │ │ │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ └─ variant_5: struct #67 - │ │ │ │ └─ [notIn]: list 'list_61' #62 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ variant_1: struct #70 - │ │ │ └─ [not]: either '_prisma_integer_filter' #69 - │ │ │ ├─ variant_0: integer #58 - │ │ │ ├─ variant_1: struct #63 - │ │ │ │ └─ [equals]: integer #58 - │ │ │ ├─ variant_2: struct #64 - │ │ │ │ └─ [not]: integer #58 - │ │ │ ├─ variant_3: struct #65 - │ │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ variant_4: struct #66 - │ │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ variant_5: struct #67 - │ │ │ └─ [notIn]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ ├─ [name]: optional 'optional_201' #202 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 - │ │ │ └─ item: union #50 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 - │ │ │ │ ├─ variant_0: string #32 - │ │ │ │ ├─ variant_1: struct #37 - │ │ │ │ │ └─ [equals]: string #32 - │ │ │ │ ├─ variant_2: struct #38 - │ │ │ │ │ └─ [not]: string #32 - │ │ │ │ ├─ variant_3: struct #39 - │ │ │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ │ │ └─ item: string #32 - │ │ │ │ ├─ variant_4: struct #40 - │ │ │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ │ │ └─ item: string #32 - │ │ │ │ ├─ variant_5: struct #44 - │ │ │ │ │ ├─ [contains]: string #32 - │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #45 - │ │ │ │ │ └─ [search]: string #32 - │ │ │ │ └─ variant_7: struct #46 - │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ │ │ └─ item: string #32 - │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ │ │ └─ item: string #32 - │ │ │ └─ variant_1: struct #49 - │ │ │ └─ [not]: union '_prisma_string_filter' #48 - │ │ │ ├─ variant_0: string #32 - │ │ │ ├─ variant_1: struct #37 - │ │ │ │ └─ [equals]: string #32 - │ │ │ ├─ variant_2: struct #38 - │ │ │ │ └─ [not]: string #32 - │ │ │ ├─ variant_3: struct #39 - │ │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ │ └─ item: string #32 - │ │ │ ├─ variant_4: struct #40 - │ │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ │ └─ item: string #32 - │ │ │ ├─ variant_5: struct #44 - │ │ │ │ ├─ [contains]: string #32 - │ │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #45 - │ │ │ │ └─ [search]: string #32 - │ │ │ └─ variant_7: struct #46 - │ │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ │ └─ item: string #32 - │ │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ [posts]: optional 'optional_214' #215 - │ │ └─ item: union #213 - │ │ ├─ variant_0: struct #206 - │ │ │ └─ [every]: optional 'optional_204' #205 - │ │ │ └─ item: &Post_where_excluding_User #203 - │ │ ├─ variant_1: struct #209 - │ │ │ └─ [some]: optional 'optional_207' #208 - │ │ │ └─ item: &Post_where_excluding_User #203 - │ │ └─ variant_2: struct #212 - │ │ └─ [none]: optional 'optional_210' #211 - │ │ └─ item: &Post_where_excluding_User #203 - │ ├─ [id]: optional 'optional_195' #196 - │ │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ │ └─ item: union #71 - │ │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ │ ├─ variant_0: integer #58 - │ │ │ ├─ variant_1: struct #63 - │ │ │ │ └─ [equals]: integer #58 - │ │ │ ├─ variant_2: struct #64 - │ │ │ │ └─ [not]: integer #58 - │ │ │ ├─ variant_3: struct #65 - │ │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ variant_4: struct #66 - │ │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ variant_5: struct #67 - │ │ │ └─ [notIn]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_1: struct #70 - │ │ └─ [not]: either '_prisma_integer_filter' #69 - │ │ ├─ variant_0: integer #58 - │ │ ├─ variant_1: struct #63 - │ │ │ └─ [equals]: integer #58 - │ │ ├─ variant_2: struct #64 - │ │ │ └─ [not]: integer #58 - │ │ ├─ variant_3: struct #65 - │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ variant_4: struct #66 - │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_5: struct #67 - │ │ └─ [notIn]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ [title]: optional 'optional_197' #198 - │ └─ item: optional '_prisma_string_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: union '_prisma_string_filter' #48 - │ │ ├─ variant_0: string #32 - │ │ ├─ variant_1: struct #37 - │ │ │ └─ [equals]: string #32 - │ │ ├─ variant_2: struct #38 - │ │ │ └─ [not]: string #32 - │ │ ├─ variant_3: struct #39 - │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_4: struct #40 - │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_5: struct #44 - │ │ │ ├─ [contains]: string #32 - │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #45 - │ │ │ └─ [search]: string #32 - │ │ └─ variant_7: struct #46 - │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ variant_1: struct #49 - │ └─ [not]: union '_prisma_string_filter' #48 - │ ├─ variant_0: string #32 - │ ├─ variant_1: struct #37 - │ │ └─ [equals]: string #32 - │ ├─ variant_2: struct #38 - │ │ └─ [not]: string #32 - │ ├─ variant_3: struct #39 - │ │ └─ [in]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_4: struct #40 - │ │ └─ [notIn]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_5: struct #44 - │ │ ├─ [contains]: string #32 - │ │ └─ [mode]: optional 'optional_42' #43 - │ │ └─ item: string #41 enum{ '"insensitive"' } - │ ├─ variant_6: struct #45 - │ │ └─ [search]: string #32 - │ └─ variant_7: struct #46 - │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ [startsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - ├─ variant_1: struct #227 - │ └─ [some]: optional 'optional_225' #226 - │ └─ item: struct 'Post_where_excluding_User' #221 - │ ├─ [author]: optional 'optional_218' #219 - │ │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #217 - │ │ ├─ [id]: optional 'optional_199' #200 - │ │ │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ │ │ └─ item: union #71 - │ │ │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ │ │ ├─ variant_0: integer #58 - │ │ │ │ ├─ variant_1: struct #63 - │ │ │ │ │ └─ [equals]: integer #58 - │ │ │ │ ├─ variant_2: struct #64 - │ │ │ │ │ └─ [not]: integer #58 - │ │ │ │ ├─ variant_3: struct #65 - │ │ │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ │ │ └─ item: integer #58 - │ │ │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ │ │ └─ item: integer #58 - │ │ │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ │ │ └─ item: integer #58 - │ │ │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ variant_4: struct #66 - │ │ │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ └─ variant_5: struct #67 - │ │ │ │ └─ [notIn]: list 'list_61' #62 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ variant_1: struct #70 - │ │ │ └─ [not]: either '_prisma_integer_filter' #69 - │ │ │ ├─ variant_0: integer #58 - │ │ │ ├─ variant_1: struct #63 - │ │ │ │ └─ [equals]: integer #58 - │ │ │ ├─ variant_2: struct #64 - │ │ │ │ └─ [not]: integer #58 - │ │ │ ├─ variant_3: struct #65 - │ │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ variant_4: struct #66 - │ │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ variant_5: struct #67 - │ │ │ └─ [notIn]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ ├─ [name]: optional 'optional_201' #202 - │ │ │ └─ item: optional '_prisma_string_filter_ex' #53 - │ │ │ └─ item: union #50 - │ │ │ ├─ variant_0: union '_prisma_string_filter' #48 - │ │ │ │ ├─ variant_0: string #32 - │ │ │ │ ├─ variant_1: struct #37 - │ │ │ │ │ └─ [equals]: string #32 - │ │ │ │ ├─ variant_2: struct #38 - │ │ │ │ │ └─ [not]: string #32 - │ │ │ │ ├─ variant_3: struct #39 - │ │ │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ │ │ └─ item: string #32 - │ │ │ │ ├─ variant_4: struct #40 - │ │ │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ │ │ └─ item: string #32 - │ │ │ │ ├─ variant_5: struct #44 - │ │ │ │ │ ├─ [contains]: string #32 - │ │ │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ │ │ ├─ variant_6: struct #45 - │ │ │ │ │ └─ [search]: string #32 - │ │ │ │ └─ variant_7: struct #46 - │ │ │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ │ │ └─ item: string #32 - │ │ │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ │ │ └─ item: string #32 - │ │ │ └─ variant_1: struct #49 - │ │ │ └─ [not]: union '_prisma_string_filter' #48 - │ │ │ ├─ variant_0: string #32 - │ │ │ ├─ variant_1: struct #37 - │ │ │ │ └─ [equals]: string #32 - │ │ │ ├─ variant_2: struct #38 - │ │ │ │ └─ [not]: string #32 - │ │ │ ├─ variant_3: struct #39 - │ │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ │ └─ item: string #32 - │ │ │ ├─ variant_4: struct #40 - │ │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ │ └─ item: string #32 - │ │ │ ├─ variant_5: struct #44 - │ │ │ │ ├─ [contains]: string #32 - │ │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #45 - │ │ │ │ └─ [search]: string #32 - │ │ │ └─ variant_7: struct #46 - │ │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ │ └─ item: string #32 - │ │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ [posts]: optional 'optional_214' #215 - │ │ └─ item: union #213 - │ │ ├─ variant_0: struct #206 - │ │ │ └─ [every]: optional 'optional_204' #205 - │ │ │ └─ item: &Post_where_excluding_User #203 - │ │ ├─ variant_1: struct #209 - │ │ │ └─ [some]: optional 'optional_207' #208 - │ │ │ └─ item: &Post_where_excluding_User #203 - │ │ └─ variant_2: struct #212 - │ │ └─ [none]: optional 'optional_210' #211 - │ │ └─ item: &Post_where_excluding_User #203 - │ ├─ [id]: optional 'optional_195' #196 - │ │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ │ └─ item: union #71 - │ │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ │ ├─ variant_0: integer #58 - │ │ │ ├─ variant_1: struct #63 - │ │ │ │ └─ [equals]: integer #58 - │ │ │ ├─ variant_2: struct #64 - │ │ │ │ └─ [not]: integer #58 - │ │ │ ├─ variant_3: struct #65 - │ │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ variant_4: struct #66 - │ │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ variant_5: struct #67 - │ │ │ └─ [notIn]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_1: struct #70 - │ │ └─ [not]: either '_prisma_integer_filter' #69 - │ │ ├─ variant_0: integer #58 - │ │ ├─ variant_1: struct #63 - │ │ │ └─ [equals]: integer #58 - │ │ ├─ variant_2: struct #64 - │ │ │ └─ [not]: integer #58 - │ │ ├─ variant_3: struct #65 - │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ variant_4: struct #66 - │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_5: struct #67 - │ │ └─ [notIn]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ [title]: optional 'optional_197' #198 - │ └─ item: optional '_prisma_string_filter_ex' #53 - │ └─ item: union #50 - │ ├─ variant_0: union '_prisma_string_filter' #48 - │ │ ├─ variant_0: string #32 - │ │ ├─ variant_1: struct #37 - │ │ │ └─ [equals]: string #32 - │ │ ├─ variant_2: struct #38 - │ │ │ └─ [not]: string #32 - │ │ ├─ variant_3: struct #39 - │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_4: struct #40 - │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_5: struct #44 - │ │ │ ├─ [contains]: string #32 - │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #45 - │ │ │ └─ [search]: string #32 - │ │ └─ variant_7: struct #46 - │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ variant_1: struct #49 - │ └─ [not]: union '_prisma_string_filter' #48 - │ ├─ variant_0: string #32 - │ ├─ variant_1: struct #37 - │ │ └─ [equals]: string #32 - │ ├─ variant_2: struct #38 - │ │ └─ [not]: string #32 - │ ├─ variant_3: struct #39 - │ │ └─ [in]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_4: struct #40 - │ │ └─ [notIn]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_5: struct #44 - │ │ ├─ [contains]: string #32 - │ │ └─ [mode]: optional 'optional_42' #43 - │ │ └─ item: string #41 enum{ '"insensitive"' } - │ ├─ variant_6: struct #45 - │ │ └─ [search]: string #32 - │ └─ variant_7: struct #46 - │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ [startsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - └─ variant_2: struct #230 - └─ [none]: optional 'optional_228' #229 - └─ item: struct 'Post_where_excluding_User' #221 - ├─ [author]: optional 'optional_218' #219 - │ └─ item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #217 - │ ├─ [id]: optional 'optional_199' #200 - │ │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ │ └─ item: union #71 - │ │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ │ ├─ variant_0: integer #58 - │ │ │ ├─ variant_1: struct #63 - │ │ │ │ └─ [equals]: integer #58 - │ │ │ ├─ variant_2: struct #64 - │ │ │ │ └─ [not]: integer #58 - │ │ │ ├─ variant_3: struct #65 - │ │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ │ └─ item: integer #58 - │ │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ variant_4: struct #66 - │ │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ variant_5: struct #67 - │ │ │ └─ [notIn]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_1: struct #70 - │ │ └─ [not]: either '_prisma_integer_filter' #69 - │ │ ├─ variant_0: integer #58 - │ │ ├─ variant_1: struct #63 - │ │ │ └─ [equals]: integer #58 - │ │ ├─ variant_2: struct #64 - │ │ │ └─ [not]: integer #58 - │ │ ├─ variant_3: struct #65 - │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ variant_4: struct #66 - │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_5: struct #67 - │ │ └─ [notIn]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ ├─ [name]: optional 'optional_201' #202 - │ │ └─ item: optional '_prisma_string_filter_ex' #53 - │ │ └─ item: union #50 - │ │ ├─ variant_0: union '_prisma_string_filter' #48 - │ │ │ ├─ variant_0: string #32 - │ │ │ ├─ variant_1: struct #37 - │ │ │ │ └─ [equals]: string #32 - │ │ │ ├─ variant_2: struct #38 - │ │ │ │ └─ [not]: string #32 - │ │ │ ├─ variant_3: struct #39 - │ │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ │ └─ item: string #32 - │ │ │ ├─ variant_4: struct #40 - │ │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ │ └─ item: string #32 - │ │ │ ├─ variant_5: struct #44 - │ │ │ │ ├─ [contains]: string #32 - │ │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ │ ├─ variant_6: struct #45 - │ │ │ │ └─ [search]: string #32 - │ │ │ └─ variant_7: struct #46 - │ │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ │ └─ item: string #32 - │ │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ variant_1: struct #49 - │ │ └─ [not]: union '_prisma_string_filter' #48 - │ │ ├─ variant_0: string #32 - │ │ ├─ variant_1: struct #37 - │ │ │ └─ [equals]: string #32 - │ │ ├─ variant_2: struct #38 - │ │ │ └─ [not]: string #32 - │ │ ├─ variant_3: struct #39 - │ │ │ └─ [in]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_4: struct #40 - │ │ │ └─ [notIn]: list 'list_35' #36 - │ │ │ └─ item: string #32 - │ │ ├─ variant_5: struct #44 - │ │ │ ├─ [contains]: string #32 - │ │ │ └─ [mode]: optional 'optional_42' #43 - │ │ │ └─ item: string #41 enum{ '"insensitive"' } - │ │ ├─ variant_6: struct #45 - │ │ │ └─ [search]: string #32 - │ │ └─ variant_7: struct #46 - │ │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ │ └─ item: string #32 - │ │ └─ [startsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ [posts]: optional 'optional_214' #215 - │ └─ item: union #213 - │ ├─ variant_0: struct #206 - │ │ └─ [every]: optional 'optional_204' #205 - │ │ └─ item: &Post_where_excluding_User #203 - │ ├─ variant_1: struct #209 - │ │ └─ [some]: optional 'optional_207' #208 - │ │ └─ item: &Post_where_excluding_User #203 - │ └─ variant_2: struct #212 - │ └─ [none]: optional 'optional_210' #211 - │ └─ item: &Post_where_excluding_User #203 - ├─ [id]: optional 'optional_195' #196 - │ └─ item: optional '_prisma_integer_filter_ex' #74 - │ └─ item: union #71 - │ ├─ variant_0: either '_prisma_integer_filter' #69 - │ │ ├─ variant_0: integer #58 - │ │ ├─ variant_1: struct #63 - │ │ │ └─ [equals]: integer #58 - │ │ ├─ variant_2: struct #64 - │ │ │ └─ [not]: integer #58 - │ │ ├─ variant_3: struct #65 - │ │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ │ └─ item: integer #58 - │ │ │ └─ [lte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ variant_4: struct #66 - │ │ │ └─ [in]: list 'list_61' #62 - │ │ │ └─ item: integer #58 - │ │ └─ variant_5: struct #67 - │ │ └─ [notIn]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ variant_1: struct #70 - │ └─ [not]: either '_prisma_integer_filter' #69 - │ ├─ variant_0: integer #58 - │ ├─ variant_1: struct #63 - │ │ └─ [equals]: integer #58 - │ ├─ variant_2: struct #64 - │ │ └─ [not]: integer #58 - │ ├─ variant_3: struct #65 - │ │ ├─ [gt]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ [gte]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ ├─ [lt]: optional 'optional_59' #60 - │ │ │ └─ item: integer #58 - │ │ └─ [lte]: optional 'optional_59' #60 - │ │ └─ item: integer #58 - │ ├─ variant_4: struct #66 - │ │ └─ [in]: list 'list_61' #62 - │ │ └─ item: integer #58 - │ └─ variant_5: struct #67 - │ └─ [notIn]: list 'list_61' #62 - │ └─ item: integer #58 - └─ [title]: optional 'optional_197' #198 - └─ item: optional '_prisma_string_filter_ex' #53 - └─ item: union #50 - ├─ variant_0: union '_prisma_string_filter' #48 - │ ├─ variant_0: string #32 - │ ├─ variant_1: struct #37 - │ │ └─ [equals]: string #32 - │ ├─ variant_2: struct #38 - │ │ └─ [not]: string #32 - │ ├─ variant_3: struct #39 - │ │ └─ [in]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_4: struct #40 - │ │ └─ [notIn]: list 'list_35' #36 - │ │ └─ item: string #32 - │ ├─ variant_5: struct #44 - │ │ ├─ [contains]: string #32 - │ │ └─ [mode]: optional 'optional_42' #43 - │ │ └─ item: string #41 enum{ '"insensitive"' } - │ ├─ variant_6: struct #45 - │ │ └─ [search]: string #32 - │ └─ variant_7: struct #46 - │ ├─ [endsWith]: optional 'optional_33' #34 - │ │ └─ item: string #32 - │ └─ [startsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - └─ variant_1: struct #49 - └─ [not]: union '_prisma_string_filter' #48 - ├─ variant_0: string #32 - ├─ variant_1: struct #37 - │ └─ [equals]: string #32 - ├─ variant_2: struct #38 - │ └─ [not]: string #32 - ├─ variant_3: struct #39 - │ └─ [in]: list 'list_35' #36 - │ └─ item: string #32 - ├─ variant_4: struct #40 - │ └─ [notIn]: list 'list_35' #36 - │ └─ item: string #32 - ├─ variant_5: struct #44 - │ ├─ [contains]: string #32 - │ └─ [mode]: optional 'optional_42' #43 - │ └─ item: string #41 enum{ '"insensitive"' } - ├─ variant_6: struct #45 - │ └─ [search]: string #32 - └─ variant_7: struct #46 - ├─ [endsWith]: optional 'optional_33' #34 - │ └─ item: string #32 - └─ [startsWith]: optional 'optional_33' #34 - └─ item: string #32 +root: struct #202 +├─ [data]: struct 'User_update_input' #161 +│ ├─ [id]: optional #99 +│ │ └─ item: union #98 +│ │ ├─ variant_0: integer #80 +│ │ ├─ variant_1: struct #94 +│ │ │ └─ [set]: integer #80 +│ │ ├─ variant_2: struct #95 +│ │ │ └─ [multiply]: integer #80 +│ │ ├─ variant_3: struct #96 +│ │ │ └─ [decrement]: integer #80 +│ │ └─ variant_4: struct #97 +│ │ └─ [increment]: integer #80 +│ ├─ [name]: optional #102 +│ │ └─ item: union #101 +│ │ ├─ variant_0: string #81 +│ │ └─ variant_1: struct #100 +│ │ └─ [set]: string #81 +│ └─ [posts]: optional #159 +│ └─ item: union #158 +│ ├─ variant_0: struct #132 +│ │ └─ [create]: union #108 +│ │ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #106 +│ │ │ ├─ [id]: optional #104 +│ │ │ │ └─ item: integer #88 +│ │ │ └─ [title]: string #89 +│ │ └─ variant_1: list #107 +│ │ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #106 +│ │ ├─ [id]: optional #104 +│ │ │ └─ item: integer #88 +│ │ └─ [title]: string #89 +│ ├─ variant_1: struct #133 +│ │ └─ [connect]: union #130 +│ │ ├─ variant_0: struct 'Post_where' #128 +│ │ │ ├─ [author]: optional #126 +│ │ │ │ └─ item: struct 'User_where_excluding_Post' #125 +│ │ │ │ ├─ [id]: optional #113 +│ │ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ │ ├─ [name]: optional #114 +│ │ │ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ │ │ └─ [posts]: optional #123 +│ │ │ │ └─ item: union #122 +│ │ │ │ ├─ variant_0: struct #117 +│ │ │ │ │ └─ [every]: optional #116 +│ │ │ │ │ └─ item: &Post_where #115 +│ │ │ │ ├─ variant_1: struct #119 +│ │ │ │ │ └─ [some]: optional #118 +│ │ │ │ │ └─ item: &Post_where #115 +│ │ │ │ └─ variant_2: struct #121 +│ │ │ │ └─ [none]: optional #120 +│ │ │ │ └─ item: &Post_where #115 +│ │ │ ├─ [id]: optional #110 +│ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ └─ [title]: optional #111 +│ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ └─ variant_1: list #129 +│ │ └─ item: struct 'Post_where' #128 +│ │ ├─ [author]: optional #126 +│ │ │ └─ item: struct 'User_where_excluding_Post' #125 +│ │ │ ├─ [id]: optional #113 +│ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ ├─ [name]: optional #114 +│ │ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ │ └─ [posts]: optional #123 +│ │ │ └─ item: union #122 +│ │ │ ├─ variant_0: struct #117 +│ │ │ │ └─ [every]: optional #116 +│ │ │ │ └─ item: &Post_where #115 +│ │ │ ├─ variant_1: struct #119 +│ │ │ │ └─ [some]: optional #118 +│ │ │ │ └─ item: &Post_where #115 +│ │ │ └─ variant_2: struct #121 +│ │ │ └─ [none]: optional #120 +│ │ │ └─ item: &Post_where #115 +│ │ ├─ [id]: optional #110 +│ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ └─ [title]: optional #111 +│ │ └─ item: &_prisma_string_filter_ex #30 +│ ├─ variant_2: struct #134 +│ │ └─ [connectOrCreate]: struct #131 +│ │ ├─ [create]: union #108 +│ │ │ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #106 +│ │ │ │ ├─ [id]: optional #104 +│ │ │ │ │ └─ item: integer #88 +│ │ │ │ └─ [title]: string #89 +│ │ │ └─ variant_1: list #107 +│ │ │ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #106 +│ │ │ ├─ [id]: optional #104 +│ │ │ │ └─ item: integer #88 +│ │ │ └─ [title]: string #89 +│ │ └─ [where]: union #130 +│ │ ├─ variant_0: struct 'Post_where' #128 +│ │ │ ├─ [author]: optional #126 +│ │ │ │ └─ item: struct 'User_where_excluding_Post' #125 +│ │ │ │ ├─ [id]: optional #113 +│ │ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ │ ├─ [name]: optional #114 +│ │ │ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ │ │ └─ [posts]: optional #123 +│ │ │ │ └─ item: union #122 +│ │ │ │ ├─ variant_0: struct #117 +│ │ │ │ │ └─ [every]: optional #116 +│ │ │ │ │ └─ item: &Post_where #115 +│ │ │ │ ├─ variant_1: struct #119 +│ │ │ │ │ └─ [some]: optional #118 +│ │ │ │ │ └─ item: &Post_where #115 +│ │ │ │ └─ variant_2: struct #121 +│ │ │ │ └─ [none]: optional #120 +│ │ │ │ └─ item: &Post_where #115 +│ │ │ ├─ [id]: optional #110 +│ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ └─ [title]: optional #111 +│ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ └─ variant_1: list #129 +│ │ └─ item: struct 'Post_where' #128 +│ │ ├─ [author]: optional #126 +│ │ │ └─ item: struct 'User_where_excluding_Post' #125 +│ │ │ ├─ [id]: optional #113 +│ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ ├─ [name]: optional #114 +│ │ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ │ └─ [posts]: optional #123 +│ │ │ └─ item: union #122 +│ │ │ ├─ variant_0: struct #117 +│ │ │ │ └─ [every]: optional #116 +│ │ │ │ └─ item: &Post_where #115 +│ │ │ ├─ variant_1: struct #119 +│ │ │ │ └─ [some]: optional #118 +│ │ │ │ └─ item: &Post_where #115 +│ │ │ └─ variant_2: struct #121 +│ │ │ └─ [none]: optional #120 +│ │ │ └─ item: &Post_where #115 +│ │ ├─ [id]: optional #110 +│ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ └─ [title]: optional #111 +│ │ └─ item: &_prisma_string_filter_ex #30 +│ ├─ variant_3: struct #147 +│ │ └─ [update]: struct 'Post_update_input_excluding_rel_Post_User' #146 +│ │ ├─ [id]: optional #141 +│ │ │ └─ item: union #140 +│ │ │ ├─ variant_0: integer #88 +│ │ │ ├─ variant_1: struct #136 +│ │ │ │ └─ [set]: integer #88 +│ │ │ ├─ variant_2: struct #137 +│ │ │ │ └─ [multiply]: integer #88 +│ │ │ ├─ variant_3: struct #138 +│ │ │ │ └─ [decrement]: integer #88 +│ │ │ └─ variant_4: struct #139 +│ │ │ └─ [increment]: integer #88 +│ │ └─ [title]: optional #144 +│ │ └─ item: union #143 +│ │ ├─ variant_0: string #89 +│ │ └─ variant_1: struct #142 +│ │ └─ [set]: string #89 +│ ├─ variant_4: struct #150 +│ │ └─ [updateMany]: struct #149 +│ │ ├─ [data]: struct 'Post_update_input_excluding_rel_Post_User' #146 +│ │ │ ├─ [id]: optional #141 +│ │ │ │ └─ item: union #140 +│ │ │ │ ├─ variant_0: integer #88 +│ │ │ │ ├─ variant_1: struct #136 +│ │ │ │ │ └─ [set]: integer #88 +│ │ │ │ ├─ variant_2: struct #137 +│ │ │ │ │ └─ [multiply]: integer #88 +│ │ │ │ ├─ variant_3: struct #138 +│ │ │ │ │ └─ [decrement]: integer #88 +│ │ │ │ └─ variant_4: struct #139 +│ │ │ │ └─ [increment]: integer #88 +│ │ │ └─ [title]: optional #144 +│ │ │ └─ item: union #143 +│ │ │ ├─ variant_0: string #89 +│ │ │ └─ variant_1: struct #142 +│ │ │ └─ [set]: string #89 +│ │ └─ [where]: optional #148 +│ │ └─ item: union #130 +│ │ ├─ variant_0: struct 'Post_where' #128 +│ │ │ ├─ [author]: optional #126 +│ │ │ │ └─ item: struct 'User_where_excluding_Post' #125 +│ │ │ │ ├─ [id]: optional #113 +│ │ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ │ ├─ [name]: optional #114 +│ │ │ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ │ │ └─ [posts]: optional #123 +│ │ │ │ └─ item: union #122 +│ │ │ │ ├─ variant_0: struct #117 +│ │ │ │ │ └─ [every]: optional #116 +│ │ │ │ │ └─ item: &Post_where #115 +│ │ │ │ ├─ variant_1: struct #119 +│ │ │ │ │ └─ [some]: optional #118 +│ │ │ │ │ └─ item: &Post_where #115 +│ │ │ │ └─ variant_2: struct #121 +│ │ │ │ └─ [none]: optional #120 +│ │ │ │ └─ item: &Post_where #115 +│ │ │ ├─ [id]: optional #110 +│ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ └─ [title]: optional #111 +│ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ └─ variant_1: list #129 +│ │ └─ item: struct 'Post_where' #128 +│ │ ├─ [author]: optional #126 +│ │ │ └─ item: struct 'User_where_excluding_Post' #125 +│ │ │ ├─ [id]: optional #113 +│ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ ├─ [name]: optional #114 +│ │ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ │ └─ [posts]: optional #123 +│ │ │ └─ item: union #122 +│ │ │ ├─ variant_0: struct #117 +│ │ │ │ └─ [every]: optional #116 +│ │ │ │ └─ item: &Post_where #115 +│ │ │ ├─ variant_1: struct #119 +│ │ │ │ └─ [some]: optional #118 +│ │ │ │ └─ item: &Post_where #115 +│ │ │ └─ variant_2: struct #121 +│ │ │ └─ [none]: optional #120 +│ │ │ └─ item: &Post_where #115 +│ │ ├─ [id]: optional #110 +│ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ └─ [title]: optional #111 +│ │ └─ item: &_prisma_string_filter_ex #30 +│ ├─ variant_5: struct #153 +│ │ └─ [deleteMany]: struct #152 +│ │ └─ [where]: optional #151 +│ │ └─ item: union #130 +│ │ ├─ variant_0: struct 'Post_where' #128 +│ │ │ ├─ [author]: optional #126 +│ │ │ │ └─ item: struct 'User_where_excluding_Post' #125 +│ │ │ │ ├─ [id]: optional #113 +│ │ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ │ ├─ [name]: optional #114 +│ │ │ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ │ │ └─ [posts]: optional #123 +│ │ │ │ └─ item: union #122 +│ │ │ │ ├─ variant_0: struct #117 +│ │ │ │ │ └─ [every]: optional #116 +│ │ │ │ │ └─ item: &Post_where #115 +│ │ │ │ ├─ variant_1: struct #119 +│ │ │ │ │ └─ [some]: optional #118 +│ │ │ │ │ └─ item: &Post_where #115 +│ │ │ │ └─ variant_2: struct #121 +│ │ │ │ └─ [none]: optional #120 +│ │ │ │ └─ item: &Post_where #115 +│ │ │ ├─ [id]: optional #110 +│ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ └─ [title]: optional #111 +│ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ └─ variant_1: list #129 +│ │ └─ item: struct 'Post_where' #128 +│ │ ├─ [author]: optional #126 +│ │ │ └─ item: struct 'User_where_excluding_Post' #125 +│ │ │ ├─ [id]: optional #113 +│ │ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ │ ├─ [name]: optional #114 +│ │ │ │ └─ item: &_prisma_string_filter_ex #30 +│ │ │ └─ [posts]: optional #123 +│ │ │ └─ item: union #122 +│ │ │ ├─ variant_0: struct #117 +│ │ │ │ └─ [every]: optional #116 +│ │ │ │ └─ item: &Post_where #115 +│ │ │ ├─ variant_1: struct #119 +│ │ │ │ └─ [some]: optional #118 +│ │ │ │ └─ item: &Post_where #115 +│ │ │ └─ variant_2: struct #121 +│ │ │ └─ [none]: optional #120 +│ │ │ └─ item: &Post_where #115 +│ │ ├─ [id]: optional #110 +│ │ │ └─ item: &_prisma_integer_filter_ex #52 +│ │ └─ [title]: optional #111 +│ │ └─ item: &_prisma_string_filter_ex #30 +│ └─ variant_6: struct #157 +│ └─ [createMany]: optional #156 +│ └─ item: struct #155 +│ └─ [data]: list #154 +│ └─ item: union #108 +│ ├─ variant_0: struct 'Post_create_input_excluding_rel_Post_User' #106 +│ │ ├─ [id]: optional #104 +│ │ │ └─ item: integer #88 +│ │ └─ [title]: string #89 +│ └─ variant_1: list #107 +│ └─ item: struct 'Post_create_input_excluding_rel_Post_User' #106 +│ ├─ [id]: optional #104 +│ │ └─ item: integer #88 +│ └─ [title]: string #89 +└─ [where]: struct 'User_query_where_unique_input' #201 + ├─ [AND]: optional #198 + │ └─ item: list #197 + │ └─ item: &User_query_where_unique_input #196 + ├─ [NOT]: optional #199 + │ └─ item: &User_query_where_unique_input #196 + ├─ [OR]: optional #198 + │ └─ item: list #197 + │ └─ item: &User_query_where_unique_input #196 + ├─ [id]: optional #164 + │ └─ item: &_prisma_integer_filter_ex #52 + ├─ [name]: optional #165 + │ └─ item: &_prisma_string_filter_ex #30 + └─ [posts]: optional #193 + └─ item: union #192 + ├─ variant_0: struct #187 + │ └─ [every]: optional #186 + │ └─ item: struct 'Post_where_excluding_User' #185 + │ ├─ [author]: optional #183 + │ │ └─ item: struct 'User_where_excluding_Post_and_User' #182 + │ │ ├─ [id]: optional #170 + │ │ │ └─ item: &_prisma_integer_filter_ex #52 + │ │ ├─ [name]: optional #171 + │ │ │ └─ item: &_prisma_string_filter_ex #30 + │ │ └─ [posts]: optional #180 + │ │ └─ item: union #179 + │ │ ├─ variant_0: struct #174 + │ │ │ └─ [every]: optional #173 + │ │ │ └─ item: &Post_where_excluding_User #172 + │ │ ├─ variant_1: struct #176 + │ │ │ └─ [some]: optional #175 + │ │ │ └─ item: &Post_where_excluding_User #172 + │ │ └─ variant_2: struct #178 + │ │ └─ [none]: optional #177 + │ │ └─ item: &Post_where_excluding_User #172 + │ ├─ [id]: optional #167 + │ │ └─ item: &_prisma_integer_filter_ex #52 + │ └─ [title]: optional #168 + │ └─ item: &_prisma_string_filter_ex #30 + ├─ variant_1: struct #189 + │ └─ [some]: optional #188 + │ └─ item: struct 'Post_where_excluding_User' #185 + │ ├─ [author]: optional #183 + │ │ └─ item: struct 'User_where_excluding_Post_and_User' #182 + │ │ ├─ [id]: optional #170 + │ │ │ └─ item: &_prisma_integer_filter_ex #52 + │ │ ├─ [name]: optional #171 + │ │ │ └─ item: &_prisma_string_filter_ex #30 + │ │ └─ [posts]: optional #180 + │ │ └─ item: union #179 + │ │ ├─ variant_0: struct #174 + │ │ │ └─ [every]: optional #173 + │ │ │ └─ item: &Post_where_excluding_User #172 + │ │ ├─ variant_1: struct #176 + │ │ │ └─ [some]: optional #175 + │ │ │ └─ item: &Post_where_excluding_User #172 + │ │ └─ variant_2: struct #178 + │ │ └─ [none]: optional #177 + │ │ └─ item: &Post_where_excluding_User #172 + │ ├─ [id]: optional #167 + │ │ └─ item: &_prisma_integer_filter_ex #52 + │ └─ [title]: optional #168 + │ └─ item: &_prisma_string_filter_ex #30 + └─ variant_2: struct #191 + └─ [none]: optional #190 + └─ item: struct 'Post_where_excluding_User' #185 + ├─ [author]: optional #183 + │ └─ item: struct 'User_where_excluding_Post_and_User' #182 + │ ├─ [id]: optional #170 + │ │ └─ item: &_prisma_integer_filter_ex #52 + │ ├─ [name]: optional #171 + │ │ └─ item: &_prisma_string_filter_ex #30 + │ └─ [posts]: optional #180 + │ └─ item: union #179 + │ ├─ variant_0: struct #174 + │ │ └─ [every]: optional #173 + │ │ └─ item: &Post_where_excluding_User #172 + │ ├─ variant_1: struct #176 + │ │ └─ [some]: optional #175 + │ │ └─ item: &Post_where_excluding_User #172 + │ └─ variant_2: struct #178 + │ └─ [none]: optional #177 + │ └─ item: &Post_where_excluding_User #172 + ├─ [id]: optional #167 + │ └─ item: &_prisma_integer_filter_ex #52 + └─ [title]: optional #168 + └─ item: &_prisma_string_filter_ex #30 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__where___test__where Post.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__where___test__where Post.snap index 1a01a72bc4..a8e5e2db9a 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__where___test__where Post.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__where___test__where Post.snap @@ -2,503 +2,43 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/where_.rs expression: "tree::print(context.generate(&Where::new(post))?)" --- -root: struct 'Post_where' #154 -├── [author]: optional 'optional_151' #152 -│ └── item: struct 'User_where_excluding_Post' #150 -│ ├── [id]: optional 'optional_124' #125 -│ │ └── item: optional '_prisma_integer_filter_ex' #53 -│ │ └── item: union #50 -│ │ ├── variant_0: either '_prisma_integer_filter' #48 -│ │ │ ├── variant_0: integer #37 -│ │ │ ├── variant_1: struct #42 -│ │ │ │ └── [equals]: integer #37 -│ │ │ ├── variant_2: struct #43 -│ │ │ │ └── [not]: integer #37 -│ │ │ ├── variant_3: struct #44 -│ │ │ │ ├── [gt]: optional 'optional_38' #39 -│ │ │ │ │ └── item: integer #37 -│ │ │ │ ├── [gte]: optional 'optional_38' #39 -│ │ │ │ │ └── item: integer #37 -│ │ │ │ ├── [lt]: optional 'optional_38' #39 -│ │ │ │ │ └── item: integer #37 -│ │ │ │ └── [lte]: optional 'optional_38' #39 -│ │ │ │ └── item: integer #37 -│ │ │ ├── variant_4: struct #45 -│ │ │ │ └── [in]: list 'list_40' #41 -│ │ │ │ └── item: integer #37 -│ │ │ └── variant_5: struct #46 -│ │ │ └── [notIn]: list 'list_40' #41 -│ │ │ └── item: integer #37 -│ │ └── variant_1: struct #49 -│ │ └── [not]: either '_prisma_integer_filter' #48 -│ │ ├── variant_0: integer #37 -│ │ ├── variant_1: struct #42 -│ │ │ └── [equals]: integer #37 -│ │ ├── variant_2: struct #43 -│ │ │ └── [not]: integer #37 -│ │ ├── variant_3: struct #44 -│ │ │ ├── [gt]: optional 'optional_38' #39 -│ │ │ │ └── item: integer #37 -│ │ │ ├── [gte]: optional 'optional_38' #39 -│ │ │ │ └── item: integer #37 -│ │ │ ├── [lt]: optional 'optional_38' #39 -│ │ │ │ └── item: integer #37 -│ │ │ └── [lte]: optional 'optional_38' #39 -│ │ │ └── item: integer #37 -│ │ ├── variant_4: struct #45 -│ │ │ └── [in]: list 'list_40' #41 -│ │ │ └── item: integer #37 -│ │ └── variant_5: struct #46 -│ │ └── [notIn]: list 'list_40' #41 -│ │ └── item: integer #37 -│ ├── [name]: optional 'optional_126' #127 -│ │ └── item: optional '_prisma_string_filter_ex' #32 -│ │ └── item: union #29 -│ │ ├── variant_0: union '_prisma_string_filter' #27 -│ │ │ ├── variant_0: string #11 -│ │ │ ├── variant_1: struct #16 -│ │ │ │ └── [equals]: string #11 -│ │ │ ├── variant_2: struct #17 -│ │ │ │ └── [not]: string #11 -│ │ │ ├── variant_3: struct #18 -│ │ │ │ └── [in]: list 'list_14' #15 -│ │ │ │ └── item: string #11 -│ │ │ ├── variant_4: struct #19 -│ │ │ │ └── [notIn]: list 'list_14' #15 -│ │ │ │ └── item: string #11 -│ │ │ ├── variant_5: struct #23 -│ │ │ │ ├── [contains]: string #11 -│ │ │ │ └── [mode]: optional 'optional_21' #22 -│ │ │ │ └── item: string #20 enum{ '"insensitive"' } -│ │ │ ├── variant_6: struct #24 -│ │ │ │ └── [search]: string #11 -│ │ │ └── variant_7: struct #25 -│ │ │ ├── [endsWith]: optional 'optional_12' #13 -│ │ │ │ └── item: string #11 -│ │ │ └── [startsWith]: optional 'optional_12' #13 -│ │ │ └── item: string #11 -│ │ └── variant_1: struct #28 -│ │ └── [not]: union '_prisma_string_filter' #27 -│ │ ├── variant_0: string #11 -│ │ ├── variant_1: struct #16 -│ │ │ └── [equals]: string #11 -│ │ ├── variant_2: struct #17 -│ │ │ └── [not]: string #11 -│ │ ├── variant_3: struct #18 -│ │ │ └── [in]: list 'list_14' #15 -│ │ │ └── item: string #11 -│ │ ├── variant_4: struct #19 -│ │ │ └── [notIn]: list 'list_14' #15 -│ │ │ └── item: string #11 -│ │ ├── variant_5: struct #23 -│ │ │ ├── [contains]: string #11 -│ │ │ └── [mode]: optional 'optional_21' #22 -│ │ │ └── item: string #20 enum{ '"insensitive"' } -│ │ ├── variant_6: struct #24 -│ │ │ └── [search]: string #11 -│ │ └── variant_7: struct #25 -│ │ ├── [endsWith]: optional 'optional_12' #13 -│ │ │ └── item: string #11 -│ │ └── [startsWith]: optional 'optional_12' #13 -│ │ └── item: string #11 -│ └── [posts]: optional 'optional_147' #148 -│ └── item: union #146 -│ ├── variant_0: struct #139 -│ │ └── [every]: optional 'optional_137' #138 -│ │ └── item: struct 'Post_where_excluding_Post_and_User_where_excluding_Post' #136 -│ │ ├── [author]: optional 'optional_133' #134 -│ │ │ └── item: &User_where_excluding_Post #132 -│ │ ├── [id]: optional 'optional_128' #129 -│ │ │ └── item: optional '_prisma_integer_filter_ex' #53 -│ │ │ └── item: union #50 -│ │ │ ├── variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ ├── variant_0: integer #37 -│ │ │ │ ├── variant_1: struct #42 -│ │ │ │ │ └── [equals]: integer #37 -│ │ │ │ ├── variant_2: struct #43 -│ │ │ │ │ └── [not]: integer #37 -│ │ │ │ ├── variant_3: struct #44 -│ │ │ │ │ ├── [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └── item: integer #37 -│ │ │ │ │ ├── [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └── item: integer #37 -│ │ │ │ │ ├── [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └── item: integer #37 -│ │ │ │ │ └── [lte]: optional 'optional_38' #39 -│ │ │ │ │ └── item: integer #37 -│ │ │ │ ├── variant_4: struct #45 -│ │ │ │ │ └── [in]: list 'list_40' #41 -│ │ │ │ │ └── item: integer #37 -│ │ │ │ └── variant_5: struct #46 -│ │ │ │ └── [notIn]: list 'list_40' #41 -│ │ │ │ └── item: integer #37 -│ │ │ └── variant_1: struct #49 -│ │ │ └── [not]: either '_prisma_integer_filter' #48 -│ │ │ ├── variant_0: integer #37 -│ │ │ ├── variant_1: struct #42 -│ │ │ │ └── [equals]: integer #37 -│ │ │ ├── variant_2: struct #43 -│ │ │ │ └── [not]: integer #37 -│ │ │ ├── variant_3: struct #44 -│ │ │ │ ├── [gt]: optional 'optional_38' #39 -│ │ │ │ │ └── item: integer #37 -│ │ │ │ ├── [gte]: optional 'optional_38' #39 -│ │ │ │ │ └── item: integer #37 -│ │ │ │ ├── [lt]: optional 'optional_38' #39 -│ │ │ │ │ └── item: integer #37 -│ │ │ │ └── [lte]: optional 'optional_38' #39 -│ │ │ │ └── item: integer #37 -│ │ │ ├── variant_4: struct #45 -│ │ │ │ └── [in]: list 'list_40' #41 -│ │ │ │ └── item: integer #37 -│ │ │ └── variant_5: struct #46 -│ │ │ └── [notIn]: list 'list_40' #41 -│ │ │ └── item: integer #37 -│ │ └── [title]: optional 'optional_130' #131 -│ │ └── item: optional '_prisma_string_filter_ex' #32 -│ │ └── item: union #29 -│ │ ├── variant_0: union '_prisma_string_filter' #27 -│ │ │ ├── variant_0: string #11 -│ │ │ ├── variant_1: struct #16 -│ │ │ │ └── [equals]: string #11 -│ │ │ ├── variant_2: struct #17 -│ │ │ │ └── [not]: string #11 -│ │ │ ├── variant_3: struct #18 -│ │ │ │ └── [in]: list 'list_14' #15 -│ │ │ │ └── item: string #11 -│ │ │ ├── variant_4: struct #19 -│ │ │ │ └── [notIn]: list 'list_14' #15 -│ │ │ │ └── item: string #11 -│ │ │ ├── variant_5: struct #23 -│ │ │ │ ├── [contains]: string #11 -│ │ │ │ └── [mode]: optional 'optional_21' #22 -│ │ │ │ └── item: string #20 enum{ '"insensitive"' } -│ │ │ ├── variant_6: struct #24 -│ │ │ │ └── [search]: string #11 -│ │ │ └── variant_7: struct #25 -│ │ │ ├── [endsWith]: optional 'optional_12' #13 -│ │ │ │ └── item: string #11 -│ │ │ └── [startsWith]: optional 'optional_12' #13 -│ │ │ └── item: string #11 -│ │ └── variant_1: struct #28 -│ │ └── [not]: union '_prisma_string_filter' #27 -│ │ ├── variant_0: string #11 -│ │ ├── variant_1: struct #16 -│ │ │ └── [equals]: string #11 -│ │ ├── variant_2: struct #17 -│ │ │ └── [not]: string #11 -│ │ ├── variant_3: struct #18 -│ │ │ └── [in]: list 'list_14' #15 -│ │ │ └── item: string #11 -│ │ ├── variant_4: struct #19 -│ │ │ └── [notIn]: list 'list_14' #15 -│ │ │ └── item: string #11 -│ │ ├── variant_5: struct #23 -│ │ │ ├── [contains]: string #11 -│ │ │ └── [mode]: optional 'optional_21' #22 -│ │ │ └── item: string #20 enum{ '"insensitive"' } -│ │ ├── variant_6: struct #24 -│ │ │ └── [search]: string #11 -│ │ └── variant_7: struct #25 -│ │ ├── [endsWith]: optional 'optional_12' #13 -│ │ │ └── item: string #11 -│ │ └── [startsWith]: optional 'optional_12' #13 -│ │ └── item: string #11 -│ ├── variant_1: struct #142 -│ │ └── [some]: optional 'optional_140' #141 -│ │ └── item: struct 'Post_where_excluding_Post_and_User_where_excluding_Post' #136 -│ │ ├── [author]: optional 'optional_133' #134 -│ │ │ └── item: &User_where_excluding_Post #132 -│ │ ├── [id]: optional 'optional_128' #129 -│ │ │ └── item: optional '_prisma_integer_filter_ex' #53 -│ │ │ └── item: union #50 -│ │ │ ├── variant_0: either '_prisma_integer_filter' #48 -│ │ │ │ ├── variant_0: integer #37 -│ │ │ │ ├── variant_1: struct #42 -│ │ │ │ │ └── [equals]: integer #37 -│ │ │ │ ├── variant_2: struct #43 -│ │ │ │ │ └── [not]: integer #37 -│ │ │ │ ├── variant_3: struct #44 -│ │ │ │ │ ├── [gt]: optional 'optional_38' #39 -│ │ │ │ │ │ └── item: integer #37 -│ │ │ │ │ ├── [gte]: optional 'optional_38' #39 -│ │ │ │ │ │ └── item: integer #37 -│ │ │ │ │ ├── [lt]: optional 'optional_38' #39 -│ │ │ │ │ │ └── item: integer #37 -│ │ │ │ │ └── [lte]: optional 'optional_38' #39 -│ │ │ │ │ └── item: integer #37 -│ │ │ │ ├── variant_4: struct #45 -│ │ │ │ │ └── [in]: list 'list_40' #41 -│ │ │ │ │ └── item: integer #37 -│ │ │ │ └── variant_5: struct #46 -│ │ │ │ └── [notIn]: list 'list_40' #41 -│ │ │ │ └── item: integer #37 -│ │ │ └── variant_1: struct #49 -│ │ │ └── [not]: either '_prisma_integer_filter' #48 -│ │ │ ├── variant_0: integer #37 -│ │ │ ├── variant_1: struct #42 -│ │ │ │ └── [equals]: integer #37 -│ │ │ ├── variant_2: struct #43 -│ │ │ │ └── [not]: integer #37 -│ │ │ ├── variant_3: struct #44 -│ │ │ │ ├── [gt]: optional 'optional_38' #39 -│ │ │ │ │ └── item: integer #37 -│ │ │ │ ├── [gte]: optional 'optional_38' #39 -│ │ │ │ │ └── item: integer #37 -│ │ │ │ ├── [lt]: optional 'optional_38' #39 -│ │ │ │ │ └── item: integer #37 -│ │ │ │ └── [lte]: optional 'optional_38' #39 -│ │ │ │ └── item: integer #37 -│ │ │ ├── variant_4: struct #45 -│ │ │ │ └── [in]: list 'list_40' #41 -│ │ │ │ └── item: integer #37 -│ │ │ └── variant_5: struct #46 -│ │ │ └── [notIn]: list 'list_40' #41 -│ │ │ └── item: integer #37 -│ │ └── [title]: optional 'optional_130' #131 -│ │ └── item: optional '_prisma_string_filter_ex' #32 -│ │ └── item: union #29 -│ │ ├── variant_0: union '_prisma_string_filter' #27 -│ │ │ ├── variant_0: string #11 -│ │ │ ├── variant_1: struct #16 -│ │ │ │ └── [equals]: string #11 -│ │ │ ├── variant_2: struct #17 -│ │ │ │ └── [not]: string #11 -│ │ │ ├── variant_3: struct #18 -│ │ │ │ └── [in]: list 'list_14' #15 -│ │ │ │ └── item: string #11 -│ │ │ ├── variant_4: struct #19 -│ │ │ │ └── [notIn]: list 'list_14' #15 -│ │ │ │ └── item: string #11 -│ │ │ ├── variant_5: struct #23 -│ │ │ │ ├── [contains]: string #11 -│ │ │ │ └── [mode]: optional 'optional_21' #22 -│ │ │ │ └── item: string #20 enum{ '"insensitive"' } -│ │ │ ├── variant_6: struct #24 -│ │ │ │ └── [search]: string #11 -│ │ │ └── variant_7: struct #25 -│ │ │ ├── [endsWith]: optional 'optional_12' #13 -│ │ │ │ └── item: string #11 -│ │ │ └── [startsWith]: optional 'optional_12' #13 -│ │ │ └── item: string #11 -│ │ └── variant_1: struct #28 -│ │ └── [not]: union '_prisma_string_filter' #27 -│ │ ├── variant_0: string #11 -│ │ ├── variant_1: struct #16 -│ │ │ └── [equals]: string #11 -│ │ ├── variant_2: struct #17 -│ │ │ └── [not]: string #11 -│ │ ├── variant_3: struct #18 -│ │ │ └── [in]: list 'list_14' #15 -│ │ │ └── item: string #11 -│ │ ├── variant_4: struct #19 -│ │ │ └── [notIn]: list 'list_14' #15 -│ │ │ └── item: string #11 -│ │ ├── variant_5: struct #23 -│ │ │ ├── [contains]: string #11 -│ │ │ └── [mode]: optional 'optional_21' #22 -│ │ │ └── item: string #20 enum{ '"insensitive"' } -│ │ ├── variant_6: struct #24 -│ │ │ └── [search]: string #11 -│ │ └── variant_7: struct #25 -│ │ ├── [endsWith]: optional 'optional_12' #13 -│ │ │ └── item: string #11 -│ │ └── [startsWith]: optional 'optional_12' #13 -│ │ └── item: string #11 -│ └── variant_2: struct #145 -│ └── [none]: optional 'optional_143' #144 -│ └── item: struct 'Post_where_excluding_Post_and_User_where_excluding_Post' #136 -│ ├── [author]: optional 'optional_133' #134 -│ │ └── item: &User_where_excluding_Post #132 -│ ├── [id]: optional 'optional_128' #129 -│ │ └── item: optional '_prisma_integer_filter_ex' #53 -│ │ └── item: union #50 -│ │ ├── variant_0: either '_prisma_integer_filter' #48 -│ │ │ ├── variant_0: integer #37 -│ │ │ ├── variant_1: struct #42 -│ │ │ │ └── [equals]: integer #37 -│ │ │ ├── variant_2: struct #43 -│ │ │ │ └── [not]: integer #37 -│ │ │ ├── variant_3: struct #44 -│ │ │ │ ├── [gt]: optional 'optional_38' #39 -│ │ │ │ │ └── item: integer #37 -│ │ │ │ ├── [gte]: optional 'optional_38' #39 -│ │ │ │ │ └── item: integer #37 -│ │ │ │ ├── [lt]: optional 'optional_38' #39 -│ │ │ │ │ └── item: integer #37 -│ │ │ │ └── [lte]: optional 'optional_38' #39 -│ │ │ │ └── item: integer #37 -│ │ │ ├── variant_4: struct #45 -│ │ │ │ └── [in]: list 'list_40' #41 -│ │ │ │ └── item: integer #37 -│ │ │ └── variant_5: struct #46 -│ │ │ └── [notIn]: list 'list_40' #41 -│ │ │ └── item: integer #37 -│ │ └── variant_1: struct #49 -│ │ └── [not]: either '_prisma_integer_filter' #48 -│ │ ├── variant_0: integer #37 -│ │ ├── variant_1: struct #42 -│ │ │ └── [equals]: integer #37 -│ │ ├── variant_2: struct #43 -│ │ │ └── [not]: integer #37 -│ │ ├── variant_3: struct #44 -│ │ │ ├── [gt]: optional 'optional_38' #39 -│ │ │ │ └── item: integer #37 -│ │ │ ├── [gte]: optional 'optional_38' #39 -│ │ │ │ └── item: integer #37 -│ │ │ ├── [lt]: optional 'optional_38' #39 -│ │ │ │ └── item: integer #37 -│ │ │ └── [lte]: optional 'optional_38' #39 -│ │ │ └── item: integer #37 -│ │ ├── variant_4: struct #45 -│ │ │ └── [in]: list 'list_40' #41 -│ │ │ └── item: integer #37 -│ │ └── variant_5: struct #46 -│ │ └── [notIn]: list 'list_40' #41 -│ │ └── item: integer #37 -│ └── [title]: optional 'optional_130' #131 -│ └── item: optional '_prisma_string_filter_ex' #32 -│ └── item: union #29 -│ ├── variant_0: union '_prisma_string_filter' #27 -│ │ ├── variant_0: string #11 -│ │ ├── variant_1: struct #16 -│ │ │ └── [equals]: string #11 -│ │ ├── variant_2: struct #17 -│ │ │ └── [not]: string #11 -│ │ ├── variant_3: struct #18 -│ │ │ └── [in]: list 'list_14' #15 -│ │ │ └── item: string #11 -│ │ ├── variant_4: struct #19 -│ │ │ └── [notIn]: list 'list_14' #15 -│ │ │ └── item: string #11 -│ │ ├── variant_5: struct #23 -│ │ │ ├── [contains]: string #11 -│ │ │ └── [mode]: optional 'optional_21' #22 -│ │ │ └── item: string #20 enum{ '"insensitive"' } -│ │ ├── variant_6: struct #24 -│ │ │ └── [search]: string #11 -│ │ └── variant_7: struct #25 -│ │ ├── [endsWith]: optional 'optional_12' #13 -│ │ │ └── item: string #11 -│ │ └── [startsWith]: optional 'optional_12' #13 -│ │ └── item: string #11 -│ └── variant_1: struct #28 -│ └── [not]: union '_prisma_string_filter' #27 -│ ├── variant_0: string #11 -│ ├── variant_1: struct #16 -│ │ └── [equals]: string #11 -│ ├── variant_2: struct #17 -│ │ └── [not]: string #11 -│ ├── variant_3: struct #18 -│ │ └── [in]: list 'list_14' #15 -│ │ └── item: string #11 -│ ├── variant_4: struct #19 -│ │ └── [notIn]: list 'list_14' #15 -│ │ └── item: string #11 -│ ├── variant_5: struct #23 -│ │ ├── [contains]: string #11 -│ │ └── [mode]: optional 'optional_21' #22 -│ │ └── item: string #20 enum{ '"insensitive"' } -│ ├── variant_6: struct #24 -│ │ └── [search]: string #11 -│ └── variant_7: struct #25 -│ ├── [endsWith]: optional 'optional_12' #13 -│ │ └── item: string #11 -│ └── [startsWith]: optional 'optional_12' #13 -│ └── item: string #11 -├── [id]: optional 'optional_120' #121 -│ └── item: optional '_prisma_integer_filter_ex' #53 -│ └── item: union #50 -│ ├── variant_0: either '_prisma_integer_filter' #48 -│ │ ├── variant_0: integer #37 -│ │ ├── variant_1: struct #42 -│ │ │ └── [equals]: integer #37 -│ │ ├── variant_2: struct #43 -│ │ │ └── [not]: integer #37 -│ │ ├── variant_3: struct #44 -│ │ │ ├── [gt]: optional 'optional_38' #39 -│ │ │ │ └── item: integer #37 -│ │ │ ├── [gte]: optional 'optional_38' #39 -│ │ │ │ └── item: integer #37 -│ │ │ ├── [lt]: optional 'optional_38' #39 -│ │ │ │ └── item: integer #37 -│ │ │ └── [lte]: optional 'optional_38' #39 -│ │ │ └── item: integer #37 -│ │ ├── variant_4: struct #45 -│ │ │ └── [in]: list 'list_40' #41 -│ │ │ └── item: integer #37 -│ │ └── variant_5: struct #46 -│ │ └── [notIn]: list 'list_40' #41 -│ │ └── item: integer #37 -│ └── variant_1: struct #49 -│ └── [not]: either '_prisma_integer_filter' #48 -│ ├── variant_0: integer #37 -│ ├── variant_1: struct #42 -│ │ └── [equals]: integer #37 -│ ├── variant_2: struct #43 -│ │ └── [not]: integer #37 -│ ├── variant_3: struct #44 -│ │ ├── [gt]: optional 'optional_38' #39 -│ │ │ └── item: integer #37 -│ │ ├── [gte]: optional 'optional_38' #39 -│ │ │ └── item: integer #37 -│ │ ├── [lt]: optional 'optional_38' #39 -│ │ │ └── item: integer #37 -│ │ └── [lte]: optional 'optional_38' #39 -│ │ └── item: integer #37 -│ ├── variant_4: struct #45 -│ │ └── [in]: list 'list_40' #41 -│ │ └── item: integer #37 -│ └── variant_5: struct #46 -│ └── [notIn]: list 'list_40' #41 -│ └── item: integer #37 -└── [title]: optional 'optional_122' #123 - └── item: optional '_prisma_string_filter_ex' #32 - └── item: union #29 - ├── variant_0: union '_prisma_string_filter' #27 - │ ├── variant_0: string #11 - │ ├── variant_1: struct #16 - │ │ └── [equals]: string #11 - │ ├── variant_2: struct #17 - │ │ └── [not]: string #11 - │ ├── variant_3: struct #18 - │ │ └── [in]: list 'list_14' #15 - │ │ └── item: string #11 - │ ├── variant_4: struct #19 - │ │ └── [notIn]: list 'list_14' #15 - │ │ └── item: string #11 - │ ├── variant_5: struct #23 - │ │ ├── [contains]: string #11 - │ │ └── [mode]: optional 'optional_21' #22 - │ │ └── item: string #20 enum{ '"insensitive"' } - │ ├── variant_6: struct #24 - │ │ └── [search]: string #11 - │ └── variant_7: struct #25 - │ ├── [endsWith]: optional 'optional_12' #13 - │ │ └── item: string #11 - │ └── [startsWith]: optional 'optional_12' #13 - │ └── item: string #11 - └── variant_1: struct #28 - └── [not]: union '_prisma_string_filter' #27 - ├── variant_0: string #11 - ├── variant_1: struct #16 - │ └── [equals]: string #11 - ├── variant_2: struct #17 - │ └── [not]: string #11 - ├── variant_3: struct #18 - │ └── [in]: list 'list_14' #15 - │ └── item: string #11 - ├── variant_4: struct #19 - │ └── [notIn]: list 'list_14' #15 - │ └── item: string #11 - ├── variant_5: struct #23 - │ ├── [contains]: string #11 - │ └── [mode]: optional 'optional_21' #22 - │ └── item: string #20 enum{ '"insensitive"' } - ├── variant_6: struct #24 - │ └── [search]: string #11 - └── variant_7: struct #25 - ├── [endsWith]: optional 'optional_12' #13 - │ └── item: string #11 - └── [startsWith]: optional 'optional_12' #13 - └── item: string #11 +root: struct 'Post_where' #125 +├── [author]: optional #123 +│ └── item: struct 'User_where_excluding_Post' #122 +│ ├── [id]: optional #104 +│ │ └── item: &_prisma_integer_filter_ex #33 +│ ├── [name]: optional #105 +│ │ └── item: &_prisma_string_filter_ex #11 +│ └── [posts]: optional #120 +│ └── item: union #119 +│ ├── variant_0: struct #114 +│ │ └── [every]: optional #113 +│ │ └── item: struct 'Post_where_excluding_User_and_Post' #112 +│ │ ├── [author]: optional #110 +│ │ │ └── item: &User_where_excluding_Post #109 +│ │ ├── [id]: optional #107 +│ │ │ └── item: &_prisma_integer_filter_ex #33 +│ │ └── [title]: optional #108 +│ │ └── item: &_prisma_string_filter_ex #11 +│ ├── variant_1: struct #116 +│ │ └── [some]: optional #115 +│ │ └── item: struct 'Post_where_excluding_User_and_Post' #112 +│ │ ├── [author]: optional #110 +│ │ │ └── item: &User_where_excluding_Post #109 +│ │ ├── [id]: optional #107 +│ │ │ └── item: &_prisma_integer_filter_ex #33 +│ │ └── [title]: optional #108 +│ │ └── item: &_prisma_string_filter_ex #11 +│ └── variant_2: struct #118 +│ └── [none]: optional #117 +│ └── item: struct 'Post_where_excluding_User_and_Post' #112 +│ ├── [author]: optional #110 +│ │ └── item: &User_where_excluding_Post #109 +│ ├── [id]: optional #107 +│ │ └── item: &_prisma_integer_filter_ex #33 +│ └── [title]: optional #108 +│ └── item: &_prisma_string_filter_ex #11 +├── [id]: optional #101 +│ └── item: &_prisma_integer_filter_ex #33 +└── [title]: optional #102 + └── item: &_prisma_string_filter_ex #11 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__where___test__where Record.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__where___test__where Record.snap index 1e00a0af8e..fb180d3ded 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__where___test__where Record.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__where___test__where Record.snap @@ -2,200 +2,104 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/where_.rs expression: "tree::print(where_type)" --- -root: struct 'Record_where' #59 -├── [age]: optional 'optional_54' #55 -│ └── item: optional '_prisma_integer_filter_ex' #53 -│ └── item: union #50 -│ ├── variant_0: either '_prisma_integer_filter' #48 -│ │ ├── variant_0: integer #37 -│ │ ├── variant_1: struct #42 -│ │ │ └── [equals]: integer #37 -│ │ ├── variant_2: struct #43 -│ │ │ └── [not]: integer #37 -│ │ ├── variant_3: struct #44 -│ │ │ ├── [gt]: optional 'optional_38' #39 -│ │ │ │ └── item: integer #37 -│ │ │ ├── [gte]: optional 'optional_38' #39 -│ │ │ │ └── item: integer #37 -│ │ │ ├── [lt]: optional 'optional_38' #39 -│ │ │ │ └── item: integer #37 -│ │ │ └── [lte]: optional 'optional_38' #39 -│ │ │ └── item: integer #37 -│ │ ├── variant_4: struct #45 -│ │ │ └── [in]: list 'list_40' #41 -│ │ │ └── item: integer #37 -│ │ └── variant_5: struct #46 -│ │ └── [notIn]: list 'list_40' #41 -│ │ └── item: integer #37 -│ └── variant_1: struct #49 -│ └── [not]: either '_prisma_integer_filter' #48 -│ ├── variant_0: integer #37 -│ ├── variant_1: struct #42 -│ │ └── [equals]: integer #37 -│ ├── variant_2: struct #43 -│ │ └── [not]: integer #37 -│ ├── variant_3: struct #44 -│ │ ├── [gt]: optional 'optional_38' #39 -│ │ │ └── item: integer #37 -│ │ ├── [gte]: optional 'optional_38' #39 -│ │ │ └── item: integer #37 -│ │ ├── [lt]: optional 'optional_38' #39 -│ │ │ └── item: integer #37 -│ │ └── [lte]: optional 'optional_38' #39 -│ │ └── item: integer #37 -│ ├── variant_4: struct #45 -│ │ └── [in]: list 'list_40' #41 -│ │ └── item: integer #37 -│ └── variant_5: struct #46 -│ └── [notIn]: list 'list_40' #41 -│ └── item: integer #37 -├── [created_at]: optional 'optional_56' #57 -│ └── item: optional '_prisma_string_filter_ex' #32 -│ └── item: union #29 -│ ├── variant_0: union '_prisma_string_filter' #27 -│ │ ├── variant_0: string #11 +root: struct 'Record_where' #52 +├── [age]: optional #49 +│ └── item: optional '_prisma_integer_filter_ex' #48 +│ └── item: union #46 +│ ├── variant_0: either '_prisma_integer_filter' #44 +│ │ ├── variant_0: integer #35 +│ │ ├── variant_1: struct #38 +│ │ │ └── [equals]: integer #35 +│ │ ├── variant_2: struct #39 +│ │ │ └── [not]: integer #35 +│ │ ├── variant_3: struct #40 +│ │ │ ├── [gt]: optional #36 +│ │ │ │ └── item: integer #35 +│ │ │ ├── [gte]: optional #36 +│ │ │ │ └── item: integer #35 +│ │ │ ├── [lt]: optional #36 +│ │ │ │ └── item: integer #35 +│ │ │ └── [lte]: optional #36 +│ │ │ └── item: integer #35 +│ │ ├── variant_4: struct #41 +│ │ │ └── [in]: list #37 +│ │ │ └── item: integer #35 +│ │ └── variant_5: struct #42 +│ │ └── [notIn]: list #37 +│ │ └── item: integer #35 +│ └── variant_1: struct #45 +│ └── [not]: either '_prisma_integer_filter' #44 +│ ├── variant_0: integer #35 +│ ├── variant_1: struct #38 +│ │ └── [equals]: integer #35 +│ ├── variant_2: struct #39 +│ │ └── [not]: integer #35 +│ ├── variant_3: struct #40 +│ │ ├── [gt]: optional #36 +│ │ │ └── item: integer #35 +│ │ ├── [gte]: optional #36 +│ │ │ └── item: integer #35 +│ │ ├── [lt]: optional #36 +│ │ │ └── item: integer #35 +│ │ └── [lte]: optional #36 +│ │ └── item: integer #35 +│ ├── variant_4: struct #41 +│ │ └── [in]: list #37 +│ │ └── item: integer #35 +│ └── variant_5: struct #42 +│ └── [notIn]: list #37 +│ └── item: integer #35 +├── [created_at]: optional #50 +│ └── item: &_prisma_string_filter_ex #11 +├── [id]: optional #31 +│ └── item: optional '_prisma_string_filter_ex' #30 +│ └── item: union #28 +│ ├── variant_0: union '_prisma_string_filter' #26 +│ │ ├── variant_0: string #13 │ │ ├── variant_1: struct #16 -│ │ │ └── [equals]: string #11 +│ │ │ └── [equals]: string #13 │ │ ├── variant_2: struct #17 -│ │ │ └── [not]: string #11 +│ │ │ └── [not]: string #13 │ │ ├── variant_3: struct #18 -│ │ │ └── [in]: list 'list_14' #15 -│ │ │ └── item: string #11 +│ │ │ └── [in]: list #15 +│ │ │ └── item: string #13 │ │ ├── variant_4: struct #19 -│ │ │ └── [notIn]: list 'list_14' #15 -│ │ │ └── item: string #11 -│ │ ├── variant_5: struct #23 -│ │ │ ├── [contains]: string #11 -│ │ │ └── [mode]: optional 'optional_21' #22 +│ │ │ └── [notIn]: list #15 +│ │ │ └── item: string #13 +│ │ ├── variant_5: struct #22 +│ │ │ ├── [contains]: string #13 +│ │ │ └── [mode]: optional #21 │ │ │ └── item: string #20 enum{ '"insensitive"' } -│ │ ├── variant_6: struct #24 -│ │ │ └── [search]: string #11 -│ │ └── variant_7: struct #25 -│ │ ├── [endsWith]: optional 'optional_12' #13 -│ │ │ └── item: string #11 -│ │ └── [startsWith]: optional 'optional_12' #13 -│ │ └── item: string #11 -│ └── variant_1: struct #28 -│ └── [not]: union '_prisma_string_filter' #27 -│ ├── variant_0: string #11 +│ │ ├── variant_6: struct #23 +│ │ │ └── [search]: string #13 +│ │ └── variant_7: struct #24 +│ │ ├── [endsWith]: optional #14 +│ │ │ └── item: string #13 +│ │ └── [startsWith]: optional #14 +│ │ └── item: string #13 +│ └── variant_1: struct #27 +│ └── [not]: union '_prisma_string_filter' #26 +│ ├── variant_0: string #13 │ ├── variant_1: struct #16 -│ │ └── [equals]: string #11 +│ │ └── [equals]: string #13 │ ├── variant_2: struct #17 -│ │ └── [not]: string #11 +│ │ └── [not]: string #13 │ ├── variant_3: struct #18 -│ │ └── [in]: list 'list_14' #15 -│ │ └── item: string #11 +│ │ └── [in]: list #15 +│ │ └── item: string #13 │ ├── variant_4: struct #19 -│ │ └── [notIn]: list 'list_14' #15 -│ │ └── item: string #11 -│ ├── variant_5: struct #23 -│ │ ├── [contains]: string #11 -│ │ └── [mode]: optional 'optional_21' #22 +│ │ └── [notIn]: list #15 +│ │ └── item: string #13 +│ ├── variant_5: struct #22 +│ │ ├── [contains]: string #13 +│ │ └── [mode]: optional #21 │ │ └── item: string #20 enum{ '"insensitive"' } -│ ├── variant_6: struct #24 -│ │ └── [search]: string #11 -│ └── variant_7: struct #25 -│ ├── [endsWith]: optional 'optional_12' #13 -│ │ └── item: string #11 -│ └── [startsWith]: optional 'optional_12' #13 -│ └── item: string #11 -├── [id]: optional 'optional_33' #34 -│ └── item: optional '_prisma_string_filter_ex' #32 -│ └── item: union #29 -│ ├── variant_0: union '_prisma_string_filter' #27 -│ │ ├── variant_0: string #11 -│ │ ├── variant_1: struct #16 -│ │ │ └── [equals]: string #11 -│ │ ├── variant_2: struct #17 -│ │ │ └── [not]: string #11 -│ │ ├── variant_3: struct #18 -│ │ │ └── [in]: list 'list_14' #15 -│ │ │ └── item: string #11 -│ │ ├── variant_4: struct #19 -│ │ │ └── [notIn]: list 'list_14' #15 -│ │ │ └── item: string #11 -│ │ ├── variant_5: struct #23 -│ │ │ ├── [contains]: string #11 -│ │ │ └── [mode]: optional 'optional_21' #22 -│ │ │ └── item: string #20 enum{ '"insensitive"' } -│ │ ├── variant_6: struct #24 -│ │ │ └── [search]: string #11 -│ │ └── variant_7: struct #25 -│ │ ├── [endsWith]: optional 'optional_12' #13 -│ │ │ └── item: string #11 -│ │ └── [startsWith]: optional 'optional_12' #13 -│ │ └── item: string #11 -│ └── variant_1: struct #28 -│ └── [not]: union '_prisma_string_filter' #27 -│ ├── variant_0: string #11 -│ ├── variant_1: struct #16 -│ │ └── [equals]: string #11 -│ ├── variant_2: struct #17 -│ │ └── [not]: string #11 -│ ├── variant_3: struct #18 -│ │ └── [in]: list 'list_14' #15 -│ │ └── item: string #11 -│ ├── variant_4: struct #19 -│ │ └── [notIn]: list 'list_14' #15 -│ │ └── item: string #11 -│ ├── variant_5: struct #23 -│ │ ├── [contains]: string #11 -│ │ └── [mode]: optional 'optional_21' #22 -│ │ └── item: string #20 enum{ '"insensitive"' } -│ ├── variant_6: struct #24 -│ │ └── [search]: string #11 -│ └── variant_7: struct #25 -│ ├── [endsWith]: optional 'optional_12' #13 -│ │ └── item: string #11 -│ └── [startsWith]: optional 'optional_12' #13 -│ └── item: string #11 -└── [name]: optional 'optional_35' #36 - └── item: optional '_prisma_string_filter_ex' #32 - └── item: union #29 - ├── variant_0: union '_prisma_string_filter' #27 - │ ├── variant_0: string #11 - │ ├── variant_1: struct #16 - │ │ └── [equals]: string #11 - │ ├── variant_2: struct #17 - │ │ └── [not]: string #11 - │ ├── variant_3: struct #18 - │ │ └── [in]: list 'list_14' #15 - │ │ └── item: string #11 - │ ├── variant_4: struct #19 - │ │ └── [notIn]: list 'list_14' #15 - │ │ └── item: string #11 - │ ├── variant_5: struct #23 - │ │ ├── [contains]: string #11 - │ │ └── [mode]: optional 'optional_21' #22 - │ │ └── item: string #20 enum{ '"insensitive"' } - │ ├── variant_6: struct #24 - │ │ └── [search]: string #11 - │ └── variant_7: struct #25 - │ ├── [endsWith]: optional 'optional_12' #13 - │ │ └── item: string #11 - │ └── [startsWith]: optional 'optional_12' #13 - │ └── item: string #11 - └── variant_1: struct #28 - └── [not]: union '_prisma_string_filter' #27 - ├── variant_0: string #11 - ├── variant_1: struct #16 - │ └── [equals]: string #11 - ├── variant_2: struct #17 - │ └── [not]: string #11 - ├── variant_3: struct #18 - │ └── [in]: list 'list_14' #15 - │ └── item: string #11 - ├── variant_4: struct #19 - │ └── [notIn]: list 'list_14' #15 - │ └── item: string #11 - ├── variant_5: struct #23 - │ ├── [contains]: string #11 - │ └── [mode]: optional 'optional_21' #22 - │ └── item: string #20 enum{ '"insensitive"' } - ├── variant_6: struct #24 - │ └── [search]: string #11 - └── variant_7: struct #25 - ├── [endsWith]: optional 'optional_12' #13 - │ └── item: string #11 - └── [startsWith]: optional 'optional_12' #13 - └── item: string #11 +│ ├── variant_6: struct #23 +│ │ └── [search]: string #13 +│ └── variant_7: struct #24 +│ ├── [endsWith]: optional #14 +│ │ └── item: string #13 +│ └── [startsWith]: optional #14 +│ └── item: string #13 +└── [name]: optional #32 + └── item: &_prisma_string_filter_ex #11 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__where___test__where User.snap b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__where___test__where User.snap index ce26ee08ee..8a2ccf781a 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__where___test__where User.snap +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/snapshots/typegraph_core__runtimes__prisma__type_generation__where___test__where User.snap @@ -2,726 +2,82 @@ source: src/typegraph/core/src/runtimes/prisma/type_generation/where_.rs expression: "tree::print(context.generate(&Where::new(user))?)" --- -root: struct 'User_where' #119 -├── [id]: optional 'optional_75' #76 -│ └── item: optional '_prisma_integer_filter_ex' #53 -│ └── item: union #50 -│ ├── variant_0: either '_prisma_integer_filter' #48 -│ │ ├── variant_0: integer #37 -│ │ ├── variant_1: struct #42 -│ │ │ └── [equals]: integer #37 -│ │ ├── variant_2: struct #43 -│ │ │ └── [not]: integer #37 -│ │ ├── variant_3: struct #44 -│ │ │ ├── [gt]: optional 'optional_38' #39 -│ │ │ │ └── item: integer #37 -│ │ │ ├── [gte]: optional 'optional_38' #39 -│ │ │ │ └── item: integer #37 -│ │ │ ├── [lt]: optional 'optional_38' #39 -│ │ │ │ └── item: integer #37 -│ │ │ └── [lte]: optional 'optional_38' #39 -│ │ │ └── item: integer #37 -│ │ ├── variant_4: struct #45 -│ │ │ └── [in]: list 'list_40' #41 -│ │ │ └── item: integer #37 -│ │ └── variant_5: struct #46 -│ │ └── [notIn]: list 'list_40' #41 -│ │ └── item: integer #37 -│ └── variant_1: struct #49 -│ └── [not]: either '_prisma_integer_filter' #48 -│ ├── variant_0: integer #37 -│ ├── variant_1: struct #42 -│ │ └── [equals]: integer #37 -│ ├── variant_2: struct #43 -│ │ └── [not]: integer #37 -│ ├── variant_3: struct #44 -│ │ ├── [gt]: optional 'optional_38' #39 -│ │ │ └── item: integer #37 -│ │ ├── [gte]: optional 'optional_38' #39 -│ │ │ └── item: integer #37 -│ │ ├── [lt]: optional 'optional_38' #39 -│ │ │ └── item: integer #37 -│ │ └── [lte]: optional 'optional_38' #39 -│ │ └── item: integer #37 -│ ├── variant_4: struct #45 -│ │ └── [in]: list 'list_40' #41 -│ │ └── item: integer #37 -│ └── variant_5: struct #46 -│ └── [notIn]: list 'list_40' #41 -│ └── item: integer #37 -├── [name]: optional 'optional_77' #78 -│ └── item: optional '_prisma_string_filter_ex' #32 -│ └── item: union #29 -│ ├── variant_0: union '_prisma_string_filter' #27 -│ │ ├── variant_0: string #11 -│ │ ├── variant_1: struct #16 -│ │ │ └── [equals]: string #11 -│ │ ├── variant_2: struct #17 -│ │ │ └── [not]: string #11 -│ │ ├── variant_3: struct #18 -│ │ │ └── [in]: list 'list_14' #15 -│ │ │ └── item: string #11 -│ │ ├── variant_4: struct #19 -│ │ │ └── [notIn]: list 'list_14' #15 -│ │ │ └── item: string #11 -│ │ ├── variant_5: struct #23 -│ │ │ ├── [contains]: string #11 -│ │ │ └── [mode]: optional 'optional_21' #22 -│ │ │ └── item: string #20 enum{ '"insensitive"' } -│ │ ├── variant_6: struct #24 -│ │ │ └── [search]: string #11 -│ │ └── variant_7: struct #25 -│ │ ├── [endsWith]: optional 'optional_12' #13 -│ │ │ └── item: string #11 -│ │ └── [startsWith]: optional 'optional_12' #13 -│ │ └── item: string #11 -│ └── variant_1: struct #28 -│ └── [not]: union '_prisma_string_filter' #27 -│ ├── variant_0: string #11 -│ ├── variant_1: struct #16 -│ │ └── [equals]: string #11 -│ ├── variant_2: struct #17 -│ │ └── [not]: string #11 -│ ├── variant_3: struct #18 -│ │ └── [in]: list 'list_14' #15 -│ │ └── item: string #11 -│ ├── variant_4: struct #19 -│ │ └── [notIn]: list 'list_14' #15 -│ │ └── item: string #11 -│ ├── variant_5: struct #23 -│ │ ├── [contains]: string #11 -│ │ └── [mode]: optional 'optional_21' #22 -│ │ └── item: string #20 enum{ '"insensitive"' } -│ ├── variant_6: struct #24 -│ │ └── [search]: string #11 -│ └── variant_7: struct #25 -│ ├── [endsWith]: optional 'optional_12' #13 -│ │ └── item: string #11 -│ └── [startsWith]: optional 'optional_12' #13 -│ └── item: string #11 -└── [posts]: optional 'optional_116' #117 - └── item: union #115 - ├── variant_0: struct #108 - │ └── [every]: optional 'optional_106' #107 - │ └── item: struct 'Post_where_excluding_User' #105 - │ ├── [author]: optional 'optional_102' #103 - │ │ └── item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #101 - │ │ ├── [id]: optional 'optional_83' #84 - │ │ │ └── item: optional '_prisma_integer_filter_ex' #53 - │ │ │ └── item: union #50 - │ │ │ ├── variant_0: either '_prisma_integer_filter' #48 - │ │ │ │ ├── variant_0: integer #37 - │ │ │ │ ├── variant_1: struct #42 - │ │ │ │ │ └── [equals]: integer #37 - │ │ │ │ ├── variant_2: struct #43 - │ │ │ │ │ └── [not]: integer #37 - │ │ │ │ ├── variant_3: struct #44 - │ │ │ │ │ ├── [gt]: optional 'optional_38' #39 - │ │ │ │ │ │ └── item: integer #37 - │ │ │ │ │ ├── [gte]: optional 'optional_38' #39 - │ │ │ │ │ │ └── item: integer #37 - │ │ │ │ │ ├── [lt]: optional 'optional_38' #39 - │ │ │ │ │ │ └── item: integer #37 - │ │ │ │ │ └── [lte]: optional 'optional_38' #39 - │ │ │ │ │ └── item: integer #37 - │ │ │ │ ├── variant_4: struct #45 - │ │ │ │ │ └── [in]: list 'list_40' #41 - │ │ │ │ │ └── item: integer #37 - │ │ │ │ └── variant_5: struct #46 - │ │ │ │ └── [notIn]: list 'list_40' #41 - │ │ │ │ └── item: integer #37 - │ │ │ └── variant_1: struct #49 - │ │ │ └── [not]: either '_prisma_integer_filter' #48 - │ │ │ ├── variant_0: integer #37 - │ │ │ ├── variant_1: struct #42 - │ │ │ │ └── [equals]: integer #37 - │ │ │ ├── variant_2: struct #43 - │ │ │ │ └── [not]: integer #37 - │ │ │ ├── variant_3: struct #44 - │ │ │ │ ├── [gt]: optional 'optional_38' #39 - │ │ │ │ │ └── item: integer #37 - │ │ │ │ ├── [gte]: optional 'optional_38' #39 - │ │ │ │ │ └── item: integer #37 - │ │ │ │ ├── [lt]: optional 'optional_38' #39 - │ │ │ │ │ └── item: integer #37 - │ │ │ │ └── [lte]: optional 'optional_38' #39 - │ │ │ │ └── item: integer #37 - │ │ │ ├── variant_4: struct #45 - │ │ │ │ └── [in]: list 'list_40' #41 - │ │ │ │ └── item: integer #37 - │ │ │ └── variant_5: struct #46 - │ │ │ └── [notIn]: list 'list_40' #41 - │ │ │ └── item: integer #37 - │ │ ├── [name]: optional 'optional_85' #86 - │ │ │ └── item: optional '_prisma_string_filter_ex' #32 - │ │ │ └── item: union #29 - │ │ │ ├── variant_0: union '_prisma_string_filter' #27 - │ │ │ │ ├── variant_0: string #11 - │ │ │ │ ├── variant_1: struct #16 - │ │ │ │ │ └── [equals]: string #11 - │ │ │ │ ├── variant_2: struct #17 - │ │ │ │ │ └── [not]: string #11 - │ │ │ │ ├── variant_3: struct #18 - │ │ │ │ │ └── [in]: list 'list_14' #15 - │ │ │ │ │ └── item: string #11 - │ │ │ │ ├── variant_4: struct #19 - │ │ │ │ │ └── [notIn]: list 'list_14' #15 - │ │ │ │ │ └── item: string #11 - │ │ │ │ ├── variant_5: struct #23 - │ │ │ │ │ ├── [contains]: string #11 - │ │ │ │ │ └── [mode]: optional 'optional_21' #22 - │ │ │ │ │ └── item: string #20 enum{ '"insensitive"' } - │ │ │ │ ├── variant_6: struct #24 - │ │ │ │ │ └── [search]: string #11 - │ │ │ │ └── variant_7: struct #25 - │ │ │ │ ├── [endsWith]: optional 'optional_12' #13 - │ │ │ │ │ └── item: string #11 - │ │ │ │ └── [startsWith]: optional 'optional_12' #13 - │ │ │ │ └── item: string #11 - │ │ │ └── variant_1: struct #28 - │ │ │ └── [not]: union '_prisma_string_filter' #27 - │ │ │ ├── variant_0: string #11 - │ │ │ ├── variant_1: struct #16 - │ │ │ │ └── [equals]: string #11 - │ │ │ ├── variant_2: struct #17 - │ │ │ │ └── [not]: string #11 - │ │ │ ├── variant_3: struct #18 - │ │ │ │ └── [in]: list 'list_14' #15 - │ │ │ │ └── item: string #11 - │ │ │ ├── variant_4: struct #19 - │ │ │ │ └── [notIn]: list 'list_14' #15 - │ │ │ │ └── item: string #11 - │ │ │ ├── variant_5: struct #23 - │ │ │ │ ├── [contains]: string #11 - │ │ │ │ └── [mode]: optional 'optional_21' #22 - │ │ │ │ └── item: string #20 enum{ '"insensitive"' } - │ │ │ ├── variant_6: struct #24 - │ │ │ │ └── [search]: string #11 - │ │ │ └── variant_7: struct #25 - │ │ │ ├── [endsWith]: optional 'optional_12' #13 - │ │ │ │ └── item: string #11 - │ │ │ └── [startsWith]: optional 'optional_12' #13 - │ │ │ └── item: string #11 - │ │ └── [posts]: optional 'optional_98' #99 - │ │ └── item: union #97 - │ │ ├── variant_0: struct #90 - │ │ │ └── [every]: optional 'optional_88' #89 - │ │ │ └── item: &Post_where_excluding_User #87 - │ │ ├── variant_1: struct #93 - │ │ │ └── [some]: optional 'optional_91' #92 - │ │ │ └── item: &Post_where_excluding_User #87 - │ │ └── variant_2: struct #96 - │ │ └── [none]: optional 'optional_94' #95 - │ │ └── item: &Post_where_excluding_User #87 - │ ├── [id]: optional 'optional_79' #80 - │ │ └── item: optional '_prisma_integer_filter_ex' #53 - │ │ └── item: union #50 - │ │ ├── variant_0: either '_prisma_integer_filter' #48 - │ │ │ ├── variant_0: integer #37 - │ │ │ ├── variant_1: struct #42 - │ │ │ │ └── [equals]: integer #37 - │ │ │ ├── variant_2: struct #43 - │ │ │ │ └── [not]: integer #37 - │ │ │ ├── variant_3: struct #44 - │ │ │ │ ├── [gt]: optional 'optional_38' #39 - │ │ │ │ │ └── item: integer #37 - │ │ │ │ ├── [gte]: optional 'optional_38' #39 - │ │ │ │ │ └── item: integer #37 - │ │ │ │ ├── [lt]: optional 'optional_38' #39 - │ │ │ │ │ └── item: integer #37 - │ │ │ │ └── [lte]: optional 'optional_38' #39 - │ │ │ │ └── item: integer #37 - │ │ │ ├── variant_4: struct #45 - │ │ │ │ └── [in]: list 'list_40' #41 - │ │ │ │ └── item: integer #37 - │ │ │ └── variant_5: struct #46 - │ │ │ └── [notIn]: list 'list_40' #41 - │ │ │ └── item: integer #37 - │ │ └── variant_1: struct #49 - │ │ └── [not]: either '_prisma_integer_filter' #48 - │ │ ├── variant_0: integer #37 - │ │ ├── variant_1: struct #42 - │ │ │ └── [equals]: integer #37 - │ │ ├── variant_2: struct #43 - │ │ │ └── [not]: integer #37 - │ │ ├── variant_3: struct #44 - │ │ │ ├── [gt]: optional 'optional_38' #39 - │ │ │ │ └── item: integer #37 - │ │ │ ├── [gte]: optional 'optional_38' #39 - │ │ │ │ └── item: integer #37 - │ │ │ ├── [lt]: optional 'optional_38' #39 - │ │ │ │ └── item: integer #37 - │ │ │ └── [lte]: optional 'optional_38' #39 - │ │ │ └── item: integer #37 - │ │ ├── variant_4: struct #45 - │ │ │ └── [in]: list 'list_40' #41 - │ │ │ └── item: integer #37 - │ │ └── variant_5: struct #46 - │ │ └── [notIn]: list 'list_40' #41 - │ │ └── item: integer #37 - │ └── [title]: optional 'optional_81' #82 - │ └── item: optional '_prisma_string_filter_ex' #32 - │ └── item: union #29 - │ ├── variant_0: union '_prisma_string_filter' #27 - │ │ ├── variant_0: string #11 - │ │ ├── variant_1: struct #16 - │ │ │ └── [equals]: string #11 - │ │ ├── variant_2: struct #17 - │ │ │ └── [not]: string #11 - │ │ ├── variant_3: struct #18 - │ │ │ └── [in]: list 'list_14' #15 - │ │ │ └── item: string #11 - │ │ ├── variant_4: struct #19 - │ │ │ └── [notIn]: list 'list_14' #15 - │ │ │ └── item: string #11 - │ │ ├── variant_5: struct #23 - │ │ │ ├── [contains]: string #11 - │ │ │ └── [mode]: optional 'optional_21' #22 - │ │ │ └── item: string #20 enum{ '"insensitive"' } - │ │ ├── variant_6: struct #24 - │ │ │ └── [search]: string #11 - │ │ └── variant_7: struct #25 - │ │ ├── [endsWith]: optional 'optional_12' #13 - │ │ │ └── item: string #11 - │ │ └── [startsWith]: optional 'optional_12' #13 - │ │ └── item: string #11 - │ └── variant_1: struct #28 - │ └── [not]: union '_prisma_string_filter' #27 - │ ├── variant_0: string #11 - │ ├── variant_1: struct #16 - │ │ └── [equals]: string #11 - │ ├── variant_2: struct #17 - │ │ └── [not]: string #11 - │ ├── variant_3: struct #18 - │ │ └── [in]: list 'list_14' #15 - │ │ └── item: string #11 - │ ├── variant_4: struct #19 - │ │ └── [notIn]: list 'list_14' #15 - │ │ └── item: string #11 - │ ├── variant_5: struct #23 - │ │ ├── [contains]: string #11 - │ │ └── [mode]: optional 'optional_21' #22 - │ │ └── item: string #20 enum{ '"insensitive"' } - │ ├── variant_6: struct #24 - │ │ └── [search]: string #11 - │ └── variant_7: struct #25 - │ ├── [endsWith]: optional 'optional_12' #13 - │ │ └── item: string #11 - │ └── [startsWith]: optional 'optional_12' #13 - │ └── item: string #11 - ├── variant_1: struct #111 - │ └── [some]: optional 'optional_109' #110 - │ └── item: struct 'Post_where_excluding_User' #105 - │ ├── [author]: optional 'optional_102' #103 - │ │ └── item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #101 - │ │ ├── [id]: optional 'optional_83' #84 - │ │ │ └── item: optional '_prisma_integer_filter_ex' #53 - │ │ │ └── item: union #50 - │ │ │ ├── variant_0: either '_prisma_integer_filter' #48 - │ │ │ │ ├── variant_0: integer #37 - │ │ │ │ ├── variant_1: struct #42 - │ │ │ │ │ └── [equals]: integer #37 - │ │ │ │ ├── variant_2: struct #43 - │ │ │ │ │ └── [not]: integer #37 - │ │ │ │ ├── variant_3: struct #44 - │ │ │ │ │ ├── [gt]: optional 'optional_38' #39 - │ │ │ │ │ │ └── item: integer #37 - │ │ │ │ │ ├── [gte]: optional 'optional_38' #39 - │ │ │ │ │ │ └── item: integer #37 - │ │ │ │ │ ├── [lt]: optional 'optional_38' #39 - │ │ │ │ │ │ └── item: integer #37 - │ │ │ │ │ └── [lte]: optional 'optional_38' #39 - │ │ │ │ │ └── item: integer #37 - │ │ │ │ ├── variant_4: struct #45 - │ │ │ │ │ └── [in]: list 'list_40' #41 - │ │ │ │ │ └── item: integer #37 - │ │ │ │ └── variant_5: struct #46 - │ │ │ │ └── [notIn]: list 'list_40' #41 - │ │ │ │ └── item: integer #37 - │ │ │ └── variant_1: struct #49 - │ │ │ └── [not]: either '_prisma_integer_filter' #48 - │ │ │ ├── variant_0: integer #37 - │ │ │ ├── variant_1: struct #42 - │ │ │ │ └── [equals]: integer #37 - │ │ │ ├── variant_2: struct #43 - │ │ │ │ └── [not]: integer #37 - │ │ │ ├── variant_3: struct #44 - │ │ │ │ ├── [gt]: optional 'optional_38' #39 - │ │ │ │ │ └── item: integer #37 - │ │ │ │ ├── [gte]: optional 'optional_38' #39 - │ │ │ │ │ └── item: integer #37 - │ │ │ │ ├── [lt]: optional 'optional_38' #39 - │ │ │ │ │ └── item: integer #37 - │ │ │ │ └── [lte]: optional 'optional_38' #39 - │ │ │ │ └── item: integer #37 - │ │ │ ├── variant_4: struct #45 - │ │ │ │ └── [in]: list 'list_40' #41 - │ │ │ │ └── item: integer #37 - │ │ │ └── variant_5: struct #46 - │ │ │ └── [notIn]: list 'list_40' #41 - │ │ │ └── item: integer #37 - │ │ ├── [name]: optional 'optional_85' #86 - │ │ │ └── item: optional '_prisma_string_filter_ex' #32 - │ │ │ └── item: union #29 - │ │ │ ├── variant_0: union '_prisma_string_filter' #27 - │ │ │ │ ├── variant_0: string #11 - │ │ │ │ ├── variant_1: struct #16 - │ │ │ │ │ └── [equals]: string #11 - │ │ │ │ ├── variant_2: struct #17 - │ │ │ │ │ └── [not]: string #11 - │ │ │ │ ├── variant_3: struct #18 - │ │ │ │ │ └── [in]: list 'list_14' #15 - │ │ │ │ │ └── item: string #11 - │ │ │ │ ├── variant_4: struct #19 - │ │ │ │ │ └── [notIn]: list 'list_14' #15 - │ │ │ │ │ └── item: string #11 - │ │ │ │ ├── variant_5: struct #23 - │ │ │ │ │ ├── [contains]: string #11 - │ │ │ │ │ └── [mode]: optional 'optional_21' #22 - │ │ │ │ │ └── item: string #20 enum{ '"insensitive"' } - │ │ │ │ ├── variant_6: struct #24 - │ │ │ │ │ └── [search]: string #11 - │ │ │ │ └── variant_7: struct #25 - │ │ │ │ ├── [endsWith]: optional 'optional_12' #13 - │ │ │ │ │ └── item: string #11 - │ │ │ │ └── [startsWith]: optional 'optional_12' #13 - │ │ │ │ └── item: string #11 - │ │ │ └── variant_1: struct #28 - │ │ │ └── [not]: union '_prisma_string_filter' #27 - │ │ │ ├── variant_0: string #11 - │ │ │ ├── variant_1: struct #16 - │ │ │ │ └── [equals]: string #11 - │ │ │ ├── variant_2: struct #17 - │ │ │ │ └── [not]: string #11 - │ │ │ ├── variant_3: struct #18 - │ │ │ │ └── [in]: list 'list_14' #15 - │ │ │ │ └── item: string #11 - │ │ │ ├── variant_4: struct #19 - │ │ │ │ └── [notIn]: list 'list_14' #15 - │ │ │ │ └── item: string #11 - │ │ │ ├── variant_5: struct #23 - │ │ │ │ ├── [contains]: string #11 - │ │ │ │ └── [mode]: optional 'optional_21' #22 - │ │ │ │ └── item: string #20 enum{ '"insensitive"' } - │ │ │ ├── variant_6: struct #24 - │ │ │ │ └── [search]: string #11 - │ │ │ └── variant_7: struct #25 - │ │ │ ├── [endsWith]: optional 'optional_12' #13 - │ │ │ │ └── item: string #11 - │ │ │ └── [startsWith]: optional 'optional_12' #13 - │ │ │ └── item: string #11 - │ │ └── [posts]: optional 'optional_98' #99 - │ │ └── item: union #97 - │ │ ├── variant_0: struct #90 - │ │ │ └── [every]: optional 'optional_88' #89 - │ │ │ └── item: &Post_where_excluding_User #87 - │ │ ├── variant_1: struct #93 - │ │ │ └── [some]: optional 'optional_91' #92 - │ │ │ └── item: &Post_where_excluding_User #87 - │ │ └── variant_2: struct #96 - │ │ └── [none]: optional 'optional_94' #95 - │ │ └── item: &Post_where_excluding_User #87 - │ ├── [id]: optional 'optional_79' #80 - │ │ └── item: optional '_prisma_integer_filter_ex' #53 - │ │ └── item: union #50 - │ │ ├── variant_0: either '_prisma_integer_filter' #48 - │ │ │ ├── variant_0: integer #37 - │ │ │ ├── variant_1: struct #42 - │ │ │ │ └── [equals]: integer #37 - │ │ │ ├── variant_2: struct #43 - │ │ │ │ └── [not]: integer #37 - │ │ │ ├── variant_3: struct #44 - │ │ │ │ ├── [gt]: optional 'optional_38' #39 - │ │ │ │ │ └── item: integer #37 - │ │ │ │ ├── [gte]: optional 'optional_38' #39 - │ │ │ │ │ └── item: integer #37 - │ │ │ │ ├── [lt]: optional 'optional_38' #39 - │ │ │ │ │ └── item: integer #37 - │ │ │ │ └── [lte]: optional 'optional_38' #39 - │ │ │ │ └── item: integer #37 - │ │ │ ├── variant_4: struct #45 - │ │ │ │ └── [in]: list 'list_40' #41 - │ │ │ │ └── item: integer #37 - │ │ │ └── variant_5: struct #46 - │ │ │ └── [notIn]: list 'list_40' #41 - │ │ │ └── item: integer #37 - │ │ └── variant_1: struct #49 - │ │ └── [not]: either '_prisma_integer_filter' #48 - │ │ ├── variant_0: integer #37 - │ │ ├── variant_1: struct #42 - │ │ │ └── [equals]: integer #37 - │ │ ├── variant_2: struct #43 - │ │ │ └── [not]: integer #37 - │ │ ├── variant_3: struct #44 - │ │ │ ├── [gt]: optional 'optional_38' #39 - │ │ │ │ └── item: integer #37 - │ │ │ ├── [gte]: optional 'optional_38' #39 - │ │ │ │ └── item: integer #37 - │ │ │ ├── [lt]: optional 'optional_38' #39 - │ │ │ │ └── item: integer #37 - │ │ │ └── [lte]: optional 'optional_38' #39 - │ │ │ └── item: integer #37 - │ │ ├── variant_4: struct #45 - │ │ │ └── [in]: list 'list_40' #41 - │ │ │ └── item: integer #37 - │ │ └── variant_5: struct #46 - │ │ └── [notIn]: list 'list_40' #41 - │ │ └── item: integer #37 - │ └── [title]: optional 'optional_81' #82 - │ └── item: optional '_prisma_string_filter_ex' #32 - │ └── item: union #29 - │ ├── variant_0: union '_prisma_string_filter' #27 - │ │ ├── variant_0: string #11 - │ │ ├── variant_1: struct #16 - │ │ │ └── [equals]: string #11 - │ │ ├── variant_2: struct #17 - │ │ │ └── [not]: string #11 - │ │ ├── variant_3: struct #18 - │ │ │ └── [in]: list 'list_14' #15 - │ │ │ └── item: string #11 - │ │ ├── variant_4: struct #19 - │ │ │ └── [notIn]: list 'list_14' #15 - │ │ │ └── item: string #11 - │ │ ├── variant_5: struct #23 - │ │ │ ├── [contains]: string #11 - │ │ │ └── [mode]: optional 'optional_21' #22 - │ │ │ └── item: string #20 enum{ '"insensitive"' } - │ │ ├── variant_6: struct #24 - │ │ │ └── [search]: string #11 - │ │ └── variant_7: struct #25 - │ │ ├── [endsWith]: optional 'optional_12' #13 - │ │ │ └── item: string #11 - │ │ └── [startsWith]: optional 'optional_12' #13 - │ │ └── item: string #11 - │ └── variant_1: struct #28 - │ └── [not]: union '_prisma_string_filter' #27 - │ ├── variant_0: string #11 - │ ├── variant_1: struct #16 - │ │ └── [equals]: string #11 - │ ├── variant_2: struct #17 - │ │ └── [not]: string #11 - │ ├── variant_3: struct #18 - │ │ └── [in]: list 'list_14' #15 - │ │ └── item: string #11 - │ ├── variant_4: struct #19 - │ │ └── [notIn]: list 'list_14' #15 - │ │ └── item: string #11 - │ ├── variant_5: struct #23 - │ │ ├── [contains]: string #11 - │ │ └── [mode]: optional 'optional_21' #22 - │ │ └── item: string #20 enum{ '"insensitive"' } - │ ├── variant_6: struct #24 - │ │ └── [search]: string #11 - │ └── variant_7: struct #25 - │ ├── [endsWith]: optional 'optional_12' #13 - │ │ └── item: string #11 - │ └── [startsWith]: optional 'optional_12' #13 - │ └── item: string #11 - └── variant_2: struct #114 - └── [none]: optional 'optional_112' #113 - └── item: struct 'Post_where_excluding_User' #105 - ├── [author]: optional 'optional_102' #103 - │ └── item: struct 'User_where_excluding_User_and_Post_where_excluding_User' #101 - │ ├── [id]: optional 'optional_83' #84 - │ │ └── item: optional '_prisma_integer_filter_ex' #53 - │ │ └── item: union #50 - │ │ ├── variant_0: either '_prisma_integer_filter' #48 - │ │ │ ├── variant_0: integer #37 - │ │ │ ├── variant_1: struct #42 - │ │ │ │ └── [equals]: integer #37 - │ │ │ ├── variant_2: struct #43 - │ │ │ │ └── [not]: integer #37 - │ │ │ ├── variant_3: struct #44 - │ │ │ │ ├── [gt]: optional 'optional_38' #39 - │ │ │ │ │ └── item: integer #37 - │ │ │ │ ├── [gte]: optional 'optional_38' #39 - │ │ │ │ │ └── item: integer #37 - │ │ │ │ ├── [lt]: optional 'optional_38' #39 - │ │ │ │ │ └── item: integer #37 - │ │ │ │ └── [lte]: optional 'optional_38' #39 - │ │ │ │ └── item: integer #37 - │ │ │ ├── variant_4: struct #45 - │ │ │ │ └── [in]: list 'list_40' #41 - │ │ │ │ └── item: integer #37 - │ │ │ └── variant_5: struct #46 - │ │ │ └── [notIn]: list 'list_40' #41 - │ │ │ └── item: integer #37 - │ │ └── variant_1: struct #49 - │ │ └── [not]: either '_prisma_integer_filter' #48 - │ │ ├── variant_0: integer #37 - │ │ ├── variant_1: struct #42 - │ │ │ └── [equals]: integer #37 - │ │ ├── variant_2: struct #43 - │ │ │ └── [not]: integer #37 - │ │ ├── variant_3: struct #44 - │ │ │ ├── [gt]: optional 'optional_38' #39 - │ │ │ │ └── item: integer #37 - │ │ │ ├── [gte]: optional 'optional_38' #39 - │ │ │ │ └── item: integer #37 - │ │ │ ├── [lt]: optional 'optional_38' #39 - │ │ │ │ └── item: integer #37 - │ │ │ └── [lte]: optional 'optional_38' #39 - │ │ │ └── item: integer #37 - │ │ ├── variant_4: struct #45 - │ │ │ └── [in]: list 'list_40' #41 - │ │ │ └── item: integer #37 - │ │ └── variant_5: struct #46 - │ │ └── [notIn]: list 'list_40' #41 - │ │ └── item: integer #37 - │ ├── [name]: optional 'optional_85' #86 - │ │ └── item: optional '_prisma_string_filter_ex' #32 - │ │ └── item: union #29 - │ │ ├── variant_0: union '_prisma_string_filter' #27 - │ │ │ ├── variant_0: string #11 - │ │ │ ├── variant_1: struct #16 - │ │ │ │ └── [equals]: string #11 - │ │ │ ├── variant_2: struct #17 - │ │ │ │ └── [not]: string #11 - │ │ │ ├── variant_3: struct #18 - │ │ │ │ └── [in]: list 'list_14' #15 - │ │ │ │ └── item: string #11 - │ │ │ ├── variant_4: struct #19 - │ │ │ │ └── [notIn]: list 'list_14' #15 - │ │ │ │ └── item: string #11 - │ │ │ ├── variant_5: struct #23 - │ │ │ │ ├── [contains]: string #11 - │ │ │ │ └── [mode]: optional 'optional_21' #22 - │ │ │ │ └── item: string #20 enum{ '"insensitive"' } - │ │ │ ├── variant_6: struct #24 - │ │ │ │ └── [search]: string #11 - │ │ │ └── variant_7: struct #25 - │ │ │ ├── [endsWith]: optional 'optional_12' #13 - │ │ │ │ └── item: string #11 - │ │ │ └── [startsWith]: optional 'optional_12' #13 - │ │ │ └── item: string #11 - │ │ └── variant_1: struct #28 - │ │ └── [not]: union '_prisma_string_filter' #27 - │ │ ├── variant_0: string #11 - │ │ ├── variant_1: struct #16 - │ │ │ └── [equals]: string #11 - │ │ ├── variant_2: struct #17 - │ │ │ └── [not]: string #11 - │ │ ├── variant_3: struct #18 - │ │ │ └── [in]: list 'list_14' #15 - │ │ │ └── item: string #11 - │ │ ├── variant_4: struct #19 - │ │ │ └── [notIn]: list 'list_14' #15 - │ │ │ └── item: string #11 - │ │ ├── variant_5: struct #23 - │ │ │ ├── [contains]: string #11 - │ │ │ └── [mode]: optional 'optional_21' #22 - │ │ │ └── item: string #20 enum{ '"insensitive"' } - │ │ ├── variant_6: struct #24 - │ │ │ └── [search]: string #11 - │ │ └── variant_7: struct #25 - │ │ ├── [endsWith]: optional 'optional_12' #13 - │ │ │ └── item: string #11 - │ │ └── [startsWith]: optional 'optional_12' #13 - │ │ └── item: string #11 - │ └── [posts]: optional 'optional_98' #99 - │ └── item: union #97 - │ ├── variant_0: struct #90 - │ │ └── [every]: optional 'optional_88' #89 - │ │ └── item: &Post_where_excluding_User #87 - │ ├── variant_1: struct #93 - │ │ └── [some]: optional 'optional_91' #92 - │ │ └── item: &Post_where_excluding_User #87 - │ └── variant_2: struct #96 - │ └── [none]: optional 'optional_94' #95 - │ └── item: &Post_where_excluding_User #87 - ├── [id]: optional 'optional_79' #80 - │ └── item: optional '_prisma_integer_filter_ex' #53 - │ └── item: union #50 - │ ├── variant_0: either '_prisma_integer_filter' #48 - │ │ ├── variant_0: integer #37 - │ │ ├── variant_1: struct #42 - │ │ │ └── [equals]: integer #37 - │ │ ├── variant_2: struct #43 - │ │ │ └── [not]: integer #37 - │ │ ├── variant_3: struct #44 - │ │ │ ├── [gt]: optional 'optional_38' #39 - │ │ │ │ └── item: integer #37 - │ │ │ ├── [gte]: optional 'optional_38' #39 - │ │ │ │ └── item: integer #37 - │ │ │ ├── [lt]: optional 'optional_38' #39 - │ │ │ │ └── item: integer #37 - │ │ │ └── [lte]: optional 'optional_38' #39 - │ │ │ └── item: integer #37 - │ │ ├── variant_4: struct #45 - │ │ │ └── [in]: list 'list_40' #41 - │ │ │ └── item: integer #37 - │ │ └── variant_5: struct #46 - │ │ └── [notIn]: list 'list_40' #41 - │ │ └── item: integer #37 - │ └── variant_1: struct #49 - │ └── [not]: either '_prisma_integer_filter' #48 - │ ├── variant_0: integer #37 - │ ├── variant_1: struct #42 - │ │ └── [equals]: integer #37 - │ ├── variant_2: struct #43 - │ │ └── [not]: integer #37 - │ ├── variant_3: struct #44 - │ │ ├── [gt]: optional 'optional_38' #39 - │ │ │ └── item: integer #37 - │ │ ├── [gte]: optional 'optional_38' #39 - │ │ │ └── item: integer #37 - │ │ ├── [lt]: optional 'optional_38' #39 - │ │ │ └── item: integer #37 - │ │ └── [lte]: optional 'optional_38' #39 - │ │ └── item: integer #37 - │ ├── variant_4: struct #45 - │ │ └── [in]: list 'list_40' #41 - │ │ └── item: integer #37 - │ └── variant_5: struct #46 - │ └── [notIn]: list 'list_40' #41 - │ └── item: integer #37 - └── [title]: optional 'optional_81' #82 - └── item: optional '_prisma_string_filter_ex' #32 - └── item: union #29 - ├── variant_0: union '_prisma_string_filter' #27 - │ ├── variant_0: string #11 - │ ├── variant_1: struct #16 - │ │ └── [equals]: string #11 - │ ├── variant_2: struct #17 - │ │ └── [not]: string #11 - │ ├── variant_3: struct #18 - │ │ └── [in]: list 'list_14' #15 - │ │ └── item: string #11 - │ ├── variant_4: struct #19 - │ │ └── [notIn]: list 'list_14' #15 - │ │ └── item: string #11 - │ ├── variant_5: struct #23 - │ │ ├── [contains]: string #11 - │ │ └── [mode]: optional 'optional_21' #22 - │ │ └── item: string #20 enum{ '"insensitive"' } - │ ├── variant_6: struct #24 - │ │ └── [search]: string #11 - │ └── variant_7: struct #25 - │ ├── [endsWith]: optional 'optional_12' #13 - │ │ └── item: string #11 - │ └── [startsWith]: optional 'optional_12' #13 - │ └── item: string #11 - └── variant_1: struct #28 - └── [not]: union '_prisma_string_filter' #27 - ├── variant_0: string #11 - ├── variant_1: struct #16 - │ └── [equals]: string #11 - ├── variant_2: struct #17 - │ └── [not]: string #11 - ├── variant_3: struct #18 - │ └── [in]: list 'list_14' #15 - │ └── item: string #11 - ├── variant_4: struct #19 - │ └── [notIn]: list 'list_14' #15 - │ └── item: string #11 - ├── variant_5: struct #23 - │ ├── [contains]: string #11 - │ └── [mode]: optional 'optional_21' #22 - │ └── item: string #20 enum{ '"insensitive"' } - ├── variant_6: struct #24 - │ └── [search]: string #11 - └── variant_7: struct #25 - ├── [endsWith]: optional 'optional_12' #13 - │ └── item: string #11 - └── [startsWith]: optional 'optional_12' #13 - └── item: string #11 +root: struct 'User_where' #99 +├── [id]: optional #68 +│ └── item: &_prisma_integer_filter_ex #33 +├── [name]: optional #69 +│ └── item: &_prisma_string_filter_ex #11 +└── [posts]: optional #97 + └── item: union #96 + ├── variant_0: struct #91 + │ └── [every]: optional #90 + │ └── item: struct 'Post_where_excluding_User' #89 + │ ├── [author]: optional #87 + │ │ └── item: struct 'User_where_excluding_Post_and_User' #86 + │ │ ├── [id]: optional #74 + │ │ │ └── item: &_prisma_integer_filter_ex #33 + │ │ ├── [name]: optional #75 + │ │ │ └── item: &_prisma_string_filter_ex #11 + │ │ └── [posts]: optional #84 + │ │ └── item: union #83 + │ │ ├── variant_0: struct #78 + │ │ │ └── [every]: optional #77 + │ │ │ └── item: &Post_where_excluding_User #76 + │ │ ├── variant_1: struct #80 + │ │ │ └── [some]: optional #79 + │ │ │ └── item: &Post_where_excluding_User #76 + │ │ └── variant_2: struct #82 + │ │ └── [none]: optional #81 + │ │ └── item: &Post_where_excluding_User #76 + │ ├── [id]: optional #71 + │ │ └── item: &_prisma_integer_filter_ex #33 + │ └── [title]: optional #72 + │ └── item: &_prisma_string_filter_ex #11 + ├── variant_1: struct #93 + │ └── [some]: optional #92 + │ └── item: struct 'Post_where_excluding_User' #89 + │ ├── [author]: optional #87 + │ │ └── item: struct 'User_where_excluding_Post_and_User' #86 + │ │ ├── [id]: optional #74 + │ │ │ └── item: &_prisma_integer_filter_ex #33 + │ │ ├── [name]: optional #75 + │ │ │ └── item: &_prisma_string_filter_ex #11 + │ │ └── [posts]: optional #84 + │ │ └── item: union #83 + │ │ ├── variant_0: struct #78 + │ │ │ └── [every]: optional #77 + │ │ │ └── item: &Post_where_excluding_User #76 + │ │ ├── variant_1: struct #80 + │ │ │ └── [some]: optional #79 + │ │ │ └── item: &Post_where_excluding_User #76 + │ │ └── variant_2: struct #82 + │ │ └── [none]: optional #81 + │ │ └── item: &Post_where_excluding_User #76 + │ ├── [id]: optional #71 + │ │ └── item: &_prisma_integer_filter_ex #33 + │ └── [title]: optional #72 + │ └── item: &_prisma_string_filter_ex #11 + └── variant_2: struct #95 + └── [none]: optional #94 + └── item: struct 'Post_where_excluding_User' #89 + ├── [author]: optional #87 + │ └── item: struct 'User_where_excluding_Post_and_User' #86 + │ ├── [id]: optional #74 + │ │ └── item: &_prisma_integer_filter_ex #33 + │ ├── [name]: optional #75 + │ │ └── item: &_prisma_string_filter_ex #11 + │ └── [posts]: optional #84 + │ └── item: union #83 + │ ├── variant_0: struct #78 + │ │ └── [every]: optional #77 + │ │ └── item: &Post_where_excluding_User #76 + │ ├── variant_1: struct #80 + │ │ └── [some]: optional #79 + │ │ └── item: &Post_where_excluding_User #76 + │ └── variant_2: struct #82 + │ └── [none]: optional #81 + │ └── item: &Post_where_excluding_User #76 + ├── [id]: optional #71 + │ └── item: &_prisma_integer_filter_ex #33 + └── [title]: optional #72 + └── item: &_prisma_string_filter_ex #11 diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/where_.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/where_.rs index 964ff7b5ee..b1f83b19a0 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/where_.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/where_.rs @@ -2,7 +2,6 @@ // SPDX-License-Identifier: MPL-2.0 use common::typegraph::runtimes::prisma::ScalarType; -use indexmap::IndexMap; use crate::errors::Result; use crate::runtimes::prisma::context::PrismaContext; @@ -18,7 +17,7 @@ use super::TypeGen; pub struct Where { model_id: TypeId, - skip_models: IndexMap, + skip_models: std::collections::BTreeMap, aggregates: bool, } @@ -52,9 +51,10 @@ impl Where { // TODO merge with with filters?? impl TypeGen for Where { fn generate(&self, context: &PrismaContext) -> Result { - let name = self.name(); let mut builder = t::struct_(); + let name = self.name(context)?; + let model = context.model(self.model_id)?; let model = model.borrow(); @@ -108,10 +108,10 @@ impl TypeGen for Where { } } - builder.build_named(self.name()) + builder.build_named(name) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let model_name = self.model_id.name().unwrap().unwrap(); let suffix1 = if self.aggregates { @@ -126,18 +126,23 @@ impl TypeGen for Where { } else { "_where" }; + format!( "_excluding_{}", self.skip_models - .iter() - .map(|(_, name)| name.strip_suffix(nested_suffix).unwrap_or(name.as_str())) + .keys() + .map(|id| id.name().unwrap().unwrap()) + .map(|name| name + .strip_suffix(nested_suffix) + .map(|str| str.to_owned()) + .unwrap_or(name)) .collect::>() .join("_and_") ) } else { "".to_string() }; - format!("{model_name}_where{suffix1}{suffix2}") + Ok(format!("{model_name}_where{suffix1}{suffix2}")) } } diff --git a/src/typegraph/core/src/runtimes/prisma/type_generation/with_nested_count.rs b/src/typegraph/core/src/runtimes/prisma/type_generation/with_nested_count.rs index 213e0f9602..a3afeae1e7 100644 --- a/src/typegraph/core/src/runtimes/prisma/type_generation/with_nested_count.rs +++ b/src/typegraph/core/src/runtimes/prisma/type_generation/with_nested_count.rs @@ -92,16 +92,16 @@ impl TypeGen for WithNestedCount { builder.propx("_count", count)?; } - builder.build_named(self.name()) + builder.build_named(self.name(context)?) } - fn name(&self) -> String { + fn name(&self, _context: &PrismaContext) -> Result { let model_name = self.model_id.name().unwrap().unwrap(); let suffix = if self.skip.is_empty() { "".to_string() } else { format!("_excluding_{}", self.skip.join("_and_")) }; - format!("{model_name}_with_nested_count{suffix}") + Ok(format!("{model_name}_with_nested_count{suffix}")) } } diff --git a/src/typegraph/core/src/snapshots/typegraph_core__tests__successful_serialization.snap b/src/typegraph/core/src/snapshots/typegraph_core__tests__successful_serialization.snap index 048b0a6aee..29f6ea430b 100644 --- a/src/typegraph/core/src/snapshots/typegraph_core__tests__successful_serialization.snap +++ b/src/typegraph/core/src/snapshots/typegraph_core__tests__successful_serialization.snap @@ -7,7 +7,6 @@ expression: typegraph.0 { "type": "object", "title": "test", - "policies": [], "properties": { "one": 1 }, @@ -19,7 +18,6 @@ expression: typegraph.0 { "type": "function", "title": "root_one_fn", - "policies": [], "input": 2, "output": 4, "runtimeConfig": null, @@ -30,44 +28,43 @@ expression: typegraph.0 { "type": "object", "title": "root_one_fn_input", - "policies": [], "properties": { "one": 3, "two": 4, "three": 5 }, "id": [], - "required": [] + "required": [], + "policies": { + "one": [], + "two": [], + "three": [] + } }, { "type": "integer", - "title": "root_one_fn_input_one_integer", - "policies": [] + "title": "root_one_fn_input_one_integer" }, { "type": "integer", "title": "root_one_fn_input_two_integer", - "policies": [], "minimum": 12, "maximum": 44 }, { "type": "optional", "title": "root_one_fn_input_three_root_one_fn_input_three_root_one_fn_input_three_float_list_optional", - "policies": [], "item": 6, "default_value": null }, { "type": "list", "title": "root_one_fn_input_three_root_one_fn_input_three_float_list", - "policies": [], "items": 7 }, { "type": "float", - "title": "root_one_fn_input_three_float", - "policies": [] + "title": "root_one_fn_input_three_float" } ], "materializers": [ diff --git a/src/typegraph/core/src/t.rs b/src/typegraph/core/src/t.rs index f39b6c7139..dabd645471 100644 --- a/src/typegraph/core/src/t.rs +++ b/src/typegraph/core/src/t.rs @@ -478,7 +478,7 @@ pub fn ref_(name: impl Into, attribute: Option) -> RefBuilder { } macro_rules! impl_type_builder { - ( $ty:ty, $build:ident ) => { + ( $ty:ty, $build:ident) => { impl TypeBuilder for $ty { fn build(&self) -> Result { let res = $crate::Lib::$build(self.data.clone())?; diff --git a/src/typegraph/core/src/typedef/boolean.rs b/src/typegraph/core/src/typedef/boolean.rs index 652e761b7f..786e9e097c 100644 --- a/src/typegraph/core/src/typedef/boolean.rs +++ b/src/typegraph/core/src/typedef/boolean.rs @@ -11,19 +11,17 @@ use crate::{ }, errors, typegraph::TypegraphContext, - types::{Boolean, ExtendedTypeDef, FindAttribute as _, TypeBoolean, TypeDefData}, + types::{Boolean, ExtendedTypeDef, TypeBoolean, TypeDefData}, }; use std::hash::Hash; impl TypeConversion for Boolean { - fn convert(&self, ctx: &mut TypegraphContext, xdef: ExtendedTypeDef) -> Result { + fn convert(&self, _ctx: &mut TypegraphContext, xdef: ExtendedTypeDef) -> Result { Ok(TypeNode::Boolean { base: BaseBuilderInit { - ctx, base_name: "boolean", type_id: self.id, name: xdef.get_owned_name(), - policies: xdef.attributes.find_policy().unwrap_or(&[]), } .init_builder()? .build()?, diff --git a/src/typegraph/core/src/typedef/either.rs b/src/typegraph/core/src/typedef/either.rs index afae92ca06..a90b9c2a45 100644 --- a/src/typegraph/core/src/typedef/either.rs +++ b/src/typegraph/core/src/typedef/either.rs @@ -13,7 +13,7 @@ use crate::{ }, errors, typegraph::TypegraphContext, - types::{Either, ExtendedTypeDef, FindAttribute as _, TypeDefData, TypeId}, + types::{Either, ExtendedTypeDef, TypeDefData, TypeId}, wit::core::TypeEither, }; @@ -21,11 +21,9 @@ impl TypeConversion for Either { fn convert(&self, ctx: &mut TypegraphContext, xdef: ExtendedTypeDef) -> Result { Ok(TypeNode::Either { base: BaseBuilderInit { - ctx, base_name: "either", type_id: self.id, name: xdef.get_owned_name(), - policies: xdef.attributes.find_policy().unwrap_or(&[]), } .init_builder()? .build()?, diff --git a/src/typegraph/core/src/typedef/file.rs b/src/typegraph/core/src/typedef/file.rs index f1550a63af..0cb4660831 100644 --- a/src/typegraph/core/src/typedef/file.rs +++ b/src/typegraph/core/src/typedef/file.rs @@ -9,7 +9,7 @@ use crate::conversion::hash::Hashable; use crate::conversion::types::{BaseBuilderInit, TypeConversion}; use crate::errors::Result; use crate::typegraph::TypegraphContext; -use crate::types::{ExtendedTypeDef, File, FindAttribute as _, TypeDefData}; +use crate::types::{ExtendedTypeDef, File, TypeDefData}; use crate::wit::core::TypeFile; impl TypeDefData for TypeFile { @@ -49,15 +49,13 @@ impl Hashable for TypeFile { } impl TypeConversion for File { - fn convert(&self, ctx: &mut TypegraphContext, xdef: ExtendedTypeDef) -> Result { + fn convert(&self, _ctx: &mut TypegraphContext, xdef: ExtendedTypeDef) -> Result { Ok(TypeNode::File { // TODO should `as_id` be supported? base: BaseBuilderInit { - ctx, base_name: "file", type_id: self.id, name: xdef.get_owned_name(), - policies: xdef.attributes.find_policy().unwrap_or(&[]), } .init_builder()? .build()?, diff --git a/src/typegraph/core/src/typedef/float.rs b/src/typegraph/core/src/typedef/float.rs index d7e5f24891..6b08a41e9b 100644 --- a/src/typegraph/core/src/typedef/float.rs +++ b/src/typegraph/core/src/typedef/float.rs @@ -14,19 +14,17 @@ use crate::{ }, errors, typegraph::TypegraphContext, - types::{ExtendedTypeDef, FindAttribute as _, Float, TypeDefData}, + types::{ExtendedTypeDef, Float, TypeDefData}, wit::core::TypeFloat, }; impl TypeConversion for Float { - fn convert(&self, ctx: &mut TypegraphContext, xdef: ExtendedTypeDef) -> Result { + fn convert(&self, _ctx: &mut TypegraphContext, xdef: ExtendedTypeDef) -> Result { Ok(TypeNode::Float { base: BaseBuilderInit { - ctx, base_name: "float", type_id: self.id, name: xdef.get_owned_name(), - policies: xdef.attributes.find_policy().unwrap_or(&[]), } .init_builder()? .enum_(self.data.enumeration.as_deref()) diff --git a/src/typegraph/core/src/typedef/func.rs b/src/typegraph/core/src/typedef/func.rs index 377d27e8c2..c6a23630d1 100644 --- a/src/typegraph/core/src/typedef/func.rs +++ b/src/typegraph/core/src/typedef/func.rs @@ -75,11 +75,9 @@ impl TypeConversion for Func { Ok(TypeNode::Function { base: BaseBuilderInit { - ctx, base_name: "func", type_id: self.id, name: xdef.get_owned_name(), - policies: xdef.attributes.find_policy().unwrap_or(&[]), } .init_builder()? .build()?, diff --git a/src/typegraph/core/src/typedef/integer.rs b/src/typegraph/core/src/typedef/integer.rs index 5108b8573b..37e1b2666a 100644 --- a/src/typegraph/core/src/typedef/integer.rs +++ b/src/typegraph/core/src/typedef/integer.rs @@ -13,19 +13,17 @@ use crate::{ }, errors, typegraph::TypegraphContext, - types::{ExtendedTypeDef, FindAttribute as _, Integer, TypeDefData}, + types::{ExtendedTypeDef, Integer, TypeDefData}, wit::core::TypeInteger, }; impl TypeConversion for Integer { - fn convert(&self, ctx: &mut TypegraphContext, xdef: ExtendedTypeDef) -> Result { + fn convert(&self, _ctx: &mut TypegraphContext, xdef: ExtendedTypeDef) -> Result { Ok(TypeNode::Integer { base: BaseBuilderInit { - ctx, base_name: "integer", type_id: self.id, name: xdef.get_owned_name(), - policies: xdef.attributes.find_policy().unwrap_or(&[]), } .init_builder()? .enum_(self.data.enumeration.as_deref()) diff --git a/src/typegraph/core/src/typedef/list.rs b/src/typegraph/core/src/typedef/list.rs index 069cb79faf..3ea9e405a2 100644 --- a/src/typegraph/core/src/typedef/list.rs +++ b/src/typegraph/core/src/typedef/list.rs @@ -12,7 +12,7 @@ use crate::{ }, errors::Result, typegraph::TypegraphContext, - types::{ExtendedTypeDef, FindAttribute as _, List, TypeDefData, TypeId}, + types::{ExtendedTypeDef, List, TypeDefData, TypeId}, wit::core::TypeList, }; @@ -20,11 +20,9 @@ impl TypeConversion for List { fn convert(&self, ctx: &mut TypegraphContext, xdef: ExtendedTypeDef) -> Result { Ok(TypeNode::List { base: BaseBuilderInit { - ctx, base_name: "list", type_id: self.id, name: xdef.get_owned_name(), - policies: xdef.attributes.find_policy().unwrap_or(&[]), } .init_builder()? .build()?, diff --git a/src/typegraph/core/src/typedef/optional.rs b/src/typegraph/core/src/typedef/optional.rs index 77f650838a..cb89e3b68e 100644 --- a/src/typegraph/core/src/typedef/optional.rs +++ b/src/typegraph/core/src/typedef/optional.rs @@ -13,7 +13,7 @@ use crate::{ }, errors, typegraph::TypegraphContext, - types::{ExtendedTypeDef, FindAttribute as _, Optional, TypeDefData, TypeId}, + types::{ExtendedTypeDef, Optional, TypeDefData, TypeId}, wit::core::TypeOptional, }; @@ -29,11 +29,9 @@ impl TypeConversion for Optional { Ok(TypeNode::Optional { base: BaseBuilderInit { - ctx, base_name: "optional", type_id: self.id, name: xdef.get_owned_name(), - policies: xdef.attributes.find_policy().unwrap_or(&[]), } .init_builder()? .build()?, diff --git a/src/typegraph/core/src/typedef/string.rs b/src/typegraph/core/src/typedef/string.rs index 49afb6f13f..57d3e0c9d3 100644 --- a/src/typegraph/core/src/typedef/string.rs +++ b/src/typegraph/core/src/typedef/string.rs @@ -13,12 +13,12 @@ use crate::{ }, errors, typegraph::TypegraphContext, - types::{ExtendedTypeDef, FindAttribute as _, StringT, TypeDefData}, + types::{ExtendedTypeDef, StringT, TypeDefData}, wit::core::TypeString, }; impl TypeConversion for StringT { - fn convert(&self, ctx: &mut TypegraphContext, xdef: ExtendedTypeDef) -> Result { + fn convert(&self, _ctx: &mut TypegraphContext, xdef: ExtendedTypeDef) -> Result { let format: Option = match self.data.format.clone() { Some(format) => { let ret = @@ -30,11 +30,9 @@ impl TypeConversion for StringT { Ok(TypeNode::String { base: BaseBuilderInit { - ctx, base_name: "string", type_id: self.id, name: xdef.get_owned_name(), - policies: xdef.attributes.find_policy().unwrap_or(&[]), } .init_builder()? .enum_(self.data.enumeration.as_deref()) diff --git a/src/typegraph/core/src/typedef/struct_.rs b/src/typegraph/core/src/typedef/struct_.rs index c1481bcba5..3f7338e1f4 100644 --- a/src/typegraph/core/src/typedef/struct_.rs +++ b/src/typegraph/core/src/typedef/struct_.rs @@ -4,10 +4,11 @@ use crate::conversion::hash::Hashable; use crate::conversion::types::{BaseBuilderInit, TypeConversion}; use crate::types::{ - AsTypeDefEx as _, ExtendedTypeDef, FindAttribute as _, IdKind, Struct, TypeDefData, TypeId, + AsTypeDefEx as _, ExtendedTypeDef, FindAttribute as _, IdKind, PolicySpec, Struct, TypeDef, + TypeDefData, TypeId, }; use crate::{errors, typegraph::TypegraphContext, wit::core::TypeStruct}; -use common::typegraph::{ObjectTypeData, TypeNode}; +use common::typegraph::{ObjectTypeData, PolicyIndices, TypeNode}; use errors::Result; use indexmap::IndexMap; use std::hash::Hash as _; @@ -63,11 +64,9 @@ impl TypeConversion for Struct { fn convert(&self, ctx: &mut TypegraphContext, xdef: ExtendedTypeDef) -> Result { Ok(TypeNode::Object { base: BaseBuilderInit { - ctx, base_name: "object", type_id: self.id, name: xdef.get_owned_name(), - policies: xdef.attributes.find_policy().unwrap_or(&[]), } .init_builder()? .enum_(self.data.enumeration.as_deref()) @@ -81,6 +80,7 @@ impl TypeConversion for Struct { .collect::>>()?, id: self.data.find_id_fields()?, required: Vec::new(), + policies: self.data.collect_policies(ctx)?, }, }) } @@ -126,3 +126,65 @@ impl TypeStruct { .find_map(|(n, t)| if n == name { Some(t.into()) } else { None }) } } + +impl TypeStruct { + fn collect_policies( + &self, + ctx: &mut TypegraphContext, + ) -> Result>> { + let mut res = IndexMap::new(); + for (name, tpe_id) in &self.props { + let mut chain = vec![]; + extend_policy_chain(&mut chain, TypeId(*tpe_id))?; + + res.insert(name.clone(), ctx.register_policy_chain(&chain)?); + } + Ok(res) + } +} + +pub fn extend_policy_chain(chain: &mut Vec, type_id: TypeId) -> Result<()> { + let xdef = type_id.as_xdef()?; + let policies = xdef.attributes.find_policy().unwrap_or(&[]); + chain.extend(policies.iter().cloned()); + + match xdef.type_def { + TypeDef::Optional(inner) => { + extend_policy_chain(chain, TypeId(inner.data.of))?; + } + TypeDef::List(inner) => { + extend_policy_chain(chain, TypeId(inner.data.of))?; + } + TypeDef::Union(inner) => { + for tpe_id in inner.data.variants.iter() { + let tpe = TypeId(*tpe_id); + if !tpe.is_struct()? { + extend_policy_chain(chain, tpe)?; + } + } + } + TypeDef::Either(inner) => { + for tpe_id in inner.data.variants.iter() { + let tpe = TypeId(*tpe_id); + if !tpe.is_struct()? { + extend_policy_chain(chain, tpe)?; + } + } + } + TypeDef::Func(inner) => { + extend_policy_chain(chain, TypeId(inner.data.out))?; + } + TypeDef::Struct(_) => { + // noop + // struct is the boundary + } + // scalar types + TypeDef::Integer(_) + | TypeDef::Float(_) + | TypeDef::Boolean(_) + | TypeDef::String(_) + | TypeDef::File(_) => {} + } + + Ok(()) +} diff --git a/src/typegraph/core/src/typedef/union.rs b/src/typegraph/core/src/typedef/union.rs index c037202fcd..1eeb0b9240 100644 --- a/src/typegraph/core/src/typedef/union.rs +++ b/src/typegraph/core/src/typedef/union.rs @@ -13,7 +13,7 @@ use crate::{ }, errors, typegraph::TypegraphContext, - types::{ExtendedTypeDef, FindAttribute as _, TypeDefData, TypeId, Union}, + types::{ExtendedTypeDef, TypeDefData, TypeId, Union}, wit::core::TypeUnion, }; @@ -21,11 +21,9 @@ impl TypeConversion for Union { fn convert(&self, ctx: &mut TypegraphContext, xdef: ExtendedTypeDef) -> Result { Ok(TypeNode::Union { base: BaseBuilderInit { - ctx, base_name: "union", type_id: self.id, name: xdef.get_owned_name(), - policies: xdef.attributes.find_policy().unwrap_or(&[]), } .init_builder()? .build()?, diff --git a/src/typegraph/core/src/typegraph.rs b/src/typegraph/core/src/typegraph.rs index 71b11b31fd..e6ee32fda7 100644 --- a/src/typegraph/core/src/typegraph.rs +++ b/src/typegraph/core/src/typegraph.rs @@ -5,6 +5,7 @@ use crate::conversion::hash::Hasher; use crate::conversion::runtimes::{convert_materializer, convert_runtime, ConvertedRuntime}; use crate::conversion::types::TypeConversion as _; use crate::global_store::SavedState; +use crate::typedef::struct_::extend_policy_chain; use crate::types::{ AsTypeDefEx as _, FindAttribute as _, PolicySpec, TypeDef, TypeDefExt, TypeId, WithPolicy, }; @@ -129,11 +130,11 @@ pub fn init(params: TypegraphInitParams) -> Result<()> { base: TypeNodeBase { description: None, enumeration: None, - policies: Default::default(), title: params.name, }, data: ObjectTypeData { properties: IndexMap::new(), + policies: Default::default(), id: vec![], required: vec![], }, @@ -320,9 +321,16 @@ pub fn expose( return Err(errors::duplicate_export_name(&key)); } ensure_valid_export(key.clone(), type_id)?; + let mut policy_chain = vec![]; + extend_policy_chain(&mut policy_chain, type_id)?; let type_idx = ctx.register_type(type_id)?; root_data.properties.insert(key.clone(), type_idx.into()); + if !policy_chain.is_empty() { + root_data + .policies + .insert(key.clone(), ctx.register_policy_chain(&policy_chain)?); + } root_data.required.push(key); Ok(()) }) @@ -348,6 +356,7 @@ impl TypegraphContext { let xdef = type_id.as_xdef()?; xdef.hash_type(&mut hasher, self)?; let hash = hasher.finish(); + // crate::logger::warning!("done hashing {:?}: {hash}", xdef.name); self.mapping.types_to_hash.insert(type_id.into(), hash); Ok(hash) } diff --git a/src/typegraph/core/src/types/type_def.rs b/src/typegraph/core/src/types/type_def.rs index a18a103dfe..a145bcd9d9 100644 --- a/src/typegraph/core/src/types/type_def.rs +++ b/src/typegraph/core/src/types/type_def.rs @@ -35,7 +35,7 @@ where Rc>: Into, { pub fn type_with_data(&self, data: T) -> Result { - Store::register_type_def(|type_id| Rc::new(Self { id: type_id, data }).into()) + Store::register_type_def(|type_id| Ok(Rc::new(Self { id: type_id, data }).into())) } } diff --git a/src/typegraph/core/src/types/type_id.rs b/src/typegraph/core/src/types/type_id.rs index 5e8289881e..32d2b7a6f7 100644 --- a/src/typegraph/core/src/types/type_id.rs +++ b/src/typegraph/core/src/types/type_id.rs @@ -7,7 +7,7 @@ use crate::types::AsTypeDefEx as _; use crate::wit::core::TypeId as CoreTypeId; use std::fmt::Debug; -#[derive(Clone, Copy, PartialEq, Eq, Hash)] +#[derive(Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] pub struct TypeId(pub CoreTypeId); impl Debug for TypeId { diff --git a/src/typegraph/core/src/utils/postprocess/naming.rs b/src/typegraph/core/src/utils/postprocess/naming.rs index ab636ae38a..1a062eb00b 100644 --- a/src/typegraph/core/src/utils/postprocess/naming.rs +++ b/src/typegraph/core/src/utils/postprocess/naming.rs @@ -86,7 +86,9 @@ fn visit_type(cx: &VisitContext, acc: &mut VisitCollector, id: u32) -> anyhow::R )); let inner_name = visit_type(cx, acc, data.item)?; acc.path.pop(); + // gen_name(cx, acc, id, "optional") gen_name(cx, acc, id, &format!("{inner_name}_optional")) + // format!("{inner_name}_optional").into() } TypeNode::List { data, .. } => { acc.path.push(( @@ -98,11 +100,13 @@ fn visit_type(cx: &VisitContext, acc: &mut VisitCollector, id: u32) -> anyhow::R )); let inner_name = visit_type(cx, acc, data.items)?; acc.path.pop(); + // gen_name(cx, acc, id, "list") /* if cx.user_named.contains(&data.items) { - gen_name(cx, acc, id, &format!("{inner_name}_list")) + gen_name(cx, acc, id, &format!("{_inner_name}_list")) } else { - format!("{inner_name}_list").into() + format!("{_inner_name}_list").into() } */ + // format!("{inner_name}_list").into() gen_name(cx, acc, id, &format!("{inner_name}_list")) } TypeNode::Object { data, .. } => { diff --git a/src/typegraph/core/src/validation/materializers.rs b/src/typegraph/core/src/validation/materializers.rs index 23c3023b4f..c05459aebe 100644 --- a/src/typegraph/core/src/validation/materializers.rs +++ b/src/typegraph/core/src/validation/materializers.rs @@ -48,6 +48,18 @@ impl Materializer { }; } } + + "allow" | "deny" | "pass" => { + if let Ok(xdef) = TypeId(func.out).as_xdef() { + let TypeDef::String(_) = xdef.type_def else { + return Err(errors::invalid_output_type_predefined( + &predef.name, + "string", + &TypeId(func.out).repr()?, + )); + }; + } + } _ => { return Err(errors::unknown_predefined_function(&predef.name)); } diff --git a/src/typegraph/deno/deno.json b/src/typegraph/deno/deno.json index e902c7a0de..0b0ea829e7 100644 --- a/src/typegraph/deno/deno.json +++ b/src/typegraph/deno/deno.json @@ -1,6 +1,6 @@ { "name": "@typegraph/sdk", - "version": "0.5.0-rc.7", + "version": "0.5.0-rc.9", "publish": { "exclude": [ "!src/gen", @@ -16,13 +16,15 @@ } }, "exports": { + ".": "./src/index.ts", "./deps/_import.ts": "./src/deps/_import.ts", "./deps/mod.ts": "./src/deps/mod.ts", "./effects": "./src/effects.ts", "./envs/cli": "./src/envs/cli.ts", "./gen/typegraph_core.d.ts": "./src/gen/typegraph_core.d.ts", + "./gen/typegraph_core": "./src/gen/typegraph_core.d.ts", "./host/host.d.ts": "./src/host/host.d.ts", - ".": "./src/index.ts", + "./host/host": "./src/host/host.d.ts", "./io": "./src/io.ts", "./metagen": "./src/metagen.ts", "./params": "./src/params.ts", diff --git a/src/typegraph/deno/src/deps/_import.ts b/src/typegraph/deno/src/deps/_import.ts index eb6a58283a..1b507c322f 100644 --- a/src/typegraph/deno/src/deps/_import.ts +++ b/src/typegraph/deno/src/deps/_import.ts @@ -1,5 +1,7 @@ // no-auto-license-header | @generated (pre-commit doesn't support two headers) +// jsr-private-module + /* The MIT License (MIT) diff --git a/src/typegraph/deno/src/deps/mod.ts b/src/typegraph/deno/src/deps/mod.ts index 0ad837fc8c..05b193b3e5 100644 --- a/src/typegraph/deno/src/deps/mod.ts +++ b/src/typegraph/deno/src/deps/mod.ts @@ -1,5 +1,8 @@ // Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. // SPDX-License-Identifier: MPL-2.0 + +// jsr-private-module + export { caller } from "./_import.ts"; export function mapValues< diff --git a/src/typegraph/deno/src/typegraph.ts b/src/typegraph/deno/src/typegraph.ts index f14a6e4946..bd1cc356cd 100644 --- a/src/typegraph/deno/src/typegraph.ts +++ b/src/typegraph/deno/src/typegraph.ts @@ -277,7 +277,7 @@ export async function typegraph( log.debug("exiting"); process.exit(0); } - }, 100); + }, 1000); } --counter; diff --git a/src/typegraph/deno/src/types.ts b/src/typegraph/deno/src/types.ts index c037153c14..d048d82325 100644 --- a/src/typegraph/deno/src/types.ts +++ b/src/typegraph/deno/src/types.ts @@ -39,7 +39,6 @@ import { ApplyFromStatic, type InheritDef, } from "./typegraph.ts"; -import { log } from "./io.ts"; export type PolicySpec = | Policy @@ -81,7 +80,7 @@ export function getPolicyChain( export class Typedef { readonly name?: string; - policy: Policy[] | null = null; + policy: WitPolicySpec[] | null = null; constructor(public readonly _id: number) {} @@ -90,15 +89,16 @@ export class Typedef { } withPolicy(policy: PolicySpec[] | PolicySpec): this { - const id = core.withPolicy(this._id, getPolicyChain(policy)); + const chain = getPolicyChain(policy); + const newChain = [...(this.policy ?? []), ...chain]; + const id = core.withPolicy(this._id, newChain); - const chain = Array.isArray(policy) ? policy : [policy]; return new Proxy(this, { get(target, prop, receiver) { if (prop === "_id") { return id; } else if (prop === "policy") { - return chain; + return newChain; } else { return Reflect.get(target, prop, receiver); } @@ -626,7 +626,6 @@ export class Func< throw new Error("Invalid apply value: root must be an object"); } const transformTree = JSON.stringify(serialized.fields); - log.info("transform tree", transformTree); const transformData = core.getTransformData(this.inp._id, transformTree); return func( diff --git a/src/typegraph/python/pyproject.toml b/src/typegraph/python/pyproject.toml index eaa65a7ef3..921b7e6083 100644 --- a/src/typegraph/python/pyproject.toml +++ b/src/typegraph/python/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "typegraph" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" description = "Declarative API development platform. Build backend components with WASM, Typescript and Python, no matter where and how your (legacy) systems are." authors = ["Metatype Contributors "] license = "MPL-2.0" diff --git a/src/typegraph/python/typegraph/__init__.py b/src/typegraph/python/typegraph/__init__.py index 33dc627cc3..c88a4adc46 100644 --- a/src/typegraph/python/typegraph/__init__.py +++ b/src/typegraph/python/typegraph/__init__.py @@ -5,4 +5,4 @@ from typegraph.policy import Policy # noqa from typegraph import effects as fx # noqa -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" diff --git a/src/typegraph/python/typegraph/t.py b/src/typegraph/python/typegraph/t.py index 5e6215d0cf..8433ffdf74 100644 --- a/src/typegraph/python/typegraph/t.py +++ b/src/typegraph/python/typegraph/t.py @@ -75,13 +75,14 @@ def __repr__(self): def with_policy(self, *policies: Optional[PolicySpec]) -> Self: policy_chain = get_policy_chain(policies) - res = core.with_policy(store, self._id, policy_chain) + new_policy_chain = (self.policy_chain or []) + policy_chain + res = core.with_policy(store, self._id, new_policy_chain) if isinstance(res, Err): raise ErrorStack(res.value) ret = copy.copy(self) ret._id = res.value - ret.policy_chain = policy_chain + ret.policy_chain = new_policy_chain return ret def rename(self, name: str) -> Self: diff --git a/src/xtask/Cargo.toml b/src/xtask/Cargo.toml index 12e166014c..49320dbf50 100644 --- a/src/xtask/Cargo.toml +++ b/src/xtask/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "xtask" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" edition = "2021" # this allows us to exclude the rust files diff --git a/tests/artifacts/artifacts_test.ts b/tests/artifacts/artifacts_test.ts index 17fafc273b..63e6e4f66f 100644 --- a/tests/artifacts/artifacts_test.ts +++ b/tests/artifacts/artifacts_test.ts @@ -81,7 +81,11 @@ for (const { mode, ...options } of variants) { ...options, }, async (t) => { - const e = await t.engine("runtimes/deno/deno.py"); + const e = await t.engine("runtimes/deno/deno.py", { + secrets: { + DENO_SECRET: "deno_secret", + }, + }); const artifacts = e.tg.tg.meta.artifacts; await t.should("have uploaded artifacts on deploy", async () => { @@ -120,7 +124,11 @@ for (const { mode, ...options } of variants) { ...options, }, async (t) => { - const e = await t.engine("runtimes/deno/deno.py"); + const e = await t.engine("runtimes/deno/deno.py", { + secrets: { + DENO_SECRET: "deno_secret", + }, + }); const artifacts = e.tg.tg.meta.artifacts; await t.should("have uploaded artifacts on deploy", async () => { @@ -149,7 +157,11 @@ for (const { mode, ...options } of variants) { ...options, }, async (t) => { - const engine = await t.engine("runtimes/deno/deno.py"); + const engine = await t.engine("runtimes/deno/deno.py", { + secrets: { + DENO_SECRET: "deno_secret", + }, + }); const artifacts = engine.tg.tg.meta.artifacts; const enginePartial = await t.engine("runtimes/deno/deno_partial.py"); diff --git a/tests/auth/auth.py b/tests/auth/auth.py index e3a1703de7..d40ea412df 100644 --- a/tests/auth/auth.py +++ b/tests/auth/auth.py @@ -17,9 +17,12 @@ def auth(g: Graph): remote = HttpRuntime("https://api.github.com") public = Policy.public() - private = deno.policy("private", "(_args, { context }) => !!context.user1") + private = deno.policy( + "private", "(_args, { context }) => !!context.user1 ? 'ALLOW' : 'DENY'" + ) with_token = deno.policy( - "with_token", "(_args, { context }) => { return !!context.accessToken; }" + "with_token", + "(_args, { context }) => { return !!context.accessToken ? 'ALLOW' : 'DENY'; }", ) x = t.struct({"x": t.integer()}) diff --git a/tests/e2e/published/published_test.ts b/tests/e2e/published/published_test.ts index df61a7294c..2d989713f1 100644 --- a/tests/e2e/published/published_test.ts +++ b/tests/e2e/published/published_test.ts @@ -393,7 +393,8 @@ typegraphs: prisma: migrations_path: "migrations" `); - await t.should("work with JSR npm", async () => { + // FIXME: enable after 0.5.0.-rc.8 releases + /* await t.should("work with JSR npm", async () => { const npmJsrDir = await tgsDir.join("npm_jsr").ensureDir(); await $`pnpm init`.cwd(npmJsrDir); await $`pnpm --package=jsr dlx jsr add @typegraph/sdk@${PUBLISHED_VERSION}` @@ -451,7 +452,7 @@ typegraphs: .env("PATH", `${metaBinDir}:${Deno.env.get("PATH")}`) .env("MCLI_LOADER_CMD", `deno run -A --config deno.json`) .env("RUST_LOG", "trace"); - }); + }); */ await t.should("work with pypa", async () => { const pypaDir = await tgsDir.join("pypa").ensureDir(); @@ -462,7 +463,12 @@ typegraphs: ); await $.co([ pypaDir.join("README.md").ensureFile(), - $`bash -c 'python3 -m venv .venv && source .venv/bin/activate && poetry install --no-root'` + $`bash -sx` + .stdinText([ + `python3 -m venv .venv`, + `source .venv/bin/activate`, + `poetry install --no-root`, + ].join("\n")) .cwd( pypaDir, ), diff --git a/tests/e2e/typegraph/__snapshots__/typegraph_test.ts.snap b/tests/e2e/typegraph/__snapshots__/typegraph_test.ts.snap index b81a657e97..4f0039f62f 100644 --- a/tests/e2e/typegraph/__snapshots__/typegraph_test.ts.snap +++ b/tests/e2e/typegraph/__snapshots__/typegraph_test.ts.snap @@ -7,21 +7,22 @@ snapshot[`typegraphs creation 1`] = ` { "type": "object", "title": "test-complex-types", - "policies": [], "properties": { "test": 1 }, "id": [], "required": [ "test" - ] + ], + "policies": { + "test": [ + 0 + ] + } }, { "type": "function", "title": "root_test_fn", - "policies": [ - 0 - ], "input": 2, "output": 18, "runtimeConfig": null, @@ -32,7 +33,6 @@ snapshot[`typegraphs creation 1`] = ` { "type": "object", "title": "ComplexType", - "policies": [], "properties": { "a_string": 3, "a_float": 4, @@ -45,24 +45,32 @@ snapshot[`typegraphs creation 1`] = ` "an_email": 17 }, "id": [], - "required": [] + "required": [], + "policies": { + "a_string": [], + "a_float": [], + "an_enum": [], + "an_integer_enum": [], + "a_float_enum": [], + "a_struct": [], + "nested": [], + "nested_with_ref": [], + "an_email": [] + } }, { "type": "string", - "title": "ComplexType_a_string_string", - "policies": [] + "title": "ComplexType_a_string_string" }, { "type": "float", "title": "ComplexType_a_float_float", - "policies": [], "minimum": 1.0, "multipleOf": 2.0 }, { "type": "string", "title": "ComplexType_an_enum_string_enum", - "policies": [], "enum": [ "\\\\"one\\\\"", "\\\\"two\\\\"" @@ -71,7 +79,6 @@ snapshot[`typegraphs creation 1`] = ` { "type": "integer", "title": "ComplexType_an_integer_enum_integer_enum", - "policies": [], "enum": [ "1", "2" @@ -80,7 +87,6 @@ snapshot[`typegraphs creation 1`] = ` { "type": "float", "title": "ComplexType_a_float_enum_float", - "policies": [], "enum": [ "1.5", "2.5" @@ -89,35 +95,33 @@ snapshot[`typegraphs creation 1`] = ` { "type": "object", "title": "ComplexType_a_struct_struct", - "policies": [], "properties": { "value": 9 }, "id": [], - "required": [] + "required": [], + "policies": { + "value": [] + } }, { "type": "float", - "title": "ComplexType_a_struct_struct_value_float", - "policies": [] + "title": "ComplexType_a_struct_struct_value_float" }, { "type": "optional", "title": "ComplexType_nested_ComplexType_nested_ComplexType_nested_either_list_optional", - "policies": [], "item": 11, "default_value": null }, { "type": "list", "title": "ComplexType_nested_ComplexType_nested_either_list", - "policies": [], "items": 12 }, { "type": "either", "title": "ComplexType_nested_either", - "policies": [], "oneOf": [ 3, 13 @@ -125,44 +129,42 @@ snapshot[`typegraphs creation 1`] = ` }, { "type": "integer", - "title": "ComplexType_nested_either_t1_integer", - "policies": [] + "title": "ComplexType_nested_either_t1_integer" }, { "type": "object", "title": "SomeType", - "policies": [], "properties": { "one": 15, "two": 16 }, "id": [], - "required": [] + "required": [], + "policies": { + "one": [], + "two": [] + } }, { "type": "list", "title": "Two", - "policies": [], "items": 13, "minItems": 3 }, { "type": "optional", "title": "SomeType_two_SomeType_optional", - "policies": [], "item": 14, "default_value": null }, { "type": "string", "title": "ComplexType_an_email_string_email", - "policies": [], "format": "email" }, { "type": "boolean", - "title": "root_test_fn_output", - "policies": [] + "title": "root_test_fn_output" } ], "materializers": [ @@ -186,7 +188,7 @@ snapshot[`typegraphs creation 1`] = ` "idempotent": true }, "data": { - "name": "true" + "name": "pass" } } ], @@ -270,7 +272,6 @@ snapshot[`typegraphs creation 2`] = ` { "type": "object", "title": "test-multiple-runtimes", - "policies": [], "properties": { "add": 1, "multiply": 4 @@ -279,14 +280,19 @@ snapshot[`typegraphs creation 2`] = ` "required": [ "add", "multiply" - ] + ], + "policies": { + "add": [ + 0 + ], + "multiply": [ + 0 + ] + } }, { "type": "function", "title": "root_add_fn", - "policies": [ - 0 - ], "input": 2, "output": 3, "runtimeConfig": null, @@ -297,25 +303,24 @@ snapshot[`typegraphs creation 2`] = ` { "type": "object", "title": "root_add_fn_input", - "policies": [], "properties": { "first": 3, "second": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "first": [], + "second": [] + } }, { "type": "float", - "title": "root_add_fn_input_first_float", - "policies": [] + "title": "root_add_fn_input_first_float" }, { "type": "function", "title": "root_multiply_fn", - "policies": [ - 0 - ], "input": 2, "output": 3, "runtimeConfig": null, @@ -345,7 +350,7 @@ snapshot[`typegraphs creation 2`] = ` "idempotent": true }, "data": { - "name": "true" + "name": "pass" } }, { @@ -408,13 +413,12 @@ snapshot[`typegraphs creation 2`] = ` `; snapshot[`typegraphs creation 3`] = ` -'[ +\`[ { "types": [ { "type": "object", "title": "test-types", - "policies": [], "properties": { "one": 1, "two": 6, @@ -425,14 +429,22 @@ snapshot[`typegraphs creation 3`] = ` "one", "two", "three" - ] + ], + "policies": { + "one": [ + 0 + ], + "two": [ + 1 + ], + "three": [ + 2 + ] + } }, { "type": "function", "title": "root_one_fn", - "policies": [ - 0 - ], "input": 2, "output": 5, "runtimeConfig": null, @@ -443,38 +455,35 @@ snapshot[`typegraphs creation 3`] = ` { "type": "object", "title": "root_one_fn_input", - "policies": [], "properties": { "a": 3, "b": 4 }, "id": [], - "required": [] + "required": [], + "policies": { + "a": [], + "b": [] + } }, { "type": "integer", - "title": "root_one_fn_input_a_integer", - "policies": [] + "title": "root_one_fn_input_a_integer" }, { "type": "integer", "title": "root_one_fn_input_b_integer", - "policies": [], "minimum": 12 }, { "type": "integer", "title": "root_one_fn_output", - "policies": [], "minimum": 12, "maximum": 43 }, { "type": "function", "title": "root_two_fn", - "policies": [ - 1 - ], "input": 7, "output": 8, "runtimeConfig": null, @@ -485,31 +494,34 @@ snapshot[`typegraphs creation 3`] = ` { "type": "object", "title": "User", - "policies": [], "properties": { "id": 3, "post": 8 }, "id": [], - "required": [] + "required": [], + "policies": { + "id": [], + "post": [] + } }, { "type": "object", "title": "Post", - "policies": [], "properties": { "id": 3, "author": 7 }, "id": [], - "required": [] + "required": [], + "policies": { + "id": [], + "author": [] + } }, { "type": "function", "title": "root_three_fn", - "policies": [ - 2 - ], "input": 2, "output": 2, "runtimeConfig": null, @@ -562,7 +574,7 @@ snapshot[`typegraphs creation 3`] = ` "idempotent": true }, "data": { - "script": "var _my_lambda = () => false", + "script": "var _my_lambda = () => 'DENY'", "secrets": [] } }, @@ -599,7 +611,7 @@ snapshot[`typegraphs creation 3`] = ` "idempotent": true }, "data": { - "name": "true" + "name": "pass" } } ], @@ -654,7 +666,7 @@ snapshot[`typegraphs creation 3`] = ` } } } -]' +]\` `; snapshot[`typegraphs creation 4`] = ` @@ -664,21 +676,22 @@ snapshot[`typegraphs creation 4`] = ` { "type": "object", "title": "test-complex-types", - "policies": [], "properties": { "test": 1 }, "id": [], "required": [ "test" - ] + ], + "policies": { + "test": [ + 0 + ] + } }, { "type": "function", "title": "root_test_fn", - "policies": [ - 0 - ], "input": 2, "output": 18, "runtimeConfig": null, @@ -689,7 +702,6 @@ snapshot[`typegraphs creation 4`] = ` { "type": "object", "title": "ComplexType", - "policies": [], "properties": { "a_string": 3, "a_float": 4, @@ -702,24 +714,32 @@ snapshot[`typegraphs creation 4`] = ` "an_email": 17 }, "id": [], - "required": [] + "required": [], + "policies": { + "a_string": [], + "a_float": [], + "an_enum": [], + "an_integer_enum": [], + "a_float_enum": [], + "a_struct": [], + "nested": [], + "nested_with_ref": [], + "an_email": [] + } }, { "type": "string", - "title": "ComplexType_a_string_string", - "policies": [] + "title": "ComplexType_a_string_string" }, { "type": "float", "title": "ComplexType_a_float_float", - "policies": [], "minimum": 1.0, "multipleOf": 2.0 }, { "type": "string", "title": "ComplexType_an_enum_string_enum", - "policies": [], "enum": [ "\\\\"one\\\\"", "\\\\"two\\\\"" @@ -728,7 +748,6 @@ snapshot[`typegraphs creation 4`] = ` { "type": "integer", "title": "ComplexType_an_integer_enum_integer_enum", - "policies": [], "enum": [ "1", "2" @@ -737,7 +756,6 @@ snapshot[`typegraphs creation 4`] = ` { "type": "float", "title": "ComplexType_a_float_enum_float", - "policies": [], "enum": [ "1.5", "2.5" @@ -746,35 +764,33 @@ snapshot[`typegraphs creation 4`] = ` { "type": "object", "title": "ComplexType_a_struct_struct", - "policies": [], "properties": { "value": 9 }, "id": [], - "required": [] + "required": [], + "policies": { + "value": [] + } }, { "type": "float", - "title": "ComplexType_a_struct_struct_value_float", - "policies": [] + "title": "ComplexType_a_struct_struct_value_float" }, { "type": "optional", "title": "ComplexType_nested_ComplexType_nested_ComplexType_nested_either_list_optional", - "policies": [], "item": 11, "default_value": null }, { "type": "list", "title": "ComplexType_nested_ComplexType_nested_either_list", - "policies": [], "items": 12 }, { "type": "either", "title": "ComplexType_nested_either", - "policies": [], "oneOf": [ 3, 13 @@ -782,44 +798,42 @@ snapshot[`typegraphs creation 4`] = ` }, { "type": "integer", - "title": "ComplexType_nested_either_t1_integer", - "policies": [] + "title": "ComplexType_nested_either_t1_integer" }, { "type": "object", "title": "SomeType", - "policies": [], "properties": { "one": 15, "two": 16 }, "id": [], - "required": [] + "required": [], + "policies": { + "one": [], + "two": [] + } }, { "type": "list", "title": "Two", - "policies": [], "items": 13, "minItems": 3 }, { "type": "optional", "title": "SomeType_two_SomeType_optional", - "policies": [], "item": 14, "default_value": null }, { "type": "string", "title": "ComplexType_an_email_string_email", - "policies": [], "format": "email" }, { "type": "boolean", - "title": "root_test_fn_output", - "policies": [] + "title": "root_test_fn_output" } ], "materializers": [ @@ -843,7 +857,7 @@ snapshot[`typegraphs creation 4`] = ` "idempotent": true }, "data": { - "name": "true" + "name": "pass" } } ], @@ -927,7 +941,6 @@ snapshot[`typegraphs creation 5`] = ` { "type": "object", "title": "test-multiple-runtimes", - "policies": [], "properties": { "add": 1, "multiply": 4 @@ -936,14 +949,19 @@ snapshot[`typegraphs creation 5`] = ` "required": [ "add", "multiply" - ] + ], + "policies": { + "add": [ + 0 + ], + "multiply": [ + 0 + ] + } }, { "type": "function", "title": "root_add_fn", - "policies": [ - 0 - ], "input": 2, "output": 3, "runtimeConfig": null, @@ -954,25 +972,24 @@ snapshot[`typegraphs creation 5`] = ` { "type": "object", "title": "root_add_fn_input", - "policies": [], "properties": { "first": 3, "second": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "first": [], + "second": [] + } }, { "type": "float", - "title": "root_add_fn_input_first_float", - "policies": [] + "title": "root_add_fn_input_first_float" }, { "type": "function", "title": "root_multiply_fn", - "policies": [ - 0 - ], "input": 2, "output": 3, "runtimeConfig": null, @@ -1002,7 +1019,7 @@ snapshot[`typegraphs creation 5`] = ` "idempotent": true }, "data": { - "name": "true" + "name": "pass" } }, { @@ -1065,13 +1082,12 @@ snapshot[`typegraphs creation 5`] = ` `; snapshot[`typegraphs creation 6`] = ` -'[ +\`[ { "types": [ { "type": "object", "title": "test-types", - "policies": [], "properties": { "one": 1, "two": 6, @@ -1082,14 +1098,22 @@ snapshot[`typegraphs creation 6`] = ` "one", "two", "three" - ] + ], + "policies": { + "one": [ + 0 + ], + "two": [ + 1 + ], + "three": [ + 2 + ] + } }, { "type": "function", "title": "root_one_fn", - "policies": [ - 0 - ], "input": 2, "output": 5, "runtimeConfig": null, @@ -1100,38 +1124,35 @@ snapshot[`typegraphs creation 6`] = ` { "type": "object", "title": "root_one_fn_input", - "policies": [], "properties": { "a": 3, "b": 4 }, "id": [], - "required": [] + "required": [], + "policies": { + "a": [], + "b": [] + } }, { "type": "integer", - "title": "root_one_fn_input_a_integer", - "policies": [] + "title": "root_one_fn_input_a_integer" }, { "type": "integer", "title": "root_one_fn_input_b_integer", - "policies": [], "minimum": 12 }, { "type": "integer", "title": "root_one_fn_output", - "policies": [], "minimum": 12, "maximum": 43 }, { "type": "function", "title": "root_two_fn", - "policies": [ - 1 - ], "input": 7, "output": 8, "runtimeConfig": null, @@ -1142,31 +1163,34 @@ snapshot[`typegraphs creation 6`] = ` { "type": "object", "title": "User", - "policies": [], "properties": { "id": 3, "post": 8 }, "id": [], - "required": [] + "required": [], + "policies": { + "id": [], + "post": [] + } }, { "type": "object", "title": "Post", - "policies": [], "properties": { "id": 3, "author": 7 }, "id": [], - "required": [] + "required": [], + "policies": { + "id": [], + "author": [] + } }, { "type": "function", "title": "root_three_fn", - "policies": [ - 2 - ], "input": 2, "output": 2, "runtimeConfig": null, @@ -1219,7 +1243,7 @@ snapshot[`typegraphs creation 6`] = ` "idempotent": true }, "data": { - "script": "var _my_lambda = () => false", + "script": "var _my_lambda = () => 'DENY'", "secrets": [] } }, @@ -1256,7 +1280,7 @@ snapshot[`typegraphs creation 6`] = ` "idempotent": true }, "data": { - "name": "true" + "name": "pass" } } ], @@ -1311,5 +1335,5 @@ snapshot[`typegraphs creation 6`] = ` } } } -]' +]\` `; diff --git a/tests/e2e/typegraph/typegraphs/deno/simple.ts b/tests/e2e/typegraph/typegraphs/deno/simple.ts index 7546b95cd1..eff5d48158 100644 --- a/tests/e2e/typegraph/typegraphs/deno/simple.ts +++ b/tests/e2e/typegraph/typegraphs/deno/simple.ts @@ -41,7 +41,7 @@ typegraph("test-types", (g: any) => { .func(user, post, { code: "(user) => ({ id: 12, user })", }) - .withPolicy(deno.policy("deny", "() => false")), + .withPolicy(deno.policy("deny", "() => 'DENY'")), three: deno .import(s1, s1, { name: "three", module: "scripts/three.ts" }) .withPolicy(pub), diff --git a/tests/e2e/typegraph/typegraphs/python/simple.py b/tests/e2e/typegraph/typegraphs/python/simple.py index 0deca0f764..052da9d48f 100644 --- a/tests/e2e/typegraph/typegraphs/python/simple.py +++ b/tests/e2e/typegraph/typegraphs/python/simple.py @@ -23,7 +23,7 @@ def test_types(g: Graph): g.expose( one=deno.func(s1, b, code="() => 12").with_policy(internal), two=deno.func(user, post, code="(user) => ({ id: 12, user })").with_policy( - deno.policy("deny", "() => false") + deno.policy("deny", "() => 'DENY'") ), three=deno.import_(s1, s1, name="three", module="scripts/three.ts").with_policy( public diff --git a/tests/internal/py/logic_types.py b/tests/internal/py/logic_types.py index 1946de506e..8a7319b609 100644 --- a/tests/internal/py/logic_types.py +++ b/tests/internal/py/logic_types.py @@ -1,5 +1,5 @@ -# Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. -# SPDX-License-Identifier: MPL-2.0 +# This file was @generated by metagen and is intended +# to be generated again on subsequent metagen runs. from types import NoneType from typing import Callable, List, Union, get_origin, ForwardRef, Any diff --git a/tests/metagen/__snapshots__/metagen_test.ts.snap b/tests/metagen/__snapshots__/metagen_test.ts.snap index d1f7293c7d..76e6d03fae 100644 --- a/tests/metagen/__snapshots__/metagen_test.ts.snap +++ b/tests/metagen/__snapshots__/metagen_test.ts.snap @@ -454,7 +454,7 @@ impl Router { } pub fn init(&self, args: InitArgs) -> Result { - static MT_VERSION: &str = "0.5.0-rc.7"; + static MT_VERSION: &str = "0.5.0-rc.9"; if args.metatype_version != MT_VERSION { return Err(InitError::VersionMismatch(MT_VERSION.into())); } @@ -570,13 +570,12 @@ pub mod types { pub name: RootOneFnInputNameString, } pub type StudentIdInteger = i64; - pub type StudentPeersStudentList = Vec; - pub type StudentPeersStudentPeersStudentListOptional = Option; + pub type StudentPeersPlaceholderOptional = Option; #[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Student { pub id: StudentIdInteger, pub name: RootOneFnInputNameString, - pub peers: StudentPeersStudentPeersStudentListOptional, + pub peers: StudentPeersPlaceholderOptional, } pub type RootOneFnOutput = Vec; #[derive(Debug, serde::Serialize, serde::Deserialize)] @@ -725,12 +724,11 @@ export type RootOneFnInput = { name: RootOneFnInputNameString; }; export type StudentIdInteger = number; -export type StudentPeersStudentList = Array; -export type StudentPeersStudentPeersStudentListOptional = StudentPeersStudentList | null | undefined; +export type StudentPeersPlaceholderOptional = RootOneFnOutput | null | undefined; export type Student = { id: StudentIdInteger; name: RootOneFnInputNameString; - peers?: StudentPeersStudentPeersStudentListOptional; + peers?: StudentPeersPlaceholderOptional; }; export type RootOneFnOutput = Array; export type TwoInput = { @@ -1257,7 +1255,7 @@ impl Router { } pub fn init(&self, args: InitArgs) -> Result { - static MT_VERSION: &str = "0.5.0-rc.7"; + static MT_VERSION: &str = "0.5.0-rc.9"; if args.metatype_version != MT_VERSION { return Err(InitError::VersionMismatch(MT_VERSION.into())); } @@ -1373,13 +1371,12 @@ pub mod types { pub name: RootOneFnInputNameString, } pub type StudentIdInteger = i64; - pub type StudentPeersStudentList = Vec; - pub type StudentPeersStudentPeersStudentListOptional = Option; + pub type StudentPeersPlaceholderOptional = Option; #[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Student { pub id: StudentIdInteger, pub name: RootOneFnInputNameString, - pub peers: StudentPeersStudentPeersStudentListOptional, + pub peers: StudentPeersPlaceholderOptional, } pub type RootOneFnOutput = Vec; #[derive(Debug, serde::Serialize, serde::Deserialize)] @@ -1528,12 +1525,11 @@ export type RootOneFnInput = { name: RootOneFnInputNameString; }; export type StudentIdInteger = number; -export type StudentPeersStudentList = Array; -export type StudentPeersStudentPeersStudentListOptional = StudentPeersStudentList | null | undefined; +export type StudentPeersPlaceholderOptional = RootOneFnOutput | null | undefined; export type Student = { id: StudentIdInteger; name: RootOneFnInputNameString; - peers?: StudentPeersStudentPeersStudentListOptional; + peers?: StudentPeersPlaceholderOptional; }; export type RootOneFnOutput = Array; export type TwoInput = { diff --git a/tests/metagen/typegraphs/identities/rs/fdk.rs b/tests/metagen/typegraphs/identities/rs/fdk.rs index 813b593eae..fc7a764833 100644 --- a/tests/metagen/typegraphs/identities/rs/fdk.rs +++ b/tests/metagen/typegraphs/identities/rs/fdk.rs @@ -109,7 +109,7 @@ impl Router { } pub fn init(&self, args: InitArgs) -> Result { - static MT_VERSION: &str = "0.5.0-rc.7"; + static MT_VERSION: &str = "0.5.0-rc.8"; if args.metatype_version != MT_VERSION { return Err(InitError::VersionMismatch(MT_VERSION.into())); } @@ -285,20 +285,16 @@ pub mod types { pub struct CompositesArgs { pub data: Composites, } - pub type Cycles1Phantom1PrimitivesStrStringOptional = Option; - pub type Branch33APhantom3aPrimitivesStrStringOptional = Option; pub type Branch33ATo1Cycles1Optional = Option; #[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Branch33A { - pub phantom3a: Branch33APhantom3aPrimitivesStrStringOptional, + pub phantom3a: CompositesOptPrimitivesStrStringOptional, pub to1: Branch33ATo1Cycles1Optional, } - pub type Branch33BPhantom3bPrimitivesStrStringOptional = Option; - pub type Branch33BTo2Cycles2Optional = Option; #[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Branch33B { - pub phantom3b: Branch33BPhantom3bPrimitivesStrStringOptional, - pub to2: Branch33BTo2Cycles2Optional, + pub phantom3b: CompositesOptPrimitivesStrStringOptional, + pub to2: Cycles1To2Cycles2Optional, } #[derive(Debug, serde::Serialize, serde::Deserialize)] #[serde(untagged)] @@ -309,15 +305,15 @@ pub mod types { #[derive(Debug, serde::Serialize, serde::Deserialize)] #[serde(untagged)] pub enum Cycles2 { - Cycles3(Box), + Cycles3(Cycles3), Cycles1(Cycles1), } - pub type Cycles1To2Cycles2Optional = Option; + pub type Cycles1To2Cycles2Optional = Option>; pub type Cycles1List3Cycles3List = Vec; pub type Cycles1List3Cycles1List3Cycles3ListOptional = Option; #[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Cycles1 { - pub phantom1: Cycles1Phantom1PrimitivesStrStringOptional, + pub phantom1: CompositesOptPrimitivesStrStringOptional, pub to2: Box, pub list3: Cycles1List3Cycles1List3Cycles3ListOptional, } @@ -325,25 +321,22 @@ pub mod types { pub struct Cycles1Args { pub data: Cycles1, } - pub type SimpleCycles1Phantom1PrimitivesStrStringOptional = Option; - pub type SimpleCycles2Phantom2PrimitivesStrStringOptional = Option; - pub type SimpleCycles3Phantom3PrimitivesStrStringOptional = Option; pub type SimpleCycles3To1SimpleCycles1Optional = Option; #[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct SimpleCycles3 { - pub phantom3: SimpleCycles3Phantom3PrimitivesStrStringOptional, + pub phantom3: CompositesOptPrimitivesStrStringOptional, pub to1: SimpleCycles3To1SimpleCycles1Optional, } pub type SimpleCycles2To3SimpleCycles3Optional = Option; #[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct SimpleCycles2 { - pub phantom2: SimpleCycles2Phantom2PrimitivesStrStringOptional, + pub phantom2: CompositesOptPrimitivesStrStringOptional, pub to3: SimpleCycles2To3SimpleCycles3Optional, } pub type SimpleCycles1To2SimpleCycles2Optional = Option; #[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct SimpleCycles1 { - pub phantom1: SimpleCycles1Phantom1PrimitivesStrStringOptional, + pub phantom1: CompositesOptPrimitivesStrStringOptional, pub to2: Box, } #[derive(Debug, serde::Serialize, serde::Deserialize)] diff --git a/tests/metagen/typegraphs/identities/ts/fdk.ts b/tests/metagen/typegraphs/identities/ts/fdk.ts index 53f94ad7d2..80702013e2 100644 --- a/tests/metagen/typegraphs/identities/ts/fdk.ts +++ b/tests/metagen/typegraphs/identities/ts/fdk.ts @@ -87,18 +87,14 @@ export type Composites = { export type CompositesArgs = { data: Composites; }; -export type Cycles1Phantom1PrimitivesStrStringOptional = PrimitivesStrString | null | undefined; -export type Branch33APhantom3aPrimitivesStrStringOptional = PrimitivesStrString | null | undefined; export type Branch33ATo1Cycles1Optional = Cycles1 | null | undefined; export type Branch33A = { - phantom3a?: Branch33APhantom3aPrimitivesStrStringOptional; + phantom3a?: CompositesOptPrimitivesStrStringOptional; to1?: Branch33ATo1Cycles1Optional; }; -export type Branch33BPhantom3bPrimitivesStrStringOptional = PrimitivesStrString | null | undefined; -export type Branch33BTo2Cycles2Optional = Cycles2 | null | undefined; export type Branch33B = { - phantom3b?: Branch33BPhantom3bPrimitivesStrStringOptional; - to2?: Branch33BTo2Cycles2Optional; + phantom3b?: CompositesOptPrimitivesStrStringOptional; + to2?: Cycles1To2Cycles2Optional; }; export type Cycles3 = | (Branch33A) @@ -110,29 +106,26 @@ export type Cycles1To2Cycles2Optional = Cycles2 | null | undefined; export type Cycles1List3Cycles3List = Array; export type Cycles1List3Cycles1List3Cycles3ListOptional = Cycles1List3Cycles3List | null | undefined; export type Cycles1 = { - phantom1?: Cycles1Phantom1PrimitivesStrStringOptional; + phantom1?: CompositesOptPrimitivesStrStringOptional; to2?: Cycles1To2Cycles2Optional; list3?: Cycles1List3Cycles1List3Cycles3ListOptional; }; export type Cycles1Args = { data: Cycles1; }; -export type SimpleCycles1Phantom1PrimitivesStrStringOptional = PrimitivesStrString | null | undefined; -export type SimpleCycles2Phantom2PrimitivesStrStringOptional = PrimitivesStrString | null | undefined; -export type SimpleCycles3Phantom3PrimitivesStrStringOptional = PrimitivesStrString | null | undefined; export type SimpleCycles3To1SimpleCycles1Optional = SimpleCycles1 | null | undefined; export type SimpleCycles3 = { - phantom3?: SimpleCycles3Phantom3PrimitivesStrStringOptional; + phantom3?: CompositesOptPrimitivesStrStringOptional; to1?: SimpleCycles3To1SimpleCycles1Optional; }; export type SimpleCycles2To3SimpleCycles3Optional = SimpleCycles3 | null | undefined; export type SimpleCycles2 = { - phantom2?: SimpleCycles2Phantom2PrimitivesStrStringOptional; + phantom2?: CompositesOptPrimitivesStrStringOptional; to3?: SimpleCycles2To3SimpleCycles3Optional; }; export type SimpleCycles1To2SimpleCycles2Optional = SimpleCycles2 | null | undefined; export type SimpleCycles1 = { - phantom1?: SimpleCycles1Phantom1PrimitivesStrStringOptional; + phantom1?: CompositesOptPrimitivesStrStringOptional; to2?: SimpleCycles1To2SimpleCycles2Optional; }; export type SimpleCycles1Args = { diff --git a/tests/metagen/typegraphs/sample/rs/Cargo.toml b/tests/metagen/typegraphs/sample/rs/Cargo.toml index f46aae47aa..40b12ca2ce 100644 --- a/tests/metagen/typegraphs/sample/rs/Cargo.toml +++ b/tests/metagen/typegraphs/sample/rs/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "sample_client" edition = "2021" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" [dependencies] metagen-client.workspace = true diff --git a/tests/metagen/typegraphs/sample/rs_upload/Cargo.toml b/tests/metagen/typegraphs/sample/rs_upload/Cargo.toml index bca02df5cc..9855c0e564 100644 --- a/tests/metagen/typegraphs/sample/rs_upload/Cargo.toml +++ b/tests/metagen/typegraphs/sample/rs_upload/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "sample_client_upload" edition = "2021" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" [dependencies] metagen-client.workspace = true diff --git a/tests/planner/__snapshots__/planner_test.ts.snap b/tests/planner/__snapshots__/planner_test.ts.snap index d62e8a890e..3a67182e53 100644 --- a/tests/planner/__snapshots__/planner_test.ts.snap +++ b/tests/planner/__snapshots__/planner_test.ts.snap @@ -95,81 +95,75 @@ snapshot[`planner 1`] = ` snapshot[`planner 2`] = ` { - one: { - funcType: { - input: 2, - materializer: 0, - output: 3, - policies: [ + "": [ + { + canonFieldName: "one", + indices: [ 0, ], - rate_calls: false, - rate_weight: null, - runtimeConfig: null, - title: "root_one_fn", - type: "function", }, - referencedTypes: { - "one.email": [ - { - title: "root_one_fn_output_email_string_email", - type: "string", - }, - ], - "one.id": [ - { - title: "root_one_fn_output_id_string_uuid", - type: "string", - }, - ], - "one.nested": [ - { - title: "root_one_fn_output_nested_struct", - type: "object", - }, - ], - "one.nested.first": [ - { - title: "root_one_fn_output_nested_struct_first_string", - type: "string", - }, - ], - "one.nested.second": [ - { - title: "root_one_fn_output_nested_struct_second_root_one_fn_output_nested_struct_second_float_list", - type: "list", - }, - { - title: "root_one_fn_output_nested_struct_second_float", - type: "float", - }, - ], - "one.nested.third": [ - { - title: "root_one_fn_output_nested_struct_third_root_one_fn_output_nested_struct_third_boolean_optional", - type: "optional", - }, - { - title: "root_one_fn_output_nested_struct_third_boolean", - type: "boolean", - }, + { + canonFieldName: "two", + indices: [ + 0, ], - one: [ - { - title: "root_one_fn", - type: "function", - }, - { - title: "root_one_fn_output", - type: "object", - }, - { - title: "root_one_fn_input", - type: "object", - }, + }, + { + canonFieldName: "three", + indices: [ + 0, ], }, - }, + ], + "one.email": [], + "one.id": [], + "one.nested": [ + { + canonFieldName: "first", + indices: [], + }, + { + canonFieldName: "second", + indices: [], + }, + { + canonFieldName: "third", + indices: [], + }, + ], + "one.nested.first": [], + "one.nested.second": [], + "one.nested.third": [], + one: [ + { + canonFieldName: "id", + indices: [], + }, + { + canonFieldName: "email", + indices: [], + }, + { + canonFieldName: "nested", + indices: [], + }, + { + canonFieldName: "union1", + indices: [], + }, + { + canonFieldName: "union2", + indices: [], + }, + { + canonFieldName: "from_union1", + indices: [], + }, + { + canonFieldName: "from_union2", + indices: [], + }, + ], } `; diff --git a/tests/planner/planner_test.ts b/tests/planner/planner_test.ts index c0797c6a32..41409b94a8 100644 --- a/tests/planner/planner_test.ts +++ b/tests/planner/planner_test.ts @@ -2,7 +2,6 @@ // SPDX-License-Identifier: MPL-2.0 import { gql, Meta } from "../utils/mod.ts"; -import { mapValues } from "@std/collections/map-values"; import { filterKeys } from "@std/collections/filter-keys"; Meta.test("planner", async (t) => { @@ -36,22 +35,8 @@ Meta.test("planner", async (t) => { }); await t.should("generate the right policy tree", async () => { - const fns = Object.fromEntries(plan.policies.functions); - await t.assertSnapshot( - mapValues(fns, (subtree) => { - const funcType = e.tg.type(subtree.funcTypeIdx); - return { - funcType, - referencedTypes: mapValues( - Object.fromEntries(subtree.referencedTypes), - (types) => - types.map((idx) => - filterKeys(e.tg.type(idx), (k) => ["type", "title"].includes(k)) - ), - ), - }; - }), - ); + const stageToPolicies = Object.fromEntries(plan.policies.stageToPolicies); + await t.assertSnapshot(stageToPolicies); }); await t.should("fail when required selections are missing", async () => { diff --git a/tests/policies/effects_py.py b/tests/policies/effects_py.py index 0bbbd06898..4de867507f 100644 --- a/tests/policies/effects_py.py +++ b/tests/policies/effects_py.py @@ -11,13 +11,15 @@ def effects_py(g: Graph): deno = DenoRuntime() public = Policy.public() admin_only = Policy.context("role", "admin") + deny_all = deno.policy("deny_all", "_ => 'DENY'") + # allow_all = deno.policy("allow_all", "_ => 'ALLOW'") user = t.struct( { "id": t.integer(), "email": t.email(), "password_hash": t.string().with_policy( - deno.policy("deny_all", "() => false") + Policy.on(read=deny_all, update=admin_only) ), }, name="User", diff --git a/tests/policies/policies.py b/tests/policies/policies.py index 78e308364f..273ad8287d 100644 --- a/tests/policies/policies.py +++ b/tests/policies/policies.py @@ -10,14 +10,6 @@ def policies(g: Graph): deno = DenoRuntime() - _secret_data = t.struct( - { - "username": t.string(), - "data": t.string(), - }, - name="SecretData", - ) - fn = deno.identity( t.struct({"a": t.integer()}), ) @@ -25,10 +17,13 @@ def policies(g: Graph): g.auth(Auth.jwt("native", "jwk", {"name": "HMAC", "hash": {"name": "SHA-256"}})) g.expose( - pol_true=fn.with_policy(deno.policy("true", "() => true")), - pol_false=fn.with_policy(deno.policy("false", "() => false")), + pol_pass=fn.with_policy(deno.policy("pass", "() => 'PASS'")), + pol_deny=fn.with_policy(deno.policy("deny", "() => 'DENY'")), pol_two=fn.with_policy( - deno.policy("eq_two", "(_args, { context }) => Number(context.a) === 2") + deno.policy( + "eq_two", + "(_args, { context }) => Number(context.a) === 2 ? 'ALLOW' : 'DENY'", + ) ), ns=t.struct( { diff --git a/tests/policies/policies_composition.py b/tests/policies/policies_composition.py new file mode 100644 index 0000000000..94784abcdd --- /dev/null +++ b/tests/policies/policies_composition.py @@ -0,0 +1,87 @@ +# Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +# SPDX-License-Identifier: MPL-2.0 + +from typegraph import typegraph, effects, t, Graph +from typegraph.policy import Policy +from typegraph.runtimes import DenoRuntime + + +@typegraph() +def policies_composition(g: Graph): + deno = DenoRuntime() + + def ctxread(pol_name: str): + return deno.policy(pol_name, code=f"(_, {{ context }}) => context.{pol_name}") + + deny = deno.policy("denyAll", code="() => 'DENY' ") + allow = deno.policy("allowAll", code="() => 'ALLOW' ") + pass_through = deno.policy("passThrough", code="() => 'PASS' ") # alt public + + big_struct = t.struct( + { + "one": t.struct( + { + "two": t.struct( + { + # Note: + # The policy on each variant is not hoisted + # on the parent struct + "three": t.either( + [ + t.struct({"a": t.integer()}).rename("First"), + t.struct( + { + "b": t.struct( + { + "c": t.integer().with_policy( + Policy.on( + read=allow, + update=ctxread("depth_4"), + ) + ) + } + ) + } + ).rename("Second"), + ] + ).with_policy(ctxread("depth_3")) + } + ).with_policy(Policy.on(read=deny, update=ctxread("depth_2"))) + } + ).with_policy(ctxread("depth_1")) + } + ) + + g.expose( + simple_traversal_comp=deno.identity( + t.struct( + { + "one": t.struct( + { + "two": t.either([t.integer(), t.string()]).with_policy( + deny + ), + "three": t.either([t.integer(), t.string()]).with_policy( + allow + ), + } + ).with_policy(ctxread("control_value")), + } + ) + ).with_policy(pass_through), + single_field_comp=deno.identity( + t.struct( + { + "abc": t.string() + .with_policy(ctxread("A"), ctxread("B")) + .with_policy(ctxread("C")) + } + ) + ).with_policy(pass_through), + traversal_comp=deno.func( + big_struct, + big_struct, + code="({ one }) => ({ one })", + effect=effects.update(), + ).with_policy(pass_through), + ) diff --git a/tests/policies/policies_composition_test.ts b/tests/policies/policies_composition_test.ts new file mode 100644 index 0000000000..daa1869d86 --- /dev/null +++ b/tests/policies/policies_composition_test.ts @@ -0,0 +1,252 @@ +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +import { gql, Meta } from "../utils/mod.ts"; + +Meta.test("Basic composition through traversal spec", async (t) => { + const e = await t.engine("policies/policies_composition.py"); + + await t.should("allow child if parent is set to 'ALLOW'", async () => { + await gql` + query { + simple_traversal_comp(one: { two: 2, three: "three" }) { # pass + one { + two # deny + three # allow + } #! allow + } + } + ` + .withContext({ + control_value: "ALLOW" + }) + .expectData({ + simple_traversal_comp: { + one: { + two: 2, + three: "three" + } + }, + }) + .on(e); + }); + + + await t.should("skip parent and go further with 'PASS'", async () => { + await gql` + query { + simple_traversal_comp(one: { two: 2, three: "three" }) { # pass + one { + two # deny + three # allow + } #! pass + } + } + ` + .withContext({ + control_value: "PASS" + }) + .expectErrorContains("'.simple_traversal_comp.one.two'") + .on(e); + }); + + + await t.should("deny and stop if parent is set to 'DENY'", async () => { + await gql` + query { + simple_traversal_comp(one: { two: 2, three: "three" }) { # pass + one { + two # deny + three # allow + } #! deny + } + } + ` + .withContext({ + control_value: "DENY" + }) + .expectErrorContains("'.simple_traversal_comp.one'") + .on(e); + }); +}); + + + +Meta.test("Basic chain composition on a single field spec", async (t) => { + const e = await t.engine("policies/policies_composition.py"); + + await t.should("have PASS not affecting the outcome (version 1)", async () => { + await gql` + query { + single_field_comp(abc: "enter" ) { + abc + } + } + ` + .withContext({ + A: "PASS", + B: "ALLOW", + C: "PASS" + }) + .expectData({ + single_field_comp: { + abc: "enter" + } + }) + .on(e); + }); + + + await t.should("have PASS not affecting the outcome (version 2)", async () => { + await gql` + query { + single_field_comp(abc: "enter" ) { + abc + } + } + ` + .withContext({ + A: "PASS", + B: "DENY", + C: "PASS" + }) + .expectErrorContains("Authorization failed for policy 'B'") + .on(e); + }); + + + await t.should("have DENY ruling", async () => { + await gql` + query { + single_field_comp(abc: "enter" ) { + abc + } + } + ` + .withContext({ + A: "PASS", + B: "DENY", + C: "ALLOW" + }) + .expectErrorContains("Authorization failed for policy 'B'") + .on(e); + }); +}); + + +Meta.test("Traversal composition on a per effect policy setup", async (t) => { + const e = await t.engine("policies/policies_composition.py"); + + const inputA = { + two: { + three: { + a: 1, + } + } + }; + + const inputB = { + two: { + three: { + b: { + c: 2 + }, + } + } + }; + + await t.should("have PASS acting as a no-op upon traversal (version 1)", async () => { + await gql` + mutation { + traversal_comp(one: $one) { + one { + two { + three { + ... on First { a } + ... on Second { + b { + c # d4 + } + } + } # d3 + } # d2 + } # d1 + } + } + ` + .withVars({ one: inputA }) + .withContext({ + depth_1: "PASS", + depth_2: "ALLOW", + depth_3: "PASS", + depth_4: "PASS" + }) + .expectData({ + traversal_comp: { + one: inputA + } + }) + .on(e); + }); + + await t.should("have PASS acting as a no-op upon traversal (version 2)", async () => { + await gql` + mutation { + traversal_comp(one: $one) { + one { + two { + three { + ... on First { a } + ... on Second { + b { + c # d4 + } + } + } # d3 + } # d2 + } # d1 + } + } + ` + .withVars({ one: inputA }) + .withContext({ + depth_1: "PASS", + depth_2: "DENY", // stop! + depth_3: "ALLOW", + depth_4: "ALLOW" + }) + .expectErrorContains("'.traversal_comp.one.two'") + .on(e); + }); + + + await t.should("DENY when a protected field on a either variant is encountered", async () => { + await gql` + mutation { + traversal_comp(one: $one) { + one { + two { + three { + ... on First { a } + ... on Second { + b { + c # d4 + } + } + } # d3 + } # d2 + } # d1 + } + } + ` + .withVars({ one: inputB }) + .withContext({ + depth_1: "PASS", + depth_2: "PASS", + depth_3: "PASS", + depth_4: "DENY" + }) + .expectErrorContains("'.traversal_comp.one.two.three$Second.b.c'") + .on(e); + }); +}); diff --git a/tests/policies/policies_test.ts b/tests/policies/policies_test.ts index 988734b6a5..b217f81381 100644 --- a/tests/policies/policies_test.ts +++ b/tests/policies/policies_test.ts @@ -29,13 +29,13 @@ Meta.test("Policies", async (t) => { await t.should("have public access", async () => { await gql` query { - pol_true(a: 1) { + pol_pass(a: 1) { a } } ` .expectData({ - pol_true: { + pol_pass: { a: 1, }, }) @@ -45,7 +45,7 @@ Meta.test("Policies", async (t) => { await t.should("have no access", async () => { await gql` query { - pol_false(a: 1) { + pol_deny(a: 1) { a } } @@ -226,7 +226,7 @@ Meta.test("Policies for effects", async (t) => { secrets: await genSecretKey(config), }); - await t.should("succeeed", async () => { + await t.should("succeed", async () => { await gql` query { findUser(id: 12) { @@ -250,6 +250,7 @@ Meta.test("Policies for effects", async (t) => { updateUser(id: 12, set: { email: "john.doe@example.com" }) { id email + password_hash # deny if role!=admin (here undefined) on effect update } } ` @@ -261,7 +262,7 @@ Meta.test("Policies for effects", async (t) => { findUser(id: 12) { id email - password_hash + password_hash # deny on effect read } } ` @@ -286,17 +287,5 @@ Meta.test("Policies for effects", async (t) => { }) .withContext({ role: "admin" }) .on(e); - - await gql` - query { - findUser(id: 12) { - id - email - password_hash - } - } - ` - .expectErrorContains("Authorization failed") - .on(e); }); }); diff --git a/tests/query_parsers/__snapshots__/query_parsers_test.ts.snap b/tests/query_parsers/__snapshots__/query_parsers_test.ts.snap index 74d5ae5d69..17f4819f82 100644 --- a/tests/query_parsers/__snapshots__/query_parsers_test.ts.snap +++ b/tests/query_parsers/__snapshots__/query_parsers_test.ts.snap @@ -4,7 +4,11 @@ snapshot[`GraphQL parser 1`] = ` [ { id: [], - policies: [], + policies: { + user: [ + 0, + ], + }, properties: { mutation: 18, query: 17, @@ -17,9 +21,15 @@ snapshot[`GraphQL parser 1`] = ` }, { id: [], - policies: [ - 0, - ], + policies: { + find: [ + 0, + ], + profile: [], + update: [ + 0, + ], + }, properties: { find: 2, profile: 8, @@ -31,11 +41,8 @@ snapshot[`GraphQL parser 1`] = ` }, { input: 3, - materializer: 1, + materializer: 0, output: 5, - policies: [ - 0, - ], rate_calls: false, rate_weight: null, runtimeConfig: null, @@ -46,7 +53,9 @@ snapshot[`GraphQL parser 1`] = ` id: [ "id", ], - policies: [], + policies: { + id: [], + }, properties: { id: 4, }, @@ -55,7 +64,6 @@ snapshot[`GraphQL parser 1`] = ` type: "object", }, { - policies: [], title: "UserId", type: "string", }, @@ -63,7 +71,10 @@ snapshot[`GraphQL parser 1`] = ` id: [ "id", ], - policies: [], + policies: { + id: [], + name: [], + }, properties: { id: 4, name: 6, @@ -73,17 +84,13 @@ snapshot[`GraphQL parser 1`] = ` type: "object", }, { - policies: [], title: "User_name_string", type: "string", }, { input: 5, - materializer: 2, + materializer: 1, output: 5, - policies: [ - 0, - ], rate_calls: false, rate_weight: null, runtimeConfig: null, @@ -92,7 +99,14 @@ snapshot[`GraphQL parser 1`] = ` }, { id: [], - policies: [], + policies: { + picture: [ + 0, + ], + setPicture: [ + 0, + ], + }, properties: { picture: 9, setPicture: 12, @@ -103,11 +117,8 @@ snapshot[`GraphQL parser 1`] = ` }, { input: 3, - materializer: 3, + materializer: 2, output: 10, - policies: [ - 0, - ], rate_calls: false, rate_weight: null, runtimeConfig: null, @@ -118,7 +129,10 @@ snapshot[`GraphQL parser 1`] = ` id: [ "id", ], - policies: [], + policies: { + id: [], + url: [], + }, properties: { id: 4, url: 11, @@ -129,17 +143,13 @@ snapshot[`GraphQL parser 1`] = ` }, { format: "uri", - policies: [], title: "Picture_url_string_uri", type: "string", }, { input: 10, - materializer: 4, + materializer: 3, output: 10, - policies: [ - 0, - ], rate_calls: false, rate_weight: null, runtimeConfig: null, @@ -148,9 +158,11 @@ snapshot[`GraphQL parser 1`] = ` }, { id: [], - policies: [ - 0, - ], + policies: { + picture: [ + 0, + ], + }, properties: { picture: 9, }, @@ -160,9 +172,11 @@ snapshot[`GraphQL parser 1`] = ` }, { id: [], - policies: [ - 0, - ], + policies: { + setPicture: [ + 0, + ], + }, properties: { setPicture: 12, }, @@ -172,7 +186,11 @@ snapshot[`GraphQL parser 1`] = ` }, { id: [], - policies: [], + policies: { + find: [ + 0, + ], + }, properties: { find: 2, profile: 13, @@ -185,7 +203,11 @@ snapshot[`GraphQL parser 1`] = ` }, { id: [], - policies: [], + policies: { + update: [ + 0, + ], + }, properties: { profile: 14, update: 7, @@ -198,7 +220,7 @@ snapshot[`GraphQL parser 1`] = ` }, { id: [], - policies: [], + policies: {}, properties: { user: 15, }, @@ -210,7 +232,7 @@ snapshot[`GraphQL parser 1`] = ` }, { id: [], - policies: [], + policies: {}, properties: { user: 16, }, diff --git a/tests/runtimes/deno/deno.py b/tests/runtimes/deno/deno.py index c29562f9a9..b35b402887 100644 --- a/tests/runtimes/deno/deno.py +++ b/tests/runtimes/deno/deno.py @@ -36,6 +36,13 @@ def deno(g: Graph): name="counter", effect=effects.update(), ), + secrets=deno.import_( + t.struct(), + t.struct({"ok": t.boolean()}), + module="ts/deno.ts", + name="secrets", + secrets=["DENO_SECRET"], + ), min=deno.import_(number_input, t.float(), module="ts/math.ts", name="min"), max=deno.import_(number_input, t.float(), module="ts/math.ts", name="maxAsync"), log=deno.import_( diff --git a/tests/runtimes/deno/deno_sync_test.ts b/tests/runtimes/deno/deno_sync_test.ts index 00278d92fc..79688aef91 100644 --- a/tests/runtimes/deno/deno_sync_test.ts +++ b/tests/runtimes/deno/deno_sync_test.ts @@ -37,7 +37,11 @@ Meta.test( }, }, async (t) => { - const e = await t.engine("runtimes/deno/deno.py"); + const e = await t.engine("runtimes/deno/deno.py", { + secrets: { + DENO_SECRET: "deno_secret", + }, + }); await t.should("work on the default worker", async () => { await gql` @@ -128,7 +132,11 @@ Meta.test( }, }, async (t) => { - const e = await t.engine("runtimes/deno/deno.py"); + const e = await t.engine("runtimes/deno/deno.py", { + secrets: { + DENO_SECRET: "deno_secret", + }, + }); await t.should("success for allowed network access", async () => { await gql` @@ -368,7 +376,11 @@ Meta.test( }, }, async (t) => { - const e = await t.engine("runtimes/deno/deno.py"); + const e = await t.engine("runtimes/deno/deno.py", { + secrets: { + DENO_SECRET: "deno_secret", + }, + }); await t.should("safely fail upon stack overflow", async () => { await gql` diff --git a/tests/runtimes/deno/deno_test.ts b/tests/runtimes/deno/deno_test.ts index cf18f285d7..b0d14dce4e 100644 --- a/tests/runtimes/deno/deno_test.ts +++ b/tests/runtimes/deno/deno_test.ts @@ -9,7 +9,11 @@ Meta.test( name: "Deno runtime", }, async (t) => { - const e = await t.engine("runtimes/deno/deno.py"); + const e = await t.engine("runtimes/deno/deno.py", { + secrets: { + DENO_SECRET: "deno_secret", + }, + }); await t.should("work on the default worker", async () => { await gql` @@ -84,6 +88,22 @@ Meta.test( }) .on(e); }); + + await t.should("support secret injection", async () => { + await gql` + query { + secrets { + ok + } + } + ` + .expectData({ + secrets: { + ok: true, + }, + }) + .on(e); + }); }, ); @@ -92,7 +112,11 @@ Meta.test( name: "Deno runtime: file name reloading", }, async (t) => { - const e = await t.engine("runtimes/deno/deno.py"); + const e = await t.engine("runtimes/deno/deno.py", { + secrets: { + DENO_SECRET: "deno_secret", + }, + }); await t.should("success for allowed network access", async () => { await gql` @@ -281,7 +305,11 @@ Meta.test( sanitizeOps: false, }, async (t) => { - const e = await t.engine("runtimes/deno/deno.py"); + const e = await t.engine("runtimes/deno/deno.py", { + secrets: { + DENO_SECRET: "deno_secret", + }, + }); await t.should("safely fail upon stack overflow", async () => { await gql` diff --git a/tests/runtimes/deno/ts/deno.ts b/tests/runtimes/deno/ts/deno.ts index 5da50ea679..f2b474fd26 100644 --- a/tests/runtimes/deno/ts/deno.ts +++ b/tests/runtimes/deno/ts/deno.ts @@ -10,3 +10,10 @@ export function counter(): number { export function sum({ numbers }: { numbers: number[] }): number { return numbers.reduce((a, b) => a + b, 0); } + +export function secrets(_inp: any, cx: { secrets: Record }) { + if (cx.secrets.DENO_SECRET !== "deno_secret") { + throw new Error("Deno secret not found"); + } + return { ok: true }; +} diff --git a/tests/runtimes/graphql/__snapshots__/graphql_test.ts.snap b/tests/runtimes/graphql/__snapshots__/graphql_test.ts.snap index 971c1c6ec9..4517c2ad00 100644 --- a/tests/runtimes/graphql/__snapshots__/graphql_test.ts.snap +++ b/tests/runtimes/graphql/__snapshots__/graphql_test.ts.snap @@ -6,7 +6,6 @@ snapshot[`Typegraph generation with GraphQL runtime 1`] = ` { "type": "object", "title": "graphql", - "policies": [], "properties": { "user": 1, "users": 5, @@ -21,14 +20,28 @@ snapshot[`Typegraph generation with GraphQL runtime 1`] = ` "createUser", "create_message", "messages" - ] + ], + "policies": { + "user": [ + 0 + ], + "users": [ + 0 + ], + "createUser": [ + 0 + ], + "create_message": [ + 0 + ], + "messages": [ + 0 + ] + } }, { "type": "function", "title": "root_user_fn", - "policies": [ - 0 - ], "input": 2, "output": 4, "runtimeConfig": null, @@ -39,24 +52,24 @@ snapshot[`Typegraph generation with GraphQL runtime 1`] = ` { "type": "object", "title": "root_user_fn_input", - "policies": [], "properties": { "id": 3 }, "id": [ "id" ], - "required": [] + "required": [], + "policies": { + "id": [] + } }, { "type": "string", - "title": "root_user_fn_input_id_string", - "policies": [] + "title": "root_user_fn_input_id_string" }, { "type": "object", "title": "User", - "policies": [], "properties": { "id": 3, "name": 3 @@ -64,14 +77,15 @@ snapshot[`Typegraph generation with GraphQL runtime 1`] = ` "id": [ "id" ], - "required": [] + "required": [], + "policies": { + "id": [], + "name": [] + } }, { "type": "function", "title": "root_users_fn", - "policies": [ - 0 - ], "input": 6, "output": 7, "runtimeConfig": null, @@ -82,7 +96,6 @@ snapshot[`Typegraph generation with GraphQL runtime 1`] = ` { "type": "object", "title": "root_users_fn_input", - "policies": [], "properties": {}, "id": [], "required": [] @@ -90,25 +103,23 @@ snapshot[`Typegraph generation with GraphQL runtime 1`] = ` { "type": "object", "title": "root_users_fn_output", - "policies": [], "properties": { "data": 8 }, "id": [], - "required": [] + "required": [], + "policies": { + "data": [] + } }, { "type": "list", "title": "root_users_fn_output_data_User_list", - "policies": [], "items": 4 }, { "type": "function", "title": "root_createUser_fn", - "policies": [ - 0 - ], "input": 10, "output": 4, "runtimeConfig": null, @@ -119,31 +130,34 @@ snapshot[`Typegraph generation with GraphQL runtime 1`] = ` { "type": "object", "title": "root_createUser_fn_input", - "policies": [], "properties": { "input": 11 }, "id": [], - "required": [] + "required": [], + "policies": { + "input": [] + } }, { "type": "object", "title": "CreateUserInput", - "policies": [], "properties": { "name": 3, "username": 3, "email": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "name": [], + "username": [], + "email": [] + } }, { "type": "function", "title": "root_create_message_fn", - "policies": [ - 0 - ], "input": 17, "output": 20, "runtimeConfig": null, @@ -154,7 +168,6 @@ snapshot[`Typegraph generation with GraphQL runtime 1`] = ` { "type": "object", "title": "message", - "policies": [], "properties": { "id": 14, "title": 3, @@ -164,17 +177,21 @@ snapshot[`Typegraph generation with GraphQL runtime 1`] = ` "id": [ "id" ], - "required": [] + "required": [], + "policies": { + "id": [], + "title": [], + "user_id": [], + "user": [] + } }, { "type": "integer", - "title": "message_create_input_id_integer", - "policies": [] + "title": "message_create_input_id_integer" }, { "type": "function", "title": "message_output_user_fn", - "policies": [], "input": 2, "output": 16, "injections": { @@ -195,43 +212,46 @@ snapshot[`Typegraph generation with GraphQL runtime 1`] = ` { "type": "optional", "title": "message_output_user_fn_output", - "policies": [], "item": 4, "default_value": null }, { "type": "object", "title": "root_create_message_fn_input", - "policies": [], "properties": { "data": 18 }, "id": [], - "required": [] + "required": [], + "policies": { + "data": [] + } }, { "type": "object", "title": "message_create_input", - "policies": [], "properties": { "id": 19, "title": 3, "user_id": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "id": [], + "title": [], + "user_id": [] + } }, { "type": "optional", "title": "message_create_input_id_message_create_input_id_integer_optional", - "policies": [], "item": 14, "default_value": null }, { "type": "object", "title": "message_output", - "policies": [], "properties": { "id": 14, "title": 3, @@ -241,16 +261,19 @@ snapshot[`Typegraph generation with GraphQL runtime 1`] = ` "id": [ "id" ], - "required": [] + "required": [], + "policies": { + "id": [], + "title": [], + "user_id": [], + "user": [] + } }, { "type": "function", "title": "root_messages_fn", - "policies": [ - 0 - ], "input": 22, - "output": 76, + "output": 73, "runtimeConfig": null, "materializer": 6, "rate_weight": null, @@ -259,258 +282,278 @@ snapshot[`Typegraph generation with GraphQL runtime 1`] = ` { "type": "object", "title": "message_query_input", - "policies": [], "properties": { "where": 23, - "orderBy": 57, - "take": 64, - "skip": 66, - "cursor": 68, - "distinct": 73 + "orderBy": 54, + "take": 61, + "skip": 63, + "cursor": 65, + "distinct": 70 }, "id": [], - "required": [] + "required": [], + "policies": { + "where": [], + "orderBy": [], + "take": [], + "skip": [], + "cursor": [], + "distinct": [] + } }, { "type": "optional", "title": "message_query_input_where_message_query_where_input_optional", - "policies": [], "item": 24, "default_value": null }, { "type": "object", "title": "message_query_where_input", - "policies": [], "properties": { "id": 25, - "title": 37, - "user_id": 53, - "AND": 54, - "OR": 54, - "NOT": 56 + "title": 36, + "user_id": 36, + "AND": 52, + "OR": 52, + "NOT": 23 }, "id": [], - "required": [] + "required": [], + "policies": { + "id": [], + "title": [], + "user_id": [], + "AND": [], + "OR": [], + "NOT": [] + } }, { "type": "optional", "title": "message_query_where_input_id__prisma_integer_filter_ex_optional", - "policies": [], "item": 26, "default_value": null }, { "type": "optional", "title": "_prisma_integer_filter_ex", - "policies": [], "item": 27, "default_value": null }, { "type": "union", "title": "message_query_where_input_id_union", - "policies": [], "anyOf": [ 28, - 36 + 35 ] }, { "type": "either", "title": "_prisma_integer_filter", - "policies": [], "oneOf": [ 14, 29, 30, 31, - 33, - 35 + 32, + 34 ] }, { "type": "object", "title": "_prisma_integer_filter_t1_struct", - "policies": [], "properties": { "equals": 14 }, "id": [], - "required": [] + "required": [], + "policies": { + "equals": [] + } }, { "type": "object", "title": "_prisma_integer_filter_t2_struct", - "policies": [], "properties": { "not": 14 }, "id": [], - "required": [] + "required": [], + "policies": { + "not": [] + } }, { "type": "object", "title": "_prisma_integer_filter_t3_struct", - "policies": [], "properties": { - "lt": 32, - "gt": 32, - "lte": 32, - "gte": 32 + "lt": 19, + "gt": 19, + "lte": 19, + "gte": 19 }, "id": [], - "required": [] - }, - { - "type": "optional", - "title": "_prisma_integer_filter_t3_struct_lt_message_create_input_id_integer_optional", - "policies": [], - "item": 14, - "default_value": null + "required": [], + "policies": { + "lt": [], + "gt": [], + "lte": [], + "gte": [] + } }, { "type": "object", "title": "_prisma_integer_filter_t4_struct", - "policies": [], "properties": { - "in": 34 + "in": 33 }, "id": [], - "required": [] + "required": [], + "policies": { + "in": [] + } }, { "type": "list", "title": "_prisma_integer_filter_t4_struct_in_message_create_input_id_integer_list", - "policies": [], "items": 14 }, { "type": "object", "title": "_prisma_integer_filter_t5_struct", - "policies": [], "properties": { - "notIn": 34 + "notIn": 33 }, "id": [], - "required": [] + "required": [], + "policies": { + "notIn": [] + } }, { "type": "object", "title": "message_query_where_input_id_union_t1_struct", - "policies": [], "properties": { "not": 28 }, "id": [], - "required": [] + "required": [], + "policies": { + "not": [] + } }, { "type": "optional", "title": "message_query_where_input_title__prisma_string_filter_ex_optional", - "policies": [], - "item": 38, + "item": 37, "default_value": null }, { "type": "optional", "title": "_prisma_string_filter_ex", - "policies": [], - "item": 39, + "item": 38, "default_value": null }, { "type": "union", "title": "message_query_where_input_title_union", - "policies": [], "anyOf": [ - 40, - 52 + 39, + 51 ] }, { "type": "union", "title": "_prisma_string_filter", - "policies": [], "anyOf": [ 3, + 40, 41, 42, - 43, + 44, 45, - 46, - 49, - 50 + 48, + 49 ] }, { "type": "object", "title": "_prisma_string_filter_t1_struct", - "policies": [], "properties": { "equals": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "equals": [] + } }, { "type": "object", "title": "_prisma_string_filter_t2_struct", - "policies": [], "properties": { "not": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "not": [] + } }, { "type": "object", "title": "_prisma_string_filter_t3_struct", - "policies": [], "properties": { - "in": 44 + "in": 43 }, "id": [], - "required": [] + "required": [], + "policies": { + "in": [] + } }, { "type": "list", "title": "_prisma_string_filter_t3_struct_in_root_user_fn_input_id_string_list", - "policies": [], "items": 3 }, { "type": "object", "title": "_prisma_string_filter_t4_struct", - "policies": [], "properties": { - "notIn": 44 + "notIn": 43 }, "id": [], - "required": [] + "required": [], + "policies": { + "notIn": [] + } }, { "type": "object", "title": "_prisma_string_filter_t5_struct", - "policies": [], "properties": { "contains": 3, - "mode": 47 + "mode": 46 }, "id": [], - "required": [] + "required": [], + "policies": { + "contains": [], + "mode": [] + } }, { "type": "optional", "title": "_prisma_string_filter_t5_struct_mode__prisma_string_filter_t5_struct_mode_string_enum_optional", - "policies": [], - "item": 48, + "item": 47, "default_value": null }, { "type": "string", "title": "_prisma_string_filter_t5_struct_mode_string_enum", - "policies": [], "enum": [ "\\\\"insensitive\\\\"" ] @@ -518,123 +561,114 @@ snapshot[`Typegraph generation with GraphQL runtime 1`] = ` { "type": "object", "title": "_prisma_string_filter_t6_struct", - "policies": [], "properties": { "search": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "search": [] + } }, { "type": "object", "title": "_prisma_string_filter_t7_struct", - "policies": [], "properties": { - "startsWith": 51, - "endsWith": 51 + "startsWith": 50, + "endsWith": 50 }, "id": [], - "required": [] + "required": [], + "policies": { + "startsWith": [], + "endsWith": [] + } }, { "type": "optional", "title": "_prisma_string_filter_t7_struct_startsWith_root_user_fn_input_id_string_optional", - "policies": [], "item": 3, "default_value": null }, { "type": "object", "title": "message_query_where_input_title_union_t1_struct", - "policies": [], "properties": { - "not": 40 + "not": 39 }, "id": [], - "required": [] - }, - { - "type": "optional", - "title": "message_query_where_input_user_id__prisma_string_filter_ex_optional", - "policies": [], - "item": 38, - "default_value": null + "required": [], + "policies": { + "not": [] + } }, { "type": "optional", "title": "message_query_where_input_AND_message_query_where_input_AND_message_query_where_input_list_optional", - "policies": [], - "item": 55, + "item": 53, "default_value": null }, { "type": "list", "title": "message_query_where_input_AND_message_query_where_input_list", - "policies": [], "items": 24 }, - { - "type": "optional", - "title": "message_query_where_input_NOT_message_query_where_input_optional", - "policies": [], - "item": 24, - "default_value": null - }, { "type": "optional", "title": "message_query_input_orderBy_message_order_by_optional", - "policies": [], - "item": 58, + "item": 55, "default_value": null }, { "type": "list", "title": "message_order_by", - "policies": [], - "items": 59 + "items": 56 }, { "type": "object", "title": "message_query_input_orderBy_struct", - "policies": [], "properties": { - "id": 60, - "title": 60, - "user_id": 60 + "id": 57, + "title": 57, + "user_id": 57 }, "id": [], - "required": [] + "required": [], + "policies": { + "id": [], + "title": [], + "user_id": [] + } }, { "type": "optional", "title": "_prisma_sort", - "policies": [], - "item": 61, + "item": 58, "default_value": null }, { "type": "union", "title": "message_query_input_orderBy_struct_id_union", - "policies": [], "anyOf": [ - 62, - 63 + 59, + 60 ] }, { "type": "object", "title": "message_query_input_orderBy_struct_id_union_t0_struct", - "policies": [], "properties": { - "sort": 63 + "sort": 60 }, "id": [], - "required": [] + "required": [], + "policies": { + "sort": [] + } }, { "type": "string", "title": "_prisma_sort_order", - "policies": [], "enum": [ "\\\\"asc\\\\"", "\\\\"desc\\\\"" @@ -643,95 +677,92 @@ snapshot[`Typegraph generation with GraphQL runtime 1`] = ` { "type": "optional", "title": "message_query_input_take__take_optional", - "policies": [], - "item": 65, + "item": 62, "default_value": null }, { "type": "integer", "title": "_take", - "policies": [], "exclusiveMinimum": 0 }, { "type": "optional", "title": "message_query_input_skip__skip_optional", - "policies": [], - "item": 67, + "item": 64, "default_value": null }, { "type": "integer", "title": "_skip", - "policies": [], "minimum": 0 }, { "type": "optional", "title": "message_query_input_cursor_message_cursor_optional", - "policies": [], - "item": 69, + "item": 66, "default_value": null }, { "type": "union", "title": "message_cursor", - "policies": [], "anyOf": [ - 70, - 71, - 72 + 67, + 68, + 69 ] }, { "type": "object", "title": "message_cursor_t0_struct", - "policies": [], "properties": { "id": 14 }, "id": [ "id" ], - "required": [] + "required": [], + "policies": { + "id": [] + } }, { "type": "object", "title": "message_cursor_t1_struct", - "policies": [], "properties": { "title": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "title": [] + } }, { "type": "object", "title": "message_cursor_t2_struct", - "policies": [], "properties": { "user_id": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "user_id": [] + } }, { "type": "optional", "title": "message_query_input_distinct_message_keys_union_optional", - "policies": [], - "item": 74, + "item": 71, "default_value": null }, { "type": "list", "title": "message_keys_union", - "policies": [], - "items": 75 + "items": 72 }, { "type": "string", "title": "message_query_input_distinct_string_enum", - "policies": [], "enum": [ "\\\\"id\\\\"", "\\\\"title\\\\"", @@ -741,13 +772,11 @@ snapshot[`Typegraph generation with GraphQL runtime 1`] = ` { "type": "list", "title": "root_messages_fn_output", - "policies": [], - "items": 77 + "items": 74 }, { "type": "object", "title": "message_with_nested_count", - "policies": [], "properties": { "id": 14, "title": 3, @@ -755,7 +784,13 @@ snapshot[`Typegraph generation with GraphQL runtime 1`] = ` "user": 15 }, "id": [], - "required": [] + "required": [], + "policies": { + "id": [], + "title": [], + "user_id": [], + "user": [] + } } ], "materializers": [ @@ -778,7 +813,7 @@ snapshot[`Typegraph generation with GraphQL runtime 1`] = ` "idempotent": true }, "data": { - "name": "true" + "name": "pass" } }, { diff --git a/tests/runtimes/grpc/__snapshots__/grpc_test.ts.snap b/tests/runtimes/grpc/__snapshots__/grpc_test.ts.snap index 927d158355..c8f82853fe 100644 --- a/tests/runtimes/grpc/__snapshots__/grpc_test.ts.snap +++ b/tests/runtimes/grpc/__snapshots__/grpc_test.ts.snap @@ -7,21 +7,22 @@ snapshot[`Typegraph using grpc 1`] = ` { "type": "object", "title": "helloworld", - "policies": [], "properties": { "greet": 1 }, "id": [], "required": [ "greet" - ] + ], + "policies": { + "greet": [ + 0 + ] + } }, { "type": "function", "title": "root_greet_fn", - "policies": [ - 0 - ], "input": 2, "output": 5, "runtimeConfig": null, @@ -32,41 +33,36 @@ snapshot[`Typegraph using grpc 1`] = ` { "type": "object", "title": "root_greet_fn_input", - "policies": [], "properties": { "name": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "name": [] + } }, { "type": "optional", "title": "root_greet_fn_input_name_root_greet_fn_input_name_string_optional", - "policies": [], "item": 4, "default_value": null }, { "type": "string", - "title": "root_greet_fn_input_name_string", - "policies": [] + "title": "root_greet_fn_input_name_string" }, { "type": "object", "title": "root_greet_fn_output", - "policies": [], "properties": { - "message": 6 + "message": 3 }, "id": [], - "required": [] - }, - { - "type": "optional", - "title": "root_greet_fn_output_message_root_greet_fn_input_name_string_optional", - "policies": [], - "item": 4, - "default_value": null + "required": [], + "policies": { + "message": [] + } } ], "materializers": [ @@ -89,7 +85,7 @@ snapshot[`Typegraph using grpc 1`] = ` "idempotent": true }, "data": { - "name": "true" + "name": "pass" } } ], @@ -147,21 +143,22 @@ snapshot[`Typegraph using grpc 2`] = ` { "type": "object", "title": "helloworld", - "policies": [], "properties": { "greet": 1 }, "id": [], "required": [ "greet" - ] + ], + "policies": { + "greet": [ + 0 + ] + } }, { "type": "function", "title": "root_greet_fn", - "policies": [ - 0 - ], "input": 2, "output": 5, "runtimeConfig": null, @@ -172,41 +169,36 @@ snapshot[`Typegraph using grpc 2`] = ` { "type": "object", "title": "root_greet_fn_input", - "policies": [], "properties": { "name": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "name": [] + } }, { "type": "optional", "title": "root_greet_fn_input_name_root_greet_fn_input_name_string_optional", - "policies": [], "item": 4, "default_value": null }, { "type": "string", - "title": "root_greet_fn_input_name_string", - "policies": [] + "title": "root_greet_fn_input_name_string" }, { "type": "object", "title": "root_greet_fn_output", - "policies": [], "properties": { - "message": 6 + "message": 3 }, "id": [], - "required": [] - }, - { - "type": "optional", - "title": "root_greet_fn_output_message_root_greet_fn_input_name_string_optional", - "policies": [], - "item": 4, - "default_value": null + "required": [], + "policies": { + "message": [] + } } ], "materializers": [ @@ -229,7 +221,7 @@ snapshot[`Typegraph using grpc 2`] = ` "idempotent": true }, "data": { - "name": "true" + "name": "pass" } } ], diff --git a/tests/runtimes/kv/__snapshots__/kv_test.ts.snap b/tests/runtimes/kv/__snapshots__/kv_test.ts.snap index 6c13a71348..948e9875a4 100644 --- a/tests/runtimes/kv/__snapshots__/kv_test.ts.snap +++ b/tests/runtimes/kv/__snapshots__/kv_test.ts.snap @@ -7,13 +7,12 @@ snapshot[`Typegraph using kv 1`] = ` { "type": "object", "title": "kv", - "policies": [], "properties": { "get": 1, "set": 5, "delete": 7, "keys": 9, - "values": 13 + "values": 12 }, "id": [], "required": [ @@ -22,14 +21,28 @@ snapshot[`Typegraph using kv 1`] = ` "delete", "keys", "values" - ] + ], + "policies": { + "get": [ + 0 + ], + "set": [ + 0 + ], + "delete": [ + 0 + ], + "keys": [ + 0 + ], + "values": [ + 0 + ] + } }, { "type": "function", "title": "root_get_fn", - "policies": [ - 0 - ], "input": 2, "output": 4, "runtimeConfig": null, @@ -40,31 +53,28 @@ snapshot[`Typegraph using kv 1`] = ` { "type": "object", "title": "root_get_fn_input", - "policies": [], "properties": { "key": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "key": [] + } }, { "type": "string", - "title": "root_get_fn_input_key_string", - "policies": [] + "title": "root_get_fn_input_key_string" }, { "type": "optional", "title": "root_get_fn_output", - "policies": [], "item": 3, "default_value": null }, { "type": "function", "title": "root_set_fn", - "policies": [ - 0 - ], "input": 6, "output": 3, "runtimeConfig": null, @@ -75,20 +85,20 @@ snapshot[`Typegraph using kv 1`] = ` { "type": "object", "title": "root_set_fn_input", - "policies": [], "properties": { "key": 3, "value": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "key": [], + "value": [] + } }, { "type": "function", "title": "root_delete_fn", - "policies": [ - 0 - ], "input": 2, "output": 8, "runtimeConfig": null, @@ -98,17 +108,13 @@ snapshot[`Typegraph using kv 1`] = ` }, { "type": "integer", - "title": "root_delete_fn_output", - "policies": [] + "title": "root_delete_fn_output" }, { "type": "function", "title": "root_keys_fn", - "policies": [ - 0 - ], "input": 10, - "output": 12, + "output": 11, "runtimeConfig": null, "materializer": 4, "rate_weight": null, @@ -117,61 +123,29 @@ snapshot[`Typegraph using kv 1`] = ` { "type": "object", "title": "root_keys_fn_input", - "policies": [], "properties": { - "filter": 11 + "filter": 4 }, "id": [], - "required": [] - }, - { - "type": "optional", - "title": "root_keys_fn_input_filter_root_get_fn_input_key_string_optional", - "policies": [], - "item": 3, - "default_value": null + "required": [], + "policies": { + "filter": [] + } }, { "type": "list", "title": "root_keys_fn_output", - "policies": [], "items": 3 }, { "type": "function", "title": "root_values_fn", - "policies": [ - 0 - ], - "input": 14, - "output": 16, + "input": 10, + "output": 11, "runtimeConfig": null, "materializer": 5, "rate_weight": null, "rate_calls": false - }, - { - "type": "object", - "title": "root_values_fn_input", - "policies": [], - "properties": { - "filter": 15 - }, - "id": [], - "required": [] - }, - { - "type": "optional", - "title": "root_values_fn_input_filter_root_get_fn_input_key_string_optional", - "policies": [], - "item": 3, - "default_value": null - }, - { - "type": "list", - "title": "root_values_fn_output", - "policies": [], - "items": 3 } ], "materializers": [ @@ -192,7 +166,7 @@ snapshot[`Typegraph using kv 1`] = ` "idempotent": true }, "data": { - "name": "true" + "name": "pass" } }, { @@ -285,13 +259,12 @@ snapshot[`Typegraph using kv 2`] = ` { "type": "object", "title": "kv", - "policies": [], "properties": { "get": 1, "set": 5, "delete": 7, "keys": 9, - "values": 13 + "values": 12 }, "id": [], "required": [ @@ -300,14 +273,28 @@ snapshot[`Typegraph using kv 2`] = ` "delete", "keys", "values" - ] + ], + "policies": { + "get": [ + 0 + ], + "set": [ + 0 + ], + "delete": [ + 0 + ], + "keys": [ + 0 + ], + "values": [ + 0 + ] + } }, { "type": "function", "title": "root_get_fn", - "policies": [ - 0 - ], "input": 2, "output": 4, "runtimeConfig": null, @@ -318,31 +305,28 @@ snapshot[`Typegraph using kv 2`] = ` { "type": "object", "title": "root_get_fn_input", - "policies": [], "properties": { "key": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "key": [] + } }, { "type": "string", - "title": "root_get_fn_input_key_string", - "policies": [] + "title": "root_get_fn_input_key_string" }, { "type": "optional", "title": "root_get_fn_output", - "policies": [], "item": 3, "default_value": null }, { "type": "function", "title": "root_set_fn", - "policies": [ - 0 - ], "input": 6, "output": 3, "runtimeConfig": null, @@ -353,20 +337,20 @@ snapshot[`Typegraph using kv 2`] = ` { "type": "object", "title": "root_set_fn_input", - "policies": [], "properties": { "key": 3, "value": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "key": [], + "value": [] + } }, { "type": "function", "title": "root_delete_fn", - "policies": [ - 0 - ], "input": 2, "output": 8, "runtimeConfig": null, @@ -376,17 +360,13 @@ snapshot[`Typegraph using kv 2`] = ` }, { "type": "integer", - "title": "root_delete_fn_output", - "policies": [] + "title": "root_delete_fn_output" }, { "type": "function", "title": "root_keys_fn", - "policies": [ - 0 - ], "input": 10, - "output": 12, + "output": 11, "runtimeConfig": null, "materializer": 4, "rate_weight": null, @@ -395,61 +375,29 @@ snapshot[`Typegraph using kv 2`] = ` { "type": "object", "title": "root_keys_fn_input", - "policies": [], "properties": { - "filter": 11 + "filter": 4 }, "id": [], - "required": [] - }, - { - "type": "optional", - "title": "root_keys_fn_input_filter_root_get_fn_input_key_string_optional", - "policies": [], - "item": 3, - "default_value": null + "required": [], + "policies": { + "filter": [] + } }, { "type": "list", "title": "root_keys_fn_output", - "policies": [], "items": 3 }, { "type": "function", "title": "root_values_fn", - "policies": [ - 0 - ], - "input": 14, - "output": 16, + "input": 10, + "output": 11, "runtimeConfig": null, "materializer": 5, "rate_weight": null, "rate_calls": false - }, - { - "type": "object", - "title": "root_values_fn_input", - "policies": [], - "properties": { - "filter": 15 - }, - "id": [], - "required": [] - }, - { - "type": "optional", - "title": "root_values_fn_input_filter_root_get_fn_input_key_string_optional", - "policies": [], - "item": 3, - "default_value": null - }, - { - "type": "list", - "title": "root_values_fn_output", - "policies": [], - "items": 3 } ], "materializers": [ @@ -470,7 +418,7 @@ snapshot[`Typegraph using kv 2`] = ` "idempotent": true }, "data": { - "name": "true" + "name": "pass" } }, { diff --git a/tests/runtimes/prisma/type_duplication.ts b/tests/runtimes/prisma/type_duplication.ts new file mode 100644 index 0000000000..463ab3cd30 --- /dev/null +++ b/tests/runtimes/prisma/type_duplication.ts @@ -0,0 +1,62 @@ +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +import { Policy, t, typegraph } from "@typegraph/sdk"; +import { PrismaRuntime } from "@typegraph/sdk/providers/prisma"; + +export const tg = await typegraph("type-duplication", (g: any) => { + const prisma = new PrismaRuntime("prisma", "POSTGRES"); + const entts = { + vivaSession: t.struct({ + id: t.uuid({ config: ["auto"] }).id(), + sourceLink: g.ref("scenarioLink"), + // response: g.ref("response").optional(), + }), + scenario: t.struct({ + id: t.uuid({ config: ["auto"] }).id(), + scenes: t.list(g.ref("scene")), + links: t.list(g.ref("scenarioLink")), + }), + scenarioLink: t.struct({ + id: t.uuid({ config: ["auto"] }).id(), + scenario: g.ref("scenario"), + sessions: t.list(g.ref("vivaSession")), + }), + scene: t.struct({ + id: t.uuid({ config: ["auto"] }).id(), + scenario: g.ref("scenario"), + video: g.ref("sceneVideo").optional(), + responseVideos: t.list(g.ref("responseVideo")), + }), + sceneVideo: t.struct({ + id: t.uuid({ config: ["auto"] }).id(), + scene: g.ref("scene"), + }), + response: t.struct({ + id: t.uuid({ config: ["auto"] }).id(), + // session: g.ref("vivaSession"), + videos: t.list(g.ref("responseVideo")), + }), + responseVideo: t.struct({ + id: t.uuid({ config: ["auto"] }).id(), + response: g.ref("response"), + scene: g.ref("scene"), + }), + } as Record; + const rootFns = {} as Record; + for (const [key, type] of Object.entries(entts)) { + entts[key] = (type as t.Typedef).rename(key); + } + for (const [key, type] of Object.entries(entts)) { + rootFns[`find_${key}`] = prisma.findFirst(type); + rootFns[`create_${key}`] = prisma.create(type); + rootFns[`update_${key}`] = prisma.update(type); + rootFns[`delte_${key}`] = prisma.delete(type); + } + g.expose( + { + ...rootFns, + }, + Policy.public(), + ); +}); diff --git a/tests/runtimes/prisma/type_duplication_test.ts b/tests/runtimes/prisma/type_duplication_test.ts new file mode 100644 index 0000000000..894f3b933d --- /dev/null +++ b/tests/runtimes/prisma/type_duplication_test.ts @@ -0,0 +1,24 @@ +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +import { TypeGraphDS } from "@metatype/typegate/typegraph/mod.ts"; +import { Meta } from "../../utils/mod.ts"; +import { assert } from "@std/assert/"; + +Meta.test("serialization size test", async (mt) => { + const raw = await mt.serialize("runtimes/prisma/type_duplication.ts"); + const size = new TextEncoder().encode(raw).length; + assert( + size < 1_240_000, + `serialized size is too large ${Math.ceil(size / 1024)}KiB`, + ); + + console.log(raw) + const tg: TypeGraphDS = JSON.parse( + raw, + ); + assert( + tg.types.length < 3000, + `typegraph has too many types: ${tg.types.length}`, + ); +}); diff --git a/tests/runtimes/python/py_fail/dep_fail.py b/tests/runtimes/python/py_fail/dep_fail.py new file mode 100644 index 0000000000..d951778807 --- /dev/null +++ b/tests/runtimes/python/py_fail/dep_fail.py @@ -0,0 +1,5 @@ +# Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +# SPDX-License-Identifier: MPL-2.0 + +def hello(name: str: + return f"Hello {name}" diff --git a/tests/runtimes/python/py_fail/hello_fail.py b/tests/runtimes/python/py_fail/hello_fail.py new file mode 100644 index 0000000000..c3fedb1984 --- /dev/null +++ b/tests/runtimes/python/py_fail/hello_fail.py @@ -0,0 +1,8 @@ +# Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +# SPDX-License-Identifier: MPL-2.0 + +from typing import Dict + + +def say_hello(x: Dict): + print(f"hello: {undefind}") diff --git a/tests/runtimes/python/python_test.ts b/tests/runtimes/python/python_test.ts index 93b378dd62..15f2afa9f7 100644 --- a/tests/runtimes/python/python_test.ts +++ b/tests/runtimes/python/python_test.ts @@ -1,7 +1,7 @@ // Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. // SPDX-License-Identifier: MPL-2.0 -import { assert, assertEquals } from "@std/assert"; +import { assert, assertEquals, assertRejects } from "@std/assert"; import { gql, Meta } from "test-utils/mod.ts"; import { WitWireMessenger } from "@metatype/typegate/runtimes/wit_wire/mod.ts"; import { QueryEngine } from "@metatype/typegate/engine/query_engine.ts"; @@ -478,3 +478,17 @@ Meta.test( ); }, ); + +Meta.test( + { + name: "Python code validation on deploy", + }, + async (t) => { + await t.should("fail on validation", async () => { + await assertRejects( + async () => await t.engine("runtimes/python/python_validation.py"), + "ValidationError", + ); + }); + }, +); diff --git a/tests/runtimes/python/python_validation.py b/tests/runtimes/python/python_validation.py new file mode 100644 index 0000000000..41b5705b54 --- /dev/null +++ b/tests/runtimes/python/python_validation.py @@ -0,0 +1,26 @@ +# Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +# SPDX-License-Identifier: MPL-2.0 + +from typegraph.graph.typegraph import Graph +from typegraph.policy import Policy +from typegraph.runtimes.python import PythonRuntime + +from typegraph import t, typegraph + + +@typegraph() +def python(g: Graph): + public = Policy.public() + python = PythonRuntime() + + g.expose( + testValidation=( + python.import_( + t.struct({"name": t.string()}), + t.string(), + module="py_fail/hello_fail.py", + deps=["py_fail/dep_fail.py"], + name="sayHello", + ).with_policy(public), + ) + ) diff --git a/tests/runtimes/s3/__snapshots__/s3_test.ts.snap b/tests/runtimes/s3/__snapshots__/s3_test.ts.snap index 050dbedbfd..48f5b3fdc3 100644 --- a/tests/runtimes/s3/__snapshots__/s3_test.ts.snap +++ b/tests/runtimes/s3/__snapshots__/s3_test.ts.snap @@ -6,13 +6,12 @@ snapshot[`s3 typegraphs 1`] = ` { "type": "object", "title": "s3", - "policies": [], "properties": { "listObjects": 1, "getDownloadUrl": 10, "signTextUploadUrl": 13, "upload": 15, - "uploadMany": 20 + "uploadMany": 19 }, "id": [], "required": [ @@ -21,14 +20,28 @@ snapshot[`s3 typegraphs 1`] = ` "signTextUploadUrl", "upload", "uploadMany" - ] + ], + "policies": { + "listObjects": [ + 0 + ], + "getDownloadUrl": [ + 0 + ], + "signTextUploadUrl": [ + 0 + ], + "upload": [ + 0 + ], + "uploadMany": [ + 0 + ] + } }, { "type": "function", "title": "root_listObjects_fn", - "policies": [ - 0 - ], "input": 2, "output": 5, "runtimeConfig": null, @@ -39,70 +52,70 @@ snapshot[`s3 typegraphs 1`] = ` { "type": "object", "title": "root_listObjects_fn_input", - "policies": [], "properties": { "path": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "path": [] + } }, { "type": "optional", "title": "root_listObjects_fn_input_path_root_listObjects_fn_input_path_string_optional", - "policies": [], "item": 4, "default_value": null }, { "type": "string", - "title": "root_listObjects_fn_input_path_string", - "policies": [] + "title": "root_listObjects_fn_input_path_string" }, { "type": "object", "title": "root_listObjects_fn_output", - "policies": [], "properties": { "keys": 6, "prefix": 9 }, "id": [], - "required": [] + "required": [], + "policies": { + "keys": [], + "prefix": [] + } }, { "type": "list", "title": "root_listObjects_fn_output_keys_root_listObjects_fn_output_keys_struct_list", - "policies": [], "items": 7 }, { "type": "object", "title": "root_listObjects_fn_output_keys_struct", - "policies": [], "properties": { "key": 4, "size": 8 }, "id": [], - "required": [] + "required": [], + "policies": { + "key": [], + "size": [] + } }, { "type": "integer", - "title": "root_listObjects_fn_output_keys_struct_size_integer", - "policies": [] + "title": "root_listObjects_fn_output_keys_struct_size_integer" }, { "type": "list", "title": "root_listObjects_fn_output_prefix_root_listObjects_fn_input_path_string_list", - "policies": [], "items": 4 }, { "type": "function", "title": "root_getDownloadUrl_fn", - "policies": [ - 0 - ], "input": 11, "output": 12, "runtimeConfig": null, @@ -113,25 +126,23 @@ snapshot[`s3 typegraphs 1`] = ` { "type": "object", "title": "root_getDownloadUrl_fn_input", - "policies": [], "properties": { "path": 4 }, "id": [], - "required": [] + "required": [], + "policies": { + "path": [] + } }, { "type": "string", "title": "root_getDownloadUrl_fn_output", - "policies": [], "format": "uri" }, { "type": "function", "title": "root_signTextUploadUrl_fn", - "policies": [ - 0 - ], "input": 14, "output": 12, "runtimeConfig": null, @@ -142,22 +153,22 @@ snapshot[`s3 typegraphs 1`] = ` { "type": "object", "title": "root_signTextUploadUrl_fn_input", - "policies": [], "properties": { "length": 8, "path": 4 }, "id": [], - "required": [] + "required": [], + "policies": { + "length": [], + "path": [] + } }, { "type": "function", "title": "root_upload_fn", - "policies": [ - 0 - ], "input": 16, - "output": 19, + "output": 18, "runtimeConfig": null, "materializer": 4, "rate_weight": null, @@ -166,42 +177,33 @@ snapshot[`s3 typegraphs 1`] = ` { "type": "object", "title": "root_upload_fn_input", - "policies": [], "properties": { "file": 17, - "path": 18 + "path": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "file": [], + "path": [] + } }, { "type": "file", "title": "root_upload_fn_input_file_file", - "policies": [], "mimeTypes": [ "text/plain" ] }, - { - "type": "optional", - "title": "root_upload_fn_input_path_root_listObjects_fn_input_path_string_optional", - "policies": [], - "item": 4, - "default_value": null - }, { "type": "boolean", - "title": "root_upload_fn_output", - "policies": [] + "title": "root_upload_fn_output" }, { "type": "function", "title": "root_uploadMany_fn", - "policies": [ - 0 - ], - "input": 21, - "output": 19, + "input": 20, + "output": 18, "runtimeConfig": null, "materializer": 5, "rate_weight": null, @@ -210,31 +212,31 @@ snapshot[`s3 typegraphs 1`] = ` { "type": "object", "title": "root_uploadMany_fn_input", - "policies": [], "properties": { - "prefix": 22, - "files": 23 + "prefix": 21, + "files": 22 }, "id": [], - "required": [] + "required": [], + "policies": { + "prefix": [], + "files": [] + } }, { "type": "optional", "title": "root_uploadMany_fn_input_prefix_root_listObjects_fn_input_path_string_optional", - "policies": [], "item": 4, "default_value": "" }, { "type": "list", "title": "root_uploadMany_fn_input_files_root_uploadMany_fn_input_files_file_list", - "policies": [], - "items": 24 + "items": 23 }, { "type": "file", - "title": "root_uploadMany_fn_input_files_file", - "policies": [] + "title": "root_uploadMany_fn_input_files_file" } ], "materializers": [ @@ -257,7 +259,7 @@ snapshot[`s3 typegraphs 1`] = ` "idempotent": true }, "data": { - "name": "true" + "name": "pass" } }, { diff --git a/tests/runtimes/substantial/workflows/workflow.ts b/tests/runtimes/substantial/workflows/workflow.ts index b625ec99d4..d9831739e6 100644 --- a/tests/runtimes/substantial/workflows/workflow.ts +++ b/tests/runtimes/substantial/workflows/workflow.ts @@ -10,7 +10,7 @@ import { } from "../imports/common_types.ts"; export const eventsAndExceptionExample: Workflow = async ( - ctx: Context + ctx: Context, ) => { const { to } = ctx.kwargs; const messageDialog = await ctx.save(() => sendSubscriptionEmail(to)); @@ -37,18 +37,18 @@ export async function saveAndSleepExample(ctx: Context) { const sum = await ctx.save(async () => { const remoteAdd = new Date().getTime(); - const { data } = await ctx.gql/**/ `query { remote_add(a: $a, b: $b) }`.run( + const { data } = await ctx.gql /**/`query { remote_add(a: $a, b: $b) }`.run( { a: newA, b: newB, - } + }, ); const remoteAddEnd = new Date().getTime(); console.log( "Remote add:", (remoteAddEnd - remoteAdd) / 1000, ", Response:", - data + data, ); return (data as any)?.remote_add as number; @@ -76,7 +76,7 @@ export async function retryExample(ctx: Context) { maxBackoffMs: 5000, maxRetries: 4, }, - } + }, ); const timeoutRet = await ctx.save( @@ -95,7 +95,7 @@ export async function retryExample(ctx: Context) { maxBackoffMs: 3000, maxRetries: 5, }, - } + }, ); return [timeoutRet, retryRet].join(", "); @@ -107,7 +107,10 @@ export const secretsExample: Workflow = (_, { secrets }) => { throw new Error("unable to read secret"); } if (Object.keys(rest).length > 0) { - throw new Error("unexpected secrets found: ", rest); + throw new Error("unexpected secrets found: " + JSON.stringify(rest)); + } + if (MY_SECRET !== "Hello") { + throw new Error("unexpected secrets valu: " + MY_SECRET + " != Hello"); } return Promise.resolve(); }; @@ -125,9 +128,11 @@ export async function accidentalInputMutation(ctx: Context) { if (front.innerField == mutValue) { // Should throw on shallow clones throw new Error( - `actual kwargs was mutated after interrupts: copy ${JSON.stringify( - copy - )}, ${mutValue}` + `actual kwargs was mutated after interrupts: copy ${ + JSON.stringify( + copy, + ) + }, ${mutValue}`, ); } diff --git a/tests/runtimes/temporal/__snapshots__/temporal_test.ts.snap b/tests/runtimes/temporal/__snapshots__/temporal_test.ts.snap index ea0b481d09..acbebcf373 100644 --- a/tests/runtimes/temporal/__snapshots__/temporal_test.ts.snap +++ b/tests/runtimes/temporal/__snapshots__/temporal_test.ts.snap @@ -7,12 +7,11 @@ snapshot[`Typegraph using temporal 1`] = ` { "type": "object", "title": "temporal", - "policies": [], "properties": { "start": 1, "query": 6, - "signal": 9, - "describe": 13 + "signal": 8, + "describe": 10 }, "id": [], "required": [ @@ -20,14 +19,25 @@ snapshot[`Typegraph using temporal 1`] = ` "query", "signal", "describe" - ] + ], + "policies": { + "start": [ + 0 + ], + "query": [ + 0 + ], + "signal": [ + 0 + ], + "describe": [ + 0 + ] + } }, { "type": "function", "title": "root_start_fn", - "policies": [ - 0 - ], "input": 2, "output": 3, "runtimeConfig": null, @@ -38,42 +48,43 @@ snapshot[`Typegraph using temporal 1`] = ` { "type": "object", "title": "root_start_fn_input", - "policies": [], "properties": { "workflow_id": 3, "task_queue": 3, "args": 4 }, "id": [], - "required": [] + "required": [], + "policies": { + "workflow_id": [], + "task_queue": [], + "args": [] + } }, { "type": "string", - "title": "root_start_fn_input_workflow_id_string", - "policies": [] + "title": "root_start_fn_input_workflow_id_string" }, { "type": "list", "title": "root_start_fn_input_args_root_start_fn_input_args_struct_list", - "policies": [], "items": 5 }, { "type": "object", "title": "root_start_fn_input_args_struct", - "policies": [], "properties": { "some_field": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "some_field": [] + } }, { "type": "function", "title": "root_query_fn", - "policies": [ - 0 - ], "input": 7, "output": 3, "runtimeConfig": null, @@ -84,29 +95,24 @@ snapshot[`Typegraph using temporal 1`] = ` { "type": "object", "title": "root_query_fn_input", - "policies": [], "properties": { "workflow_id": 3, "run_id": 3, - "args": 8 + "args": 4 }, "id": [], - "required": [] - }, - { - "type": "list", - "title": "root_query_fn_input_args_root_start_fn_input_args_struct_list", - "policies": [], - "items": 5 + "required": [], + "policies": { + "workflow_id": [], + "run_id": [], + "args": [] + } }, { "type": "function", "title": "root_signal_fn", - "policies": [ - 0 - ], - "input": 10, - "output": 12, + "input": 7, + "output": 9, "injections": { "workflow_id": { "injection": { @@ -122,37 +128,15 @@ snapshot[`Typegraph using temporal 1`] = ` "rate_weight": null, "rate_calls": false }, - { - "type": "object", - "title": "root_signal_fn_input", - "policies": [], - "properties": { - "workflow_id": 3, - "run_id": 3, - "args": 11 - }, - "id": [], - "required": [] - }, - { - "type": "list", - "title": "root_signal_fn_input_args_root_start_fn_input_args_struct_list", - "policies": [], - "items": 5 - }, { "type": "boolean", - "title": "root_signal_fn_output", - "policies": [] + "title": "root_signal_fn_output" }, { "type": "function", "title": "root_describe_fn", - "policies": [ - 0 - ], - "input": 14, - "output": 15, + "input": 11, + "output": 12, "runtimeConfig": null, "materializer": 4, "rate_weight": null, @@ -161,51 +145,42 @@ snapshot[`Typegraph using temporal 1`] = ` { "type": "object", "title": "root_describe_fn_input", - "policies": [], "properties": { "workflow_id": 3, "run_id": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "workflow_id": [], + "run_id": [] + } }, { "type": "object", "title": "root_describe_fn_output", - "policies": [], "properties": { - "start_time": 16, - "close_time": 18, - "state": 19 + "start_time": 13, + "close_time": 13, + "state": 13 }, "id": [], - "required": [] + "required": [], + "policies": { + "start_time": [], + "close_time": [], + "state": [] + } }, { "type": "optional", "title": "root_describe_fn_output_start_time_root_describe_fn_output_start_time_integer_optional", - "policies": [], - "item": 17, + "item": 14, "default_value": null }, { "type": "integer", - "title": "root_describe_fn_output_start_time_integer", - "policies": [] - }, - { - "type": "optional", - "title": "root_describe_fn_output_close_time_root_describe_fn_output_start_time_integer_optional", - "policies": [], - "item": 17, - "default_value": null - }, - { - "type": "optional", - "title": "root_describe_fn_output_state_root_describe_fn_output_start_time_integer_optional", - "policies": [], - "item": 17, - "default_value": null + "title": "root_describe_fn_output_start_time_integer" } ], "materializers": [ @@ -228,7 +203,7 @@ snapshot[`Typegraph using temporal 1`] = ` "idempotent": true }, "data": { - "name": "true" + "name": "pass" } }, { @@ -318,7 +293,6 @@ snapshot[`Typegraph using temporal 2`] = ` { "type": "object", "title": "temporal", - "policies": [], "properties": { "startKv": 1, "query": 6, @@ -331,14 +305,25 @@ snapshot[`Typegraph using temporal 2`] = ` "query", "signal", "describe" - ] + ], + "policies": { + "startKv": [ + 0 + ], + "query": [ + 0 + ], + "signal": [ + 0 + ], + "describe": [ + 0 + ] + } }, { "type": "function", "title": "root_startKv_fn", - "policies": [ - 0 - ], "input": 2, "output": 3, "runtimeConfig": null, @@ -349,30 +334,31 @@ snapshot[`Typegraph using temporal 2`] = ` { "type": "object", "title": "root_startKv_fn_input", - "policies": [], "properties": { "workflow_id": 3, "task_queue": 3, "args": 4 }, "id": [], - "required": [] + "required": [], + "policies": { + "workflow_id": [], + "task_queue": [], + "args": [] + } }, { "type": "string", - "title": "root_startKv_fn_input_workflow_id_string", - "policies": [] + "title": "root_startKv_fn_input_workflow_id_string" }, { "type": "list", "title": "root_startKv_fn_input_args_root_startKv_fn_input_args_struct_list", - "policies": [], "items": 5 }, { "type": "object", "title": "root_startKv_fn_input_args_struct", - "policies": [], "properties": {}, "id": [], "required": [] @@ -380,9 +366,6 @@ snapshot[`Typegraph using temporal 2`] = ` { "type": "function", "title": "root_query_fn", - "policies": [ - 0 - ], "input": 7, "output": 9, "runtimeConfig": null, @@ -393,34 +376,33 @@ snapshot[`Typegraph using temporal 2`] = ` { "type": "object", "title": "root_query_fn_input", - "policies": [], "properties": { "workflow_id": 3, "run_id": 3, "args": 8 }, "id": [], - "required": [] + "required": [], + "policies": { + "workflow_id": [], + "run_id": [], + "args": [] + } }, { "type": "list", "title": "root_query_fn_input_args_root_startKv_fn_input_workflow_id_string_list", - "policies": [], "items": 3 }, { "type": "optional", "title": "root_query_fn_output", - "policies": [], "item": 3, "default_value": null }, { "type": "function", "title": "root_signal_fn", - "policies": [ - 0 - ], "input": 11, "output": 14, "runtimeConfig": null, @@ -431,43 +413,45 @@ snapshot[`Typegraph using temporal 2`] = ` { "type": "object", "title": "root_signal_fn_input", - "policies": [], "properties": { "workflow_id": 3, "run_id": 3, "args": 12 }, "id": [], - "required": [] + "required": [], + "policies": { + "workflow_id": [], + "run_id": [], + "args": [] + } }, { "type": "list", "title": "root_signal_fn_input_args_root_signal_fn_input_args_struct_list", - "policies": [], "items": 13 }, { "type": "object", "title": "root_signal_fn_input_args_struct", - "policies": [], "properties": { "key": 3, "value": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "key": [], + "value": [] + } }, { "type": "boolean", - "title": "root_signal_fn_output", - "policies": [] + "title": "root_signal_fn_output" }, { "type": "function", "title": "root_describe_fn", - "policies": [ - 0 - ], "input": 16, "output": 17, "runtimeConfig": null, @@ -478,51 +462,42 @@ snapshot[`Typegraph using temporal 2`] = ` { "type": "object", "title": "root_describe_fn_input", - "policies": [], "properties": { "workflow_id": 3, "run_id": 3 }, "id": [], - "required": [] + "required": [], + "policies": { + "workflow_id": [], + "run_id": [] + } }, { "type": "object", "title": "root_describe_fn_output", - "policies": [], "properties": { "start_time": 18, - "close_time": 20, - "state": 21 + "close_time": 18, + "state": 18 }, "id": [], - "required": [] + "required": [], + "policies": { + "start_time": [], + "close_time": [], + "state": [] + } }, { "type": "optional", "title": "root_describe_fn_output_start_time_root_describe_fn_output_start_time_integer_optional", - "policies": [], "item": 19, "default_value": null }, { "type": "integer", - "title": "root_describe_fn_output_start_time_integer", - "policies": [] - }, - { - "type": "optional", - "title": "root_describe_fn_output_close_time_root_describe_fn_output_start_time_integer_optional", - "policies": [], - "item": 19, - "default_value": null - }, - { - "type": "optional", - "title": "root_describe_fn_output_state_root_describe_fn_output_start_time_integer_optional", - "policies": [], - "item": 19, - "default_value": null + "title": "root_describe_fn_output_start_time_integer" } ], "materializers": [ @@ -545,7 +520,7 @@ snapshot[`Typegraph using temporal 2`] = ` "idempotent": true }, "data": { - "name": "true" + "name": "pass" } }, { diff --git a/tests/runtimes/typegate/__snapshots__/typegate_prisma_test.ts.snap b/tests/runtimes/typegate/__snapshots__/typegate_prisma_test.ts.snap index a184622b9b..3dfa21dad9 100644 --- a/tests/runtimes/typegate/__snapshots__/typegate_prisma_test.ts.snap +++ b/tests/runtimes/typegate/__snapshots__/typegate_prisma_test.ts.snap @@ -53,9 +53,7 @@ snapshot[`typegate: find available operations 1`] = ` enum: null, format: "date-time", optional: false, - policies: [ - '{"create":"__public"}', - ], + policies: [], title: "record_cursor_t3_struct_createdAt_string_datetime", type: "string", }, @@ -113,9 +111,7 @@ snapshot[`typegate: find available operations 1`] = ` enum: null, format: "date-time", optional: false, - policies: [ - '{"create":"__public"}', - ], + policies: [], title: "record_cursor_t3_struct_createdAt_string_datetime", type: "string", }, @@ -248,7 +244,28 @@ snapshot[`typegate: find available operations 1`] = ` enum: null, format: null, optional: false, - policies: [], + policies: [ + { + fieldName: "id", + policies: "[]", + }, + { + fieldName: "identities", + policies: "[]", + }, + { + fieldName: "email", + policies: "[]", + }, + { + fieldName: "name", + policies: "[]", + }, + { + fieldName: "messages", + policies: "[]", + }, + ], title: "users", type: "object", }, @@ -306,7 +323,28 @@ snapshot[`typegate: find available operations 1`] = ` enum: null, format: null, optional: false, - policies: [], + policies: [ + { + fieldName: "id", + policies: "[]", + }, + { + fieldName: "identities", + policies: "[]", + }, + { + fieldName: "email", + policies: "[]", + }, + { + fieldName: "name", + policies: "[]", + }, + { + fieldName: "messages", + policies: "[]", + }, + ], title: "users", type: "object", }, diff --git a/tests/runtimes/typegate/typegate_prisma_test.ts b/tests/runtimes/typegate/typegate_prisma_test.ts index 9f15a224d6..ed21acdde3 100644 --- a/tests/runtimes/typegate/typegate_prisma_test.ts +++ b/tests/runtimes/typegate/typegate_prisma_test.ts @@ -42,7 +42,10 @@ Meta.test({ enum default format - policies + policies { + fieldName + policies + } } } } diff --git a/tests/runtimes/wasm_reflected/rust/Cargo.lock b/tests/runtimes/wasm_reflected/rust/Cargo.lock index 00025038db..d6b3aeef13 100644 --- a/tests/runtimes/wasm_reflected/rust/Cargo.lock +++ b/tests/runtimes/wasm_reflected/rust/Cargo.lock @@ -114,7 +114,7 @@ dependencies = [ [[package]] name = "rust" -version = "0.4.11-rc.0" +version = "0.5.0-rc.7" dependencies = [ "wit-bindgen", ] diff --git a/tests/runtimes/wasm_reflected/rust/Cargo.toml b/tests/runtimes/wasm_reflected/rust/Cargo.toml index 7519bad1cf..7723fac0c0 100644 --- a/tests/runtimes/wasm_reflected/rust/Cargo.toml +++ b/tests/runtimes/wasm_reflected/rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rust" -version = "0.5.0-rc.7" +version = "0.5.0-rc.9" edition = "2021" [lib] diff --git a/tests/runtimes/wasm_wire/rust/fdk.rs b/tests/runtimes/wasm_wire/rust/fdk.rs index 7b3e201923..7cd94e7529 100644 --- a/tests/runtimes/wasm_wire/rust/fdk.rs +++ b/tests/runtimes/wasm_wire/rust/fdk.rs @@ -109,7 +109,7 @@ impl Router { } pub fn init(&self, args: InitArgs) -> Result { - static MT_VERSION: &str = "0.5.0-rc.3"; + static MT_VERSION: &str = "0.5.0-rc.8"; if args.metatype_version != MT_VERSION { return Err(InitError::VersionMismatch(MT_VERSION.into())); } @@ -237,7 +237,6 @@ pub mod types { pub struct RecordCreationInput { } pub type EntityNameString = String; - pub type EntityAgeAddOutputOptional = Option; pub type ProfileLevelStringEnum = String; pub type ProfileAttributesStringEnum = String; pub type ProfileAttributesProfileAttributesStringEnumList = Vec; @@ -266,11 +265,10 @@ pub mod types { #[derive(Debug, serde::Serialize, serde::Deserialize)] pub struct Entity { pub name: EntityNameString, - pub age: EntityAgeAddOutputOptional, + pub age: RangeArgsAAddOutputOptional, pub profile: Profile, } pub type RecordCreationOutput = Vec; - pub type HundredRandomOutput = Vec; } pub mod stubs { use super::*; @@ -372,7 +370,7 @@ pub mod stubs { } } - fn handle(&self, input: RecordCreationInput, cx: Ctx) -> anyhow::Result; + fn handle(&self, input: RecordCreationInput, cx: Ctx) -> anyhow::Result; } pub fn op_to_trait_name(op_name: &str) -> &'static str { match op_name { diff --git a/tests/utils/bindings_test.ts b/tests/utils/bindings_test.ts index 42689515a3..627a90d09a 100644 --- a/tests/utils/bindings_test.ts +++ b/tests/utils/bindings_test.ts @@ -38,23 +38,27 @@ Deno.test("typegraphValidate", () => { { "type": "object", "title": "introspection", - "policies": [], "properties": { "__type": 1, - "__schema": 64, + "__schema": 26 }, "id": [], "required": [ "__type", - "__schema", + "__schema" ], + "policies": { + "__type": [ + 0 + ], + "__schema": [ + 0 + ] + } }, { "type": "function", "title": "func_79", - "policies": [ - 0, - ], "input": 2, "output": 4, "runtimeConfig": null, diff --git a/tools/consts.ts b/tools/consts.ts index ffa1c876aa..89255c518a 100644 --- a/tools/consts.ts +++ b/tools/consts.ts @@ -1,8 +1,8 @@ // Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. // SPDX-License-Identifier: MPL-2.0 -export const METATYPE_VERSION = "0.5.0-rc.7"; -export const PUBLISHED_VERSION = "0.5.0-rc.6"; +export const METATYPE_VERSION = "0.5.0-rc.9"; +export const PUBLISHED_VERSION = "0.5.0-rc.8"; export const GHJK_VERSION = "v0.2.1"; export const GHJK_ACTION_VERSION = "318209a9d215f70716a4ac89dbeb9653a2deb8bc"; export const RUST_VERSION = "1.82.0"; diff --git a/tools/deps.ts b/tools/deps.ts index 41b231d5ba..009774abfe 100644 --- a/tools/deps.ts +++ b/tools/deps.ts @@ -15,7 +15,7 @@ export { copyLock, sedLock, } from "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/std.ts"; -export { downloadFile } from "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/utils/mod.ts"; +export { downloadFile,objectHash } from "https://raw.githubusercontent.com/metatypedev/ghjk/v0.2.1/utils/mod.ts"; // export * from "../../ghjk/mod.ts"; // export * as ports from "../../ghjk/ports/mod.ts"; // export * as utils from "../../ghjk/utils/mod.ts"; @@ -60,3 +60,37 @@ export { Fuse }; import bytes from "https://deno.land/x/convert_bytes@v2.1.1/mod.ts"; export { bytes }; export * as ctrlc from "https://deno.land/x/ctrlc@0.2.1/mod.ts"; + + +export type OrRetOf = T extends () => infer Inner ? Inner : T; +// FIXME: move with `$.switchMap` once ghjk 0.3 lands +/** + * This tries to emulate a rust `match` statement but in a typesafe + * way. This is a WIP function. + * ```ts + * const pick: 2 = switchMap( + * "hello", + * { + * hey: () => 1, + * hello: () => 2, + * hi: 3, + * holla: 4, + * }, + * ); + * ``` + */ +export function switchMap< + K extends string | number | symbol, + All extends { + [Key in K]?: All[K]; + }, +> // D = undefined, +( + val: K, + branches: All, + // def?: (val: K) => D, +): K extends keyof All ? OrRetOf + : OrRetOf | undefined { + const branch = branches[val]; + return typeof branch == "function" ? branch() : branch; +} diff --git a/tools/jsr/jsr-gen.ts b/tools/jsr/jsr-gen.ts index 4c7969b279..be41b49c42 100644 --- a/tools/jsr/jsr-gen.ts +++ b/tools/jsr/jsr-gen.ts @@ -2,7 +2,7 @@ // SPDX-License-Identifier: MPL-2.0 import { METATYPE_VERSION, SDK_PACKAGE_NAME_TS } from "../consts.ts"; -import { $, existsSync, expandGlob, join } from "../deps.ts"; +import { $, expandGlob, join } from "../deps.ts"; import { copyFilesAt } from "../utils.ts"; import { removeExtension } from "../utils.ts"; import { denoSdkDir, fromRoot, srcDir } from "./common.ts"; @@ -20,12 +20,19 @@ copyFilesAt( ); // Prepare jsr export map -const jsrExports = {} as Record; +const jsrExports = { + ".": "./src/index.ts", + "./deps/_import.ts": "./src/deps/_import.ts", + "./deps/mod.ts": "./src/deps/mod.ts", +} as Record; for await ( const { path } of expandGlob("./**/*.*", { root: srcDir, includeDirs: false, globstar: true, + exclude: [ + "index.ts", + ], }) ) { if (/\.(ts|js|mjs)$/.test(path)) { @@ -35,9 +42,12 @@ for await ( continue; } const hintFile = `${removeExtension(path)}.d.ts`; - const sourcePath = existsSync(hintFile) ? hintFile : path; + const sourcePath = await $.path(hintFile).exists() ? hintFile : path; const canonRelPath = sourcePath.replace(denoSdkDir, "."); - const usrRelPath = sourcePath.replace(srcDir, "."); + const relPath = sourcePath.replace(srcDir, "."); + const usrRelPath = path.endsWith(".d.ts") + ? relPath + : removeExtension(relPath); jsrExports[usrRelPath] = canonRelPath; } } @@ -53,6 +63,13 @@ Deno.writeTextFileSync( publish: { exclude: ["!src/gen", "!LICENSE.md", "!README.md"], }, + lint: { + rules: { + exclude: [ + "no-external-import", + ], + }, + }, exports: jsrExports, }, null, diff --git a/tools/list-duplicates.ts b/tools/list-duplicates.ts new file mode 100755 index 0000000000..7c2bbc892c --- /dev/null +++ b/tools/list-duplicates.ts @@ -0,0 +1,108 @@ +#!/bin/env -S ghjk deno run -A + +// Copyright Metatype OÜ, licensed under the Mozilla Public License Version 2.0. +// SPDX-License-Identifier: MPL-2.0 + +/** + * Usage: + * deno run -A tools/list-duplicates.ts [] + * + * Options: + * --root The index of the root type + * Default: 0 + */ + +import { cyan, green, objectHash, parseArgs, red } from "./deps.ts"; +// FIXME: import from @metatype/typegate +import type { TypeGraphDS } from "../src/typegate/src/typegraph/mod.ts"; +import { visitType } from "../src/typegate/src/typegraph/visitor.ts"; +import { projectDir } from "./utils.ts"; +import { TypeNode } from "../src/typegate/src/typegraph/type_node.ts"; + +export function listDuplicates(tg: TypeGraphDS, rootIdx = 0) { + const bins = new Map(); + const duplicateNameBins = new Map(); + visitType(tg, rootIdx, ({ type, idx }) => { + const { title, description: _description, ...structure } = type; + // deno-lint-ignore no-explicit-any + const hash = objectHash(structure as any); + bins.set(hash, [...bins.get(hash) ?? [], [idx, type] as const]); + duplicateNameBins.set(title, [ + ...duplicateNameBins.get(name) ?? [], + [idx, type] as const, + ]); + return true; + }, { allowCircular: false }); + for (const [hash, bin] of bins.entries()) { + if (bin.length > 1) { + console.log(`${cyan(hash)}`); + for (const [idx, type] of bin) { + const injection = "injection" in type + // deno-lint-ignore no-explicit-any + ? ` (injection ${(type.injection as any).source})` + : ""; + console.log( + ` ${green(idx.toString())} ${type.type}:${type.title}${injection}`, + ); + } + } + } + for (const [hash, bin] of duplicateNameBins.entries()) { + if (bin.length > 1) { + console.log(`${red(hash)}`); + for (const [idx, type] of bin) { + const injection = "injection" in type + // deno-lint-ignore no-explicit-any + ? ` (injection ${(type.injection as any).source})` + : ""; + console.log( + ` ${green(idx.toString())} ${type.type}:${type.title}${injection}`, + ); + } + } + } +} + +const args = parseArgs(Deno.args, { + string: ["root"], +}); + +const rootIdx = argToInt(args.root, 0); + +const files = args._ as string[]; +if (files.length === 0) { + throw new Error("Path to typegraph definition module is required."); +} +if (files.length > 1) { + throw new Error("Cannot accept more than one file"); +} +const cmd = [ + "cargo", + "run", + "--manifest-path", + `${projectDir}/Cargo.toml`, + "-p", + "meta-cli", + "--", + "serialize", + "-f", + files[0], +]; +const { stdout } = await new Deno.Command(cmd[0], { + args: cmd.slice(1), + stdout: "piped", + stderr: "inherit", +}).output(); + +const tgs: TypeGraphDS[] = JSON.parse( + new TextDecoder().decode(stdout), +); + +for (const tg of tgs) { + listDuplicates(tg, rootIdx); +} + +function argToInt(arg: string | undefined, defaultValue: number): number { + const parsed = parseInt(arg ?? `${defaultValue}`); + return isNaN(parsed) ? defaultValue : parsed; +} diff --git a/tools/tasks/lint.ts b/tools/tasks/lint.ts index bebb68def0..04f43f9e7e 100644 --- a/tools/tasks/lint.ts +++ b/tools/tasks/lint.ts @@ -47,6 +47,7 @@ export default { .flat() .map((ref) => ref.path.toString()); await $`bash -c "deno check ${files}"`; + await $`bash -c "deno lint"`; }, }, } satisfies Record; diff --git a/tools/tasks/lock.ts b/tools/tasks/lock.ts index c18325210c..b6803b7420 100644 --- a/tools/tasks/lock.ts +++ b/tools/tasks/lock.ts @@ -15,6 +15,7 @@ export default { const ignores = [ "tools/tasks-lock.ts", + ".metatype", ...(await $.workingDir.resolve(".gitignore").readText()) .split("\n") .map((l) => l.trim()) diff --git a/tools/tasks/test.ts b/tools/tasks/test.ts index c81b5e3d56..f083a16a05 100644 --- a/tools/tasks/test.ts +++ b/tools/tasks/test.ts @@ -25,6 +25,9 @@ export default { "test-rust": { inherit: ["_rust", "_ecma", "_python"], async fn($) { + // typegraph_core tests need to be run separately + // without --tests, the --doc is causing a link error "syntax error in VERSION script" + await $`cargo test --locked --package typegraph_core --tests`; await $`cargo test --locked --package meta-cli`; await $`cargo test --locked --workspace --exclude meta-cli @@ -33,9 +36,6 @@ export default { --exclude typegraph_core --exclude metagen_fdk_rust_static --exclude client_rs_static`; - // typegraph_core tests need to be run separately - // without --tests, the --doc is causing a link error "syntax error in VERSION script" - await $`cargo test --locked --package typegraph_core --tests`; }, }, } satisfies Record; diff --git a/tools/tree-view-web.ts b/tools/tree-view-web.ts index 26b2a2b5fe..44eecec1b5 100755 --- a/tools/tree-view-web.ts +++ b/tools/tree-view-web.ts @@ -5,7 +5,7 @@ /** * Usage: - * deno run -A dev/tree-view.ts [] + * deno run -A tools/tree-view-web.ts [] */ import { TypeGraphDS } from "../src/typegate/src/typegraph/mod.ts"; diff --git a/tools/tree-view.ts b/tools/tree-view.ts index 45335d4fb2..39a88b3b00 100755 --- a/tools/tree-view.ts +++ b/tools/tree-view.ts @@ -5,7 +5,7 @@ /** * Usage: - * deno run -A dev/tree-view.ts [] + * deno run -A tools/tree-view.ts [] * * Options: * --depth The depth of the tree diff --git a/tools/utils.ts b/tools/utils.ts index 96558d1f19..ae8163e002 100644 --- a/tools/utils.ts +++ b/tools/utils.ts @@ -113,8 +113,9 @@ export function findCursors( /** Remove extension, will treat `.d.ts` as a whole for example */ export function removeExtension(path: string) { const known = /(\.d\.m?ts)$/; - return known.test(path.trim()) - ? path.replace(path, "") + const match = path.trim().match(known); + return match + ? path.replace(match[0], "") : path.substring(0, path.lastIndexOf(".")); }