diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 635890b2a715..ee1b1000e0fb 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -13,9 +13,8 @@ body: The **most important** thing you can do is include a minimal reproduction of the issue. Easy ways to create a reproduction: - - Create a CodeSandbox ([here are templates](https://codesandbox.io/examples/package/prisma)) - A **GitHub repository** we can clone - - As a last resort, detailed step-by-step instructions (this makes debugging harder for us) + - Detailed step-by-step instructions We receive a _lot_ of GitHub issues. **Bug reports without a reproduction might not be investigated.** @@ -45,13 +44,11 @@ body: attributes: label: Reproduction description: | - A **minimal reproduction** is required. Provide a CodeSandbox link, GitHub repository, or detailed steps. - - **CodeSandbox template:** [https://codesandbox.io/examples/package/prisma](https://codesandbox.io/examples/package/prisma) + A **minimal reproduction** is required. Provide a GitHub repository, or detailed steps. **If you cannot provide a reproduction, explain why.** value: | - + validations: required: true diff --git a/.github/actions/create-git-tag/action.yml b/.github/actions/create-git-tag/action.yml index a160ebc66aab..577268152a71 100644 --- a/.github/actions/create-git-tag/action.yml +++ b/.github/actions/create-git-tag/action.yml @@ -20,7 +20,7 @@ runs: using: composite steps: - name: Create tag - uses: actions/github-script@v7 + uses: actions/github-script@v8 env: INPUT_REPOSITORY: ${{ inputs.repository }} TAG_NAME: ${{ inputs.tag-name }} diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index 3edf46dde507..8bde6b2b357e 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -19,9 +19,9 @@ inputs: runs: using: composite steps: - - uses: pnpm/action-setup@v4.0.0 + - uses: pnpm/action-setup@v4.2.0 - name: Use Node.js ${{ inputs.node-version }} - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: ${{ inputs.node-version }} cache: 'pnpm' @@ -38,7 +38,7 @@ runs: - name: Download custom engines id: custom-engine - uses: actions/cache/restore@v4 + uses: actions/cache/restore@v5 with: key: ${{ runner.os }}-engine-${{ inputs.engine-hash }}-${{ github.event.number }} path: | diff --git a/.github/workflows/auto-close-github-discussions.yml b/.github/workflows/auto-close-github-discussions.yml index 43692ca71f30..5b3abacf3bf4 100644 --- a/.github/workflows/auto-close-github-discussions.yml +++ b/.github/workflows/auto-close-github-discussions.yml @@ -15,7 +15,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup PNPM uses: pnpm/action-setup@v4 @@ -23,7 +23,7 @@ jobs: run_install: false - name: Setup Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: '20.19.0' cache: 'pnpm' diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index f22b398aa7b1..5aa1d7405dea 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -53,7 +53,7 @@ jobs: # This avoids notifications to be sent to `alert-comment-cc-users`, see below if: github.repository == 'prisma/prisma' steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install & build uses: ./.github/actions/setup @@ -81,8 +81,9 @@ jobs: alert-comment-cc-users: '@millsp,@aqrln,@SevInf,@jkomyno' - name: Run benchmarks for Codspeed - uses: CodSpeedHQ/action@v3 + uses: CodSpeedHQ/action@v4 with: + mode: simulation run: pnpm run bench-stdout-only token: ${{ secrets.CODSPEED_TOKEN }} env: diff --git a/.github/workflows/build-engine-branch.yml b/.github/workflows/build-engine-branch.yml index 5ffef0259cbf..3fa5b0d06a9e 100644 --- a/.github/workflows/build-engine-branch.yml +++ b/.github/workflows/build-engine-branch.yml @@ -50,7 +50,7 @@ jobs: outputs: engineHash: ${{ steps.engine-hash.outputs.engineHash }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: repository: prisma/prisma-engines ref: ${{ needs.parseCommand.outputs.branchName }} @@ -60,7 +60,7 @@ jobs: shell: bash run: echo "engineHash=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT" - - uses: actions/cache@v4 + - uses: actions/cache@v5 name: Artifacts cache id: artifacts-cache with: @@ -75,7 +75,7 @@ jobs: - uses: dtolnay/rust-toolchain@stable if: steps.artifacts-cache.outputs.cache-hit != 'true' - - uses: actions/cache@v4 + - uses: actions/cache@v5 name: Dependencies cache if: steps.artifacts-cache.outputs.cache-hit != 'true' with: @@ -120,7 +120,7 @@ jobs: fi - name: Install Binaryen (includes wasm-opt) - uses: jaxxstorm/action-install-gh-release@v1.14.0 + uses: jaxxstorm/action-install-gh-release@v2 with: repo: WebAssembly/binaryen tag: version_122 diff --git a/.github/workflows/bundle-size.yml b/.github/workflows/bundle-size.yml index c00b9a486d5a..e2640329876d 100644 --- a/.github/workflows/bundle-size.yml +++ b/.github/workflows/bundle-size.yml @@ -27,7 +27,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install & build uses: ./.github/actions/setup diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 37135f9d5a4f..b59544879819 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -31,7 +31,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/lint-workflow-files.yml b/.github/workflows/lint-workflow-files.yml index 641af0f4b347..fc33dbbd75c3 100644 --- a/.github/workflows/lint-workflow-files.yml +++ b/.github/workflows/lint-workflow-files.yml @@ -8,7 +8,7 @@ jobs: actionlint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 # see https://github.com/rhysd/actionlint/blob/main/docs/usage.md - name: Check workflow files diff --git a/.github/workflows/manage-dist-tag.yml b/.github/workflows/manage-dist-tag.yml index b47fa8e4020e..78ae4cc2317a 100644 --- a/.github/workflows/manage-dist-tag.yml +++ b/.github/workflows/manage-dist-tag.yml @@ -31,7 +31,7 @@ jobs: run: | echo "$THE_INPUT" - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Check if version is valid if: ${{ github.event.inputs.tagAction == 'add' }} diff --git a/.github/workflows/pr-code-security.yml b/.github/workflows/pr-code-security.yml new file mode 100644 index 000000000000..6b8fcbfac366 --- /dev/null +++ b/.github/workflows/pr-code-security.yml @@ -0,0 +1,14 @@ +name: PR Code Security + +on: + pull_request: + branches: [main] + +jobs: + secret-detection: + name: Secret Detection + uses: prisma/.github/.github/workflows/secret_detection.yml@main + secrets: inherit + code-scanning: + name: Code Scanning + uses: prisma/.github/.github/workflows/code_scanning.yml@main diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9157e6d53c91..66afc75093b6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -88,7 +88,7 @@ jobs: run: | echo "$THE_INPUT" - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install & build uses: ./.github/actions/setup diff --git a/.github/workflows/test-template.yml b/.github/workflows/test-template.yml index 80a89f2a4918..68de3fa3aa3b 100644 --- a/.github/workflows/test-template.yml +++ b/.github/workflows/test-template.yml @@ -64,7 +64,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install & build uses: ./.github/actions/setup @@ -117,7 +117,7 @@ jobs: JEST_JUNIT_SUITE_NAME: 'client/functional' JEST_JUNIT_UNIQUE_OUTPUT_NAME: true steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Start Docker Compose Services uses: nick-fields/retry@v3 @@ -169,7 +169,7 @@ jobs: node: ['20.19.0', '22.12.0', '24'] flavor: ['js_pg'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Start Docker Compose Services uses: nick-fields/retry@v3 @@ -237,7 +237,7 @@ jobs: node: ['20.19.0'] previewFeatures: ['', 'relationJoins'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Start Docker Compose Services uses: nick-fields/retry@v3 @@ -304,7 +304,7 @@ jobs: node: ['20.19.0'] previewFeatures: ['', 'relationJoins'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Start Docker Compose Services uses: nick-fields/retry@v3 @@ -359,7 +359,7 @@ jobs: shard: ['1/6', '2/6', '3/6', '4/6', '5/6', '6/6'] node: ['20.19.0'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Start Docker Compose Services uses: nick-fields/retry@v3 @@ -412,7 +412,7 @@ jobs: queryEngine: [client] node: ['20.19.0', '22.12.0', '24'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Start Docker Compose Services uses: nick-fields/retry@v3 @@ -432,7 +432,7 @@ jobs: - run: pnpm run test:memory working-directory: packages/client - - uses: actions/github-script@v7 + - uses: actions/github-script@v8 if: ${{ failure() && github.event_name == 'pull_request' }} id: upload-report env: @@ -457,7 +457,7 @@ jobs: core.setOutput('url', url); } - name: Find report comment - uses: peter-evans/find-comment@v3 + uses: peter-evans/find-comment@v4 id: fc if: ${{ always() && github.event_name == 'pull_request' }} with: @@ -466,7 +466,7 @@ jobs: body-includes: 'Client memory tests, node ${{ matrix.node}}, ${{ matrix.queryEngine }}:' - name: Create or update remote comment (failure) - uses: peter-evans/create-or-update-comment@v4 + uses: peter-evans/create-or-update-comment@v5 if: ${{ failure() && steps.upload-report.outputs.url }} with: comment-id: ${{ steps.fc.outputs.comment-id }} @@ -477,7 +477,7 @@ jobs: edit-mode: replace - name: Create or update remote comment (success) - uses: peter-evans/create-or-update-comment@v4 + uses: peter-evans/create-or-update-comment@v5 if: ${{ success() && steps.fc.outputs.comment-id != '' }} with: comment-id: ${{ steps.fc.outputs.comment-id }} @@ -506,7 +506,7 @@ jobs: # ./packages/client/tests/e2e/_utils/standard.dockerfile node: ['20.19.0'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 # Not currently needed, but we might need it in the future - name: Start Docker Compose Services @@ -551,7 +551,7 @@ jobs: JEST_JUNIT_SUITE_NAME: 'client/functional' JEST_JUNIT_UNIQUE_OUTPUT_NAME: true steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set RELATION_MODE custom test env var run: | @@ -621,7 +621,7 @@ jobs: matrix: node: ['20.19.0'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install & build uses: ./.github/actions/setup @@ -649,7 +649,7 @@ jobs: matrix: node: ['20.19.0', '22.12.0', '24'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install & build uses: ./.github/actions/setup @@ -694,7 +694,7 @@ jobs: matrix: node: ['20.19.0'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install & build uses: ./.github/actions/setup @@ -720,7 +720,7 @@ jobs: matrix: node: ['20.19.0'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Start Docker Compose Services uses: nick-fields/retry@v3 @@ -756,7 +756,7 @@ jobs: os: [ubuntu-latest] node: ['20.19.0', '22.12.0', '24'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Start Docker Compose Services uses: nick-fields/retry@v3 @@ -794,7 +794,7 @@ jobs: # driverAdapter: ['', 'libsql'] # TODO: once we have all tests pass with driver adapters actually enable them on CI and add further adapters driverAdapter: [''] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Start Docker Compose Services uses: nick-fields/retry@v3 @@ -832,7 +832,7 @@ jobs: os: [ubuntu-latest] node: ['20.19.0', '22.12.0', '24'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Start Docker Compose Services uses: nick-fields/retry@v3 @@ -873,7 +873,7 @@ jobs: - os: macos-latest version: 18 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install & build uses: ./.github/actions/setup @@ -899,7 +899,7 @@ jobs: os: [ubuntu-latest] node: ['20.19.0', '22.12.0', '24'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install & build uses: ./.github/actions/setup @@ -982,7 +982,7 @@ jobs: os: [ubuntu-latest] node: ['20.19.0', '24'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install & build uses: ./.github/actions/setup @@ -1033,7 +1033,7 @@ jobs: os: [ubuntu-latest] node: ['24'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install & build uses: ./.github/actions/setup @@ -1057,7 +1057,7 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Install & build uses: ./.github/actions/setup @@ -1096,7 +1096,7 @@ jobs: contains(inputs.jobsToRun, '-all-') || contains(inputs.jobsToRun, '-client-') steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Prerequisites shell: bash @@ -1159,7 +1159,7 @@ jobs: os: [macos-14, windows-latest] node: ['20.19.0'] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Prerequisites shell: bash diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c6f65d36c59b..549db25ac8ed 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -45,7 +45,7 @@ jobs: outputs: jobs: ${{ steps.detect.outputs.jobs }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - id: files uses: Ana06/get-changed-files@v2.3.0 # it's a fork of jitterbit/get-changed-files@v1 which works better with pull requests @@ -65,7 +65,7 @@ jobs: echo "Pull Request Body contains /integration: ${{ contains(env.PR_BODY, '/integration') }}" - name: Find "ci test all" comment - uses: peter-evans/find-comment@v3 + uses: peter-evans/find-comment@v4 id: findTestAllComment if: ${{ github.event_name == 'pull_request' }} with: @@ -107,14 +107,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Find past custom engine comment - uses: peter-evans/find-comment@v3 + uses: peter-evans/find-comment@v4 id: findEngineComment if: ${{ github.event_name == 'pull_request' }} with: issue-number: ${{ github.event.pull_request.number }} body-includes: '' - name: Create or update comment (block) - uses: peter-evans/create-or-update-comment@v4 + uses: peter-evans/create-or-update-comment@v5 if: ${{ needs.build_custom_engine.outputs.engineHash != '' }} with: comment-id: ${{ steps.findEngineComment.outputs.comment-id }} @@ -131,7 +131,7 @@ jobs: edit-mode: replace - name: Create or update comment (clear) - uses: peter-evans/create-or-update-comment@v4 + uses: peter-evans/create-or-update-comment@v5 if: ${{ steps.findEngineComment.outputs.comment-id != '' && needs.build_custom_engine.outputs.engineHash == '' }} with: comment-id: ${{ steps.findEngineComment.outputs.comment-id }} diff --git a/.github/workflows/update-engines-version.yml b/.github/workflows/update-engines-version.yml index b912407bfa88..f2b116587995 100644 --- a/.github/workflows/update-engines-version.yml +++ b/.github/workflows/update-engines-version.yml @@ -27,11 +27,11 @@ jobs: run: | echo "$THE_INPUT" - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: pnpm/action-setup@v4.0.0 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v6 with: cache: 'pnpm' node-version: '20.19.0' @@ -99,7 +99,7 @@ jobs: - name: Extract Engine Commit hash from version id: extract-engine-commit-hash - uses: actions/github-script@v7 + uses: actions/github-script@v8 with: script: | const hash = context.payload.inputs.version.split('.').pop() @@ -112,7 +112,7 @@ jobs: - name: Create Pull Request id: cpr if: github.event.inputs.npmDistTag == 'latest' - uses: peter-evans/create-pull-request@v6 + uses: peter-evans/create-pull-request@v8 with: token: ${{ secrets.BOT_TOKEN }} commit-message: 'chore(deps): update engines to ${{ github.event.inputs.version }}' @@ -160,7 +160,7 @@ jobs: - name: Create Pull Request for Integration Engine id: cpr-integration if: github.event.inputs.npmDistTag == 'integration' - uses: peter-evans/create-pull-request@v6 + uses: peter-evans/create-pull-request@v8 with: token: ${{ secrets.BOT_TOKEN }} commit-message: 'chore(deps): update engines to ${{ github.event.inputs.version }}' @@ -194,7 +194,7 @@ jobs: # - name: Extract patch branch name from version id: extract-patch-branch-name - uses: actions/github-script@v7 + uses: actions/github-script@v8 with: script: | const parts = context.payload.inputs.version.split('.') @@ -204,7 +204,7 @@ jobs: - name: Create Pull Request for Patch Engine id: cpr-patch if: github.event.inputs.npmDistTag == 'patch' - uses: peter-evans/create-pull-request@v6 + uses: peter-evans/create-pull-request@v8 with: token: ${{ secrets.BOT_TOKEN }} commit-message: 'chore(deps): update engines to ${{ github.event.inputs.version }}' diff --git a/.github/workflows/update-studio-version.yml b/.github/workflows/update-studio-version.yml index df27437741e9..8ff8cfbb376b 100644 --- a/.github/workflows/update-studio-version.yml +++ b/.github/workflows/update-studio-version.yml @@ -13,11 +13,11 @@ jobs: name: 'Check and update Studio to ${{ github.event.inputs.version }}' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: pnpm/action-setup@v4.0.0 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v6 with: cache: 'pnpm' node-version: '20.19.0' @@ -38,7 +38,7 @@ jobs: - name: Create Pull Request id: cpr - uses: peter-evans/create-pull-request@v6 + uses: peter-evans/create-pull-request@v8 with: token: ${{ secrets.BOT_TOKEN }} commit-message: 'chore(deps): update studio to ${{ github.event.inputs.version }}' diff --git a/AGENTS.md b/AGENTS.md index a1840014d059..f881bbc8fcb4 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,4 +1,4 @@ -## Prisma Repository – Agent Field Notes +# Prisma Repository – Agent Field Notes > **Meta note**: This is the primary agent knowledge base file. `CLAUDE.md` and `GEMINI.md` are symlinks to this file—always edit `AGENTS.md` directly. When learning something new about the codebase that would help with future tasks, update this file immediately. @@ -111,6 +111,7 @@ - _How does this code work?_ — these comments should be exceedingly rare and may indicate poorly written or confusing code. Prefer writing code in a way that makes such comments redundant, unless required for performance or other reasons, or when the complexity comes from outside systems or packages (in which case it's more of a "why" comment than a "how" comment anyway). For well known algorithms, prefer their names and references to papers, books or Wikipedia articles over long explanations. - Do write documentation comments, and mainly do so for exported items (although intra-module documentation may sometimes be useful as well). - The correct and official abbreviation of WebAssembly is "Wasm", not "WASM". There are instances of "WASM" in the codebase, but they are wrong and you should not repeat them. Fix the capitalization whenever you incidentally touch the corresponding lines or surrounding code for other reasons. + - Prefer native JavaScript private properties and methods (`#field`) over the `private` keyword in TypeScript. - **Workflow reminders**: - Respect existing structure: modifications often require updating both command implementation and tests/fixtures. @@ -129,3 +130,29 @@ - **Query execution code is written in TypeScript in Prisma** - PSL parser and query compiler/planner is still written in Rust and compiled to WebAssembly. There are no native binaries or library addons in Prisma Client. - Schema engine for Prisma Migrate still exists and is still a native binary. + +## Debugging and making changes to Rust/WebAssembly code + +When you need to check the code or make some changes in Rust codebase, assume the repository is checked out in the `prisma-engines` directory above the root of this repo. Determine the absolute path to the current project on the filesystem (e.g. `/home/user/work/prisma`) and infer the directory of the `prisma-engines` repo (e.g. `/home/user/work/prisma-engines`, let's call it `$PRISMA_ENGINES_ROOT`). + +After you make some changes there, use these commands in the prisma-engines repo to build the Wasm modules: + +```sh +make build-schema-wasm +make build-qc-wasm +``` + +Then, back in `prisma` repo: + +```sh +pnpm upgrade -r @prisma/prisma-schema-wasm@file:$PRISMA_ENGINES_ROOT/target/prisma-schema-wasm +pnpm upgrade -r @prisma/query-compiler-wasm@file:$PRISMA_ENGINES_ROOT/query-compiler/query-compiler-wasm/pkg +pnpm build +``` + +You may only need to build and update one of these modules if your changes are isolated in scope: + +1. Build only `prisma-schema-wasm` if your changes are isolated to schema and DMMF, and you are only going to run the CLI and generator tests, not Client. +2. Build only `query-compiler-wasm` if your changes are related to query planning and execution but do not touch the schema or DMMF in any way. + +When in doubt, build both to avoid unexpected behavior. Time and cost of compilation is always less than of debugging. diff --git a/README.md b/README.md index 8f84d64c0e39..08e6f2c4edac 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Discord

- Quickstart + Quickstart   •   Website   •   @@ -37,7 +37,7 @@ Prisma ORM is a **next-generation ORM** that consists of these tools: Prisma Client can be used in _any_ Node.js or TypeScript backend application (including serverless applications and microservices). This can be a [REST API](https://www.prisma.io/docs/concepts/overview/prisma-in-your-stack/rest), a [GraphQL API](https://www.prisma.io/docs/concepts/overview/prisma-in-your-stack/graphql), a gRPC API, or anything else that needs a database. -**If you need a database to use with Prisma ORM, check out [Prisma Postgres](https://www.prisma.io/docs/getting-started/quickstart-prismaPostgres?utm_source=github&utm_medium=prisma-readme) or if you are looking for our MCP Server, head [here](https://github.com/prisma/mcp).** +**If you need a database to use with Prisma ORM, check out [Prisma Postgres](https://www.prisma.io/docs/getting-started/prisma-orm/quickstart/prisma-postgres?utm_source=github&utm_medium=prisma-readme) or if you are looking for our MCP Server, head [here](https://github.com/prisma/mcp).** ## Getting started @@ -45,14 +45,14 @@ Prisma Client can be used in _any_ Node.js or TypeScript backend application (in The fastest way to get started with Prisma is by following the quickstart guides. You can choose either of two databases: -- [Prisma Postgres](https://www.prisma.io/docs/getting-started/quickstart-prismaPostgres) -- [SQLite](https://www.prisma.io/docs/getting-started/quickstart-sqlite) +- [Prisma Postgres](https://www.prisma.io/docs/getting-started/prisma-orm/quickstart/prisma-postgres) +- [SQLite](https://www.prisma.io/docs/getting-started/prisma-orm/quickstart/sqlite) ### Bring your own database If you already have your own database, you can follow these guides: -- [Add Prisma to an existing project](https://www.prisma.io/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases-typescript-postgresql) +- [Add Prisma to an existing project](https://www.prisma.io/docs/getting-started/prisma-orm/add-to-existing-project/postgresql) - [Set up a new project with Prisma from scratch](https://www.prisma.io/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-postgresql) ## How Prisma ORM works diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 5d93b0ad8d99..000000000000 --- a/SECURITY.md +++ /dev/null @@ -1,3 +0,0 @@ -# Security Policy - -If you have a security issue to report, please contact us at [security@prisma.io](mailto:security@prisma.io). diff --git a/package.json b/package.json index 3fa63f191243..a8a388314d2c 100644 --- a/package.json +++ b/package.json @@ -162,9 +162,10 @@ "pnpm": { "overrides": { "form-data": ">=4.0.4", - "hono": ">=4.10.3", + "hono": ">=4.11.7", "jws": ">=4.0.1", - "tar-fs": ">=2.1.4" + "tar-fs": ">=2.1.4", + "lodash": ">=4.17.23" } } } diff --git a/packages/adapter-libsql/package.json b/packages/adapter-libsql/package.json index 7d06001401b5..4051c952841d 100644 --- a/packages/adapter-libsql/package.json +++ b/packages/adapter-libsql/package.json @@ -46,7 +46,7 @@ "license": "Apache-2.0", "sideEffects": false, "dependencies": { - "@libsql/client": "^0.8.1", + "@libsql/client": "^0.17.0", "@prisma/driver-adapter-utils": "workspace:*", "async-mutex": "0.5.0" } diff --git a/packages/adapter-libsql/src/libsql.test.ts b/packages/adapter-libsql/src/libsql.test.ts index 7042b0b4c59b..182d06bd7f73 100644 --- a/packages/adapter-libsql/src/libsql.test.ts +++ b/packages/adapter-libsql/src/libsql.test.ts @@ -231,6 +231,8 @@ class PrismaLibSqlAdapterFactoryMock extends PrismaLibSqlAdapterFactoryBase { return { ...this.connection, transaction: () => Promise.resolve(this.transaction), + migrate: vi.fn().mockResolvedValue([]), + reconnect: vi.fn(), } } } diff --git a/packages/adapter-mariadb/src/conversion.test.ts b/packages/adapter-mariadb/src/conversion.test.ts new file mode 100644 index 000000000000..2415413d2a93 --- /dev/null +++ b/packages/adapter-mariadb/src/conversion.test.ts @@ -0,0 +1,38 @@ +import * as mariadb from 'mariadb' +import { describe, expect, it } from 'vitest' + +import { mapRow } from './conversion' + +describe('mapRow', () => { + it('maps datetime columns from object rows to ISO strings', () => { + const row = { createdAt: '2024-01-02 03:04:05.000' } + + const result = mapRow(row, [{ type: 'DATETIME' } as unknown as mariadb.FieldInfo]) + + expect(result).toEqual(['2024-01-02T03:04:05+00:00']) + }) + + it('maps bigint columns from object rows to strings', () => { + const row = { id: 123n } + + const result = mapRow(row, [{ type: 'BIGINT' } as unknown as mariadb.FieldInfo]) + + expect(result).toEqual(['123']) + }) + + it('preserves property order for mixed object rows', () => { + const row = { + createdAt: '2024-01-02 03:04:05.123', + id: 5n, + note: null, + } + + const result = mapRow(row, [ + { type: 'DATETIME' } as unknown as mariadb.FieldInfo, + { type: 'BIGINT' } as unknown as mariadb.FieldInfo, + { type: 'VARCHAR' } as unknown as mariadb.FieldInfo, + ]) + + expect(result).toEqual(['2024-01-02T03:04:05.123+00:00', '5', null]) + }) +}) diff --git a/packages/adapter-mariadb/src/conversion.ts b/packages/adapter-mariadb/src/conversion.ts index 8c082d65cef7..8b7daca414cb 100644 --- a/packages/adapter-mariadb/src/conversion.ts +++ b/packages/adapter-mariadb/src/conversion.ts @@ -140,9 +140,11 @@ export function mapArg(arg: A | Date, argType: ArgType): null | BigInt | stri return arg } -export function mapRow(row: A[], fields?: mariadb.FieldInfo[]): (A | ResultValue)[] { - return row.map((value, i) => { - const type = fields?.[i].type as unknown as MariaDbColumnType +export function mapRow(row: A[] | Record, fields?: mariadb.FieldInfo[]): (A | ResultValue)[] { + const values = Array.isArray(row) ? row : Object.values(row) + + return values.map((value, i) => { + const type = fields?.[i]?.type as unknown as MariaDbColumnType if (value === null) { return null diff --git a/packages/adapter-mssql/src/connection-string.test.ts b/packages/adapter-mssql/src/connection-string.test.ts index 0e3952bfb1aa..ac940c262d9d 100644 --- a/packages/adapter-mssql/src/connection-string.test.ts +++ b/packages/adapter-mssql/src/connection-string.test.ts @@ -1,12 +1,12 @@ import { describe, expect, it } from 'vitest' -import { extractSchemaFromConnectionString, parseConnectionString } from './connection-string' +import { parseConnectionString } from './connection-string' describe('parseConnectionString', () => { describe('basic connection parameters', () => { it('should parse a basic connection string correctly', () => { const connectionString = 'sqlserver://localhost:1433;database=testdb;user=sa;password=mypassword;encrypt=true' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.server).toBe('localhost') expect(config.port).toBe(1433) @@ -18,7 +18,7 @@ describe('parseConnectionString', () => { it('should parse connection string without port', () => { const connectionString = 'sqlserver://localhost;database=testdb;user=sa;password=mypassword' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.server).toBe('localhost') expect(config.port).toBeUndefined() @@ -36,7 +36,7 @@ describe('parseConnectionString', () => { ] testCases.forEach((connectionString) => { - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.user).toBe('sa') }) }) @@ -48,7 +48,7 @@ describe('parseConnectionString', () => { ] testCases.forEach((connectionString) => { - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.password).toBe('mypassword') }) }) @@ -60,7 +60,7 @@ describe('parseConnectionString', () => { ] testCases.forEach((connectionString) => { - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.database).toBe('testdb') }) }) @@ -74,7 +74,7 @@ describe('parseConnectionString', () => { ] testCases.forEach(({ input, expected }) => { - const config = parseConnectionString(input) + const { config } = parseConnectionString(input) expect(config.options?.encrypt).toBe(expected) }) }) @@ -86,14 +86,14 @@ describe('parseConnectionString', () => { ] testCases.forEach(({ input, expected }) => { - const config = parseConnectionString(input) + const { config } = parseConnectionString(input) expect(config.options?.trustServerCertificate).toBe(expected) }) }) it('should handle both encryption parameters together', () => { const connectionString = 'sqlserver://localhost;database=testdb;encrypt=true;trustServerCertificate=true' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.options?.encrypt).toBe(true) expect(config.options?.trustServerCertificate).toBe(true) @@ -104,21 +104,21 @@ describe('parseConnectionString', () => { { input: 'sqlserver://localhost;database=testdb;multiSubnetFailover=true', expected: true }, { input: 'sqlserver://localhost;database=testdb;multiSubnetFailover=false', expected: false }, ])('should parse multiSubnetFailover parameter correctly for %o', ({ input, expected }) => { - const config = parseConnectionString(input) + const { config } = parseConnectionString(input) expect(config.options?.multiSubnetFailover).toBe(expected) }) describe('connection pool parameters', () => { it('should parse connectionLimit parameter correctly', () => { const connectionString = 'sqlserver://localhost;database=testdb;connectionLimit=10' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.pool?.max).toBe(10) }) it('should parse poolTimeout parameter correctly', () => { const connectionString = 'sqlserver://localhost;database=testdb;poolTimeout=15' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.pool?.acquireTimeoutMillis).toBe(15000) // 15 seconds in milliseconds }) @@ -127,35 +127,35 @@ describe('parseConnectionString', () => { describe('timeout parameters', () => { it('should parse connectTimeout parameter correctly', () => { const connectionString = 'sqlserver://localhost;database=testdb;connectTimeout=30' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.connectionTimeout).toBe(30) }) it('should parse connectionTimeout parameter correctly', () => { const connectionString = 'sqlserver://localhost;database=testdb;connectionTimeout=30' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.connectionTimeout).toBe(30) }) it('should parse loginTimeout parameter correctly', () => { const connectionString = 'sqlserver://localhost;database=testdb;loginTimeout=45' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.connectionTimeout).toBe(45) }) it('should parse socketTimeout parameter correctly', () => { const connectionString = 'sqlserver://localhost;database=testdb;socketTimeout=60' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.requestTimeout).toBe(60) }) it('should handle multiple timeout parameters', () => { const connectionString = 'sqlserver://localhost;database=testdb;connectTimeout=30;socketTimeout=60;poolTimeout=10' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.connectionTimeout).toBe(30) expect(config.requestTimeout).toBe(60) @@ -166,28 +166,142 @@ describe('parseConnectionString', () => { describe('application name parameter', () => { it('should parse applicationName parameter correctly', () => { const connectionString = 'sqlserver://localhost;database=testdb;applicationName=MyApp' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.options?.appName).toBe('MyApp') }) it('should parse application name parameter correctly', () => { const connectionString = 'sqlserver://localhost;database=testdb;application name=MyApp' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.options?.appName).toBe('MyApp') }) }) describe('schema parameter', () => { - it('should ignore schema parameter', () => { + it('should ignore schema parameter in the config', () => { const connectionString = 'sqlserver://localhost;database=testdb;schema=custom' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) // Schema should not be in the config, it's handled separately // The schema parameter is ignored during parsing expect(config.database).toBe('testdb') }) + + it('should return schema parameter separately from config', () => { + const connectionString = 'sqlserver://localhost;database=testdb;schema=custom' + const { schema } = parseConnectionString(connectionString) + expect(schema).toBe('custom') + }) + + it('should return undefined for schema parameter if not provided', () => { + const connectionString = 'sqlserver://localhost;database=testdb' + const { schema } = parseConnectionString(connectionString) + expect(schema).toBeUndefined() + }) + }) + + describe('escaped values with curly braces', () => { + it('should parse password with curly braces correctly', () => { + const connectionString = 'sqlserver://localhost;database=testdb;user=sa;password={mypassword}' + const { config } = parseConnectionString(connectionString) + + expect(config.password).toBe('mypassword') + }) + + it('should handle password with semicolon when escaped', () => { + const connectionString = 'sqlserver://localhost;database=testdb;user=sa;password={pass;word}' + const { config } = parseConnectionString(connectionString) + + expect(config.password).toBe('pass;word') + }) + + it('should handle password with equals sign when escaped', () => { + const connectionString = 'sqlserver://localhost;database=testdb;user=sa;password={pass=word}' + const { config } = parseConnectionString(connectionString) + + expect(config.password).toBe('pass=word') + }) + + it('should throw error for nested braces inside braced values', () => { + const connectionString = 'sqlserver://localhost;password={my=pass{nested}};database=testdb' + expect(() => parseConnectionString(connectionString)).toThrow( + "Malformed connection string: nested '{' braces are not supported", + ) + }) + + it('should handle password with both semicolon and equals when escaped', () => { + const connectionString = 'sqlserver://localhost;database=testdb;user=sa;password={pass;word=123}' + const { config } = parseConnectionString(connectionString) + + expect(config.password).toBe('pass;word=123') + }) + + it('should handle escaped database name', () => { + const connectionString = 'sqlserver://localhost;database={test;db};user=sa;password=mypassword' + const { config } = parseConnectionString(connectionString) + + expect(config.database).toBe('test;db') + }) + + it('should handle escaped user name', () => { + const connectionString = 'sqlserver://localhost;database=testdb;user={domain\\user;name};password=mypassword' + const { config } = parseConnectionString(connectionString) + + expect(config.user).toBe('domain\\user;name') + }) + + it('should handle multiple escaped values', () => { + const connectionString = 'sqlserver://localhost;database={test;db};user={my;user};password={my;pass=word}' + const { config } = parseConnectionString(connectionString) + + expect(config.database).toBe('test;db') + expect(config.user).toBe('my;user') + expect(config.password).toBe('my;pass=word') + }) + + it('should handle complex password with multiple special characters', () => { + const connectionString = + 'sqlserver://localhost:1433;database=testdb;user=sa;password={P@ss;w=rd!123};encrypt=true' + const { config } = parseConnectionString(connectionString) + + expect(config.server).toBe('localhost') + expect(config.port).toBe(1433) + expect(config.database).toBe('testdb') + expect(config.user).toBe('sa') + expect(config.password).toBe('P@ss;w=rd!123') + expect(config.options?.encrypt).toBe(true) + }) + + it('should handle empty braces as empty string', () => { + const connectionString = 'sqlserver://localhost;database=testdb;user=sa;password={}' + const { config } = parseConnectionString(connectionString) + + expect(config.password).toBe('') + }) + + it('should not unescape braces that are not at value boundaries', () => { + const connectionString = 'sqlserver://localhost;database=testdb;user=sa;password=my{pass}word' + const { config } = parseConnectionString(connectionString) + + expect(config.password).toBe('my{pass}word') + }) + + it('should throw error on unclosed opening brace', () => { + const connectionString = 'sqlserver://localhost;database=testdb;user=sa;password={unclosed;value' + + expect(() => { + parseConnectionString(connectionString) + }).toThrow("Malformed connection string: unclosed '{' brace") + }) + + it('should not throw on unmatched closing brace (clamped)', () => { + const connectionString = 'sqlserver://localhost;database=testdb;user=sa;password=pass}word' + const { config } = parseConnectionString(connectionString) + + expect(config.password).toBe('pass}word') + }) }) describe('isolation level parameter', () => { @@ -201,7 +315,7 @@ describe('parseConnectionString', () => { ] testCases.forEach(({ input, expected }) => { - const config = parseConnectionString(input) + const { config } = parseConnectionString(input) expect(config.options?.isolationLevel).toBe(expected) }) }) @@ -216,7 +330,7 @@ describe('parseConnectionString', () => { ] testCases.forEach(({ input, expected }) => { - const config = parseConnectionString(input) + const { config } = parseConnectionString(input) expect(config.options?.isolationLevel).toBe(expected) }) }) @@ -229,7 +343,7 @@ describe('parseConnectionString', () => { ] testCases.forEach(({ input, expected }) => { - const config = parseConnectionString(input) + const { config } = parseConnectionString(input) expect(config.options?.isolationLevel).toBe(expected) }) }) @@ -238,7 +352,7 @@ describe('parseConnectionString', () => { describe('case sensitivity', () => { it('should handle case sensitive parameter names correctly', () => { const connectionString = 'sqlserver://localhost;database=testdb;user=sa;password=mypassword;encrypt=true' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.database).toBe('testdb') expect(config.user).toBe('sa') @@ -248,7 +362,7 @@ describe('parseConnectionString', () => { it('should handle case insensitive boolean values', () => { const connectionString = 'sqlserver://localhost;database=testdb;encrypt=TRUE;trustServerCertificate=FALSE' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.options?.encrypt).toBe(true) expect(config.options?.trustServerCertificate).toBe(false) @@ -258,7 +372,7 @@ describe('parseConnectionString', () => { describe('whitespace handling', () => { it('should handle whitespace around parameters', () => { const connectionString = 'sqlserver://localhost;database=testdb;user=sa;password=mypassword' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.database).toBe('testdb') expect(config.user).toBe('sa') @@ -267,7 +381,7 @@ describe('parseConnectionString', () => { it('should handle whitespace around values', () => { const connectionString = 'sqlserver://localhost;database= testdb ;user= sa ;password= mypassword ' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.database).toBe('testdb') expect(config.user).toBe('sa') @@ -278,7 +392,7 @@ describe('parseConnectionString', () => { describe('unknown parameters', () => { it('should ignore unknown parameters without throwing', () => { const connectionString = 'sqlserver://localhost;database=testdb;unknownParam=value;anotherUnknown=123' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.database).toBe('testdb') // Should not throw and should ignore unknown parameters @@ -368,9 +482,52 @@ describe('parseConnectionString', () => { }) describe('edge cases', () => { + it('should handle brace escaping only when { is the first character (tedious compatibility)', () => { + // Edge case from jacek-prisma: https://github.com/prisma/prisma/pull/29158#discussion_r1943210520 + // Tedious treats { as a quote character ONLY when it's the FIRST character of a value + const connectionString = 'sqlserver://localhost;database=testdb;user=u{s;password=}password;' + const { config } = parseConnectionString(connectionString) + + // According to tedious behavior: + // user=u{s → user is "u{s" (the { is not the first char, so not treated as quote) + // password=}password → password is "}password" (no opening { to match) + expect(config.user).toBe('u{s') + expect(config.password).toBe('}password') + expect(config.database).toBe('testdb') + }) + + it('should handle braces in the middle of values correctly', () => { + const connectionString = 'sqlserver://localhost;database=test{db}name;user=my{user}name;password=pass{word}' + const { config } = parseConnectionString(connectionString) + + // Braces in the middle should be treated as literal characters + expect(config.database).toBe('test{db}name') + expect(config.user).toBe('my{user}name') + expect(config.password).toBe('pass{word}') + }) + + it('should still escape when { is the first character', () => { + const connectionString = 'sqlserver://localhost;database={test;db};user={my;user};password={my;pass=word}' + const { config } = parseConnectionString(connectionString) + + // When { is first character, it should escape the content + expect(config.database).toBe('test;db') + expect(config.user).toBe('my;user') + expect(config.password).toBe('my;pass=word') + }) + + it('should handle mixed scenarios with braces', () => { + const connectionString = 'sqlserver://localhost;database={db;1};user=prefix{middle};password={escaped;pwd}' + const { config } = parseConnectionString(connectionString) + + expect(config.database).toBe('db;1') + expect(config.user).toBe('prefix{middle}') + expect(config.password).toBe('escaped;pwd') + }) + it('should handle connection string with only server', () => { const connectionString = 'sqlserver://localhost' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.server).toBe('localhost') expect(config.database).toBeUndefined() @@ -380,7 +537,7 @@ describe('parseConnectionString', () => { it('should handle connection string with empty values', () => { const connectionString = 'sqlserver://localhost;database=;user=;password=' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.server).toBe('localhost') expect(config.database).toBe('') @@ -390,7 +547,7 @@ describe('parseConnectionString', () => { it('should handle connection string with malformed key-value pairs', () => { const connectionString = 'sqlserver://localhost;database=testdb;=value;key=;=' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.server).toBe('localhost') expect(config.database).toBe('testdb') @@ -404,7 +561,7 @@ describe('parseConnectionString', () => { 'sqlserver://localhost:1433;database=testdb;authentication=ActiveDirectoryIntegrated', 'sqlserver://localhost:1433;database=testdb;authentication=ActiveDirectoryInteractive', ])('should support authentication parameter for %s', (connectionString) => { - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.user).toBe(undefined) expect(config.password).toBe(undefined) expect(config.authentication?.type).toBe('azure-active-directory-default') @@ -413,7 +570,7 @@ describe('parseConnectionString', () => { it('should support authentication password parameters', () => { const connectionString = 'sqlserver://localhost:1433;database=testdb;authentication=ActiveDirectoryPassword;userName=user1;password=mypassword;clientId=my-client-id' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.authentication?.type).toBe('azure-active-directory-password') if (config.authentication?.type === 'azure-active-directory-password') { @@ -430,7 +587,7 @@ describe('parseConnectionString', () => { 'sqlserver://localhost:1433;database=testdb;authentication=ActiveDirectoryManagedIdentity;clientId=test-client;msiEndpoint=msi-endpoint-1;msiSecret=msi-secret-1', 'sqlserver://localhost:1433;database=testdb;authentication=ActiveDirectoryMSI;clientId=test-client;msiEndpoint=msi-endpoint-1;msiSecret=msi-secret-1', ])('should support authentication managed identity parameters for %s', (connectionString) => { - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.user).toBe(undefined) expect(config.password).toBe(undefined) @@ -449,7 +606,7 @@ describe('parseConnectionString', () => { it('should support authentication service principal parameters', () => { const connectionString = 'sqlserver://localhost:1433;database=testdb;authentication=ActiveDirectoryServicePrincipal;userName=test-client-id;password=mysecret' - const config = parseConnectionString(connectionString) + const { config } = parseConnectionString(connectionString) expect(config.authentication?.type).toBe('azure-active-directory-service-principal-secret') if (config.authentication?.type === 'azure-active-directory-service-principal-secret') { @@ -492,40 +649,3 @@ describe('parseConnectionString', () => { }) }) }) - -describe('extractSchemaFromConnectionString', () => { - it('should extract schema parameter correctly', () => { - const connectionString = 'sqlserver://localhost;database=testdb;schema=custom' - const schema = extractSchemaFromConnectionString(connectionString) - - expect(schema).toBe('custom') - }) - - it('should extract schema parameter without database', () => { - const connectionString = 'sqlserver://localhost;schema=custom' - const schema = extractSchemaFromConnectionString(connectionString) - - expect(schema).toBe('custom') - }) - - it('should return undefined when schema is not provided', () => { - const connectionString = 'sqlserver://localhost;database=testdb' - const schema = extractSchemaFromConnectionString(connectionString) - - expect(schema).toBeUndefined() - }) - - it('should handle schema parameter with whitespace', () => { - const connectionString = 'sqlserver://localhost;database=testdb; schema = custom ' - const schema = extractSchemaFromConnectionString(connectionString) - - expect(schema).toBe('custom') - }) - - it('should handle empty schema value', () => { - const connectionString = 'sqlserver://localhost;database=testdb;schema=' - const schema = extractSchemaFromConnectionString(connectionString) - - expect(schema).toBe('') - }) -}) diff --git a/packages/adapter-mssql/src/connection-string.ts b/packages/adapter-mssql/src/connection-string.ts index 1ed9424e3acd..8bf648f39294 100644 --- a/packages/adapter-mssql/src/connection-string.ts +++ b/packages/adapter-mssql/src/connection-string.ts @@ -27,21 +27,77 @@ function mapIsolationLevelFromString(level: string): number { const debug = Debug('prisma:driver-adapter:mssql:connection-string') /** - * Extracts the schema parameter from a connection string. - * @param connectionString The connection string. - * @returns The schema value or undefined if not found. + * Splits a connection string by semicolons while respecting curly brace escaping. + * Values wrapped in curly braces like {value} are treated as literals where + * semicolons and equals signs are not treated as delimiters. + * + * Important: Curly braces are only treated as quote characters when { is the + * FIRST character of a value (after the = sign). This matches tedious behavior. + * + * @param str The string to split + * @returns Array of parts split by semicolon (outside of curly braces) */ -export function extractSchemaFromConnectionString(connectionString: string): string | undefined { - const withoutProtocol = connectionString.replace(/^sqlserver:\/\//, '') - const parts = withoutProtocol.split(';') - - for (const part of parts) { - const [key, value] = part.split('=', 2) - if (key?.trim() === 'schema') { - return value?.trim() +function splitRespectingBraces(str: string): string[] { + const parts: string[] = [] + let current = '' + let braceDepth = 0 + let valueStartIndex = -1 + + for (let i = 0; i < str.length; i++) { + const char = str[i] + + if (char === '=') { + current += char + if (braceDepth === 0) { + valueStartIndex = i + 1 + } + } else if (char === '{') { + // Only treat { as opening brace if it's the first character of a value + const isFirstCharOfValue = i === valueStartIndex + if (isFirstCharOfValue) { + braceDepth++ + } else if (braceDepth > 0) { + throw new Error(`Malformed connection string: nested '{' braces are not supported`) + } + current += char + } else if (char === '}') { + if (braceDepth > 0) { + braceDepth-- + } + current += char + } else if (char === ';' && braceDepth === 0) { + parts.push(current) + current = '' + valueStartIndex = -1 + } else { + current += char } } - return undefined + + if (current) { + parts.push(current) + } + + if (braceDepth !== 0) { + throw new Error(`Malformed connection string: unclosed '{' brace (braceDepth=${braceDepth})`) + } + + return parts +} + +/** + * Extracts the value from a parameter, removing curly braces if present. + * If the value is wrapped in curly braces like {value}, returns value. + * Otherwise returns the value as-is. + * @param value The value to process + * @returns The unescaped value + */ +function unescapeValue(value: string): string { + const trimmed = value.trim() + if (trimmed.startsWith('{') && trimmed.endsWith('}') && trimmed.length >= 2) { + return trimmed.slice(1, -1) + } + return trimmed } /** @@ -50,11 +106,11 @@ export function extractSchemaFromConnectionString(connectionString: string): str * @param connectionString The connection string. * @returns A sql.config object */ -export function parseConnectionString(connectionString: string): sql.config { +export function parseConnectionString(connectionString: string): { config: sql.config; schema?: string } { const withoutProtocol = connectionString.replace(/^sqlserver:\/\//, '') - // Split by semicolon to get key-value pairs - const [hostPart, ...paramParts] = withoutProtocol.split(';') + const parts = splitRespectingBraces(withoutProtocol) + const [hostPart, ...paramParts] = parts const config: sql.config = { server: '', @@ -63,6 +119,10 @@ export function parseConnectionString(connectionString: string): sql.config { } // Parse the first part which contains host and port + if (!hostPart || hostPart.trim() === '') { + throw new Error('Server host is required in connection string') + } + const [host, portStr] = hostPart.split(':') config.server = host.trim() @@ -78,14 +138,15 @@ export function parseConnectionString(connectionString: string): sql.config { const parameters: Record = {} for (const part of paramParts) { - const [key, value] = part.split('=', 2) + const [key, ...valueParts] = part.split('=') if (!key) continue const trimmedKey = key.trim() if (trimmedKey in parameters) { throw new Error(`Duplication configuration parameter: ${trimmedKey}`) } - parameters[trimmedKey] = value.trim() + const value = valueParts.join('=') + parameters[trimmedKey] = unescapeValue(value) if (!handledParameters.includes(trimmedKey)) { debug(`Unknown connection string parameter: ${trimmedKey}`) } @@ -192,7 +253,9 @@ export function parseConnectionString(connectionString: string): sql.config { throw new Error('Server host is required in connection string') } - return config + const schema = firstKey(parameters, 'schema') ?? undefined + + return { config, schema } } /** @@ -303,6 +366,7 @@ const handledParameters = [ 'password', 'poolTimeout', 'pwd', + 'schema', 'socketTimeout', 'trustServerCertificate', 'uid', diff --git a/packages/adapter-mssql/src/mssql.test.ts b/packages/adapter-mssql/src/mssql.test.ts new file mode 100644 index 000000000000..2e480db9cc37 --- /dev/null +++ b/packages/adapter-mssql/src/mssql.test.ts @@ -0,0 +1,170 @@ +import { Mutex } from 'async-mutex' +import { beforeEach, describe, expect, Mock, test, vi } from 'vitest' + +/** + * Tests for MssqlTransaction race condition fix. + * + * Fixes https://github.com/prisma/prisma/issues/28994 + * + * The mssql driver throws EREQINPROG when commit() or rollback() is called + * while a query is in progress. The fix ensures commit() and rollback() + * acquire the same mutex that performIO() uses. + */ + +describe('MssqlTransaction mutex serialization', () => { + let events: string[] + let isQueryRunning: boolean + let mockTransaction: { + request: () => { arrayRowMode: boolean; input: Mock; query: Mock } + commit: Mock + rollback: Mock + } + + beforeEach(() => { + events = [] + isQueryRunning = false + + mockTransaction = { + request: () => ({ + arrayRowMode: true, + input: vi.fn(), + query: vi.fn(async () => { + isQueryRunning = true + events.push('query:start') + await new Promise((resolve) => setTimeout(resolve, 50)) + events.push('query:end') + isQueryRunning = false + return { recordset: [[]], columns: [[{ name: 'id' }]] } + }), + }), + commit: vi.fn().mockImplementation(() => { + events.push(`commit:called (queryRunning=${isQueryRunning})`) + if (isQueryRunning) { + const error = new Error("Can't commit transaction. There is a request in progress.") + ;(error as any).code = 'EREQINPROG' + return Promise.reject(error) + } + events.push('commit:success') + return Promise.resolve() + }), + rollback: vi.fn().mockImplementation(() => { + events.push(`rollback:called (queryRunning=${isQueryRunning})`) + if (isQueryRunning) { + const error = new Error("Can't rollback transaction. There is a request in progress.") + ;(error as any).code = 'EREQINPROG' + return Promise.reject(error) + } + events.push('rollback:success') + return Promise.resolve() + }), + } + }) + + function createTransaction() { + const mutex = new Mutex() + + return { + async queryRaw(query: { sql: string }) { + const release = await mutex.acquire() + try { + const req = mockTransaction.request() + return await req.query(query.sql) + } finally { + release() + } + }, + + async commit() { + const release = await mutex.acquire() + try { + await mockTransaction.commit() + } finally { + release() + } + }, + + async rollback() { + const release = await mutex.acquire() + try { + await mockTransaction.rollback().catch((e: Error & { code?: string }) => { + if (e.code === 'EABORT') return + throw e + }) + } finally { + release() + } + }, + } + } + + test('rollback waits for query to complete', async () => { + const tx = createTransaction() + + const queryPromise = tx.queryRaw({ sql: 'SELECT 1' }) + await new Promise((resolve) => setTimeout(resolve, 10)) + const rollbackPromise = tx.rollback() + + await expect(Promise.all([queryPromise, rollbackPromise])).resolves.toBeDefined() + + expect(events).toEqual(['query:start', 'query:end', 'rollback:called (queryRunning=false)', 'rollback:success']) + }) + + test('commit waits for query to complete', async () => { + const tx = createTransaction() + + const queryPromise = tx.queryRaw({ sql: 'SELECT 1' }) + await new Promise((resolve) => setTimeout(resolve, 10)) + const commitPromise = tx.commit() + + await expect(Promise.all([queryPromise, commitPromise])).resolves.toBeDefined() + + expect(events).toEqual(['query:start', 'query:end', 'commit:called (queryRunning=false)', 'commit:success']) + }) + + test('rollback handles EABORT gracefully', async () => { + mockTransaction.rollback.mockImplementation(() => { + const error = new Error('Transaction has been aborted.') + ;(error as any).code = 'EABORT' + return Promise.reject(error) + }) + + const tx = createTransaction() + await expect(tx.rollback()).resolves.toBeUndefined() + }) + + test('rollback re-throws non-EABORT errors', async () => { + mockTransaction.rollback.mockImplementation(() => { + const error = new Error('Connection lost') + ;(error as any).code = 'ECONNCLOSED' + return Promise.reject(error) + }) + + const tx = createTransaction() + await expect(tx.rollback()).rejects.toThrow('Connection lost') + }) + + test('commit re-throws errors', async () => { + mockTransaction.commit.mockImplementation(() => { + const error = new Error('Connection lost') + ;(error as any).code = 'ECONNCLOSED' + return Promise.reject(error) + }) + + const tx = createTransaction() + await expect(tx.commit()).rejects.toThrow('Connection lost') + }) + + test('serializes multiple concurrent queries followed by commit', async () => { + const tx = createTransaction() + + const query1 = tx.queryRaw({ sql: 'SELECT 1' }) + const query2 = tx.queryRaw({ sql: 'SELECT 2' }) + const commitPromise = tx.commit() + + await expect(Promise.all([query1, query2, commitPromise])).resolves.toBeDefined() + + const commitIndex = events.findIndex((e) => e.startsWith('commit:called')) + const lastQueryEndIndex = events.lastIndexOf('query:end') + expect(commitIndex).toBeGreaterThan(lastQueryEndIndex) + }) +}) diff --git a/packages/adapter-mssql/src/mssql.ts b/packages/adapter-mssql/src/mssql.ts index 3f70daf6488a..2e4d828f7727 100644 --- a/packages/adapter-mssql/src/mssql.ts +++ b/packages/adapter-mssql/src/mssql.ts @@ -15,7 +15,7 @@ import { Mutex } from 'async-mutex' import sql from 'mssql' import { name as packageName } from '../package.json' -import { extractSchemaFromConnectionString, parseConnectionString } from './connection-string' +import { parseConnectionString } from './connection-string' import { mapArg, mapColumnType, mapIsolationLevel, mapRow } from './conversion' import { convertDriverError } from './errors' @@ -92,20 +92,30 @@ class MssqlTransaction extends MssqlQueryable implements Transaction { async commit(): Promise { debug(`[js::commit]`) - await this.transaction.commit() + const release = await this.#mutex.acquire() + try { + await this.transaction.commit() + } finally { + release() + } } async rollback(): Promise { debug(`[js::rollback]`) - await this.transaction.rollback().catch((e) => { - if (e.code === 'EABORT') { - debug(`[js::rollback] Transaction already aborted`) - return - } - - throw e - }) + const release = await this.#mutex.acquire() + try { + await this.transaction.rollback().catch((e) => { + if (e.code === 'EABORT') { + debug(`[js::rollback] Transaction already aborted`) + return + } + + throw e + }) + } finally { + release() + } } } @@ -175,12 +185,12 @@ export class PrismaMssqlAdapterFactory implements SqlDriverAdapterFactory { constructor(configOrString: sql.config | string, options?: PrismaMssqlOptions) { if (typeof configOrString === 'string') { - this.#config = parseConnectionString(configOrString) + const { config, schema } = parseConnectionString(configOrString) + this.#config = config // Extract schema from connection string and merge with provided options - const extractedSchema = extractSchemaFromConnectionString(configOrString) this.#options = { ...options, - schema: options?.schema ?? extractedSchema, + schema: options?.schema ?? schema, } } else { this.#config = configOrString diff --git a/packages/adapter-planetscale/src/planetscale.test.ts b/packages/adapter-planetscale/src/planetscale.test.ts index 9abee1cd7666..2c1485427e9c 100644 --- a/packages/adapter-planetscale/src/planetscale.test.ts +++ b/packages/adapter-planetscale/src/planetscale.test.ts @@ -1,7 +1,7 @@ import * as planetScale from '@planetscale/database' import { describe, expect, test, vi } from 'vitest' -import { PrismaPlanetScaleAdapterFactory } from './planetscale' +import { PrismaPlanetScaleAdapter, PrismaPlanetScaleAdapterFactory } from './planetscale' describe('behavior of PrismaPlanetScaleAdapterFactory', () => { test('uses the provided adapter instance', async () => { @@ -14,3 +14,57 @@ describe('behavior of PrismaPlanetScaleAdapterFactory', () => { expect(spy).toHaveBeenCalledWith('SELECT 1', [], expect.anything()) }) }) + +describe('startTransaction / commit / rollback', () => { + function createAdapterWithMockConnection(mockTransaction: (fn: (tx: any) => Promise) => Promise) { + const client = new planetScale.Client({}) + const mockConnection = { + execute: vi.fn(), + transaction: mockTransaction, + } + vi.spyOn(client, 'connection').mockReturnValue(mockConnection as any) + return new PrismaPlanetScaleAdapter(client) + } + + // The real @planetscale/database driver defers the callback invocation by at least + // one microtask (via internal async operations like BEGIN). We simulate this with + // `await Promise.resolve()` to avoid the `txResultPromise` temporal dead zone. + function deferredTransaction(afterCallback?: () => never | void) { + return vi.fn((fn: (tx: any) => Promise) => { + const mockTx = { execute: vi.fn() } + return Promise.resolve() + .then(() => fn(mockTx)) + .then(() => { + afterCallback?.() + }) + }) + } + + test('commit succeeds when conn.transaction() resolves', async () => { + const adapter = createAdapterWithMockConnection(deferredTransaction()) + const tx = await adapter.startTransaction() + await tx.commit() + }) + + test('commit throws when conn.transaction() rejects after COMMIT failure', async () => { + const commitError = new Error('target: .0.primary: vttablet: deadline exceeded (errno 1317) (sqlstate 70100)') + + const adapter = createAdapterWithMockConnection( + deferredTransaction(() => { + throw commitError + }), + ) + const tx = await adapter.startTransaction() + + // commit() should propagate the COMMIT error instead of silently swallowing it + await expect(tx.commit()).rejects.toThrow(commitError) + }) + + test('rollback does not throw (RollbackError is swallowed)', async () => { + const adapter = createAdapterWithMockConnection(deferredTransaction()) + const tx = await adapter.startTransaction() + + // rollback should not throw — RollbackError is intentionally swallowed + await tx.rollback() + }) +}) diff --git a/packages/adapter-planetscale/src/planetscale.ts b/packages/adapter-planetscale/src/planetscale.ts index 0b67d93d9806..fe25dc9cc4f1 100644 --- a/packages/adapter-planetscale/src/planetscale.ts +++ b/packages/adapter-planetscale/src/planetscale.ts @@ -213,7 +213,7 @@ export class PrismaPlanetScaleAdapter extends PlanetScaleQueryable { - return new Promise((resolve, reject) => { + return new Promise((resolve, _reject) => { const txResultPromise = conn .transaction(async (tx) => { const [txDeferred, deferredPromise] = createDeferred() @@ -226,7 +226,7 @@ export class PrismaPlanetScaleAdapter extends PlanetScaleQueryableDiscord

- Quickstart + Quickstart   •   Website   •   @@ -33,7 +33,7 @@ Prisma is a **next-generation ORM** that consists of these tools: Prisma Client can be used in _any_ Node.js or TypeScript backend application (including serverless applications and microservices). This can be a [REST API](https://www.prisma.io/docs/concepts/overview/prisma-in-your-stack/rest), a [GraphQL API](https://www.prisma.io/docs/concepts/overview/prisma-in-your-stack/graphql) a gRPC API, or anything else that needs a database. -**If you need a database to use with Prisma ORM, check out [Prisma Postgres](https://www.prisma.io/docs/getting-started/quickstart-prismaPostgres?utm_source=npm&utm_medium=readme) or if you are looking for our MCP Server, head [here](https://github.com/prisma/mcp).** +**If you need a database to use with Prisma ORM, check out [Prisma Postgres](https://www.prisma.io/docs/getting-started/prisma-orm/quickstart/prisma-postgres?utm_source=npm&utm_medium=readme) or if you are looking for our MCP Server, head [here](https://github.com/prisma/mcp).** ## Getting started @@ -41,7 +41,7 @@ The fastest way to get started with Prisma is by following the [**Quickstart (5 The Quickstart is based on a preconfigured SQLite database. You can also get started with your own database (PostgreSQL and MySQL) by following one of these guides: -- [Add Prisma to an existing project](https://www.prisma.io/docs/getting-started/setup-prisma/add-to-existing-project/relational-databases-typescript-postgresql) +- [Add Prisma to an existing project](https://www.prisma.io/docs/getting-started/prisma-orm/add-to-existing-project/postgresql) - [Set up a new project with Prisma from scratch](https://www.prisma.io/docs/getting-started/setup-prisma/start-from-scratch/relational-databases-typescript-postgresql) ## Community diff --git a/packages/cli/package.json b/packages/cli/package.json index 1c78fe0a794e..588b36f7dce6 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -143,7 +143,7 @@ "fs-extra": "11.3.0", "get-port-please": "3.2.0", "get-tsconfig": "4.10.0", - "hono": "4.11.4", + "hono": "4.11.7", "jest": "29.7.0", "jest-junit": "16.0.0", "kleur": "4.1.5", diff --git a/packages/cli/src/CLI.ts b/packages/cli/src/CLI.ts index 38ceaba67a63..95015929dd31 100644 --- a/packages/cli/src/CLI.ts +++ b/packages/cli/src/CLI.ts @@ -108,8 +108,7 @@ export class CLI implements Command { return CLI.help } - private static tryPdpMessage = `Optimize performance through connection pooling and caching with Prisma Accelerate -and capture real-time events from your database with Prisma Pulse. + private static tryPdpMessage = `Optimize performance through connection pooling and caching with Prisma Accelerate. Learn more at ${link('https://pris.ly/cli/pdp')}` private static boxedTryPdpMessage = drawBox({ diff --git a/packages/cli/src/Init.ts b/packages/cli/src/Init.ts index 733fd25e2dcd..e94e24717225 100644 --- a/packages/cli/src/Init.ts +++ b/packages/cli/src/Init.ts @@ -290,7 +290,7 @@ export class Init implements Command { -h, --help Display this help message --db Provisions a fully managed Prisma Postgres database on the Prisma Data Platform. --datasource-provider Define the datasource provider to use: postgresql, mysql, sqlite, sqlserver, mongodb or cockroachdb - --generator-provider Define the generator provider to use. Default: \`prisma-client-js\` + --generator-provider Define the generator provider to use. Default: \`prisma-client\` --preview-feature Define a preview feature to use. --output Define Prisma Client generator output path to use. --url Define a custom datasource url @@ -307,8 +307,8 @@ export class Init implements Command { Set up a new Prisma project and specify MySQL as the datasource provider to use ${dim('$')} prisma init --datasource-provider mysql - Set up a new \`prisma dev\`-ready (local Prisma Postgres) Prisma project and specify \`prisma-client-js\` as the generator provider to use - ${dim('$')} prisma init --generator-provider prisma-client-js + Set up a new \`prisma dev\`-ready (local Prisma Postgres) Prisma project and specify \`prisma-client\` as the generator provider to use + ${dim('$')} prisma init --generator-provider prisma-client Set up a new \`prisma dev\`-ready (local Prisma Postgres) Prisma project and specify \`x\` and \`y\` as the preview features to use ${dim('$')} prisma init --preview-feature x --preview-feature y diff --git a/packages/client-common/package.json b/packages/client-common/package.json index 0b3b9a2840f3..68a1787287fe 100644 --- a/packages/client-common/package.json +++ b/packages/client-common/package.json @@ -28,7 +28,8 @@ "@prisma/dmmf": "workspace:*", "@prisma/driver-adapter-utils": "workspace:*", "@prisma/generator": "workspace:*", - "@prisma/internals": "workspace:*" + "@prisma/internals": "workspace:*", + "@prisma/param-graph": "workspace:*" }, "scripts": { "dev": "DEV=true tsx helpers/build.ts", diff --git a/packages/client-common/src/client-config.ts b/packages/client-common/src/client-config.ts index 3005d08bbc96..0480e21acf67 100644 --- a/packages/client-common/src/client-config.ts +++ b/packages/client-common/src/client-config.ts @@ -1,4 +1,5 @@ import { ActiveConnectorType } from '@prisma/generator' +import type { SerializedParamGraph } from '@prisma/param-graph' import { CompilerWasmLoadingConfig } from './QueryCompiler' import { RuntimeDataModel } from './runtimeDataModel' @@ -24,4 +25,10 @@ export type GetPrismaClientConfig = { * Optional wasm loading configuration */ compilerWasm?: CompilerWasmLoadingConfig + + /** + * Parameterization schema for schema-aware query parameterization. + * Enables precise parameterization based on DMMF metadata. + */ + parameterizationSchema: SerializedParamGraph } diff --git a/packages/client-engine-runtime/src/batch.ts b/packages/client-engine-runtime/src/batch.ts index b28dfdbfae01..0566afc08fb0 100644 --- a/packages/client-engine-runtime/src/batch.ts +++ b/packages/client-engine-runtime/src/batch.ts @@ -19,11 +19,61 @@ export type CompactedBatchResponse = { expectNonEmpty: boolean } +/** + * Checks if a value is a placeholder. + * Handles both formats: `{ $type: 'Param', value: { name: '...' } }` and `{ prisma__type: 'param', prisma__value: { name: '...' } }` + */ +function isPlaceholder( + value: unknown, +): value is { $type: 'Param'; value: { name: string } } | { prisma__type: 'param'; prisma__value: { name: string } } { + if (typeof value !== 'object' || value === null) { + return false + } + const obj = value as Record + if ('$type' in obj && obj.$type === 'Param') { + return true + } + if ('prisma__type' in obj && obj.prisma__type === 'param') { + return true + } + return false +} + +function getPlaceholderName( + value: { $type: 'Param'; value: { name: string } } | { prisma__type: 'param'; prisma__value: { name: string } }, +): string | undefined { + if ('prisma__type' in value) { + return value.prisma__value?.name + } + return (value as { value: { name: string } }).value.name +} + +function resolveArgPlaceholders( + args: Record, + placeholderValues: Record, +): Record { + const resolved: Record = {} + for (const [key, value] of Object.entries(args)) { + resolved[key] = value + if (isPlaceholder(value)) { + const placeholderName = getPlaceholderName(value) + if (placeholderName && placeholderName in placeholderValues) { + resolved[key] = placeholderValues[placeholderName] as {} + } + } + } + return resolved +} + /** * Converts the result of a compacted query back to result objects analogous to what queries * would return when executed individually. */ -export function convertCompactedRows(rows: {}[], compiledBatch: CompactedBatchResponse): unknown[] { +export function convertCompactedRows( + rows: {}[], + compiledBatch: CompactedBatchResponse, + placeholderValues: Record = {}, +): unknown[] { // a list of objects that contain the keys of every row const keysPerRow = rows.map((item) => compiledBatch.keys.reduce((acc, key) => { @@ -36,9 +86,11 @@ export function convertCompactedRows(rows: {}[], compiledBatch: CompactedBatchRe const selection = new Set(compiledBatch.nestedSelection) return compiledBatch.arguments.map((args) => { + const resolvedArgs = resolveArgPlaceholders(args, placeholderValues) + // we find the index of the row that matches the input arguments - this is the row we want // to return minus any extra columns not present in the selection - const rowIndex = keysPerRow.findIndex((rowKeys) => doKeysMatch(rowKeys, args)) + const rowIndex = keysPerRow.findIndex((rowKeys) => doKeysMatch(rowKeys, resolvedArgs)) if (rowIndex === -1) { if (compiledBatch.expectNonEmpty) { return new UserFacingError( diff --git a/packages/client-generator-js/package.json b/packages/client-generator-js/package.json index a7e78f8e9d38..453496dfc19c 100644 --- a/packages/client-generator-js/package.json +++ b/packages/client-generator-js/package.json @@ -28,11 +28,12 @@ "@prisma/client-common": "workspace:*", "@prisma/debug": "workspace:*", "@prisma/dmmf": "workspace:*", - "@prisma/engines-version": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", + "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", "@prisma/fetch-engine": "workspace:*", "@prisma/generator": "workspace:*", "@prisma/get-platform": "workspace:*", "@prisma/internals": "workspace:*", + "@prisma/param-graph-builder": "workspace:*", "@prisma/ts-builders": "workspace:*", "env-paths": "2.2.1", "indent-string": "4.0.0", diff --git a/packages/client-generator-js/src/GenericsArgsInfo.test.ts b/packages/client-generator-js/src/GenericsArgsInfo.test.ts index 43e140ed4736..d7aefb1fb5fb 100644 --- a/packages/client-generator-js/src/GenericsArgsInfo.test.ts +++ b/packages/client-generator-js/src/GenericsArgsInfo.test.ts @@ -28,6 +28,7 @@ function field(name: string, inputTypes: DMMF.InputTypeRef[]): DMMF.SchemaArg { isRequired: false, isNullable: false, inputTypes, + isParameterizable: false, } } diff --git a/packages/client-generator-js/src/TSClient/Model.ts b/packages/client-generator-js/src/TSClient/Model.ts index 7c8d735f0c19..7be32092cdb4 100644 --- a/packages/client-generator-js/src/TSClient/Model.ts +++ b/packages/client-generator-js/src/TSClient/Model.ts @@ -281,6 +281,7 @@ ${ name: field.name, isNullable: false, isRequired: false, + isParameterizable: false, inputTypes: [ { isList: false, diff --git a/packages/client-generator-js/src/TSClient/TSClient.ts b/packages/client-generator-js/src/TSClient/TSClient.ts index 186c0f8d080a..ccdf5f1e3d17 100644 --- a/packages/client-generator-js/src/TSClient/TSClient.ts +++ b/packages/client-generator-js/src/TSClient/TSClient.ts @@ -1,5 +1,6 @@ import type { GetPrismaClientConfig } from '@prisma/client-common' import { datamodelEnumToSchemaEnum } from '@prisma/dmmf' +import { buildAndSerializeParamGraph } from '@prisma/param-graph-builder' import * as ts from '@prisma/ts-builders' import indent from 'indent-string' import type { O } from 'ts-toolbelt' @@ -47,6 +48,15 @@ export class TSClient implements Generable { this.genericsInfo = new GenericArgsInfo(this.dmmf) } + private buildParamGraphConfig(): string { + const serialized = buildAndSerializeParamGraph(this.options.dmmf) + const stringsJson = JSON.stringify(JSON.stringify(serialized.strings)) + return `config.parameterizationSchema = { + strings: JSON.parse(${stringsJson}), + graph: "${serialized.graph}" +}` + } + public toJS(): string { const { edge, wasm, generator, datamodel: inlineSchema, runtimeName, reusedJs, compilerBuild } = this.options @@ -54,7 +64,7 @@ export class TSClient implements Generable { return `module.exports = { ...require('${reusedJs}') }` } - const config: Omit = { + const config: Omit = { previewFeatures: generator.previewFeatures, clientVersion: this.options.clientVersion, engineVersion: this.options.engineVersion, @@ -85,6 +95,7 @@ ${new Enum( */ const config = ${JSON.stringify(config, null, 2)} ${buildRuntimeDataModel(this.dmmf.datamodel, runtimeName)} +${this.buildParamGraphConfig()} ${buildQueryCompilerWasmModule(wasm, runtimeName, compilerBuild)} ${buildDebugInitialization(edge)} const PrismaClient = getPrismaClient(config) diff --git a/packages/client-generator-ts/package.json b/packages/client-generator-ts/package.json index c9aca4244b94..48559ab06b5b 100644 --- a/packages/client-generator-ts/package.json +++ b/packages/client-generator-ts/package.json @@ -28,11 +28,12 @@ "@prisma/client-common": "workspace:*", "@prisma/debug": "workspace:*", "@prisma/dmmf": "workspace:*", - "@prisma/engines-version": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", + "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", "@prisma/fetch-engine": "workspace:*", "@prisma/generator": "workspace:*", "@prisma/get-platform": "workspace:*", "@prisma/internals": "workspace:*", + "@prisma/param-graph-builder": "workspace:*", "@prisma/ts-builders": "workspace:*", "fast-glob": "3.3.3", "get-tsconfig": "4.10.0", diff --git a/packages/client-generator-ts/src/GenericsArgsInfo.test.ts b/packages/client-generator-ts/src/GenericsArgsInfo.test.ts index 43e140ed4736..d7aefb1fb5fb 100644 --- a/packages/client-generator-ts/src/GenericsArgsInfo.test.ts +++ b/packages/client-generator-ts/src/GenericsArgsInfo.test.ts @@ -28,6 +28,7 @@ function field(name: string, inputTypes: DMMF.InputTypeRef[]): DMMF.SchemaArg { isRequired: false, isNullable: false, inputTypes, + isParameterizable: false, } } diff --git a/packages/client-generator-ts/src/TSClient/Model.ts b/packages/client-generator-ts/src/TSClient/Model.ts index 0d86acdf72ef..bf8d99c4d49a 100644 --- a/packages/client-generator-ts/src/TSClient/Model.ts +++ b/packages/client-generator-ts/src/TSClient/Model.ts @@ -284,6 +284,7 @@ ${ name: field.name, isNullable: false, isRequired: false, + isParameterizable: false, inputTypes: [ { isList: false, diff --git a/packages/client-generator-ts/src/TSClient/file-generators/ClassFile.ts b/packages/client-generator-ts/src/TSClient/file-generators/ClassFile.ts index a7aca07966af..791ca31d0d67 100644 --- a/packages/client-generator-ts/src/TSClient/file-generators/ClassFile.ts +++ b/packages/client-generator-ts/src/TSClient/file-generators/ClassFile.ts @@ -1,4 +1,6 @@ import { GetPrismaClientConfig } from '@prisma/client-common' +import * as DMMF from '@prisma/dmmf' +import { buildAndSerializeParamGraph } from '@prisma/param-graph-builder' import * as ts from '@prisma/ts-builders' import { buildDebugInitialization } from '../../utils/buildDebugInitialization' @@ -51,6 +53,7 @@ function clientConfig(context: GenerateContext, options: TSClientOptions) { activeProvider, moduleFormat, compilerBuild, + dmmf, } = options const config: GetPrismaClientConfig = { @@ -60,12 +63,23 @@ function clientConfig(context: GenerateContext, options: TSClientOptions) { activeProvider: options.activeProvider, inlineSchema, runtimeDataModel: { models: {}, enums: {}, types: {} }, + parameterizationSchema: { strings: [], graph: '' }, } return ` const config: runtime.GetPrismaClientConfig = ${JSON.stringify(config, null, 2)} ${buildRuntimeDataModel(context.dmmf.datamodel, runtimeName)} +${buildParameterizationSchema(dmmf)} ${buildGetWasmModule({ runtimeBase, runtimeName, target, activeProvider, moduleFormat, compilerBuild })} ${buildDebugInitialization(edge)} ` } + +function buildParameterizationSchema(dmmf: DMMF.Document): string { + const serialized = buildAndSerializeParamGraph(dmmf) + const stringsJson = JSON.stringify(JSON.stringify(serialized.strings)) + return `config.parameterizationSchema = { + strings: JSON.parse(${stringsJson}), + graph: "${serialized.graph}" +}` +} diff --git a/packages/client/README.md b/packages/client/README.md index c67b83cbb68b..91ceb35b0d77 100644 --- a/packages/client/README.md +++ b/packages/client/README.md @@ -8,10 +8,9 @@ It is part of the [Prisma](https://www.prisma.io/) ecosystem. Prisma provides da Follow one of these guides to get started with Prisma Client JS: -- [Quickstart](https://www.prisma.io/docs/getting-started/quickstart) (5 min) -- [Set up a new project with Prisma (SQL migrations)](https://www.prisma.io/docs/getting-started/setup-prisma/start-from-scratch-sql) (15 min) -- [Set up a new project with Prisma (Prisma Migrate)](https://www.prisma.io/docs/getting-started/setup-prisma/start-from-scratch-prisma-migrate) (15 min) -- [Add Prisma to an existing project](https://www.prisma.io/docs/getting-started/setup-prisma/add-to-existing-project) (15 min) +- [Quickstart](https://www.prisma.io/docs/getting-started/prisma-orm/quickstart/prisma-postgres) (5 min) +- [Getting started with Prisma Migrate](https://www.prisma.io/docs/orm/prisma-migrate/getting-started) (15 min) +- [Add Prisma to an existing project](https://www.prisma.io/docs/getting-started/prisma-orm/add-to-existing-project/prisma-postgres) (15 min) Alternatively you can explore the ready-to-run [examples](https://github.com/prisma/prisma-examples/) (REST, GraphQL, gRPC, plain JavaScript and TypeScript demos, ...) or watch the [demo videos](https://www.youtube.com/watch?v=0RhtQgIs-TE&list=PLn2e1F9Rfr6k9PnR_figWOcSHgc_erDr5&index=1) (1-2 min per video). diff --git a/packages/client/package.json b/packages/client/package.json index bea991b21109..864fdc51726a 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -199,7 +199,7 @@ "@prisma/dmmf": "workspace:*", "@prisma/driver-adapter-utils": "workspace:*", "@prisma/engines": "workspace:*", - "@prisma/engines-version": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", + "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", "@prisma/fetch-engine": "workspace:*", "@prisma/generator": "workspace:*", "@prisma/generator-helper": "workspace:*", @@ -209,7 +209,9 @@ "@prisma/internals": "workspace:*", "@prisma/json-protocol": "workspace:*", "@prisma/migrate": "workspace:*", - "@prisma/query-compiler-wasm": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", + "@prisma/param-graph": "workspace:*", + "@prisma/param-graph-builder": "workspace:*", + "@prisma/query-compiler-wasm": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", "@prisma/query-plan-executor": "workspace:*", "@prisma/sqlcommenter": "workspace:*", "@prisma/sqlcommenter-trace-context": "workspace:*", diff --git a/packages/client/src/__tests__/benchmarks/query-performance/caching.bench.ts b/packages/client/src/__tests__/benchmarks/query-performance/caching.bench.ts new file mode 100644 index 000000000000..947ce5e5d2f7 --- /dev/null +++ b/packages/client/src/__tests__/benchmarks/query-performance/caching.bench.ts @@ -0,0 +1,201 @@ +import fs from 'node:fs' +import path from 'node:path' + +import { withCodSpeed } from '@codspeed/benchmark.js-plugin' +import { dmmfToRuntimeDataModel, type QueryCompiler, type QueryCompilerConstructor } from '@prisma/client-common' +import { getDMMF } from '@prisma/client-generator-js' +import type { JsonQuery } from '@prisma/json-protocol' +import { ParamGraph } from '@prisma/param-graph' +import { buildParamGraph } from '@prisma/param-graph-builder' +import Benchmark from 'benchmark' + +import { parameterizeQuery } from '../../../runtime/core/engines/client/parameterization/parameterize' +import { loadQueryCompiler } from './qc-loader' + +let QueryCompilerClass: QueryCompilerConstructor +let queryCompiler: QueryCompiler + +const BENCHMARK_DATAMODEL = fs.readFileSync(path.join(__dirname, 'schema.prisma'), 'utf-8') + +let paramGraph: ParamGraph + +type Param = { $type: 'Param'; value: string } +type Parameterizable = T | Param + +function createFindUniqueQuery(id: Parameterizable): JsonQuery { + return { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { id } }, + selection: { + $scalars: true, + }, + }, + } +} + +function createFindManyQuery(): JsonQuery { + return { + modelName: 'User', + action: 'findMany', + query: { + arguments: { + where: { isActive: true, role: 'user' }, + orderBy: [{ createdAt: 'desc' }], + take: 20, + }, + selection: { + $scalars: true, + }, + }, + } +} + +function createBlogPostPageQuery(id: Parameterizable): JsonQuery { + return { + modelName: 'Post', + action: 'findUnique', + query: { + arguments: { where: { id } }, + selection: { + $scalars: true, + author: { + selection: { + id: true, + name: true, + avatar: true, + }, + }, + category: { + selection: { + $scalars: true, + }, + }, + tags: { + selection: { + tag: { + selection: { + $scalars: true, + }, + }, + }, + }, + comments: { + arguments: { + take: 10, + orderBy: [{ createdAt: 'desc' }], + }, + selection: { + $scalars: true, + author: { + selection: { + id: true, + name: true, + avatar: true, + }, + }, + }, + }, + _count: { + selection: { + likes: true, + comments: true, + }, + }, + }, + }, + } +} + +async function setup(): Promise { + const provider = 'sqlite' + + QueryCompilerClass = await loadQueryCompiler(provider) + + queryCompiler = new QueryCompilerClass({ + provider, + connectionInfo: { + supportsRelationJoins: false, + }, + datamodel: BENCHMARK_DATAMODEL, + }) + + const dmmf = await getDMMF({ datamodel: BENCHMARK_DATAMODEL }) + const paramGraphData = buildParamGraph(dmmf) + const runtimeDataModel = dmmfToRuntimeDataModel(dmmf.datamodel) + + paramGraph = ParamGraph.fromData(paramGraphData, (enumName) => { + const enumDef = runtimeDataModel.enums[enumName] + return enumDef?.values.map((v) => v.name) + }) +} + +function syncBench(fn: () => void): Benchmark.Options { + return { fn } +} + +async function runBenchmarks(): Promise { + await setup() + + const suite = withCodSpeed(new Benchmark.Suite('query-caching')) + + suite.add( + 'compile findUnique (uncached baseline)', + syncBench(() => { + queryCompiler.compile(JSON.stringify(createFindUniqueQuery(1))) + }), + ) + + suite.add( + 'compile findMany filtered (uncached baseline)', + syncBench(() => { + queryCompiler.compile(JSON.stringify(createFindManyQuery())) + }), + ) + + suite.add( + 'compile blog post page (uncached baseline)', + syncBench(() => { + queryCompiler.compile(JSON.stringify(createBlogPostPageQuery(1))) + }), + ) + + suite.add( + 'parameterize findUnique', + syncBench(() => { + parameterizeQuery(createFindUniqueQuery(1), paramGraph) + }), + ) + + suite.add( + 'parameterize findMany', + syncBench(() => { + parameterizeQuery(createFindManyQuery(), paramGraph) + }), + ) + + suite.add( + 'parameterize blog post page query', + syncBench(() => { + parameterizeQuery(createBlogPostPageQuery(1), paramGraph) + }), + ) + + await new Promise((resolve) => { + void suite + .on('cycle', (event: Benchmark.Event) => { + console.log(String(event.target)) + }) + .on('complete', () => { + console.log('Query caching benchmarks complete.') + resolve() + }) + .on('error', (event: Benchmark.Event) => { + console.error('Benchmark error:', event.target) + }) + .run({ async: true }) + }) +} + +void runBenchmarks() diff --git a/packages/client/src/__tests__/benchmarks/query-performance/compilation.bench.ts b/packages/client/src/__tests__/benchmarks/query-performance/compilation.bench.ts index 700c1b5890f0..5522b900d1e1 100644 --- a/packages/client/src/__tests__/benchmarks/query-performance/compilation.bench.ts +++ b/packages/client/src/__tests__/benchmarks/query-performance/compilation.bench.ts @@ -11,7 +11,7 @@ import { withCodSpeed } from '@codspeed/benchmark.js-plugin' import { QueryCompiler, QueryCompilerConstructor } from '@prisma/client-common' import Benchmark from 'benchmark' -import { wasmQueryCompilerLoader } from '../../../runtime/core/engines/client/WasmQueryCompilerLoader' +import { loadQueryCompiler } from './qc-loader' let QueryCompilerClass: QueryCompilerConstructor let queryCompiler: QueryCompiler @@ -523,37 +523,9 @@ const QUERIES = { } async function setup(): Promise { - const runtimeBase = path.join(__dirname, '..', '..', '..', '..', 'runtime') const provider = 'sqlite' - QueryCompilerClass = await wasmQueryCompilerLoader.loadQueryCompiler({ - activeProvider: provider, - clientVersion: '0.0.0', - compilerWasm: { - getRuntime: () => { - let runtimePath: string - if (process.env.LOCAL_QC_BUILD_DIRECTORY) { - runtimePath = path.join(process.env.LOCAL_QC_BUILD_DIRECTORY, provider, 'query_compiler_fast_bg.js') - } else { - runtimePath = path.join(runtimeBase, `query_compiler_fast_bg.${provider}.js`) - } - return Promise.resolve(require(runtimePath)) - }, - getQueryCompilerWasmModule: async () => { - let moduleBytes: BufferSource - if (process.env.LOCAL_QC_BUILD_DIRECTORY) { - const wasmPath = path.join(process.env.LOCAL_QC_BUILD_DIRECTORY, provider, 'query_compiler_fast_bg.wasm') - moduleBytes = await fs.promises.readFile(wasmPath) - } else { - const queryCompilerWasmFilePath = path.join(runtimeBase, `query_compiler_fast_bg.${provider}.wasm-base64.js`) - const wasmBase64: string = require(queryCompilerWasmFilePath).wasm - moduleBytes = Buffer.from(wasmBase64, 'base64') - } - return new WebAssembly.Module(moduleBytes) - }, - importName: `./query_compiler_fast_bg.js`, - }, - }) + QueryCompilerClass = await loadQueryCompiler(provider) queryCompiler = new QueryCompilerClass({ provider, diff --git a/packages/client/src/__tests__/benchmarks/query-performance/qc-loader.ts b/packages/client/src/__tests__/benchmarks/query-performance/qc-loader.ts new file mode 100644 index 000000000000..fac4acac0860 --- /dev/null +++ b/packages/client/src/__tests__/benchmarks/query-performance/qc-loader.ts @@ -0,0 +1,38 @@ +import fs from 'node:fs' +import path from 'node:path' + +import { QueryCompilerConstructor } from '@prisma/client-common' + +import { wasmQueryCompilerLoader } from '../../../runtime/core/engines/client/WasmQueryCompilerLoader' + +export function loadQueryCompiler(provider: string): Promise { + const runtimeBase = path.join(__dirname, '..', '..', '..', '..', 'runtime') + return wasmQueryCompilerLoader.loadQueryCompiler({ + activeProvider: provider, + clientVersion: '0.0.0', + compilerWasm: { + getRuntime: () => { + let runtimePath: string + if (process.env.LOCAL_QC_BUILD_DIRECTORY) { + runtimePath = path.join(process.env.LOCAL_QC_BUILD_DIRECTORY, provider, 'query_compiler_fast_bg.js') + } else { + runtimePath = path.join(runtimeBase, `query_compiler_fast_bg.${provider}.js`) + } + return Promise.resolve(require(runtimePath)) + }, + getQueryCompilerWasmModule: async () => { + let moduleBytes: BufferSource + if (process.env.LOCAL_QC_BUILD_DIRECTORY) { + const wasmPath = path.join(process.env.LOCAL_QC_BUILD_DIRECTORY, provider, 'query_compiler_fast_bg.wasm') + moduleBytes = await fs.promises.readFile(wasmPath) + } else { + const queryCompilerWasmFilePath = path.join(runtimeBase, `query_compiler_fast_bg.${provider}.wasm-base64.js`) + const wasmBase64: string = require(queryCompilerWasmFilePath).wasm + moduleBytes = Buffer.from(wasmBase64, 'base64') + } + return new WebAssembly.Module(moduleBytes) + }, + importName: `./query_compiler_fast_bg.js`, + }, + }) +} diff --git a/packages/client/src/__tests__/dmmf.test.ts b/packages/client/src/__tests__/dmmf.test.ts index 42a3c3a5462c..1a1e8d33f990 100644 --- a/packages/client/src/__tests__/dmmf.test.ts +++ b/packages/client/src/__tests__/dmmf.test.ts @@ -46,6 +46,7 @@ describe('dmmf', () => { }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -59,6 +60,7 @@ describe('dmmf', () => { }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -72,6 +74,7 @@ describe('dmmf', () => { }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -91,6 +94,7 @@ describe('dmmf', () => { }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -121,6 +125,7 @@ describe('dmmf', () => { }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -134,6 +139,7 @@ describe('dmmf', () => { }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -147,6 +153,7 @@ describe('dmmf', () => { }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -166,6 +173,7 @@ describe('dmmf', () => { }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -218,6 +226,7 @@ describe('dmmf', () => { }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -237,6 +246,7 @@ describe('dmmf', () => { }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -256,6 +266,7 @@ describe('dmmf', () => { }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -275,6 +286,7 @@ describe('dmmf', () => { }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -305,6 +317,7 @@ describe('dmmf', () => { }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -324,6 +337,7 @@ describe('dmmf', () => { }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -343,6 +357,7 @@ describe('dmmf', () => { }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -362,6 +377,7 @@ describe('dmmf', () => { }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, diff --git a/packages/client/src/runtime/core/engines/client/ClientEngine.ts b/packages/client/src/runtime/core/engines/client/ClientEngine.ts index bc64307af718..f50f4cb4059e 100644 --- a/packages/client/src/runtime/core/engines/client/ClientEngine.ts +++ b/packages/client/src/runtime/core/engines/client/ClientEngine.ts @@ -20,6 +20,7 @@ import type { ActiveConnectorType } from '@prisma/generator' import type { TracingHelper } from '@prisma/instrumentation-contract' import { assertNever } from '@prisma/internals' import type { JsonBatchQuery, JsonQuery, RawJsonQuery } from '@prisma/json-protocol' +import { ParamGraph } from '@prisma/param-graph' import { version as clientVersion } from '../../../../../package.json' import { deserializeRawParameters } from '../../../utils/deserializeRawParameters' @@ -33,6 +34,8 @@ import { getBatchRequestPayload } from '../common/utils/getBatchRequestPayload' import { getErrorMessageWithLink as genericGetErrorMessageWithLink } from '../common/utils/getErrorMessageWithLink' import type { Executor } from './Executor' import { LocalExecutor } from './LocalExecutor' +import { parameterizeBatch, parameterizeQuery } from './parameterization/parameterize' +import { QueryPlanCache } from './query-plan-cache' import { RemoteExecutor } from './RemoteExecutor' import { QueryCompilerLoader } from './types/QueryCompiler' import { wasmQueryCompilerLoader } from './WasmQueryCompilerLoader' @@ -98,6 +101,8 @@ export class ClientEngine implements Engine { #state: EngineState = { type: 'disconnected' } #queryCompilerLoader: QueryCompilerLoader #executorKind: ExecutorKind + #queryPlanCache: QueryPlanCache + #paramGraph: ParamGraph config: EngineConfig datamodel: string @@ -135,6 +140,13 @@ export class ClientEngine implements Engine { this.logEmitter = config.logEmitter this.datamodel = config.inlineSchema this.tracingHelper = config.tracingHelper + this.#queryPlanCache = new QueryPlanCache() + this.#paramGraph = ParamGraph.deserialize(config.parameterizationSchema, (enumName) => { + if (!Object.hasOwn(config.runtimeDataModel.enums, enumName)) { + return undefined + } + return config.runtimeDataModel.enums[enumName].values.map((v) => v.name) + }) if (config.enableDebugLogs) { this.logLevel = 'debug' @@ -305,6 +317,7 @@ export class ClientEngine implements Engine { if (error instanceof PrismaClientRustPanicError) { return error } + if (typeof error['message'] === 'string' && typeof error['code'] === 'string') { return new PrismaClientKnownRequestError(error['message'], { code: error['code'], @@ -451,13 +464,31 @@ export class ClientEngine implements Engine { const { executor, queryCompiler } = await this.#ensureStarted().catch((err) => { throw this.#transformRequestError(err, JSON.stringify(query)) }) - const plan = this.#compileQuery(query, queryCompiler) + + let plan: QueryPlanNode + let placeholderValues: Record = {} + + if (isRawQuery(query)) { + plan = compileRawQuery(query) + } else { + const { parameterizedQuery, placeholderValues: extractedValues } = parameterizeQuery(query, this.#paramGraph) + const cacheKey = JSON.stringify(parameterizedQuery) + placeholderValues = extractedValues + + const cached = this.#queryPlanCache.getSingle(cacheKey) + if (cached) { + debug('query plan cache hit') + plan = cached + } else { + debug('query plan cache miss') + plan = this.#compileQuery(parameterizedQuery, cacheKey, queryCompiler) + this.#queryPlanCache.setSingle(cacheKey, plan) + } + } try { debug(`query plan created`, plan) - // TODO: ORM-508 - Implement query plan caching by replacing all scalar values in the query with params automatically. - const placeholderValues = {} const result = await executor.execute({ plan, model: query.modelName, @@ -493,13 +524,41 @@ export class ClientEngine implements Engine { const firstAction = queries[0].action const firstModelName = queries[0].modelName - const request = getBatchRequestPayload(queries, transaction) + const batchPayload = getBatchRequestPayload(queries, transaction) + const request = JSON.stringify(batchPayload) const { executor, queryCompiler } = await this.#ensureStarted().catch((err) => { - throw this.#transformRequestError(err, JSON.stringify(request)) + throw this.#transformRequestError(err, request) }) - const batchResponse = this.#compileBatch(request, queryCompiler) + const hasRawQueries = firstModelName === undefined + let batchResponse: BatchResponse + let placeholderValues: Record = {} + + if (!hasRawQueries) { + const { parameterizedBatch, placeholderValues: extractedValues } = parameterizeBatch( + batchPayload as JsonBatchQuery, + this.#paramGraph, + ) + const cacheKeyStr = JSON.stringify(parameterizedBatch) + placeholderValues = extractedValues + + const cached = this.#queryPlanCache.getBatch(cacheKeyStr) + if (cached) { + debug('batch query plan cache hit') + batchResponse = cached + } else { + debug('batch query plan cache miss') + try { + batchResponse = this.#compileBatch(parameterizedBatch.batch, cacheKeyStr, queryCompiler) + this.#queryPlanCache.setBatch(cacheKeyStr, batchResponse) + } catch (error) { + throw this.#transformCompileError(error) + } + } + } else { + batchResponse = this.#compileBatch(queries, request, queryCompiler) + } try { let txInfo: InteractiveTransactionInfo | undefined @@ -508,9 +567,6 @@ export class ClientEngine implements Engine { txInfo = transaction.options } - // TODO: ORM-508 - Implement query plan caching by replacing all scalar values in the query with params automatically. - const placeholderValues = {} - switch (batchResponse.type) { case 'multi': { if (transaction?.kind !== 'itx') { @@ -587,12 +643,12 @@ export class ClientEngine implements Engine { }, }) - const results = convertCompactedRows(rows as {}[], batchResponse) + const results = convertCompactedRows(rows as {}[], batchResponse, placeholderValues) return results.map((result) => ({ data: { [firstAction]: result } }) as BatchQueryEngineResult) } } } catch (e: any) { - throw this.#transformRequestError(e, JSON.stringify(request)) + throw this.#transformRequestError(e, request) } } @@ -604,16 +660,12 @@ export class ClientEngine implements Engine { return executor.apiKey() } - #compileQuery(query: JsonQuery, compiler: QueryCompiler): QueryPlanNode { - if (isRawQuery(query)) { - return compileRawQuery(query) - } - + #compileQuery(query: JsonQuery, request: string, compiler: QueryCompiler): QueryPlanNode { try { return this.#withLocalPanicHandler(() => this.#withCompileSpan({ queries: [query], - execute: () => compiler.compile(JSON.stringify(query)) as QueryPlanNode, + execute: () => compiler.compile(request) as QueryPlanNode, }), ) } catch (error) { @@ -621,20 +673,19 @@ export class ClientEngine implements Engine { } } - #compileBatch(request: JsonBatchQuery, compiler: QueryCompiler): BatchResponse { - const allRaw = request.batch.filter(isRawQuery) - if (allRaw.length === request.batch.length) { + #compileBatch(queries: JsonQuery[], request: string, compiler: QueryCompiler): BatchResponse { + if (queries.every(isRawQuery)) { return { type: 'multi', - plans: allRaw.map((q) => compileRawQuery(q)), + plans: queries.map((q) => compileRawQuery(q)), } } try { return this.#withLocalPanicHandler(() => this.#withCompileSpan({ - queries: request.batch, - execute: () => compiler.compileBatch(JSON.stringify(request)), + queries, + execute: () => compiler.compileBatch(request), }), ) } catch (err) { diff --git a/packages/client/src/runtime/core/engines/client/parameterization/classify.test.ts b/packages/client/src/runtime/core/engines/client/parameterization/classify.test.ts new file mode 100644 index 000000000000..d264f27f8dca --- /dev/null +++ b/packages/client/src/runtime/core/engines/client/parameterization/classify.test.ts @@ -0,0 +1,240 @@ +import { classifyValue, isPlainObject, isTaggedValue } from './classify' + +describe('classifyValue', () => { + describe('null values', () => { + it('classifies null as null', () => { + const result = classifyValue(null) + expect(result).toEqual({ kind: 'null' }) + }) + + it('classifies undefined as null', () => { + const result = classifyValue(undefined) + expect(result).toEqual({ kind: 'null' }) + }) + }) + + describe('primitive values', () => { + it('classifies string as primitive', () => { + const result = classifyValue('hello') + expect(result).toEqual({ kind: 'primitive', value: 'hello' }) + }) + + it('classifies empty string as primitive', () => { + const result = classifyValue('') + expect(result).toEqual({ kind: 'primitive', value: '' }) + }) + + it('classifies number as primitive', () => { + const result = classifyValue(42) + expect(result).toEqual({ kind: 'primitive', value: 42 }) + }) + + it('classifies zero as primitive', () => { + const result = classifyValue(0) + expect(result).toEqual({ kind: 'primitive', value: 0 }) + }) + + it('classifies negative number as primitive', () => { + const result = classifyValue(-123) + expect(result).toEqual({ kind: 'primitive', value: -123 }) + }) + + it('classifies float as primitive', () => { + const result = classifyValue(3.14) + expect(result).toEqual({ kind: 'primitive', value: 3.14 }) + }) + + it('classifies true as primitive', () => { + const result = classifyValue(true) + expect(result).toEqual({ kind: 'primitive', value: true }) + }) + + it('classifies false as primitive', () => { + const result = classifyValue(false) + expect(result).toEqual({ kind: 'primitive', value: false }) + }) + }) + + describe('array values', () => { + it('classifies empty array', () => { + const result = classifyValue([]) + expect(result).toEqual({ kind: 'array', items: [] }) + }) + + it('classifies array of primitives', () => { + const result = classifyValue([1, 2, 3]) + expect(result).toEqual({ kind: 'array', items: [1, 2, 3] }) + }) + + it('classifies array of mixed values', () => { + const items = ['a', 1, true, null] + const result = classifyValue(items) + expect(result).toEqual({ kind: 'array', items }) + }) + + it('classifies nested arrays', () => { + const items = [ + [1, 2], + [3, 4], + ] + const result = classifyValue(items) + expect(result).toEqual({ kind: 'array', items }) + }) + }) + + describe('tagged scalar values', () => { + it('classifies DateTime tagged value', () => { + const value = { $type: 'DateTime', value: '2024-01-01T00:00:00.000Z' } + const result = classifyValue(value) + expect(result).toEqual({ kind: 'taggedScalar', tag: 'DateTime', value: '2024-01-01T00:00:00.000Z' }) + }) + + it('classifies Decimal tagged value', () => { + const value = { $type: 'Decimal', value: '123.456' } + const result = classifyValue(value) + expect(result).toEqual({ kind: 'taggedScalar', tag: 'Decimal', value: '123.456' }) + }) + + it('classifies BigInt tagged value', () => { + const value = { $type: 'BigInt', value: '9007199254740993' } + const result = classifyValue(value) + expect(result).toEqual({ kind: 'taggedScalar', tag: 'BigInt', value: '9007199254740993' }) + }) + + it('classifies Bytes tagged value', () => { + const value = { $type: 'Bytes', value: 'SGVsbG8gV29ybGQ=' } + const result = classifyValue(value) + expect(result).toEqual({ kind: 'taggedScalar', tag: 'Bytes', value: 'SGVsbG8gV29ybGQ=' }) + }) + + it('classifies Json tagged value', () => { + const value = { $type: 'Json', value: { key: 'value' } } + const result = classifyValue(value) + expect(result).toEqual({ kind: 'taggedScalar', tag: 'Json', value: { key: 'value' } }) + }) + + it('classifies Raw tagged value', () => { + const value = { $type: 'Raw', value: { $type: 'Json' } } + const result = classifyValue(value) + expect(result).toEqual({ kind: 'taggedScalar', tag: 'Raw', value: { $type: 'Json' } }) + }) + }) + + describe('structural tagged values', () => { + it('classifies FieldRef as structural', () => { + const fieldRefValue = { _ref: 'balance', _container: 'Account' } + const value = { $type: 'FieldRef', value: fieldRefValue } + const result = classifyValue(value) + expect(result).toEqual({ kind: 'structural', value: fieldRefValue }) + }) + + it('classifies Enum as structural', () => { + const value = { $type: 'Enum', value: 'ACTIVE' } + const result = classifyValue(value) + expect(result).toEqual({ kind: 'structural', value: 'ACTIVE' }) + }) + + it('classifies Param as structural', () => { + const value = { $type: 'Param', value: 'query.arguments.where.id' } + const result = classifyValue(value) + expect(result).toEqual({ kind: 'structural', value: 'query.arguments.where.id' }) + }) + }) + + describe('plain object values', () => { + it('classifies empty object', () => { + const result = classifyValue({}) + expect(result).toEqual({ kind: 'object', entries: {} }) + }) + + it('classifies object with primitive values', () => { + const obj = { name: 'John', age: 30 } + const result = classifyValue(obj) + expect(result).toEqual({ kind: 'object', entries: obj }) + }) + + it('classifies nested object', () => { + const obj = { user: { name: 'John' }, active: true } + const result = classifyValue(obj) + expect(result).toEqual({ kind: 'object', entries: obj }) + }) + + it('classifies object with array values', () => { + const obj = { ids: [1, 2, 3] } + const result = classifyValue(obj) + expect(result).toEqual({ kind: 'object', entries: obj }) + }) + }) +}) + +describe('isPlainObject', () => { + it('returns true for empty object', () => { + expect(isPlainObject({})).toBe(true) + }) + + it('returns true for object with properties', () => { + expect(isPlainObject({ a: 1, b: 2 })).toBe(true) + }) + + it('returns false for null', () => { + expect(isPlainObject(null)).toBe(false) + }) + + it('returns false for array', () => { + expect(isPlainObject([1, 2, 3])).toBe(false) + }) + + it('returns false for empty array', () => { + expect(isPlainObject([])).toBe(false) + }) + + it('returns false for tagged value', () => { + expect(isPlainObject({ $type: 'DateTime', value: '2024-01-01' })).toBe(false) + }) + + it('returns false for primitives', () => { + expect(isPlainObject('string')).toBe(false) + expect(isPlainObject(123)).toBe(false) + expect(isPlainObject(true)).toBe(false) + }) + + it('returns false for undefined', () => { + expect(isPlainObject(undefined)).toBe(false) + }) +}) + +describe('isTaggedValue', () => { + it('returns true for valid tagged value', () => { + expect(isTaggedValue({ $type: 'DateTime', value: '2024-01-01' })).toBe(true) + }) + + it('returns true for any string $type', () => { + expect(isTaggedValue({ $type: 'Custom', value: 'test' })).toBe(true) + }) + + it('returns false for object without $type', () => { + expect(isTaggedValue({ value: 'test' })).toBe(false) + }) + + it('returns false for object with non-string $type', () => { + expect(isTaggedValue({ $type: 123, value: 'test' })).toBe(false) + }) + + it('returns false for null', () => { + expect(isTaggedValue(null)).toBe(false) + }) + + it('returns false for array', () => { + expect(isTaggedValue([{ $type: 'Test' }])).toBe(false) + }) + + it('returns false for primitives', () => { + expect(isTaggedValue('string')).toBe(false) + expect(isTaggedValue(123)).toBe(false) + expect(isTaggedValue(true)).toBe(false) + }) + + it('returns false for undefined', () => { + expect(isTaggedValue(undefined)).toBe(false) + }) +}) diff --git a/packages/client/src/runtime/core/engines/client/parameterization/classify.ts b/packages/client/src/runtime/core/engines/client/parameterization/classify.ts new file mode 100644 index 000000000000..b0a4242968fd --- /dev/null +++ b/packages/client/src/runtime/core/engines/client/parameterization/classify.ts @@ -0,0 +1,96 @@ +/** + * Value classification for parameterization. + * + * This module classifies runtime values into categories before applying + * schema rules during parameterization. + */ + +import { JsonInputTaggedValue } from '@prisma/json-protocol' + +/** + * Tagged value types that represent scalar values. + * These can be parameterized when the schema allows. + */ +const SCALAR_TAGS = new Set(['DateTime', 'Decimal', 'BigInt', 'Bytes', 'Json', 'Raw']) + +/** + * Classification result for a runtime value. + * Used to determine how to handle the value during parameterization. + */ +export type ValueClass = + | { kind: 'null' } + | { kind: 'primitive'; value: string | number | boolean } + | { kind: 'taggedScalar'; tag: JsonInputTaggedValue['$type']; value: unknown } + | { kind: 'structural'; value: unknown } + | { kind: 'array'; items: unknown[] } + | { kind: 'object'; entries: Record } + +/** + * Classifies a runtime value for parameterization purposes. + * + * @param value - The value to classify + * @returns The classification result indicating how to handle the value + */ +export function classifyValue(value: unknown): ValueClass { + if (value === null || value === undefined) { + return { kind: 'null' } + } + + if (typeof value === 'string') { + return { kind: 'primitive', value } + } + if (typeof value === 'number') { + return { kind: 'primitive', value } + } + if (typeof value === 'boolean') { + return { kind: 'primitive', value } + } + + if (Array.isArray(value)) { + return { kind: 'array', items: value } + } + + if (typeof value === 'object') { + const obj = value as Record + + if ('$type' in obj && typeof obj.$type === 'string') { + const tag = obj.$type as JsonInputTaggedValue['$type'] + + if (SCALAR_TAGS.has(tag)) { + return { kind: 'taggedScalar', tag, value: obj.value } + } + + // Known structural tags and any unknown $type tags are treated as structural + // to avoid parameterizing tagged payloads that we don't understand. + return { kind: 'structural', value: obj.value } + } + + return { kind: 'object', entries: obj } + } + + return { kind: 'structural', value } +} + +/** + * Checks if a value is a plain object (not a tagged value or array). + */ +export function isPlainObject(value: unknown): value is Record { + return ( + typeof value === 'object' && + value !== null && + !Array.isArray(value) && + !('$type' in (value as Record)) + ) +} + +/** + * Checks if a value is a tagged value with a $type property. + */ +export function isTaggedValue(value: unknown): value is { $type: string; value: unknown } { + return ( + typeof value === 'object' && + value !== null && + '$type' in value && + typeof (value as { $type: unknown }).$type === 'string' + ) +} diff --git a/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/batch.test.ts b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/batch.test.ts new file mode 100644 index 000000000000..f0d3711327d4 --- /dev/null +++ b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/batch.test.ts @@ -0,0 +1,413 @@ +import type { JsonBatchQuery } from '@prisma/json-protocol' +import type { ParamGraph } from '@prisma/param-graph' + +import { parameterizeBatch } from '../parameterize' +import { getParamGraph } from './test-fixtures' + +let paramGraph: ParamGraph + +beforeAll(async () => { + paramGraph = await getParamGraph() +}) + +describe('parameterizeBatch', () => { + it('parameterizes all queries in a batch with unique placeholder names', () => { + const batch: JsonBatchQuery = { + batch: [ + { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { id: 1 } }, + selection: { $scalars: true }, + }, + }, + { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { id: 2 } }, + selection: { $scalars: true }, + }, + }, + ], + } + + const result = parameterizeBatch(batch, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedBatch": { + "batch": [ + { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "id": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Int", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "id": { + "$type": "Param", + "value": { + "name": "%2", + "type": "Int", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + ], + }, + "placeholderValues": { + "%1": 1, + "%2": 2, + }, + } + `) + }) + + it('preserves transaction info', () => { + const batch: JsonBatchQuery = { + batch: [ + { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { id: 1 } }, + selection: { $scalars: true }, + }, + }, + ], + transaction: { isolationLevel: 'Serializable' }, + } + + const result = parameterizeBatch(batch, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedBatch": { + "batch": [ + { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "id": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Int", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + ], + "transaction": { + "isolationLevel": "Serializable", + }, + }, + "placeholderValues": { + "%1": 1, + }, + } + `) + }) + + it('generates consistent cache keys for batches with same structure', () => { + const batch1: JsonBatchQuery = { + batch: [ + { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { id: 1 } }, + selection: { $scalars: true }, + }, + }, + { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { id: 2 } }, + selection: { $scalars: true }, + }, + }, + ], + } + + const batch2: JsonBatchQuery = { + batch: [ + { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { id: 100 } }, + selection: { $scalars: true }, + }, + }, + { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { id: 200 } }, + selection: { $scalars: true }, + }, + }, + ], + } + + const result1 = parameterizeBatch(batch1, paramGraph) + const result2 = parameterizeBatch(batch2, paramGraph) + + expect(result1).toMatchInlineSnapshot(` + { + "parameterizedBatch": { + "batch": [ + { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "id": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Int", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "id": { + "$type": "Param", + "value": { + "name": "%2", + "type": "Int", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + ], + }, + "placeholderValues": { + "%1": 1, + "%2": 2, + }, + } + `) + + expect(result2).toMatchInlineSnapshot(` + { + "parameterizedBatch": { + "batch": [ + { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "id": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Int", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "id": { + "$type": "Param", + "value": { + "name": "%2", + "type": "Int", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + ], + }, + "placeholderValues": { + "%1": 100, + "%2": 200, + }, + } + `) + + expect(JSON.stringify(result1.parameterizedBatch)).toBe(JSON.stringify(result2.parameterizedBatch)) + }) + + it('generates different cache keys for batches with different structures', () => { + const batch1: JsonBatchQuery = { + batch: [ + { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { id: 1 } }, + selection: { $scalars: true }, + }, + }, + ], + } + + const batch2: JsonBatchQuery = { + batch: [ + { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { email: 'test@example.com' } }, + selection: { $scalars: true }, + }, + }, + ], + } + + const result1 = parameterizeBatch(batch1, paramGraph) + const result2 = parameterizeBatch(batch2, paramGraph) + + expect(result1).toMatchInlineSnapshot(` + { + "parameterizedBatch": { + "batch": [ + { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "id": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Int", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + ], + }, + "placeholderValues": { + "%1": 1, + }, + } + `) + + expect(result2).toMatchInlineSnapshot(` + { + "parameterizedBatch": { + "batch": [ + { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "email": { + "$type": "Param", + "value": { + "name": "%1", + "type": "String", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + ], + }, + "placeholderValues": { + "%1": "test@example.com", + }, + } + `) + + expect(JSON.stringify(result1.parameterizedBatch)).not.toBe(JSON.stringify(result2.parameterizedBatch)) + }) + + it('handles empty batch', () => { + const batch: JsonBatchQuery = { + batch: [], + } + + const result = parameterizeBatch(batch, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedBatch": { + "batch": [], + }, + "placeholderValues": {}, + } + `) + }) +}) diff --git a/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/cache-key.test.ts b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/cache-key.test.ts new file mode 100644 index 000000000000..dc2cf302773e --- /dev/null +++ b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/cache-key.test.ts @@ -0,0 +1,175 @@ +import type { JsonQuery } from '@prisma/json-protocol' +import type { ParamGraph } from '@prisma/param-graph' + +import { parameterizeQuery } from '../parameterize' +import { getParamGraph } from './test-fixtures' + +let paramGraph: ParamGraph + +beforeAll(async () => { + paramGraph = await getParamGraph() +}) + +describe('parameterizeQuery cache key consistency', () => { + it('generates same cache key for same query structure', () => { + const query1: JsonQuery = { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { id: 1 } }, + selection: { $scalars: true }, + }, + } + + const query2: JsonQuery = { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { id: 999 } }, + selection: { $scalars: true }, + }, + } + + const result1 = parameterizeQuery(query1, paramGraph) + const result2 = parameterizeQuery(query2, paramGraph) + + expect(result1).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "id": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Int", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": 1, + }, + } + `) + + expect(result2).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "id": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Int", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": 999, + }, + } + `) + + expect(result1.parameterizedQuery).toEqual(result2.parameterizedQuery) + }) + + it('generates different cache key for different query structure', () => { + const query1: JsonQuery = { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { id: 1 } }, + selection: { $scalars: true }, + }, + } + + const query2: JsonQuery = { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { email: 'test@example.com' } }, + selection: { $scalars: true }, + }, + } + + const result1 = parameterizeQuery(query1, paramGraph) + const result2 = parameterizeQuery(query2, paramGraph) + + expect(result1).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "id": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Int", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": 1, + }, + } + `) + + expect(result2).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "email": { + "$type": "Param", + "value": { + "name": "%1", + "type": "String", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": "test@example.com", + }, + } + `) + + expect(result1.parameterizedQuery).not.toEqual(result2.parameterizedQuery) + }) +}) diff --git a/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/filter-operators.test.ts b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/filter-operators.test.ts new file mode 100644 index 000000000000..1b065717574c --- /dev/null +++ b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/filter-operators.test.ts @@ -0,0 +1,246 @@ +import type { JsonQuery } from '@prisma/json-protocol' +import type { ParamGraph } from '@prisma/param-graph' + +import { parameterizeQuery } from '../parameterize' +import { getParamGraph } from './test-fixtures' + +let paramGraph: ParamGraph + +beforeAll(async () => { + paramGraph = await getParamGraph() +}) + +describe('parameterizeQuery filter operators', () => { + it('parameterizes equals filter', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { age: { equals: 25 } } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "age": { + "equals": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Int", + }, + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": 25, + }, + } + `) + }) + + it('parameterizes in filter with array', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { id: { in: [1, 2, 3] } } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findMany", + "modelName": "User", + "query": { + "arguments": { + "where": { + "id": { + "in": { + "$type": "Param", + "value": { + "inner": { + "type": "Int", + }, + "name": "%1", + "type": "List", + }, + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": [ + 1, + 2, + 3, + ], + }, + } + `) + }) + + it('parameterizes comparison operators (lt, lte, gt, gte)', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { + where: { + age: { gte: 18, lte: 65 }, + salary: { gt: 50000, lt: 100000 }, + }, + }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findMany", + "modelName": "User", + "query": { + "arguments": { + "where": { + "age": { + "gte": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Int", + }, + }, + "lte": { + "$type": "Param", + "value": { + "name": "%2", + "type": "Int", + }, + }, + }, + "salary": { + "gt": { + "$type": "Param", + "value": { + "name": "%3", + "type": "Int", + }, + }, + "lt": { + "$type": "Param", + "value": { + "name": "%4", + "type": "Int", + }, + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": 18, + "%2": 65, + "%3": 50000, + "%4": 100000, + }, + } + `) + }) + + it('parameterizes string operators (contains, startsWith, endsWith)', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { + where: { + name: { contains: 'John' }, + email: { startsWith: 'admin', endsWith: '.com' }, + }, + }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findMany", + "modelName": "User", + "query": { + "arguments": { + "where": { + "email": { + "endsWith": { + "$type": "Param", + "value": { + "name": "%3", + "type": "String", + }, + }, + "startsWith": { + "$type": "Param", + "value": { + "name": "%2", + "type": "String", + }, + }, + }, + "name": { + "contains": { + "$type": "Param", + "value": { + "name": "%1", + "type": "String", + }, + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": "John", + "%2": "admin", + "%3": ".com", + }, + } + `) + }) +}) diff --git a/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/nested-queries.test.ts b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/nested-queries.test.ts new file mode 100644 index 000000000000..7bc4974cc895 --- /dev/null +++ b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/nested-queries.test.ts @@ -0,0 +1,143 @@ +import type { JsonQuery } from '@prisma/json-protocol' +import type { ParamGraph } from '@prisma/param-graph' + +import { parameterizeQuery } from '../parameterize' +import { getParamGraph } from './test-fixtures' + +let paramGraph: ParamGraph + +beforeAll(async () => { + paramGraph = await getParamGraph() +}) + +describe('parameterizeQuery nested queries', () => { + it('parameterizes relation filter values', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { + where: { + author: { + name: { contains: 'Smith' }, + }, + }, + }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findMany", + "modelName": "User", + "query": { + "arguments": { + "where": { + "author": { + "name": { + "contains": { + "$type": "Param", + "value": { + "name": "%1", + "type": "String", + }, + }, + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": "Smith", + }, + } + `) + }) + + it('parameterizes nested data in create', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'createOne', + query: { + arguments: { + data: { + name: 'John', + email: 'john@example.com', + posts: { + create: [{ title: 'Hello', content: 'World' }], + }, + }, + }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "createOne", + "modelName": "User", + "query": { + "arguments": { + "data": { + "email": { + "$type": "Param", + "value": { + "name": "%2", + "type": "String", + }, + }, + "name": { + "$type": "Param", + "value": { + "name": "%1", + "type": "String", + }, + }, + "posts": { + "create": [ + { + "content": { + "$type": "Param", + "value": { + "name": "%4", + "type": "String", + }, + }, + "title": { + "$type": "Param", + "value": { + "name": "%3", + "type": "String", + }, + }, + }, + ], + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": "John", + "%2": "john@example.com", + "%3": "Hello", + "%4": "World", + }, + } + `) + }) +}) diff --git a/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/placeholder-naming.test.ts b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/placeholder-naming.test.ts new file mode 100644 index 000000000000..5e453245e386 --- /dev/null +++ b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/placeholder-naming.test.ts @@ -0,0 +1,201 @@ +import type { JsonQuery } from '@prisma/json-protocol' +import type { ParamGraph } from '@prisma/param-graph' + +import { parameterizeQuery } from '../parameterize' +import { getParamGraph } from './test-fixtures' + +let paramGraph: ParamGraph + +beforeAll(async () => { + paramGraph = await getParamGraph() +}) + +describe('parameterizeQuery placeholder naming', () => { + it('generates deterministic names for same structure', () => { + const query1: JsonQuery = { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { id: 1 } }, + selection: { $scalars: true }, + }, + } + + const query2: JsonQuery = { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { id: 2 } }, + selection: { $scalars: true }, + }, + } + + const result1 = parameterizeQuery(query1, paramGraph) + const result2 = parameterizeQuery(query2, paramGraph) + + expect(result1).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "id": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Int", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": 1, + }, + } + `) + + expect(result2).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "id": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Int", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": 2, + }, + } + `) + }) + + it('generates unique names for different values', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { + where: { + id: { in: [1, 2, 3] }, + }, + }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findMany", + "modelName": "User", + "query": { + "arguments": { + "where": { + "id": { + "in": { + "$type": "Param", + "value": { + "inner": { + "type": "Int", + }, + "name": "%1", + "type": "List", + }, + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": [ + 1, + 2, + 3, + ], + }, + } + `) + }) + + it('handles deeply nested paths', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { + where: { + author: { + profile: { + bio: { contains: 'developer' }, + }, + }, + }, + }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findMany", + "modelName": "User", + "query": { + "arguments": { + "where": { + "author": { + "profile": { + "bio": { + "contains": { + "$type": "Param", + "value": { + "name": "%1", + "type": "String", + }, + }, + }, + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": "developer", + }, + } + `) + }) +}) diff --git a/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/placeholder-reuse.test.ts b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/placeholder-reuse.test.ts new file mode 100644 index 000000000000..7cfed2a6b3e2 --- /dev/null +++ b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/placeholder-reuse.test.ts @@ -0,0 +1,417 @@ +import type { JsonQuery } from '@prisma/json-protocol' +import type { ParamGraph } from '@prisma/param-graph' + +import { parameterizeQuery } from '../parameterize' +import { getParamGraph } from './test-fixtures' + +let paramGraph: ParamGraph + +beforeAll(async () => { + paramGraph = await getParamGraph() +}) + +describe('parameterizeQuery placeholder reuse', () => { + it('reuses placeholder for identical string values at different paths', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'upsertOne', + query: { + arguments: { + where: { email: 'test@example.com' }, + create: { email: 'test@example.com' }, + update: {}, + }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "upsertOne", + "modelName": "User", + "query": { + "arguments": { + "create": { + "email": { + "$type": "Param", + "value": { + "name": "%1", + "type": "String", + }, + }, + }, + "update": {}, + "where": { + "email": { + "$type": "Param", + "value": { + "name": "%1", + "type": "String", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": "test@example.com", + }, + } + `) + }) + + it('reuses placeholder for identical Int values at different paths', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { + where: { + age: 42, + id: 42, + }, + }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findMany", + "modelName": "User", + "query": { + "arguments": { + "where": { + "age": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Int", + }, + }, + "id": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Int", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": 42, + }, + } + `) + }) + + it('reuses placeholder for identical DateTime tagged values', () => { + const dateValue = { $type: 'DateTime' as const, value: '2024-01-01T00:00:00.000Z' } + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { + where: { + createdAt: { gte: dateValue, lte: dateValue }, + }, + }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findMany", + "modelName": "User", + "query": { + "arguments": { + "where": { + "createdAt": { + "gte": { + "$type": "Param", + "value": { + "name": "%1", + "type": "DateTime", + }, + }, + "lte": { + "$type": "Param", + "value": { + "name": "%1", + "type": "DateTime", + }, + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": "2024-01-01T00:00:00.000Z", + }, + } + `) + }) + + it('reuses placeholder for identical Bytes tagged values', () => { + const bytesValue = { $type: 'Bytes' as const, value: 'SGVsbG8gV29ybGQ=' } + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { + where: { + avatar: { equals: bytesValue, not: bytesValue }, + }, + }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findMany", + "modelName": "User", + "query": { + "arguments": { + "where": { + "avatar": { + "equals": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Bytes", + }, + }, + "not": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Bytes", + }, + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": "SGVsbG8gV29ybGQ=", + }, + } + `) + }) + + it('reuses placeholder for identical array values', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { + where: { + OR: [{ id: { in: [1, 2, 3] } }, { age: { in: [1, 2, 3] } }], + }, + }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findMany", + "modelName": "User", + "query": { + "arguments": { + "where": { + "OR": [ + { + "id": { + "in": { + "$type": "Param", + "value": { + "inner": { + "type": "Int", + }, + "name": "%1", + "type": "List", + }, + }, + }, + }, + { + "age": { + "in": { + "$type": "Param", + "value": { + "inner": { + "type": "Int", + }, + "name": "%1", + "type": "List", + }, + }, + }, + }, + ], + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": [ + 1, + 2, + 3, + ], + }, + } + `) + }) + + it('reuses placeholder for enum values', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { + where: { + OR: [{ status: 'ACTIVE' }, { status: 'ACTIVE' }], + }, + }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findMany", + "modelName": "User", + "query": { + "arguments": { + "where": { + "OR": [ + { + "status": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Enum", + }, + }, + }, + { + "status": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Enum", + }, + }, + }, + ], + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": "ACTIVE", + }, + } + `) + }) + + it('does not share placeholders between different string values', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'upsertOne', + query: { + arguments: { + where: { email: 'alice@example.com' }, + create: { email: 'bob@example.com' }, + update: {}, + }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "upsertOne", + "modelName": "User", + "query": { + "arguments": { + "create": { + "email": { + "$type": "Param", + "value": { + "name": "%2", + "type": "String", + }, + }, + }, + "update": {}, + "where": { + "email": { + "$type": "Param", + "value": { + "name": "%1", + "type": "String", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": "alice@example.com", + "%2": "bob@example.com", + }, + } + `) + }) +}) diff --git a/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/scalar-values.test.ts b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/scalar-values.test.ts new file mode 100644 index 000000000000..6b64baf9775a --- /dev/null +++ b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/scalar-values.test.ts @@ -0,0 +1,169 @@ +import type { JsonQuery } from '@prisma/json-protocol' +import type { ParamGraph } from '@prisma/param-graph' + +import { parameterizeQuery } from '../parameterize' +import { getParamGraph } from './test-fixtures' + +let paramGraph: ParamGraph + +beforeAll(async () => { + paramGraph = await getParamGraph() +}) + +describe('parameterizeQuery scalar values', () => { + it('parameterizes string values', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { email: 'test@example.com' } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "email": { + "$type": "Param", + "value": { + "name": "%1", + "type": "String", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": "test@example.com", + }, + } + `) + }) + + it('parameterizes number values', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { id: 42 } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "id": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Int", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": 42, + }, + } + `) + }) + + it('preserves null values', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { deletedAt: null } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "deletedAt": null, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": {}, + } + `) + }) + + it('parameterizes boolean values in where clauses', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { isActive: true } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "isActive": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Boolean", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": true, + }, + } + `) + }) +}) diff --git a/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/structural-values.test.ts b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/structural-values.test.ts new file mode 100644 index 000000000000..0474f30d3ed1 --- /dev/null +++ b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/structural-values.test.ts @@ -0,0 +1,267 @@ +import type { JsonQuery } from '@prisma/json-protocol' +import type { ParamGraph } from '@prisma/param-graph' + +import { parameterizeQuery } from '../parameterize' +import { getParamGraph } from './test-fixtures' + +let paramGraph: ParamGraph + +beforeAll(async () => { + paramGraph = await getParamGraph() +}) + +describe('parameterizeQuery structural values', () => { + describe('top-level structural keys', () => { + it('preserves modelName and action', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { id: 1 } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "id": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Int", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": 1, + }, + } + `) + }) + }) + + it('preserves selection booleans', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { id: 1 } }, + selection: { + id: true, + name: true, + email: false, + }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "id": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Int", + }, + }, + }, + }, + "selection": { + "email": false, + "id": true, + "name": true, + }, + }, + }, + "placeholderValues": { + "%1": 1, + }, + } + `) + }) + + it('preserves $scalars and $composites markers', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findUnique', + query: { + arguments: { where: { id: 1 } }, + selection: { + $scalars: true, + $composites: true, + }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findUnique", + "modelName": "User", + "query": { + "arguments": { + "where": { + "id": { + "$type": "Param", + "value": { + "name": "%1", + "type": "Int", + }, + }, + }, + }, + "selection": { + "$composites": true, + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": 1, + }, + } + `) + }) + + it('preserves orderBy directions', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { + orderBy: { name: 'asc', createdAt: 'desc' }, + }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findMany", + "modelName": "User", + "query": { + "arguments": { + "orderBy": { + "createdAt": "desc", + "name": "asc", + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": {}, + } + `) + }) + + it('preserves take and skip values', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { + take: 10, + skip: 5, + }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findMany", + "modelName": "User", + "query": { + "arguments": { + "skip": 5, + "take": 10, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": {}, + } + `) + }) + + it('preserves mode flag', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { + where: { + name: { contains: 'test', mode: 'insensitive' }, + }, + }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findMany", + "modelName": "User", + "query": { + "arguments": { + "where": { + "name": { + "contains": { + "$type": "Param", + "value": { + "name": "%1", + "type": "String", + }, + }, + "mode": "insensitive", + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": "test", + }, + } + `) + }) +}) diff --git a/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/tagged-values.test.ts b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/tagged-values.test.ts new file mode 100644 index 000000000000..69d8aba7f0ae --- /dev/null +++ b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/tagged-values.test.ts @@ -0,0 +1,103 @@ +import type { JsonQuery } from '@prisma/json-protocol' +import type { ParamGraph } from '@prisma/param-graph' + +import { parameterizeQuery } from '../parameterize' +import { getParamGraph } from './test-fixtures' + +let paramGraph: ParamGraph + +beforeAll(async () => { + paramGraph = await getParamGraph() +}) + +describe('parameterizeQuery tagged values', () => { + it('parameterizes DateTime tagged values', () => { + const dateValue = { $type: 'DateTime' as const, value: '2024-01-01T00:00:00.000Z' } + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { + where: { createdAt: dateValue }, + }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findMany", + "modelName": "User", + "query": { + "arguments": { + "where": { + "createdAt": { + "$type": "Param", + "value": { + "name": "%1", + "type": "DateTime", + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": { + "%1": "2024-01-01T00:00:00.000Z", + }, + } + `) + }) + + it('preserves FieldRef tagged values', () => { + const fieldRef = { $type: 'FieldRef' as const, value: { _ref: 'balance', _container: 'User' } } + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { + where: { + balance: { gt: fieldRef }, + }, + }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result).toMatchInlineSnapshot(` + { + "parameterizedQuery": { + "action": "findMany", + "modelName": "User", + "query": { + "arguments": { + "where": { + "balance": { + "gt": { + "$type": "FieldRef", + "value": { + "_container": "User", + "_ref": "balance", + }, + }, + }, + }, + }, + "selection": { + "$scalars": true, + }, + }, + }, + "placeholderValues": {}, + } + `) + }) +}) diff --git a/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/test-fixtures.ts b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/test-fixtures.ts new file mode 100644 index 000000000000..71db50042983 --- /dev/null +++ b/packages/client/src/runtime/core/engines/client/parameterization/parameterize-tests/test-fixtures.ts @@ -0,0 +1,90 @@ +import type { RuntimeDataModel } from '@prisma/client-common' +import { getDMMF } from '@prisma/client-generator-js' +import { ParamGraph } from '@prisma/param-graph' +import { buildAndSerializeParamGraph } from '@prisma/param-graph-builder' + +/** + * Prisma schema that simulates a User model with common fields and filters, + * along with related Post and Profile models. + */ +const testSchema = /* prisma */ ` + datasource db { + provider = "postgresql" + } + + enum Status { + ACTIVE + INACTIVE + } + + model User { + id Int @id @default(autoincrement()) + email String @unique + name String? + age Int? + salary Float? + isActive Boolean @default(true) + deletedAt DateTime? + createdAt DateTime @default(now()) + balance Decimal? + status Status @default(ACTIVE) + avatar Bytes? + + posts Post[] + profile Profile? + + // Self-relation for testing nested relation filters (author field in tests) + authorId Int? + author User? @relation("UserAuthor", fields: [authorId], references: [id]) + authored User[] @relation("UserAuthor") + } + + model Post { + id Int @id @default(autoincrement()) + title String + content String? + userId Int + user User @relation(fields: [userId], references: [id]) + createdAt DateTime @default(now()) + } + + model Profile { + id Int @id @default(autoincrement()) + bio String? + userId Int @unique + user User @relation(fields: [userId], references: [id]) + } +` + +export const testRuntimeDataModel: RuntimeDataModel = { + models: {}, + enums: { + Status: { + values: [ + { name: 'ACTIVE', dbName: null }, + { name: 'INACTIVE', dbName: null }, + ], + dbName: null, + }, + }, + types: {}, +} + +let cached: ParamGraph | undefined + +/** + * Returns the ParamGraph for the test schema, building it on first call. + */ +export async function getParamGraph(): Promise { + if (cached) { + return cached + } + + const dmmf = await getDMMF({ datamodel: testSchema }) + const serialized = buildAndSerializeParamGraph(dmmf) + cached = ParamGraph.deserialize(serialized, (enumName) => { + const enumDef = testRuntimeDataModel.enums[enumName] + return enumDef?.values.map((v) => v.name) + }) + return cached +} diff --git a/packages/client/src/runtime/core/engines/client/parameterization/parameterize.test.ts b/packages/client/src/runtime/core/engines/client/parameterization/parameterize.test.ts new file mode 100644 index 000000000000..88ee997a549a --- /dev/null +++ b/packages/client/src/runtime/core/engines/client/parameterization/parameterize.test.ts @@ -0,0 +1,669 @@ +import type { RuntimeDataModel } from '@prisma/client-common' +import type { JsonQuery } from '@prisma/json-protocol' +import type { ParamGraphData } from '@prisma/param-graph' +import { EdgeFlag, ParamGraph, ScalarMask } from '@prisma/param-graph' + +import { parameterizeBatch, parameterizeQuery } from './parameterize' + +function createEnumLookup(runtimeDataModel: RuntimeDataModel) { + return (enumName: string): readonly string[] | undefined => { + const enumDef = runtimeDataModel.enums[enumName] + return enumDef?.values.map((v) => v.name) + } +} + +describe('parameterizeQuery', () => { + // Sample ParamGraph simulating a User model with common fields + const sampleGraphData: ParamGraphData = { + strings: [ + 'where', + 'id', + 'email', + 'name', + 'equals', + 'contains', + 'in', + 'data', + 'selection', + 'posts', + 'title', + 'status', + 'Status', + 'createdAt', + ], + inputNodes: [ + // Node 0: UserWhereInput + { + edges: { + 1: { flags: EdgeFlag.ParamScalar | EdgeFlag.Object, scalarMask: ScalarMask.String, childNodeId: 1 }, // id + 2: { flags: EdgeFlag.ParamScalar | EdgeFlag.Object, scalarMask: ScalarMask.String, childNodeId: 1 }, // email + 3: { flags: EdgeFlag.ParamScalar, scalarMask: ScalarMask.String }, // name + 11: { flags: EdgeFlag.ParamEnum, enumNameIndex: 12 }, // status (enum) + 13: { flags: EdgeFlag.ParamScalar, scalarMask: ScalarMask.DateTime }, // createdAt + }, + }, + // Node 1: StringFilter + { + edges: { + 4: { flags: EdgeFlag.ParamScalar, scalarMask: ScalarMask.String }, // equals + 5: { flags: EdgeFlag.ParamScalar, scalarMask: ScalarMask.String }, // contains + 6: { flags: EdgeFlag.ParamListScalar, scalarMask: ScalarMask.String }, // in + }, + }, + // Node 2: FindManyUserArgs + { + edges: { + 0: { flags: EdgeFlag.Object, childNodeId: 0 }, // where + }, + }, + // Node 3: UserCreateInput + { + edges: { + 1: { flags: EdgeFlag.ParamScalar, scalarMask: ScalarMask.String }, // id + 2: { flags: EdgeFlag.ParamScalar, scalarMask: ScalarMask.String }, // email + 3: { flags: EdgeFlag.ParamScalar, scalarMask: ScalarMask.String }, // name + }, + }, + // Node 4: CreateUserArgs + { + edges: { + 7: { flags: EdgeFlag.Object, childNodeId: 3 }, // data + }, + }, + ], + outputNodes: [ + // Node 0: UserOutput + { + edges: { + 9: { argsNodeId: 5, outputNodeId: 1 }, // posts + }, + }, + // Node 1: PostOutput + { edges: {} }, + ], + roots: { + 'User.findMany': { argsNodeId: 2, outputNodeId: 0 }, + 'User.findUnique': { argsNodeId: 2, outputNodeId: 0 }, + 'User.createOne': { argsNodeId: 4, outputNodeId: 0 }, + }, + } + + const sampleRuntimeDataModel: RuntimeDataModel = { + models: {}, + enums: { + Status: { + values: [ + { name: 'ACTIVE', dbName: null }, + { name: 'INACTIVE', dbName: null }, + ], + dbName: null, + }, + }, + types: {}, + } + + const paramGraph = ParamGraph.fromData(sampleGraphData, createEnumLookup(sampleRuntimeDataModel)) + + describe('basic parameterization', () => { + it('parameterizes scalar values in where clause', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { name: 'John' } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result.placeholderValues).toEqual({ + '%1': 'John', + }) + expect(result.parameterizedQuery.query.arguments).toEqual({ + where: { name: { $type: 'Param', value: { name: '%1', type: 'String' } } }, + }) + }) + + it('parameterizes multiple fields', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { id: '123', email: 'test@example.com' } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result.placeholderValues).toEqual({ + '%1': '123', + '%2': 'test@example.com', + }) + expect(Object.keys(result.placeholderValues).length).toBe(2) + }) + }) + + describe('filter operators', () => { + it('parameterizes equals filter', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { id: { equals: 'abc' } } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result.placeholderValues).toEqual({ + '%1': 'abc', + }) + }) + + it('parameterizes contains filter', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { email: { contains: 'example' } } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result.placeholderValues).toEqual({ + '%1': 'example', + }) + }) + + it('parameterizes in filter as whole list', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { id: { in: ['a', 'b', 'c'] } } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result.placeholderValues).toEqual({ + '%1': ['a', 'b', 'c'], + }) + }) + }) + + describe('null handling', () => { + it('preserves null values (never parameterizes)', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { name: null } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result.placeholderValues).toEqual({}) + expect(result.parameterizedQuery.query.arguments).toEqual({ + where: { name: null }, + }) + }) + }) + + describe('structural values', () => { + it('preserves FieldRef values', () => { + const fieldRef = { $type: 'FieldRef' as const, value: { _ref: 'balance', _container: 'User' } } + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { id: { equals: fieldRef } } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result.placeholderValues).toEqual({}) + expect(result.parameterizedQuery.query.arguments).toEqual({ + where: { id: { equals: fieldRef } }, + }) + }) + + it('preserves Enum tagged values', () => { + const enumValue = { $type: 'Enum' as const, value: 'ACTIVE' } + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { status: enumValue } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result.placeholderValues).toEqual({}) + expect(result.parameterizedQuery.query.arguments).toEqual({ + where: { status: enumValue }, + }) + }) + }) + + describe('tagged scalar values', () => { + it('parameterizes DateTime tagged values', () => { + const dateValue = { $type: 'DateTime' as const, value: '2024-01-01T00:00:00.000Z' } + + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { createdAt: dateValue } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result.placeholderValues['%1']).toBe('2024-01-01T00:00:00.000Z') + }) + }) + + describe('enum membership validation', () => { + it('parameterizes valid enum values', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { status: 'ACTIVE' } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result.placeholderValues).toEqual({ + '%1': 'ACTIVE', + }) + }) + + it('does not parameterize invalid enum values', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { status: 'INVALID_STATUS' } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result.placeholderValues).toEqual({}) + expect(result.parameterizedQuery.query.arguments).toEqual({ + where: { status: 'INVALID_STATUS' }, + }) + }) + }) + + describe('selection preservation', () => { + it('preserves $scalars marker', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { id: '123' } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result.parameterizedQuery.query.selection).toEqual({ $scalars: true }) + }) + + it('preserves $composites marker', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { id: '123' } }, + selection: { $scalars: true, $composites: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result.parameterizedQuery.query.selection).toEqual({ $scalars: true, $composites: true }) + }) + + it('preserves boolean field selections', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { id: '123' } }, + selection: { id: true, email: true, name: false }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result.parameterizedQuery.query.selection).toEqual({ + id: true, + email: true, + name: false, + }) + }) + }) + + describe('unknown fields', () => { + it('preserves unknown fields without parameterization', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { unknownField: 'value' } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + // Unknown field should be preserved as-is + expect(result.parameterizedQuery.query.arguments).toEqual({ + where: { unknownField: 'value' }, + }) + expect(result.placeholderValues).toEqual({}) + }) + }) + + describe('create operations', () => { + it('parameterizes data in create operations', () => { + const query: JsonQuery = { + modelName: 'User', + action: 'createOne', + query: { + arguments: { data: { id: '123', email: 'test@example.com', name: 'John' } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + expect(result.placeholderValues).toEqual({ + '%1': '123', + '%2': 'test@example.com', + '%3': 'John', + }) + }) + }) + + describe('cache key consistency', () => { + it('generates same parameterized query for different values with same structure', () => { + const query1: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { id: '123' } }, + selection: { $scalars: true }, + }, + } + + const query2: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { id: '456' } }, + selection: { $scalars: true }, + }, + } + + const result1 = parameterizeQuery(query1, paramGraph) + const result2 = parameterizeQuery(query2, paramGraph) + + const cacheKey1 = JSON.stringify(result1.parameterizedQuery) + const cacheKey2 = JSON.stringify(result2.parameterizedQuery) + + expect(cacheKey1).toBe(cacheKey2) + }) + + it('generates different parameterized query for different structures', () => { + const query1: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { id: '123' } }, + selection: { $scalars: true }, + }, + } + + const query2: JsonQuery = { + modelName: 'User', + action: 'findMany', + query: { + arguments: { where: { email: 'test@example.com' } }, + selection: { $scalars: true }, + }, + } + + const result1 = parameterizeQuery(query1, paramGraph) + const result2 = parameterizeQuery(query2, paramGraph) + + const cacheKey1 = JSON.stringify(result1.parameterizedQuery) + const cacheKey2 = JSON.stringify(result2.parameterizedQuery) + + expect(cacheKey1).not.toBe(cacheKey2) + }) + }) + + describe('unknown root operations', () => { + it('returns query unchanged when root is not found', () => { + const query: JsonQuery = { + modelName: 'UnknownModel', + action: 'findMany', + query: { + arguments: { where: { id: '123' } }, + selection: { $scalars: true }, + }, + } + + const result = parameterizeQuery(query, paramGraph) + + // Query should be unchanged (no parameterization possible) + expect(result.parameterizedQuery.query.arguments).toEqual({ + where: { id: '123' }, + }) + expect(result.placeholderValues).toEqual({}) + }) + }) +}) + +describe('parameterizeBatch', () => { + const sampleGraphData: ParamGraphData = { + strings: ['where', 'id', 'email'], + inputNodes: [ + // Node 0: UserWhereInput + { + edges: { + 1: { flags: EdgeFlag.ParamScalar, scalarMask: ScalarMask.String }, // id + 2: { flags: EdgeFlag.ParamScalar, scalarMask: ScalarMask.String }, // email + }, + }, + // Node 1: FindUserArgs + { + edges: { + 0: { flags: EdgeFlag.Object, childNodeId: 0 }, // where + }, + }, + ], + outputNodes: [], + roots: { + 'User.findUnique': { argsNodeId: 1 }, + 'User.findMany': { argsNodeId: 1 }, + }, + } + + const sampleRuntimeDataModel: RuntimeDataModel = { + models: {}, + enums: {}, + types: {}, + } + + const paramGraph = ParamGraph.fromData(sampleGraphData, createEnumLookup(sampleRuntimeDataModel)) + + it('parameterizes all queries in a batch with unique placeholder names', () => { + const batch = { + batch: [ + { + modelName: 'User', + action: 'findUnique' as const, + query: { + arguments: { where: { id: '123' } }, + selection: { $scalars: true }, + }, + }, + { + modelName: 'User', + action: 'findUnique' as const, + query: { + arguments: { where: { id: '456' } }, + selection: { $scalars: true }, + }, + }, + ], + } + + const result = parameterizeBatch(batch, paramGraph) + + expect(result.placeholderValues).toEqual({ + '%1': '123', + '%2': '456', + }) + }) + + it('preserves transaction info', () => { + const batch = { + batch: [ + { + modelName: 'User', + action: 'findUnique' as const, + query: { + arguments: { where: { id: '123' } }, + selection: { $scalars: true }, + }, + }, + ], + transaction: { isolationLevel: 'Serializable' as const }, + } + + const result = parameterizeBatch(batch, paramGraph) + + expect(result.parameterizedBatch.transaction).toEqual({ isolationLevel: 'Serializable' }) + }) + + it('generates consistent cache keys for batches with same structure', () => { + const batch1 = { + batch: [ + { + modelName: 'User', + action: 'findUnique' as const, + query: { + arguments: { where: { id: '123' } }, + selection: { $scalars: true }, + }, + }, + { + modelName: 'User', + action: 'findUnique' as const, + query: { + arguments: { where: { id: '456' } }, + selection: { $scalars: true }, + }, + }, + ], + } + + const batch2 = { + batch: [ + { + modelName: 'User', + action: 'findUnique' as const, + query: { + arguments: { where: { id: 'abc' } }, + selection: { $scalars: true }, + }, + }, + { + modelName: 'User', + action: 'findUnique' as const, + query: { + arguments: { where: { id: 'def' } }, + selection: { $scalars: true }, + }, + }, + ], + } + + const result1 = parameterizeBatch(batch1, paramGraph) + const result2 = parameterizeBatch(batch2, paramGraph) + + const cacheKey1 = JSON.stringify(result1.parameterizedBatch) + const cacheKey2 = JSON.stringify(result2.parameterizedBatch) + + expect(cacheKey1).toBe(cacheKey2) + }) + + it('generates different cache keys for batches with different structures', () => { + const batch1 = { + batch: [ + { + modelName: 'User', + action: 'findUnique' as const, + query: { + arguments: { where: { id: '123' } }, + selection: { $scalars: true }, + }, + }, + ], + } + + const batch2 = { + batch: [ + { + modelName: 'User', + action: 'findUnique' as const, + query: { + arguments: { where: { email: 'test@example.com' } }, + selection: { $scalars: true }, + }, + }, + ], + } + + const result1 = parameterizeBatch(batch1, paramGraph) + const result2 = parameterizeBatch(batch2, paramGraph) + + const cacheKey1 = JSON.stringify(result1.parameterizedBatch) + const cacheKey2 = JSON.stringify(result2.parameterizedBatch) + + expect(cacheKey1).not.toBe(cacheKey2) + }) + + it('handles empty batch', () => { + const batch = { batch: [] } + + const result = parameterizeBatch(batch, paramGraph) + + expect(result.parameterizedBatch.batch).toEqual([]) + expect(result.placeholderValues).toEqual({}) + }) +}) diff --git a/packages/client/src/runtime/core/engines/client/parameterization/parameterize.ts b/packages/client/src/runtime/core/engines/client/parameterization/parameterize.ts new file mode 100644 index 000000000000..96ac25c79e4c --- /dev/null +++ b/packages/client/src/runtime/core/engines/client/parameterization/parameterize.ts @@ -0,0 +1,588 @@ +/** + * Schema-aware traversal algorithm for parameterization. + * + * This module implements the core parameterization logic that walks the + * JsonQuery tree guided by ParamGraph. It only parameterizes values when + * both schema rules and runtime value types agree. + */ + +import type { + JsonArgumentValue, + JsonBatchQuery, + JsonFieldSelection, + JsonInputTaggedValue, + JsonQuery, + JsonSelectionSet, + PlaceholderTaggedValue, +} from '@prisma/json-protocol' +import { PlaceholderType } from '@prisma/json-protocol' +import type { InputEdge, InputNode } from '@prisma/param-graph' +import { EdgeFlag, getScalarMask, hasFlag, ParamGraph, ScalarMask } from '@prisma/param-graph' + +import { classifyValue, isPlainObject, isTaggedValue, ValueClass } from './classify' + +/** + * Result of parameterizing a single query. + */ +export interface ParameterizeResult { + /** The query with user data values replaced by placeholders */ + parameterizedQuery: JsonQuery + /** Map of placeholder names to their actual values */ + placeholderValues: Record +} + +/** + * Result of parameterizing a batch of queries. + */ +export interface ParameterizeBatchResult { + /** The batch with user data values replaced by placeholders */ + parameterizedBatch: JsonBatchQuery + /** Combined map of placeholder names to their actual values */ + placeholderValues: Record +} + +/** + * Parameterizes a single query using the schema-aware approach. + * + * @param query - The query to parameterize + * @param view - The ParamGraph for schema lookups + * @returns The parameterized query with extracted placeholder values + */ +export function parameterizeQuery(query: JsonQuery, view: ParamGraph): ParameterizeResult { + const parameterizer = new Parameterizer(view) + + const rootKey = query.modelName ? `${query.modelName}.${query.action}` : query.action + const root = view.root(rootKey) + + const parameterizedQuery: JsonQuery = { + ...query, + query: parameterizer.parameterizeFieldSelection(query.query, root?.argsNodeId, root?.outputNodeId), + } + + return { + parameterizedQuery, + placeholderValues: parameterizer.getPlaceholderValues(), + } +} + +/** + * Parameterizes a batch of queries using the schema-aware approach. + * + * @param batch - The batch to parameterize + * @param view - The ParamGraph for schema lookups + * @returns The parameterized batch with extracted placeholder values + */ +export function parameterizeBatch(batch: JsonBatchQuery, view: ParamGraph): ParameterizeBatchResult { + const parameterizer = new Parameterizer(view) + const parameterizedQueries: JsonQuery[] = [] + + for (let i = 0; i < batch.batch.length; i++) { + const query = batch.batch[i] + + const rootKey = query.modelName ? `${query.modelName}.${query.action}` : query.action + const root = view.root(rootKey) + + parameterizedQueries.push({ + ...query, + query: parameterizer.parameterizeFieldSelection(query.query, root?.argsNodeId, root?.outputNodeId), + }) + } + + return { + parameterizedBatch: { ...batch, batch: parameterizedQueries }, + placeholderValues: parameterizer.getPlaceholderValues(), + } +} + +/** + * Encapsulates the state and logic for parameterizing queries. + */ +class Parameterizer { + readonly #view: ParamGraph + readonly #placeholders = new Map() + readonly #valueToPlaceholder = new Map() + #nextPlaceholderId = 1 + + constructor(view: ParamGraph) { + this.#view = view + } + + /** + * Returns the collected placeholder values as a plain object. + */ + getPlaceholderValues(): Record { + return Object.fromEntries(this.#placeholders) + } + + /** + * Gets or creates a placeholder for the given value. + * If a placeholder already exists for this value, returns a reference to the existing name. + * Otherwise, registers a new placeholder with a sequential name. + * We reuse the placeholders for equal values because the query compiler needs to be able + * to compare the values for equality for certain optimizations (at the time of writing, + * only for deciding whether to use native or emulated upserts). + */ + #getOrCreatePlaceholder(value: unknown, type: PlaceholderType): PlaceholderTaggedValue { + const valueKey = createValueKey(value, type) + const existingName = this.#valueToPlaceholder.get(valueKey) + + if (existingName !== undefined) { + return createPlaceholder(existingName, type) + } + + const name = `%${this.#nextPlaceholderId++}` + this.#valueToPlaceholder.set(valueKey, name) + this.#placeholders.set(name, value) + return createPlaceholder(name, type) + } + + /** + * Parameterizes a field selection (arguments + selection). + */ + parameterizeFieldSelection( + sel: JsonFieldSelection, + argsNodeId: number | undefined, + outNodeId: number | undefined, + ): JsonFieldSelection { + const argsNode = this.#view.inputNode(argsNodeId) + const outNode = this.#view.outputNode(outNodeId) + + const result: JsonFieldSelection = { ...sel } + + if (sel.arguments && sel.arguments.$type !== 'Raw') { + result.arguments = this.#parameterizeObject(sel.arguments as Record, argsNode) + } + + if (sel.selection) { + result.selection = this.#parameterizeSelection(sel.selection, outNode) + } + + return result + } + + /** + * Parameterizes an object by traversing its fields with the input node. + */ + #parameterizeObject(obj: Record, node: InputNode | undefined): Record { + if (!node) { + // No parameterizable fields in this subtree - return as-is + return obj as Record + } + + const result: Record = {} + + for (const [key, value] of Object.entries(obj)) { + const edge = this.#view.inputEdge(node, key) + + if (edge) { + result[key] = this.#parameterizeValue(value, edge) as JsonArgumentValue + } else { + result[key] = value as JsonArgumentValue + } + } + + return result + } + + /** + * Core parameterization logic for a single value. + */ + #parameterizeValue(value: unknown, edge: InputEdge): unknown { + const classified = classifyValue(value) + + switch (classified.kind) { + case 'null': + // Null values are never parameterized - they affect query semantics + return value + + case 'structural': + return value + + case 'primitive': + return this.#handlePrimitive(classified.value, edge) + + case 'taggedScalar': + return this.#handleTaggedScalar(value as JsonInputTaggedValue, classified.tag, edge) + + case 'array': + return this.#handleArray(classified.items, value, edge) + + case 'object': + return this.#handleObject(classified.entries, edge) + + default: + throw new Error(`Unknown value kind ${(classified satisfies never as ValueClass).kind}`) + } + } + + /** + * Handles parameterization of primitive values (string, number, boolean). + */ + #handlePrimitive(value: string | number | boolean, edge: InputEdge): JsonArgumentValue { + if (hasFlag(edge, EdgeFlag.ParamEnum) && edge.enumNameIndex !== undefined && typeof value === 'string') { + const enumValues = this.#view.enumValues(edge) + if (enumValues?.includes(value)) { + const type: PlaceholderType = { type: 'Enum' } + return this.#getOrCreatePlaceholder(value, type) + } + } + + if (!hasFlag(edge, EdgeFlag.ParamScalar)) { + return value + } + + const mask = getScalarMask(edge) + if (mask === 0) { + return value + } + + const type = getPrimitivePlaceholderType(value) + if (!matchesPrimitiveMask(type, mask)) { + return value + } + + if (mask & ScalarMask.Json) { + value = JSON.stringify(value) + } + + return this.#getOrCreatePlaceholder(value, type) + } + + /** + * Handles parameterization of tagged scalar values (DateTime, Decimal, etc.). + */ + #handleTaggedScalar(tagged: JsonInputTaggedValue, tag: JsonInputTaggedValue['$type'], edge: InputEdge): unknown { + if (!hasFlag(edge, EdgeFlag.ParamScalar)) { + return tagged + } + + const mask = getScalarMask(edge) + if (mask === 0 || !matchesTaggedMask(tag, mask)) { + return tagged + } + + const type = getTaggedPlaceholderType(tagged.$type)! + const decoded = decodeTaggedValue(tagged) + + return this.#getOrCreatePlaceholder(decoded, type) + } + + /** + * Handles parameterization of array values. + */ + #handleArray(items: unknown[], originalValue: unknown, edge: InputEdge): unknown { + if (hasFlag(edge, EdgeFlag.ParamScalar) && getScalarMask(edge) & ScalarMask.Json) { + const jsonValue = JSON.stringify(items) + const type: PlaceholderType = { type: 'Json' } + return this.#getOrCreatePlaceholder(jsonValue, type) + } + + if (hasFlag(edge, EdgeFlag.ParamEnum)) { + const enumValues = this.#view.enumValues(edge) + if (enumValues && items.every((item) => typeof item === 'string' && enumValues.includes(item))) { + const type: PlaceholderType = { type: 'List', inner: { type: 'Enum' } } + return this.#getOrCreatePlaceholder(items, type) + } + } + + if (hasFlag(edge, EdgeFlag.ParamListScalar)) { + const allValid = items.every((item) => validateListElement(item, edge)) + if (allValid && items.length > 0) { + const decodedItems = items.map((item) => decodeIfTagged(item)) + const innerType = inferListElementType(items) + const type: PlaceholderType = { type: 'List', inner: innerType } + return this.#getOrCreatePlaceholder(decodedItems, type) + } + } + + if (hasFlag(edge, EdgeFlag.ListObject)) { + const childNode = this.#view.inputNode(edge.childNodeId) + if (childNode) { + return items.map((item) => { + if (isPlainObject(item)) { + return this.#parameterizeObject(item, childNode) + } + return item + }) + } + } + + return originalValue + } + + /** + * Handles parameterization of object values. + */ + #handleObject(obj: Record, edge: InputEdge): unknown { + if (hasFlag(edge, EdgeFlag.Object)) { + const childNode = this.#view.inputNode(edge.childNodeId) + if (childNode) { + return this.#parameterizeObject(obj, childNode) + } + } + + const mask = getScalarMask(edge) + if (mask & ScalarMask.Json) { + const jsonValue = JSON.stringify(obj) + const type: PlaceholderType = { type: 'Json' } + return this.#getOrCreatePlaceholder(jsonValue, type) + } + + return obj + } + + /** + * Parameterizes a selection set using output nodes. + */ + #parameterizeSelection(selection: JsonSelectionSet, node: ReturnType): JsonSelectionSet { + if (!selection || !node) { + return selection + } + + const result: JsonSelectionSet = {} + + for (const [key, value] of Object.entries(selection)) { + if (key === '$scalars' || key === '$composites' || typeof value === 'boolean') { + result[key] = value + continue + } + + const edge = this.#view.outputEdge(node, key) + + if (edge) { + // Nested selection with possible args + const nested = value as { arguments?: Record; selection?: JsonSelectionSet } + + const argsNode = this.#view.inputNode(edge.argsNodeId) + const childOutNode = this.#view.outputNode(edge.outputNodeId) + + const processedValue: JsonFieldSelection = { + selection: nested.selection ? this.#parameterizeSelection(nested.selection, childOutNode) : {}, + } + + if (nested.arguments) { + processedValue.arguments = this.#parameterizeObject(nested.arguments, argsNode) + } + + result[key] = processedValue + } else { + result[key] = value + } + } + + return result + } +} + +/** + * Creates a placeholder object with the given name. + */ +function createPlaceholder(name: string, type: PlaceholderType): PlaceholderTaggedValue { + return { $type: 'Param', value: { name, ...type } } +} + +/** + * Serializes a PlaceholderType to a string for use as part of a value key. + */ +function serializePlaceholderType(type: PlaceholderType): string { + if (type.type === 'List') { + return `List<${serializePlaceholderType(type.inner)}>` + } + return type.type +} + +/** + * Serializes a value to a string for use as part of a value key. + */ +function serializeValue(value: unknown): string { + if (ArrayBuffer.isView(value)) { + const bufView = Buffer.from(value.buffer, value.byteOffset, value.byteLength) + return bufView.toString('base64') + } + return JSON.stringify(value) +} + +/** + * Creates a unique key for a (value, type) pair. + * Used to detect when the same value appears multiple times. + */ +function createValueKey(value: unknown, type: PlaceholderType): string { + const typeKey = serializePlaceholderType(type) + const valueKey = serializeValue(value) + return `${typeKey}:${valueKey}` +} + +const MAX_INT = 2 ** 31 - 1 +const MIN_INT = -(2 ** 31) + +function getPrimitivePlaceholderType(value: string | number | boolean): PlaceholderType { + switch (typeof value) { + case 'boolean': + return { type: 'Boolean' } + + case 'number': + if (!Number.isInteger(value)) { + return { type: 'Float' } + } + if (MIN_INT <= value && value <= MAX_INT) { + return { type: 'Int' } + } + return { type: 'BigInt' } + + case 'string': + return { type: 'String' } + + default: + throw new Error('unreachable') + } +} + +/** + * Checks if a primitive value matches the scalar mask. + */ +function matchesPrimitiveMask({ type }: PlaceholderType, mask: number): boolean { + switch (type) { + case 'Boolean': + return (mask & ScalarMask.Boolean) !== 0 + case 'Int': + return (mask & (ScalarMask.Int | ScalarMask.BigInt | ScalarMask.Float)) !== 0 + case 'BigInt': + return (mask & ScalarMask.BigInt) !== 0 + case 'Float': + return (mask & ScalarMask.Float) !== 0 + case 'String': + return (mask & ScalarMask.String) !== 0 + default: + return false + } +} + +function getTaggedPlaceholderType(tag: JsonInputTaggedValue['$type']): PlaceholderType | undefined { + switch (tag) { + case 'BigInt': + case 'Bytes': + case 'DateTime': + case 'Json': + return { type: tag } + case 'Decimal': + // PrismaValueType doesn't have a Decimal variant and treats both Floats + // and Decimal as decimals + return { type: 'Float' } + default: + return undefined + } +} + +/** + * Infers the widest placeholder type that accommodates all elements in a list. + * For example, a list containing both Int and Float values infers Float. + */ +function inferListElementType(items: unknown[]): PlaceholderType { + let widest: PlaceholderType = { type: 'Any' } + + for (const item of items) { + const classified = classifyValue(item) + let itemType: PlaceholderType + + switch (classified.kind) { + case 'primitive': + itemType = getPrimitivePlaceholderType(classified.value) + break + case 'taggedScalar': + itemType = getTaggedPlaceholderType(classified.tag) ?? { type: 'Any' } + break + default: + return { type: 'Any' } + } + + widest = widenType(widest, itemType) + } + + return widest +} + +/** + * Returns the wider of two placeholder types, following numeric promotion rules: + * Int -> BigInt -> Float. Non-numeric types must match exactly or produce Any. + */ +function widenType(a: PlaceholderType, b: PlaceholderType): PlaceholderType { + if (a.type === 'Any') return b + if (b.type === 'Any') return a + if (a.type === b.type) return a + + const NUMERIC_WIDTH: Partial> = { Int: 0, BigInt: 1, Float: 2 } + const aWidth = NUMERIC_WIDTH[a.type] + const bWidth = NUMERIC_WIDTH[b.type] + + if (aWidth !== undefined && bWidth !== undefined) { + return aWidth >= bWidth ? a : b + } + + return { type: 'Any' } +} + +/** + * Checks if a tagged scalar tag matches the scalar mask. + */ +function matchesTaggedMask(tag: JsonInputTaggedValue['$type'], mask: number): boolean { + switch (tag) { + case 'DateTime': + return (mask & ScalarMask.DateTime) !== 0 + case 'Decimal': + return (mask & ScalarMask.Decimal) !== 0 + case 'BigInt': + return (mask & ScalarMask.BigInt) !== 0 + case 'Bytes': + return (mask & ScalarMask.Bytes) !== 0 + case 'Json': + return (mask & ScalarMask.Json) !== 0 + default: + return false + } +} + +/** + * Validates that a list element can be parameterized. + */ +function validateListElement(item: unknown, edge: InputEdge): boolean { + const classified = classifyValue(item) + + switch (classified.kind) { + case 'structural': + return false + + case 'null': + return false + + case 'primitive': { + const type = getPrimitivePlaceholderType(classified.value) + const mask = getScalarMask(edge) + return mask !== 0 && matchesPrimitiveMask(type, mask) + } + + case 'taggedScalar': { + const mask = getScalarMask(edge) + return mask !== 0 && matchesTaggedMask(classified.tag, mask) + } + + default: + return false + } +} + +/** + * Decodes a value if it's a tagged scalar, otherwise returns as-is. + */ +function decodeIfTagged(value: unknown): unknown { + if (isTaggedValue(value)) { + return decodeTaggedValue(value) + } + return value +} + +/** + * Decodes a tagged scalar value to its raw form. + */ +function decodeTaggedValue(tagged: { $type: string; value: unknown }): unknown { + return tagged.value +} diff --git a/packages/client/src/runtime/core/engines/client/query-plan-cache.test.ts b/packages/client/src/runtime/core/engines/client/query-plan-cache.test.ts new file mode 100644 index 000000000000..9ec76554cbb5 --- /dev/null +++ b/packages/client/src/runtime/core/engines/client/query-plan-cache.test.ts @@ -0,0 +1,201 @@ +import { QueryPlanCache } from './query-plan-cache' + +describe('QueryPlanCache', () => { + describe('single cache', () => { + it('stores and retrieves entries', () => { + const cache = new QueryPlanCache() + const plan = { type: 'value' as const, args: null } + + cache.setSingle('key1', plan) + const retrieved = cache.getSingle('key1') + + expect(retrieved).toBe(plan) + }) + + it('returns undefined for missing keys', () => { + const cache = new QueryPlanCache() + + expect(cache.getSingle('nonexistent')).toBeUndefined() + }) + + it('updates existing entries', () => { + const cache = new QueryPlanCache() + const plan1 = { type: 'value' as const, args: null } + const plan2 = { type: 'value' as const, args: { test: true } } + + cache.setSingle('key', plan1) + cache.setSingle('key', plan2) + + expect(cache.getSingle('key')).toBe(plan2) + expect(cache.singleCacheSize).toBe(1) + }) + + it('evicts oldest entry when at capacity', () => { + const cache = new QueryPlanCache(2) + const plan1 = { type: 'value' as const, args: 1 } + const plan2 = { type: 'value' as const, args: 2 } + const plan3 = { type: 'value' as const, args: 3 } + + cache.setSingle('key1', plan1) + cache.setSingle('key2', plan2) + cache.setSingle('key3', plan3) + + expect(cache.getSingle('key1')).toBeUndefined() + expect(cache.getSingle('key2')).toBeDefined() + expect(cache.getSingle('key3')).toBeDefined() + expect(cache.singleCacheSize).toBe(2) + }) + + it('refreshes entry on get (LRU behavior)', () => { + const cache = new QueryPlanCache(2) + const plan1 = { type: 'value' as const, args: 1 } + const plan2 = { type: 'value' as const, args: 2 } + const plan3 = { type: 'value' as const, args: 3 } + + cache.setSingle('key1', plan1) + cache.setSingle('key2', plan2) + + // Access key1 to make it recently used + cache.getSingle('key1') + + // Add key3, should evict key2 (oldest) + cache.setSingle('key3', plan3) + + expect(cache.getSingle('key1')).toBeDefined() + expect(cache.getSingle('key2')).toBeUndefined() + expect(cache.getSingle('key3')).toBeDefined() + }) + }) + + describe('batch cache', () => { + it('stores and retrieves batch entries', () => { + const cache = new QueryPlanCache() + const response = { + type: 'multi' as const, + plans: [ + { type: 'value' as const, args: null }, + { type: 'value' as const, args: null }, + ], + } + + cache.setBatch('batchKey', response) + const retrieved = cache.getBatch('batchKey') + + expect(retrieved).toBe(response) + }) + + it('returns undefined for missing batch keys', () => { + const cache = new QueryPlanCache() + + expect(cache.getBatch('nonexistent')).toBeUndefined() + }) + + it('stores compacted batch responses', () => { + const cache = new QueryPlanCache() + const response = { + type: 'compacted' as const, + plan: { type: 'value' as const, args: null }, + arguments: [{ id: 1 }, { id: 2 }], + nestedSelection: ['name', 'email'], + keys: ['id'], + expectNonEmpty: true, + } + + cache.setBatch('compactedKey', response) + const retrieved = cache.getBatch('compactedKey') + + expect(retrieved).toBe(response) + expect(retrieved?.type).toBe('compacted') + }) + + it('updates existing batch entries', () => { + const cache = new QueryPlanCache() + const response1 = { type: 'multi' as const, plans: [] } + const response2 = { type: 'multi' as const, plans: [{ type: 'value' as const, args: null }] } + + cache.setBatch('key', response1) + cache.setBatch('key', response2) + + expect(cache.getBatch('key')).toBe(response2) + expect(cache.batchCacheSize).toBe(1) + }) + + it('evicts oldest batch entry when at capacity', () => { + const cache = new QueryPlanCache(2) + const makeResponse = (id: number) => ({ + type: 'multi' as const, + plans: [{ type: 'value' as const, args: id }], + }) + + cache.setBatch('key1', makeResponse(1)) + cache.setBatch('key2', makeResponse(2)) + cache.setBatch('key3', makeResponse(3)) + + expect(cache.getBatch('key1')).toBeUndefined() + expect(cache.getBatch('key2')).toBeDefined() + expect(cache.getBatch('key3')).toBeDefined() + expect(cache.batchCacheSize).toBe(2) + }) + + it('refreshes batch entry on get (LRU behavior)', () => { + const cache = new QueryPlanCache(2) + const makeResponse = (id: number) => ({ + type: 'multi' as const, + plans: [{ type: 'value' as const, args: id }], + }) + + cache.setBatch('key1', makeResponse(1)) + cache.setBatch('key2', makeResponse(2)) + + // Access key1 to make it recently used + cache.getBatch('key1') + + // Add key3, should evict key2 (oldest) + cache.setBatch('key3', makeResponse(3)) + + expect(cache.getBatch('key1')).toBeDefined() + expect(cache.getBatch('key2')).toBeUndefined() + expect(cache.getBatch('key3')).toBeDefined() + }) + }) + + describe('combined behavior', () => { + it('maintains separate caches for single and batch entries', () => { + const cache = new QueryPlanCache() + + const plan = { type: 'value' as const, args: 'single' } + const response = { type: 'multi' as const, plans: [{ type: 'value' as const, args: 'batch' }] } + + cache.setSingle('sharedKey', plan) + cache.setBatch('sharedKey', response) + + expect(cache.getSingle('sharedKey')).toBe(plan) + expect(cache.getBatch('sharedKey')).toBe(response) + }) + + it('reports combined size', () => { + const cache = new QueryPlanCache() + + cache.setSingle('single1', { type: 'value' as const, args: null }) + cache.setSingle('single2', { type: 'value' as const, args: null }) + cache.setBatch('batch1', { type: 'multi' as const, plans: [] }) + + expect(cache.singleCacheSize).toBe(2) + expect(cache.batchCacheSize).toBe(1) + expect(cache.size).toBe(3) + }) + + it('clears both caches', () => { + const cache = new QueryPlanCache() + + cache.setSingle('single', { type: 'value' as const, args: null }) + cache.setBatch('batch', { type: 'multi' as const, plans: [] }) + + cache.clear() + + expect(cache.getSingle('single')).toBeUndefined() + expect(cache.getBatch('batch')).toBeUndefined() + expect(cache.size).toBe(0) + }) + }) +}) diff --git a/packages/client/src/runtime/core/engines/client/query-plan-cache.ts b/packages/client/src/runtime/core/engines/client/query-plan-cache.ts new file mode 100644 index 000000000000..6b2e88d35ff3 --- /dev/null +++ b/packages/client/src/runtime/core/engines/client/query-plan-cache.ts @@ -0,0 +1,91 @@ +import type { BatchResponse, QueryPlanNode } from '@prisma/client-engine-runtime' + +// todo: store the query plan for the individual queries in a non-compacted batch +// in the `#singleCache` so that it's possible to reuse them for compatible queries +// outside of the batch in the future and avoid compiling them individually. +export class QueryPlanCache { + readonly #singleCache: Map + readonly #batchCache: Map + readonly #maxSize: number + + constructor(maxSize = 1000) { + this.#singleCache = new Map() + this.#batchCache = new Map() + this.#maxSize = maxSize + } + + getSingle(key: string): QueryPlanNode | undefined { + const entry = this.#singleCache.get(key) + if (entry) { + // Move to end for LRU behavior + this.#singleCache.delete(key) + this.#singleCache.set(key, entry) + } + return entry + } + + setSingle(key: string, plan: QueryPlanNode): void { + if (this.#singleCache.has(key)) { + // Update existing entry (also moves to end for LRU) + this.#singleCache.delete(key) + this.#singleCache.set(key, plan) + return + } + + // Evict oldest if at capacity + if (this.#singleCache.size >= this.#maxSize) { + const firstKey = this.#singleCache.keys().next().value + if (firstKey !== undefined) { + this.#singleCache.delete(firstKey) + } + } + + this.#singleCache.set(key, plan) + } + + getBatch(key: string): BatchResponse | undefined { + const entry = this.#batchCache.get(key) + if (entry) { + // Move to end for LRU behavior + this.#batchCache.delete(key) + this.#batchCache.set(key, entry) + } + return entry + } + + setBatch(key: string, response: BatchResponse): void { + if (this.#batchCache.has(key)) { + // Update existing entry (also moves to end for LRU) + this.#batchCache.delete(key) + this.#batchCache.set(key, response) + return + } + + // Evict oldest if at capacity + if (this.#batchCache.size >= this.#maxSize) { + const firstKey = this.#batchCache.keys().next().value + if (firstKey !== undefined) { + this.#batchCache.delete(firstKey) + } + } + + this.#batchCache.set(key, response) + } + + clear(): void { + this.#singleCache.clear() + this.#batchCache.clear() + } + + get size(): number { + return this.#singleCache.size + this.#batchCache.size + } + + get singleCacheSize(): number { + return this.#singleCache.size + } + + get batchCacheSize(): number { + return this.#batchCache.size + } +} diff --git a/packages/client/src/runtime/core/engines/common/Engine.ts b/packages/client/src/runtime/core/engines/common/Engine.ts index ef0363551031..d4d18ddf401a 100644 --- a/packages/client/src/runtime/core/engines/common/Engine.ts +++ b/packages/client/src/runtime/core/engines/common/Engine.ts @@ -1,8 +1,9 @@ -import { CompilerWasmLoadingConfig } from '@prisma/client-common' +import { CompilerWasmLoadingConfig, RuntimeDataModel } from '@prisma/client-common' import type { SqlDriverAdapterFactory } from '@prisma/driver-adapter-utils' import type { DataSource, GeneratorConfig } from '@prisma/generator' import type { TracingHelper } from '@prisma/instrumentation-contract' import type { JsonQuery } from '@prisma/json-protocol' +import type { SerializedParamGraph } from '@prisma/param-graph' import type { SqlCommenterPlugin } from '@prisma/sqlcommenter' import type { LogEmitter } from './types/Events' @@ -150,6 +151,17 @@ export interface EngineConfig { * Each plugin receives query context and returns key-value pairs. */ sqlCommenters?: SqlCommenterPlugin[] + + /** + * Parameterization schema (ParamGraph) for schema-aware query parameterization. + * Enables precise parameterization based on DMMF metadata. + */ + parameterizationSchema: SerializedParamGraph + + /** + * Runtime data model for enum lookups during parameterization. + */ + runtimeDataModel: RuntimeDataModel } /** diff --git a/packages/client/src/runtime/core/jsonProtocol/serializeJsonQuery.test.ts b/packages/client/src/runtime/core/jsonProtocol/serializeJsonQuery.test.ts index 3deb2b894e9c..76f942fc6b54 100644 --- a/packages/client/src/runtime/core/jsonProtocol/serializeJsonQuery.test.ts +++ b/packages/client/src/runtime/core/jsonProtocol/serializeJsonQuery.test.ts @@ -56,6 +56,7 @@ function serialize(params: SimplifiedParams) { clientMethod: 'foo', errorFormat: 'colorless', clientVersion: '0.0.0', + wrapRawValues: true, }), null, 2, diff --git a/packages/client/src/runtime/core/jsonProtocol/serializeJsonQuery.ts b/packages/client/src/runtime/core/jsonProtocol/serializeJsonQuery.ts index c146dc113ef6..498e4c16fbf0 100644 --- a/packages/client/src/runtime/core/jsonProtocol/serializeJsonQuery.ts +++ b/packages/client/src/runtime/core/jsonProtocol/serializeJsonQuery.ts @@ -75,6 +75,7 @@ export type SerializeParams = { errorFormat: ErrorFormat previewFeatures: string[] globalOmit?: GlobalOmitOptions + wrapRawValues?: boolean } const STRICT_UNDEFINED_ERROR_MESSAGE = 'explicitly `undefined` values are not allowed' @@ -91,6 +92,7 @@ export function serializeJsonQuery({ clientVersion, previewFeatures, globalOmit, + wrapRawValues, }: SerializeParams): JsonQuery { const context = new SerializeContext({ runtimeDataModel, @@ -106,6 +108,7 @@ export function serializeJsonQuery({ clientVersion, previewFeatures, globalOmit, + wrapRawValues, }) return { modelName, @@ -309,6 +312,7 @@ function serializeArgumentsValue( if (ArrayBuffer.isView(jsValue)) { const { buffer, byteOffset, byteLength } = jsValue + // TODO(perf): get rid of this conversion return { $type: 'Bytes', value: Buffer.from(buffer, byteOffset, byteLength).toString('base64') } } @@ -353,8 +357,10 @@ function serializeArgumentsObject( object: Record, context: SerializeContext, ): Record | RawTaggedValue { - if (object['$type']) { - return { $type: 'Raw', value: object } + if (context.shouldWrapRawValues()) { + if (object['$type']) { + return { $type: 'Raw', value: object } + } } const result: Record = {} for (const key in object) { @@ -433,6 +439,7 @@ type ContextParams = { clientVersion: string previewFeatures: string[] globalOmit?: GlobalOmitOptions + wrapRawValues?: boolean } class SerializeContext { @@ -492,6 +499,10 @@ class SerializeContext { return this.params.previewFeatures.includes(previewFeature) } + shouldWrapRawValues(): boolean { + return this.params.wrapRawValues ?? false + } + getComputedFields() { if (!this.params.modelName) { return undefined diff --git a/packages/client/src/runtime/getPrismaClient.ts b/packages/client/src/runtime/getPrismaClient.ts index a2e022614e24..cab4c1426992 100644 --- a/packages/client/src/runtime/getPrismaClient.ts +++ b/packages/client/src/runtime/getPrismaClient.ts @@ -367,6 +367,8 @@ constructor() { adapter, accelerateUrl: options.accelerateUrl, sqlCommenters: options.comments, + parameterizationSchema: config.parameterizationSchema, + runtimeDataModel: config.runtimeDataModel, } // Used in diff --git a/packages/client/src/utils/getTestClient.ts b/packages/client/src/utils/getTestClient.ts index 438d1f8695cf..2b2493b5b5dd 100644 --- a/packages/client/src/utils/getTestClient.ts +++ b/packages/client/src/utils/getTestClient.ts @@ -7,6 +7,7 @@ import { parseEnvValue, printConfigWarnings, } from '@prisma/internals' +import { buildAndSerializeParamGraph } from '@prisma/param-graph-builder' import path from 'path' import { parse } from 'stacktrace-parser' @@ -61,6 +62,7 @@ export async function getTestClient(schemaDir?: string, printWarnings?: boolean) }, importName: './query_compiler_fast_bg.js', }, + parameterizationSchema: buildAndSerializeParamGraph(document), } return getPrismaClient(options) diff --git a/packages/client/tests/functional/_utils/setupTestSuiteMatrix.ts b/packages/client/tests/functional/_utils/setupTestSuiteMatrix.ts index 41d8f3dfb35c..7d36993804ea 100644 --- a/packages/client/tests/functional/_utils/setupTestSuiteMatrix.ts +++ b/packages/client/tests/functional/_utils/setupTestSuiteMatrix.ts @@ -122,6 +122,33 @@ function setupTestSuiteMatrix( beforeAll(async () => { globalThis['datasourceInfo'] = datasourceInfo // keep it here before anything runs + // If using D1 Driver adapter + // We need to setup wrangler bindings to the D1 db (using miniflare under the hood) + if (suiteConfig.matrixOptions.driverAdapter === 'js_d1') { + const { getPlatformProxy } = require('wrangler') as typeof import('wrangler') + const { env, dispose } = await getPlatformProxy({ + configPath: path.join(__dirname, './wrangler.toml'), + }) + + // Expose the bindings to the test suite + disposeWrangler = dispose + cfWorkerBindings = env + } + + const [clientModule, sqlModule] = await setupTestSuiteClient({ + generatorType: suiteConfig.matrixOptions.generatorType || 'prisma-client-js', + cliMeta, + suiteMeta, + suiteConfig, + datasourceInfo, + clientMeta, + skipDb: options?.skipDb, + alterStatementCallback: options?.alterStatementCallback, + cfWorkerBindings, + }) + + globalThis['loaded'] = clientModule + if (clientMeta.clientEngineExecutor === 'remote') { qpeWorker = new Worker(path.join(__dirname, 'qpe-worker-entry.cjs')) @@ -159,33 +186,6 @@ function setupTestSuiteMatrix( datasourceInfo.accelerateUrl = `prisma://${hostname}:${port}/?api_key=1&use_http=1` } - // If using D1 Driver adapter - // We need to setup wrangler bindings to the D1 db (using miniflare under the hood) - if (suiteConfig.matrixOptions.driverAdapter === 'js_d1') { - const { getPlatformProxy } = require('wrangler') as typeof import('wrangler') - const { env, dispose } = await getPlatformProxy({ - configPath: path.join(__dirname, './wrangler.toml'), - }) - - // Expose the bindings to the test suite - disposeWrangler = dispose - cfWorkerBindings = env - } - - const [clientModule, sqlModule] = await setupTestSuiteClient({ - generatorType: suiteConfig.matrixOptions.generatorType || 'prisma-client-js', - cliMeta, - suiteMeta, - suiteConfig, - datasourceInfo, - clientMeta, - skipDb: options?.skipDb, - alterStatementCallback: options?.alterStatementCallback, - cfWorkerBindings, - }) - - globalThis['loaded'] = clientModule - const internalArgs = () => getPrismaClientInternalArgs({ suiteConfig, diff --git a/packages/client/tests/functional/_utils/types.ts b/packages/client/tests/functional/_utils/types.ts index bd0d048fff16..35d13e5574df 100644 --- a/packages/client/tests/functional/_utils/types.ts +++ b/packages/client/tests/functional/_utils/types.ts @@ -25,7 +25,7 @@ export type MatrixOptions = { // This allows callers to omit adapter/accelerateUrl since they're already provided by setupTestSuiteMatrix type MakeAdapterAndAccelerateUrlOptional = T extends [infer Options, ...infer Rest] ? Options extends object - ? [Partial, ...Rest] + ? [Partial?, ...Rest] : T : T diff --git a/packages/client/tests/functional/chunking-query/tests.ts b/packages/client/tests/functional/chunking-query/tests.ts index 42f80b23934e..1781751705b7 100644 --- a/packages/client/tests/functional/chunking-query/tests.ts +++ b/packages/client/tests/functional/chunking-query/tests.ts @@ -160,17 +160,9 @@ testMatrix.setupTestSuite( }) } - test('Selecting MAX ids at once in two inclusive disjunct filters results in error', async () => { + test('Selecting MAX ids at once in two inclusive disjunct filters succeeds', async () => { const ids = generatedIds(MAX_BIND_VALUES) - - if (!usesJsDrivers || clientEngineExecutor === 'local') { - // When using MAX ids, it fails both with relationJoins and without because the amount of query params that's computed is not beyond the limit. - // To be clear: the root problem comes from the way the QE computes the amount of query params. - await expect(selectWith2InFilters(ids)).rejects.toThrow() - } else { - // It's unknown why this test doesn't fail with driver adapters. - await expect(selectWith2InFilters(ids)).resolves.toMatchInlineSnapshot(`[]`) - } + await expect(selectWith2InFilters(ids)).resolves.toMatchInlineSnapshot(`[]`) }) test('Selecting EXCESS ids at once in two inclusive disjunct filters results in error', async () => { @@ -179,7 +171,8 @@ testMatrix.setupTestSuite( if (usingRelationJoins) { if (driverAdapter === 'js_pg' || driverAdapter === 'js_pg_cockroachdb') { await expect(selectWith2InFilters(ids)).rejects.toThrow( - 'The query parameter limit supported by your database is exceeded', + // TODO: the error returned by the driver looks weird although the query looks correct + /bind message has \d+ parameter formats but \d+ parameters|placeholder index must be between \d+ and \d+/, ) } else { await expect(selectWith2InFilters(ids)).rejects.toThrow(RELATION_JOINS_NO_CHUNKING_ERROR_MSG) diff --git a/packages/client/tests/functional/string-filters/_matrix.ts b/packages/client/tests/functional/string-filters/_matrix.ts new file mode 100644 index 000000000000..a8bc6494be0c --- /dev/null +++ b/packages/client/tests/functional/string-filters/_matrix.ts @@ -0,0 +1,4 @@ +import { defineMatrix } from '../_utils/defineMatrix' +import { allProviders } from '../_utils/providers' + +export default defineMatrix(() => [allProviders]) diff --git a/packages/client/tests/functional/string-filters/prisma/_schema.ts b/packages/client/tests/functional/string-filters/prisma/_schema.ts new file mode 100644 index 000000000000..c8e729b24e56 --- /dev/null +++ b/packages/client/tests/functional/string-filters/prisma/_schema.ts @@ -0,0 +1,19 @@ +import { idForProvider } from '../../_utils/idForProvider' +import testMatrix from '../_matrix' + +export default testMatrix.setupSchema(({ provider }) => { + return /* Prisma */ ` + generator client { + provider = "prisma-client-js" + } + + datasource db { + provider = "${provider}" + } + + model TestModel { + id ${idForProvider(provider)} + value String + } + ` +}) diff --git a/packages/client/tests/functional/string-filters/tests.ts b/packages/client/tests/functional/string-filters/tests.ts new file mode 100644 index 000000000000..e0870ef96ce4 --- /dev/null +++ b/packages/client/tests/functional/string-filters/tests.ts @@ -0,0 +1,199 @@ +import { Providers } from '../_utils/providers' +import testMatrix from './_matrix' +// @ts-ignore +import type { PrismaClient } from './generated/prisma/client' + +declare let prisma: PrismaClient + +const describeIf = (condition: boolean) => (condition ? describe : describe.skip) + +testMatrix.setupTestSuite(({ provider }) => { + beforeAll(async () => { + await prisma.testModel.createMany({ + data: [ + { value: 'foo bar baz' }, + { value: 'foo' }, + { value: 'baz' }, + { value: 'bar' }, + { value: '' }, + { value: 'completely different' }, + ], + }) + }) + + test('startsWith matches prefix', async () => { + const results = await prisma.testModel.findMany({ + where: { value: { startsWith: 'foo' } }, + orderBy: { value: 'asc' }, + }) + + expect(results).toHaveLength(2) + expect(results.map((r) => r.value)).toEqual(['foo', 'foo bar baz']) + }) + + test('startsWith with no match', async () => { + const results = await prisma.testModel.findMany({ + where: { value: { startsWith: 'xyz' } }, + }) + + expect(results).toHaveLength(0) + }) + + test('startsWith with empty string matches all', async () => { + const results = await prisma.testModel.findMany({ + where: { value: { startsWith: '' } }, + }) + + expect(results).toHaveLength(6) + }) + + test('endsWith matches suffix', async () => { + const results = await prisma.testModel.findMany({ + where: { value: { endsWith: 'baz' } }, + orderBy: { value: 'asc' }, + }) + + expect(results).toHaveLength(2) + expect(results.map((r) => r.value)).toEqual(['baz', 'foo bar baz']) + }) + + test('endsWith with no match', async () => { + const results = await prisma.testModel.findMany({ + where: { value: { endsWith: 'xyz' } }, + }) + + expect(results).toHaveLength(0) + }) + + test('endsWith with empty string matches all', async () => { + const results = await prisma.testModel.findMany({ + where: { value: { endsWith: '' } }, + }) + + expect(results).toHaveLength(6) + }) + + test('contains matches substring', async () => { + const results = await prisma.testModel.findMany({ + where: { value: { contains: 'bar' } }, + orderBy: { value: 'asc' }, + }) + + expect(results).toHaveLength(2) + expect(results.map((r) => r.value)).toEqual(['bar', 'foo bar baz']) + }) + + test('contains with no match', async () => { + const results = await prisma.testModel.findMany({ + where: { value: { contains: 'xyz' } }, + }) + + expect(results).toHaveLength(0) + }) + + test('contains with empty string matches all', async () => { + const results = await prisma.testModel.findMany({ + where: { value: { contains: '' } }, + }) + + expect(results).toHaveLength(6) + }) + + test('combined startsWith + endsWith', async () => { + const results = await prisma.testModel.findMany({ + where: { value: { startsWith: 'foo', endsWith: 'baz' } }, + orderBy: { value: 'asc' }, + }) + + expect(results).toHaveLength(1) + expect(results[0].value).toBe('foo bar baz') + }) + + test('combined startsWith + contains', async () => { + const results = await prisma.testModel.findMany({ + where: { value: { startsWith: 'foo', contains: 'bar' } }, + orderBy: { value: 'asc' }, + }) + + expect(results).toHaveLength(1) + expect(results[0].value).toBe('foo bar baz') + }) + + test('combined contains + endsWith', async () => { + const results = await prisma.testModel.findMany({ + where: { value: { contains: 'bar', endsWith: 'baz' } }, + orderBy: { value: 'asc' }, + }) + + expect(results).toHaveLength(1) + expect(results[0].value).toBe('foo bar baz') + }) + + test('NOT startsWith', async () => { + const results = await prisma.testModel.findMany({ + where: { NOT: { value: { startsWith: 'foo' } } }, + orderBy: { value: 'asc' }, + }) + + expect(results).toHaveLength(4) + expect(results.map((r) => r.value)).toEqual(['', 'bar', 'baz', 'completely different']) + }) + + test('NOT contains', async () => { + const results = await prisma.testModel.findMany({ + where: { NOT: { value: { contains: 'bar' } } }, + orderBy: { value: 'asc' }, + }) + + expect(results).toHaveLength(4) + expect(results.map((r) => r.value)).toEqual(['', 'baz', 'completely different', 'foo']) + }) + + test('NOT endsWith', async () => { + const results = await prisma.testModel.findMany({ + where: { NOT: { value: { endsWith: 'baz' } } }, + orderBy: { value: 'asc' }, + }) + + expect(results).toHaveLength(4) + expect(results.map((r) => r.value)).toEqual(['', 'bar', 'completely different', 'foo']) + }) + + describeIf(provider === Providers.POSTGRESQL || provider === Providers.COCKROACHDB || provider === Providers.MONGODB)( + 'mode: insensitive', + () => { + beforeAll(async () => { + await prisma.testModel.createMany({ + data: [{ value: 'FOO BAR BAZ' }, { value: 'Foo' }], + }) + }) + + test('contains case-insensitive', async () => { + const results = await prisma.testModel.findMany({ + // @ts-test-if: provider === Providers.POSTGRESQL || provider === Providers.COCKROACHDB || provider === Providers.MONGODB + where: { value: { contains: 'bar', mode: 'insensitive' } }, + }) + + expect(results.map((r) => r.value).sort()).toEqual(['FOO BAR BAZ', 'bar', 'foo bar baz']) + }) + + test('startsWith case-insensitive', async () => { + const results = await prisma.testModel.findMany({ + // @ts-test-if: provider === Providers.POSTGRESQL || provider === Providers.COCKROACHDB || provider === Providers.MONGODB + where: { value: { startsWith: 'foo', mode: 'insensitive' } }, + }) + + expect(results.map((r) => r.value).sort()).toEqual(['FOO BAR BAZ', 'Foo', 'foo', 'foo bar baz']) + }) + + test('endsWith case-insensitive', async () => { + const results = await prisma.testModel.findMany({ + // @ts-test-if: provider === Providers.POSTGRESQL || provider === Providers.COCKROACHDB || provider === Providers.MONGODB + where: { value: { endsWith: 'baz', mode: 'insensitive' } }, + }) + + expect(results.map((r) => r.value).sort()).toEqual(['FOO BAR BAZ', 'baz', 'foo bar baz']) + }) + }, + ) +}) diff --git a/packages/client/tests/functional/tracing/tests.ts b/packages/client/tests/functional/tracing/tests.ts index 1c587141b548..fc296012a44e 100644 --- a/packages/client/tests/functional/tracing/tests.ts +++ b/packages/client/tests/functional/tracing/tests.ts @@ -59,6 +59,14 @@ afterAll(() => { context.disable() }) +beforeEach(() => { + prisma = newPrismaClient() +}) + +afterEach(async () => { + await prisma.$disconnect() +}) + testMatrix.setupTestSuite( ({ provider, driverAdapter, relationMode, clientEngineExecutor }, _suiteMeta, clientMeta) => { const executorSpanInfix = clientEngineExecutor === 'remote' ? 'accelerate' : 'client' diff --git a/packages/dmmf/src/dmmf.ts b/packages/dmmf/src/dmmf.ts index d50bff366bd7..2cd3853abb06 100644 --- a/packages/dmmf/src/dmmf.ts +++ b/packages/dmmf/src/dmmf.ts @@ -177,6 +177,7 @@ export type SchemaArg = ReadonlyDeep<{ isNullable: boolean isRequired: boolean inputTypes: InputTypeRef[] + isParameterizable: boolean requiresOtherFields?: string[] deprecation?: Deprecation }> diff --git a/packages/engines/package.json b/packages/engines/package.json index db46ae78fc26..12136ae0ceb3 100644 --- a/packages/engines/package.json +++ b/packages/engines/package.json @@ -22,7 +22,7 @@ }, "dependencies": { "@prisma/debug": "workspace:*", - "@prisma/engines-version": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", + "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", "@prisma/fetch-engine": "workspace:*", "@prisma/get-platform": "workspace:*" }, diff --git a/packages/fetch-engine/package.json b/packages/fetch-engine/package.json index a2e362de2273..cee1a2bf7f79 100644 --- a/packages/fetch-engine/package.json +++ b/packages/fetch-engine/package.json @@ -37,7 +37,7 @@ }, "dependencies": { "@prisma/debug": "workspace:*", - "@prisma/engines-version": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", + "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", "@prisma/get-platform": "workspace:*" }, "scripts": { diff --git a/packages/internals/package.json b/packages/internals/package.json index 4f0336d56899..ba64f5ae015c 100644 --- a/packages/internals/package.json +++ b/packages/internals/package.json @@ -81,8 +81,8 @@ "@prisma/generator": "workspace:*", "@prisma/generator-helper": "workspace:*", "@prisma/get-platform": "workspace:*", - "@prisma/prisma-schema-wasm": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", - "@prisma/schema-engine-wasm": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", + "@prisma/prisma-schema-wasm": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", + "@prisma/schema-engine-wasm": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", "@prisma/schema-files-loader": "workspace:*", "arg": "5.0.2", "prompts": "2.4.2" diff --git a/packages/internals/src/__tests__/engine-commands/__snapshots__/getDmmf.test.ts.snap b/packages/internals/src/__tests__/engine-commands/__snapshots__/getDmmf.test.ts.snap index 2b32f6e4db89..dfbedba9f155 100644 --- a/packages/internals/src/__tests__/engine-commands/__snapshots__/getDmmf.test.ts.snap +++ b/packages/internals/src/__tests__/engine-commands/__snapshots__/getDmmf.test.ts.snap @@ -312,6 +312,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -324,6 +325,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -348,6 +350,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -360,6 +363,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -384,6 +388,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -396,6 +401,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -420,6 +426,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -432,6 +439,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -456,6 +464,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -468,6 +477,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -492,6 +502,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -504,6 +515,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -528,6 +540,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -540,6 +553,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -572,6 +586,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -585,6 +600,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -604,6 +620,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -622,6 +639,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -640,6 +658,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -658,6 +677,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -676,6 +696,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -702,6 +723,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -715,6 +737,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -728,6 +751,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -741,6 +765,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -769,6 +794,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "customName", }, @@ -788,6 +814,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -801,6 +828,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -820,6 +848,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -838,6 +867,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -856,6 +886,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -874,6 +905,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -892,6 +924,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -918,6 +951,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -931,6 +965,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -944,6 +979,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -957,6 +993,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -970,6 +1007,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -983,6 +1021,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -996,6 +1035,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -1009,6 +1049,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -1022,6 +1063,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -1053,6 +1095,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -1066,6 +1109,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -1085,6 +1129,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -1103,6 +1148,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -1121,6 +1167,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -1139,6 +1186,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -1157,6 +1205,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -1189,6 +1238,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -1202,6 +1252,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -1221,6 +1272,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -1239,6 +1291,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -1257,6 +1310,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -1275,6 +1329,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -1293,6 +1348,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -1319,6 +1375,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -1332,6 +1389,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -1345,6 +1403,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -1358,6 +1417,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -1386,6 +1446,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName_lastName_isAdmin", }, @@ -1405,6 +1466,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -1418,6 +1480,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -1437,6 +1500,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -1455,6 +1519,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -1473,6 +1538,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -1491,6 +1557,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -1509,6 +1576,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -1535,6 +1603,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -1548,6 +1617,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -1561,6 +1631,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -1574,6 +1645,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -1587,6 +1659,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -1600,6 +1673,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -1613,6 +1687,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -1626,6 +1701,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -1639,6 +1715,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -1670,6 +1747,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -1683,6 +1761,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -1702,6 +1781,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -1720,6 +1800,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -1738,6 +1819,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -1756,6 +1838,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -1774,6 +1857,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -1799,6 +1883,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -1811,6 +1896,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "firstName", }, @@ -1823,6 +1909,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "lastName", }, @@ -1835,6 +1922,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -1859,6 +1947,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -1871,6 +1960,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "firstName", }, @@ -1883,6 +1973,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "lastName", }, @@ -1895,6 +1986,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -1925,6 +2017,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -1943,6 +2036,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -1961,6 +2055,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -1979,6 +2074,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -2009,6 +2105,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -2027,6 +2124,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -2045,6 +2143,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -2063,6 +2162,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -2087,6 +2187,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -2099,6 +2200,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "firstName", }, @@ -2111,6 +2213,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "lastName", }, @@ -2123,6 +2226,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -2153,6 +2257,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -2171,6 +2276,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -2189,6 +2295,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -2207,6 +2314,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -2237,6 +2345,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -2255,6 +2364,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -2273,6 +2383,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -2291,6 +2402,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -2315,6 +2427,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -2327,6 +2440,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "firstName", }, @@ -2339,6 +2453,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "lastName", }, @@ -2351,6 +2466,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -2375,6 +2491,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -2387,6 +2504,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "firstName", }, @@ -2399,6 +2517,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "lastName", }, @@ -2411,6 +2530,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -2441,6 +2561,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -2459,6 +2580,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -2477,6 +2599,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -2495,6 +2618,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -2525,6 +2649,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -2543,6 +2668,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -2561,6 +2687,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -2579,6 +2706,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -2603,6 +2731,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -2615,6 +2744,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "firstName", }, @@ -2627,6 +2757,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "lastName", }, @@ -2639,6 +2770,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -2669,6 +2801,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -2687,6 +2820,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -2705,6 +2839,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -2723,6 +2858,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -2753,6 +2889,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -2771,6 +2908,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -2789,6 +2927,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -2807,6 +2946,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -2837,6 +2977,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -2855,6 +2996,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -2873,6 +3015,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -2891,6 +3034,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -2909,6 +3053,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -2927,6 +3072,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -2945,6 +3091,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -2963,6 +3110,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -2990,6 +3138,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -3008,6 +3157,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -3026,6 +3176,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -3044,6 +3195,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -3062,6 +3214,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -3080,6 +3233,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -3098,6 +3252,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -3116,6 +3271,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -3134,6 +3290,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -3152,6 +3309,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -3165,6 +3323,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "mode", }, @@ -3183,6 +3342,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -3210,6 +3370,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -3228,6 +3389,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -3249,6 +3411,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "firstName", }, @@ -3261,6 +3424,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "lastName", }, @@ -3286,6 +3450,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -3299,6 +3464,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -3312,6 +3478,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -3325,6 +3492,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -3350,6 +3518,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -3375,6 +3544,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -3388,6 +3558,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -3401,6 +3572,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -3414,6 +3586,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -3439,6 +3612,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -3452,6 +3626,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -3465,6 +3640,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -3478,6 +3654,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -3503,6 +3680,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -3533,6 +3711,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -3551,6 +3730,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -3569,6 +3749,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -3587,6 +3768,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -3605,6 +3787,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -3623,6 +3806,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -3641,6 +3825,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -3659,6 +3844,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -3672,6 +3858,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -3685,6 +3872,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -3698,6 +3886,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -3711,6 +3900,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -3724,6 +3914,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -3751,6 +3942,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -3769,6 +3961,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -3787,6 +3980,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -3805,6 +3999,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -3823,6 +4018,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -3841,6 +4037,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -3859,6 +4056,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -3877,6 +4075,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -3895,6 +4094,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -3913,6 +4113,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -3926,6 +4127,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "mode", }, @@ -3944,6 +4146,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -3957,6 +4160,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -3970,6 +4174,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -3983,6 +4188,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -4010,6 +4216,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -4028,6 +4235,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -4041,6 +4249,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -4054,6 +4263,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -4067,6 +4277,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -4088,6 +4299,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "firstName", }, @@ -4100,6 +4312,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "lastName", }, @@ -4112,6 +4325,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "isAdmin", }, @@ -4137,6 +4351,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -4150,6 +4365,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -4163,6 +4379,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -4176,6 +4393,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -4201,6 +4419,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -4226,6 +4445,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -4239,6 +4459,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -4252,6 +4473,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -4265,6 +4487,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -4290,6 +4513,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -4303,6 +4527,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -4316,6 +4541,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -4329,6 +4555,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -4354,6 +4581,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -4378,6 +4606,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -4390,6 +4619,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "increment", }, @@ -4402,6 +4632,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "decrement", }, @@ -4414,6 +4645,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "multiply", }, @@ -4426,6 +4658,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "divide", }, @@ -4450,6 +4683,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -4474,6 +4708,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -4504,6 +4739,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -4522,6 +4758,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -4540,6 +4777,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -4558,6 +4796,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -4576,6 +4815,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -4594,6 +4834,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -4612,6 +4853,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -4630,6 +4872,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -4657,6 +4900,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -4675,6 +4919,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -4693,6 +4938,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -4711,6 +4957,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -4729,6 +4976,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -4747,6 +4995,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -4765,6 +5014,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -4783,6 +5033,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -4801,6 +5052,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -4819,6 +5071,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -4837,6 +5090,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -4864,6 +5118,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -4882,6 +5137,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -4909,6 +5165,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -4927,6 +5184,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -4945,6 +5203,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -4963,6 +5222,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -4981,6 +5241,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -4999,6 +5260,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -5017,6 +5279,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -5035,6 +5298,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -5048,6 +5312,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -5061,6 +5326,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -5074,6 +5340,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -5087,6 +5354,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -5100,6 +5368,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -5127,6 +5396,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -5145,6 +5415,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -5163,6 +5434,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -5181,6 +5453,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -5199,6 +5472,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -5217,6 +5491,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -5235,6 +5510,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -5253,6 +5529,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -5280,6 +5557,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -5298,6 +5576,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -5316,6 +5595,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -5334,6 +5614,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -5352,6 +5633,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -5370,6 +5652,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -5388,6 +5671,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -5406,6 +5690,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -5424,6 +5709,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -5442,6 +5728,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -5460,6 +5747,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -5473,6 +5761,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -5486,6 +5775,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -5499,6 +5789,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -5526,6 +5817,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -5544,6 +5836,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -5557,6 +5850,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -5570,6 +5864,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -5583,6 +5878,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -5879,6 +6175,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -5898,6 +6195,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -5911,6 +6209,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -5923,6 +6222,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -5935,6 +6235,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -5954,6 +6255,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -5979,6 +6281,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -5998,6 +6301,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -6011,6 +6315,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -6023,6 +6328,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -6035,6 +6341,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -6054,6 +6361,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -6079,6 +6387,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -6098,6 +6407,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -6111,6 +6421,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -6123,6 +6434,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -6135,6 +6447,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -6154,6 +6467,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -6179,6 +6493,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -6198,6 +6513,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -6211,6 +6527,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -6223,6 +6540,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -6235,6 +6553,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -6260,6 +6579,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -6279,6 +6599,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -6298,6 +6619,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "by", }, @@ -6311,6 +6633,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "having", }, @@ -6323,6 +6646,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -6335,6 +6659,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -6360,6 +6685,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -6385,6 +6711,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -6410,6 +6737,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -6429,6 +6757,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -6442,6 +6771,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -6454,6 +6784,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -6466,6 +6797,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -6485,6 +6817,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -6510,6 +6843,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -6529,6 +6863,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -6542,6 +6877,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -6554,6 +6890,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -6566,6 +6903,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -6585,6 +6923,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -6610,6 +6949,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -6629,6 +6969,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -6642,6 +6983,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -6654,6 +6996,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -6666,6 +7009,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -6685,6 +7029,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -6710,6 +7055,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -6729,6 +7075,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -6742,6 +7089,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -6754,6 +7102,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -6766,6 +7115,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -6791,6 +7141,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -6810,6 +7161,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -6829,6 +7181,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "by", }, @@ -6842,6 +7195,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "having", }, @@ -6854,6 +7208,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -6866,6 +7221,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -6891,6 +7247,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -6916,6 +7273,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -6952,6 +7310,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -6977,6 +7336,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -6996,6 +7356,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "create", }, @@ -7015,6 +7376,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "update", }, @@ -7046,6 +7408,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -7058,6 +7421,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skipDuplicates", }, @@ -7089,6 +7453,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -7101,6 +7466,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skipDuplicates", }, @@ -7126,6 +7492,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -7157,6 +7524,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -7170,6 +7538,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -7201,6 +7570,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -7214,6 +7584,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -7226,6 +7597,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -7257,6 +7629,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -7270,6 +7643,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -7282,6 +7656,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -7307,6 +7682,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -7319,6 +7695,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -7350,6 +7727,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -7375,6 +7753,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -7394,6 +7773,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "create", }, @@ -7413,6 +7793,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "update", }, @@ -7444,6 +7825,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -7456,6 +7838,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skipDuplicates", }, @@ -7487,6 +7870,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -7499,6 +7883,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skipDuplicates", }, @@ -7524,6 +7909,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -7555,6 +7941,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -7568,6 +7955,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -7599,6 +7987,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -7612,6 +8001,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -7624,6 +8014,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -7655,6 +8046,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -7668,6 +8060,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -7680,6 +8073,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -7705,6 +8099,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -7717,6 +8112,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -7741,6 +8137,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "query", }, @@ -7753,6 +8150,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "parameters", }, @@ -7776,6 +8174,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "query", }, @@ -7788,6 +8187,7 @@ exports[`getDMMF success @@id model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "parameters", }, @@ -8706,6 +9106,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -8718,6 +9119,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -8742,6 +9144,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -8754,6 +9157,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -8778,6 +9182,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -8790,6 +9195,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -8814,6 +9220,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -8826,6 +9233,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -8850,6 +9258,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -8862,6 +9271,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -8886,6 +9296,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -8898,6 +9309,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -8930,6 +9342,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -8943,6 +9356,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -8962,6 +9376,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -8980,6 +9395,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -8998,6 +9414,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "email", }, @@ -9024,6 +9441,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -9037,6 +9455,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "email", }, @@ -9064,6 +9483,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "email", }, @@ -9083,6 +9503,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -9096,6 +9517,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -9115,6 +9537,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -9133,6 +9556,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -9159,6 +9583,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -9172,6 +9597,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "email", }, @@ -9185,6 +9611,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -9198,6 +9625,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -9211,6 +9639,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -9224,6 +9653,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -9237,6 +9667,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -9268,6 +9699,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -9281,6 +9713,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -9300,6 +9733,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -9318,6 +9752,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -9336,6 +9771,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "email", }, @@ -9361,6 +9797,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -9373,6 +9810,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "email", }, @@ -9397,6 +9835,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -9409,6 +9848,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "email", }, @@ -9439,6 +9879,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -9457,6 +9898,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "email", }, @@ -9487,6 +9929,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -9505,6 +9948,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "email", }, @@ -9529,6 +9973,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -9541,6 +9986,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "email", }, @@ -9571,6 +10017,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -9589,6 +10036,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "email", }, @@ -9619,6 +10067,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -9637,6 +10086,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "email", }, @@ -9667,6 +10117,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -9685,6 +10136,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -9703,6 +10155,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -9721,6 +10174,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -9739,6 +10193,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -9757,6 +10212,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -9775,6 +10231,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -9793,6 +10250,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -9820,6 +10278,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -9838,6 +10297,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -9856,6 +10316,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -9874,6 +10335,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -9892,6 +10354,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -9910,6 +10373,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -9928,6 +10392,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -9946,6 +10411,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -9964,6 +10430,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -9982,6 +10449,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -9995,6 +10463,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "mode", }, @@ -10013,6 +10482,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -10035,6 +10505,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -10048,6 +10519,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "email", }, @@ -10073,6 +10545,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -10098,6 +10571,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -10111,6 +10585,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "email", }, @@ -10136,6 +10611,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -10149,6 +10625,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "email", }, @@ -10174,6 +10651,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -10204,6 +10682,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -10222,6 +10701,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -10240,6 +10720,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -10258,6 +10739,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -10276,6 +10758,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -10294,6 +10777,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -10312,6 +10796,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -10330,6 +10815,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -10343,6 +10829,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -10356,6 +10843,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -10369,6 +10857,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -10382,6 +10871,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -10395,6 +10885,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -10422,6 +10913,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -10440,6 +10932,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -10458,6 +10951,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -10476,6 +10970,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -10494,6 +10989,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -10512,6 +11008,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -10530,6 +11027,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -10548,6 +11046,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -10566,6 +11065,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -10584,6 +11084,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -10597,6 +11098,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "mode", }, @@ -10615,6 +11117,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -10628,6 +11131,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -10641,6 +11145,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -10654,6 +11159,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -10675,6 +11181,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -10687,6 +11194,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "increment", }, @@ -10699,6 +11207,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "decrement", }, @@ -10711,6 +11220,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "multiply", }, @@ -10723,6 +11233,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "divide", }, @@ -10747,6 +11258,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -10777,6 +11289,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -10795,6 +11308,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -10813,6 +11327,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -10831,6 +11346,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -10849,6 +11365,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -10867,6 +11384,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -10885,6 +11403,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -10903,6 +11422,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -10930,6 +11450,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -10948,6 +11469,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -10966,6 +11488,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -10984,6 +11507,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -11002,6 +11526,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -11020,6 +11545,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -11038,6 +11564,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -11056,6 +11583,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -11074,6 +11602,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -11092,6 +11621,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -11110,6 +11640,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -11137,6 +11668,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -11155,6 +11687,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -11173,6 +11706,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -11191,6 +11725,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -11209,6 +11744,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -11227,6 +11763,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -11245,6 +11782,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -11263,6 +11801,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -11276,6 +11815,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -11289,6 +11829,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -11302,6 +11843,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -11315,6 +11857,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -11328,6 +11871,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -11355,6 +11899,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -11373,6 +11918,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -11391,6 +11937,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -11409,6 +11956,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -11427,6 +11975,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -11445,6 +11994,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -11463,6 +12013,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -11481,6 +12032,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -11508,6 +12060,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -11526,6 +12079,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -11544,6 +12098,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -11562,6 +12117,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -11580,6 +12136,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -11598,6 +12155,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -11616,6 +12174,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -11634,6 +12193,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -11652,6 +12212,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -11670,6 +12231,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -11688,6 +12250,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -11701,6 +12264,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -11714,6 +12278,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -11727,6 +12292,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -11828,6 +12394,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -11847,6 +12414,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -11860,6 +12428,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -11872,6 +12441,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -11884,6 +12454,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -11903,6 +12474,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -11928,6 +12500,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -11947,6 +12520,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -11960,6 +12534,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -11972,6 +12547,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -11984,6 +12560,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -12003,6 +12580,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -12028,6 +12606,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -12047,6 +12626,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -12060,6 +12640,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -12072,6 +12653,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -12084,6 +12666,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -12103,6 +12686,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -12128,6 +12712,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -12147,6 +12732,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -12160,6 +12746,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -12172,6 +12759,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -12184,6 +12772,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -12209,6 +12798,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -12228,6 +12818,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -12247,6 +12838,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "by", }, @@ -12260,6 +12852,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "having", }, @@ -12272,6 +12865,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -12284,6 +12878,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -12309,6 +12904,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -12334,6 +12930,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -12370,6 +12967,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -12395,6 +12993,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -12414,6 +13013,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "create", }, @@ -12433,6 +13033,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "update", }, @@ -12464,6 +13065,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -12476,6 +13078,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skipDuplicates", }, @@ -12507,6 +13110,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -12519,6 +13123,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skipDuplicates", }, @@ -12544,6 +13149,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -12575,6 +13181,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -12588,6 +13195,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -12619,6 +13227,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -12632,6 +13241,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -12644,6 +13254,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -12675,6 +13286,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -12688,6 +13300,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -12700,6 +13313,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -12725,6 +13339,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -12737,6 +13352,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -12761,6 +13377,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "query", }, @@ -12773,6 +13390,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "parameters", }, @@ -12796,6 +13414,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "query", }, @@ -12808,6 +13427,7 @@ exports[`getDMMF success @@map model 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "parameters", }, @@ -13678,6 +14298,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -13690,6 +14311,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -13714,6 +14336,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -13726,6 +14349,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -13750,6 +14374,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -13762,6 +14387,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -13786,6 +14412,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -13798,6 +14425,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -13822,6 +14450,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -13834,6 +14463,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -13858,6 +14488,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -13870,6 +14501,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -13894,6 +14526,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -13906,6 +14539,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -13938,6 +14572,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -13951,6 +14586,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -13970,6 +14606,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -13988,6 +14625,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -14006,6 +14644,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "authorId", }, @@ -14024,6 +14663,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "title", }, @@ -14042,6 +14682,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "published", }, @@ -14061,6 +14702,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "author", }, @@ -14087,6 +14729,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -14100,6 +14743,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "authorId", }, @@ -14113,6 +14757,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "title", }, @@ -14126,6 +14771,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "published", }, @@ -14139,6 +14785,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "author", }, @@ -14167,6 +14814,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "authorId_title", }, @@ -14186,6 +14834,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -14199,6 +14848,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -14218,6 +14868,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -14236,6 +14887,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -14254,6 +14906,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "authorId", }, @@ -14272,6 +14925,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "title", }, @@ -14290,6 +14944,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "published", }, @@ -14309,6 +14964,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "author", }, @@ -14335,6 +14991,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -14348,6 +15005,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "authorId", }, @@ -14361,6 +15019,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "title", }, @@ -14374,6 +15033,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "published", }, @@ -14387,6 +15047,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -14400,6 +15061,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -14413,6 +15075,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -14426,6 +15089,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -14439,6 +15103,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -14470,6 +15135,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -14483,6 +15149,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -14502,6 +15169,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -14520,6 +15188,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -14538,6 +15207,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "authorId", }, @@ -14556,6 +15226,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "title", }, @@ -14574,6 +15245,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "published", }, @@ -14606,6 +15278,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -14619,6 +15292,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -14638,6 +15312,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -14656,6 +15331,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -14674,6 +15350,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "email", }, @@ -14687,6 +15364,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "posts", }, @@ -14713,6 +15391,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -14726,6 +15405,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "email", }, @@ -14739,6 +15419,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "posts", }, @@ -14767,6 +15448,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -14779,6 +15461,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "email", }, @@ -14798,6 +15481,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -14811,6 +15495,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -14830,6 +15515,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -14843,6 +15529,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "posts", }, @@ -14869,6 +15556,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -14882,6 +15570,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "email", }, @@ -14895,6 +15584,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -14908,6 +15598,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -14921,6 +15612,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -14934,6 +15626,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -14947,6 +15640,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -14978,6 +15672,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -14991,6 +15686,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -15010,6 +15706,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -15028,6 +15725,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -15046,6 +15744,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "email", }, @@ -15078,6 +15777,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -15091,6 +15791,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -15110,6 +15811,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -15128,6 +15830,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -15146,6 +15849,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -15164,6 +15868,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -15182,6 +15887,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -15208,6 +15914,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -15221,6 +15928,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -15234,6 +15942,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -15247,6 +15956,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -15275,6 +15985,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName_lastName", }, @@ -15294,6 +16005,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -15307,6 +16019,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -15326,6 +16039,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -15344,6 +16058,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -15362,6 +16077,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -15380,6 +16096,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -15398,6 +16115,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -15424,6 +16142,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -15437,6 +16156,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -15450,6 +16170,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -15463,6 +16184,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -15476,6 +16198,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -15489,6 +16212,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -15502,6 +16226,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -15515,6 +16240,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -15528,6 +16254,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -15559,6 +16286,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -15572,6 +16300,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -15591,6 +16320,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -15609,6 +16339,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -15627,6 +16358,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -15645,6 +16377,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -15663,6 +16396,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -15695,6 +16429,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -15708,6 +16443,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -15727,6 +16463,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -15745,6 +16482,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -15763,6 +16501,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -15781,6 +16520,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -15799,6 +16539,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -15825,6 +16566,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -15838,6 +16580,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -15851,6 +16594,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -15864,6 +16608,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -15892,6 +16637,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName_lastName_isAdmin", }, @@ -15911,6 +16657,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -15924,6 +16671,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -15943,6 +16691,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -15961,6 +16710,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -15979,6 +16729,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -15997,6 +16748,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -16015,6 +16767,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -16041,6 +16794,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -16054,6 +16808,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -16067,6 +16822,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -16080,6 +16836,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -16093,6 +16850,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -16106,6 +16864,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -16119,6 +16878,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -16132,6 +16892,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -16145,6 +16906,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -16176,6 +16938,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -16189,6 +16952,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -16208,6 +16972,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -16226,6 +16991,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -16244,6 +17010,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -16262,6 +17029,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -16280,6 +17048,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -16305,6 +17074,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -16317,6 +17087,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "title", }, @@ -16329,6 +17100,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "published", }, @@ -16342,6 +17114,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "author", }, @@ -16366,6 +17139,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -16378,6 +17152,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "authorId", }, @@ -16390,6 +17165,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "title", }, @@ -16402,6 +17178,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "published", }, @@ -16432,6 +17209,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -16450,6 +17228,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "title", }, @@ -16468,6 +17247,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "published", }, @@ -16481,6 +17261,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "author", }, @@ -16511,6 +17292,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -16529,6 +17311,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "authorId", }, @@ -16547,6 +17330,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "title", }, @@ -16565,6 +17349,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "published", }, @@ -16589,6 +17374,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -16601,6 +17387,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "authorId", }, @@ -16613,6 +17400,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "title", }, @@ -16625,6 +17413,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "published", }, @@ -16655,6 +17444,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -16673,6 +17463,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "title", }, @@ -16691,6 +17482,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "published", }, @@ -16721,6 +17513,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -16739,6 +17532,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "authorId", }, @@ -16757,6 +17551,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "title", }, @@ -16775,6 +17570,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "published", }, @@ -16799,6 +17595,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "email", }, @@ -16812,6 +17609,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "posts", }, @@ -16836,6 +17634,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -16848,6 +17647,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "email", }, @@ -16861,6 +17661,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "posts", }, @@ -16891,6 +17692,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "email", }, @@ -16904,6 +17706,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "posts", }, @@ -16934,6 +17737,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -16952,6 +17756,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "email", }, @@ -16965,6 +17770,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "posts", }, @@ -16989,6 +17795,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -17001,6 +17808,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "email", }, @@ -17031,6 +17839,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "email", }, @@ -17061,6 +17870,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -17079,6 +17889,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "email", }, @@ -17103,6 +17914,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -17115,6 +17927,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "firstName", }, @@ -17127,6 +17940,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "lastName", }, @@ -17139,6 +17953,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -17163,6 +17978,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -17175,6 +17991,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "firstName", }, @@ -17187,6 +18004,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "lastName", }, @@ -17199,6 +18017,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -17229,6 +18048,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -17247,6 +18067,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -17265,6 +18086,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -17283,6 +18105,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -17313,6 +18136,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -17331,6 +18155,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -17349,6 +18174,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -17367,6 +18193,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -17391,6 +18218,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -17403,6 +18231,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "firstName", }, @@ -17415,6 +18244,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "lastName", }, @@ -17427,6 +18257,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -17457,6 +18288,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -17475,6 +18307,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -17493,6 +18326,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -17511,6 +18345,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -17541,6 +18376,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -17559,6 +18395,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -17577,6 +18414,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -17595,6 +18433,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -17619,6 +18458,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -17631,6 +18471,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "firstName", }, @@ -17643,6 +18484,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "lastName", }, @@ -17655,6 +18497,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -17679,6 +18522,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -17691,6 +18535,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "firstName", }, @@ -17703,6 +18548,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "lastName", }, @@ -17715,6 +18561,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -17745,6 +18592,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -17763,6 +18611,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -17781,6 +18630,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -17799,6 +18649,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -17829,6 +18680,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -17847,6 +18699,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -17865,6 +18718,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -17883,6 +18737,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -17907,6 +18762,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -17919,6 +18775,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "firstName", }, @@ -17931,6 +18788,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "lastName", }, @@ -17943,6 +18801,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -17973,6 +18832,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -17991,6 +18851,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -18009,6 +18870,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -18027,6 +18889,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -18057,6 +18920,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -18075,6 +18939,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "firstName", }, @@ -18093,6 +18958,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lastName", }, @@ -18111,6 +18977,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "isAdmin", }, @@ -18141,6 +19008,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -18159,6 +19027,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -18177,6 +19046,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -18195,6 +19065,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -18213,6 +19084,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -18231,6 +19103,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -18249,6 +19122,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -18267,6 +19141,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -18294,6 +19169,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -18312,6 +19188,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -18330,6 +19207,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -18348,6 +19226,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -18366,6 +19245,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -18384,6 +19264,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -18402,6 +19283,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -18420,6 +19302,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -18438,6 +19321,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -18456,6 +19340,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -18469,6 +19354,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "mode", }, @@ -18487,6 +19373,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -18514,6 +19401,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -18532,6 +19420,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -18554,6 +19443,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "is", }, @@ -18567,6 +19457,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isNot", }, @@ -18591,6 +19482,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "authorId", }, @@ -18603,6 +19495,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "title", }, @@ -18628,6 +19521,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -18641,6 +19535,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "authorId", }, @@ -18654,6 +19549,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "title", }, @@ -18667,6 +19563,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "published", }, @@ -18692,6 +19589,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -18705,6 +19603,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "authorId", }, @@ -18730,6 +19629,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -18743,6 +19643,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "authorId", }, @@ -18756,6 +19657,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "title", }, @@ -18769,6 +19671,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "published", }, @@ -18794,6 +19697,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -18807,6 +19711,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "authorId", }, @@ -18820,6 +19725,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "title", }, @@ -18833,6 +19739,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "published", }, @@ -18858,6 +19765,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -18871,6 +19779,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "authorId", }, @@ -18901,6 +19810,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -18919,6 +19829,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -18937,6 +19848,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -18955,6 +19867,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -18973,6 +19886,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -18991,6 +19905,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -19009,6 +19924,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -19027,6 +19943,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -19040,6 +19957,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -19053,6 +19971,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -19066,6 +19985,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -19079,6 +19999,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -19092,6 +20013,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -19119,6 +20041,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -19137,6 +20060,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -19155,6 +20079,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -19173,6 +20098,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -19191,6 +20117,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -19209,6 +20136,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -19227,6 +20155,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -19245,6 +20174,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -19263,6 +20193,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -19281,6 +20212,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -19294,6 +20226,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "mode", }, @@ -19312,6 +20245,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -19325,6 +20259,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -19338,6 +20273,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -19351,6 +20287,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -19378,6 +20315,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -19396,6 +20334,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -19409,6 +20348,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -19422,6 +20362,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -19435,6 +20376,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -19457,6 +20399,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "every", }, @@ -19470,6 +20413,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "some", }, @@ -19483,6 +20427,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "none", }, @@ -19508,6 +20453,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -19533,6 +20479,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -19546,6 +20493,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "email", }, @@ -19571,6 +20519,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -19596,6 +20545,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -19609,6 +20559,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "email", }, @@ -19634,6 +20585,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -19647,6 +20599,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "email", }, @@ -19672,6 +20625,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -19696,6 +20650,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "firstName", }, @@ -19708,6 +20663,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "lastName", }, @@ -19733,6 +20689,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -19746,6 +20703,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -19759,6 +20717,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -19772,6 +20731,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -19797,6 +20757,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -19822,6 +20783,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -19835,6 +20797,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -19848,6 +20811,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -19861,6 +20825,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -19886,6 +20851,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -19899,6 +20865,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -19912,6 +20879,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -19925,6 +20893,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -19950,6 +20919,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -19974,6 +20944,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "firstName", }, @@ -19986,6 +20957,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "lastName", }, @@ -19998,6 +20970,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "isAdmin", }, @@ -20023,6 +20996,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -20036,6 +21010,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -20049,6 +21024,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -20062,6 +21038,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -20087,6 +21064,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -20112,6 +21090,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -20125,6 +21104,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -20138,6 +21118,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -20151,6 +21132,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -20176,6 +21158,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -20189,6 +21172,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "firstName", }, @@ -20202,6 +21186,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "lastName", }, @@ -20215,6 +21200,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "isAdmin", }, @@ -20240,6 +21226,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -20271,6 +21258,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "create", }, @@ -20284,6 +21272,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "connectOrCreate", }, @@ -20297,6 +21286,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "connect", }, @@ -20321,6 +21311,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -20333,6 +21324,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "increment", }, @@ -20345,6 +21337,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "decrement", }, @@ -20357,6 +21350,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "multiply", }, @@ -20369,6 +21363,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "divide", }, @@ -20393,6 +21388,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -20417,6 +21413,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -20448,6 +21445,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "create", }, @@ -20461,6 +21459,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "connectOrCreate", }, @@ -20474,6 +21473,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "upsert", }, @@ -20487,6 +21487,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "connect", }, @@ -20512,6 +21513,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "update", }, @@ -20555,6 +21557,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "create", }, @@ -20574,6 +21577,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "connectOrCreate", }, @@ -20587,6 +21591,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "createMany", }, @@ -20606,6 +21611,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "connect", }, @@ -20649,6 +21655,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "create", }, @@ -20668,6 +21675,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "connectOrCreate", }, @@ -20681,6 +21689,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "createMany", }, @@ -20700,6 +21709,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "connect", }, @@ -20743,6 +21753,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "create", }, @@ -20762,6 +21773,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "connectOrCreate", }, @@ -20781,6 +21793,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "upsert", }, @@ -20794,6 +21807,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "createMany", }, @@ -20813,6 +21827,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "set", }, @@ -20832,6 +21847,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "disconnect", }, @@ -20851,6 +21867,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "delete", }, @@ -20870,6 +21887,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "connect", }, @@ -20889,6 +21907,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "update", }, @@ -20908,6 +21927,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "updateMany", }, @@ -20927,6 +21947,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "deleteMany", }, @@ -20970,6 +21991,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "create", }, @@ -20989,6 +22011,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "connectOrCreate", }, @@ -21008,6 +22031,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "upsert", }, @@ -21021,6 +22045,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "createMany", }, @@ -21040,6 +22065,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "set", }, @@ -21059,6 +22085,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "disconnect", }, @@ -21078,6 +22105,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "delete", }, @@ -21097,6 +22125,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "connect", }, @@ -21116,6 +22145,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "update", }, @@ -21135,6 +22165,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "updateMany", }, @@ -21154,6 +22185,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "deleteMany", }, @@ -21184,6 +22216,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -21202,6 +22235,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -21220,6 +22254,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -21238,6 +22273,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -21256,6 +22292,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -21274,6 +22311,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -21292,6 +22330,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -21310,6 +22349,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -21337,6 +22377,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -21355,6 +22396,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -21373,6 +22415,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -21391,6 +22434,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -21409,6 +22453,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -21427,6 +22472,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -21445,6 +22491,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -21463,6 +22510,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -21481,6 +22529,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -21499,6 +22548,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -21517,6 +22567,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -21544,6 +22595,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -21562,6 +22614,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -21589,6 +22642,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -21607,6 +22661,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -21625,6 +22680,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -21643,6 +22699,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -21661,6 +22718,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -21679,6 +22737,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -21697,6 +22756,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -21715,6 +22775,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -21728,6 +22789,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -21741,6 +22803,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -21754,6 +22817,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -21767,6 +22831,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -21780,6 +22845,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -21807,6 +22873,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -21825,6 +22892,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -21843,6 +22911,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -21861,6 +22930,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -21879,6 +22949,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -21897,6 +22968,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -21915,6 +22987,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -21933,6 +23006,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -21960,6 +23034,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -21978,6 +23053,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -21996,6 +23072,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -22014,6 +23091,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -22032,6 +23110,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -22050,6 +23129,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -22068,6 +23148,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -22086,6 +23167,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -22104,6 +23186,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -22122,6 +23205,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -22140,6 +23224,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -22153,6 +23238,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -22166,6 +23252,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -22179,6 +23266,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -22206,6 +23294,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -22224,6 +23313,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -22237,6 +23327,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -22250,6 +23341,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -22263,6 +23355,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -22284,6 +23377,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "email", }, @@ -22308,6 +23402,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -22320,6 +23415,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "email", }, @@ -22345,6 +23441,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -22364,6 +23461,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "create", }, @@ -22395,6 +23493,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "update", }, @@ -22414,6 +23513,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "create", }, @@ -22427,6 +23527,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -22452,6 +23553,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -22471,6 +23573,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -22501,6 +23604,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "email", }, @@ -22531,6 +23635,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -22549,6 +23654,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "email", }, @@ -22573,6 +23679,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -22585,6 +23692,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "title", }, @@ -22597,6 +23705,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "published", }, @@ -22621,6 +23730,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -22633,6 +23743,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "title", }, @@ -22645,6 +23756,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "published", }, @@ -22670,6 +23782,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -22689,6 +23802,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "create", }, @@ -22720,6 +23834,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -22732,6 +23847,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skipDuplicates", }, @@ -22757,6 +23873,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -22776,6 +23893,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "update", }, @@ -22795,6 +23913,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "create", }, @@ -22820,6 +23939,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -22839,6 +23959,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -22864,6 +23985,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -22883,6 +24005,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -22914,6 +24037,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -22927,6 +24051,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -22946,6 +24071,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -22964,6 +24090,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -22982,6 +24109,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "authorId", }, @@ -23000,6 +24128,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "title", }, @@ -23018,6 +24147,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "published", }, @@ -23043,6 +24173,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -23055,6 +24186,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "title", }, @@ -23067,6 +24199,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "published", }, @@ -23097,6 +24230,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -23115,6 +24249,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "title", }, @@ -23133,6 +24268,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "published", }, @@ -23163,6 +24299,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -23181,6 +24318,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "title", }, @@ -23199,6 +24337,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "published", }, @@ -23229,6 +24368,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -23247,6 +24387,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "title", }, @@ -23265,6 +24406,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "published", }, @@ -23368,6 +24510,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -23387,6 +24530,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -23400,6 +24544,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -23412,6 +24557,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -23424,6 +24570,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -23443,6 +24590,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -23918,6 +25066,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -23937,6 +25086,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -23950,6 +25100,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -23962,6 +25113,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -23974,6 +25126,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -23993,6 +25146,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -24018,6 +25172,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -24037,6 +25192,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -24050,6 +25206,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -24062,6 +25219,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -24074,6 +25232,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -24093,6 +25252,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -24118,6 +25278,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -24137,6 +25298,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -24150,6 +25312,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -24162,6 +25325,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -24174,6 +25338,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -24193,6 +25358,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -24218,6 +25384,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -24237,6 +25404,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -24250,6 +25418,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -24262,6 +25431,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -24274,6 +25444,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -24299,6 +25470,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -24318,6 +25490,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -24337,6 +25510,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "by", }, @@ -24350,6 +25524,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "having", }, @@ -24362,6 +25537,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -24374,6 +25550,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -24399,6 +25576,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -24424,6 +25602,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -24449,6 +25628,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -24468,6 +25648,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -24481,6 +25662,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -24493,6 +25675,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -24505,6 +25688,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -24524,6 +25708,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -24549,6 +25734,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -24568,6 +25754,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -24581,6 +25768,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -24593,6 +25781,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -24605,6 +25794,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -24624,6 +25814,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -24649,6 +25840,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -24668,6 +25860,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -24681,6 +25874,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -24693,6 +25887,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -24705,6 +25900,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -24724,6 +25920,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -24749,6 +25946,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -24768,6 +25966,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -24781,6 +25980,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -24793,6 +25993,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -24805,6 +26006,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -24830,6 +26032,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -24849,6 +26052,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -24868,6 +26072,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "by", }, @@ -24881,6 +26086,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "having", }, @@ -24893,6 +26099,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -24905,6 +26112,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -24930,6 +26138,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -24955,6 +26164,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -24980,6 +26190,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -24999,6 +26210,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -25012,6 +26224,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -25024,6 +26237,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -25036,6 +26250,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -25055,6 +26270,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -25080,6 +26296,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -25099,6 +26316,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -25112,6 +26330,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -25124,6 +26343,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -25136,6 +26356,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -25155,6 +26376,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -25180,6 +26402,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -25199,6 +26422,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -25212,6 +26436,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -25224,6 +26449,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -25236,6 +26462,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -25255,6 +26482,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -25280,6 +26508,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -25299,6 +26528,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -25312,6 +26542,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -25324,6 +26555,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -25336,6 +26568,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -25361,6 +26594,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -25380,6 +26614,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -25399,6 +26634,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "by", }, @@ -25412,6 +26648,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "having", }, @@ -25424,6 +26661,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -25436,6 +26674,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -25461,6 +26700,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -25486,6 +26726,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -25511,6 +26752,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -25530,6 +26772,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -25543,6 +26786,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -25555,6 +26799,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -25567,6 +26812,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -25586,6 +26832,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -25611,6 +26858,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -25630,6 +26878,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -25643,6 +26892,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -25655,6 +26905,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -25667,6 +26918,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -25686,6 +26938,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -25711,6 +26964,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -25730,6 +26984,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -25743,6 +26998,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -25755,6 +27011,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -25767,6 +27024,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -25786,6 +27044,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -25811,6 +27070,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -25830,6 +27090,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -25843,6 +27104,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -25855,6 +27117,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -25867,6 +27130,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -25892,6 +27156,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -25911,6 +27176,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -25930,6 +27196,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "by", }, @@ -25943,6 +27210,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "having", }, @@ -25955,6 +27223,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -25967,6 +27236,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -25992,6 +27262,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -26017,6 +27288,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -26053,6 +27325,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -26078,6 +27351,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -26097,6 +27371,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "create", }, @@ -26116,6 +27391,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "update", }, @@ -26147,6 +27423,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -26159,6 +27436,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skipDuplicates", }, @@ -26190,6 +27468,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -26202,6 +27481,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skipDuplicates", }, @@ -26227,6 +27507,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -26258,6 +27539,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -26271,6 +27553,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -26302,6 +27585,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -26315,6 +27599,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -26327,6 +27612,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -26358,6 +27644,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -26371,6 +27658,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -26383,6 +27671,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -26408,6 +27697,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -26420,6 +27710,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -26451,6 +27742,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -26476,6 +27768,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -26495,6 +27788,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "create", }, @@ -26514,6 +27808,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "update", }, @@ -26545,6 +27840,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -26557,6 +27853,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skipDuplicates", }, @@ -26588,6 +27885,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -26600,6 +27898,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skipDuplicates", }, @@ -26625,6 +27924,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -26656,6 +27956,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -26669,6 +27970,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -26700,6 +28002,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -26713,6 +28016,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -26725,6 +28029,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -26756,6 +28061,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -26769,6 +28075,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -26781,6 +28088,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -26806,6 +28114,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -26818,6 +28127,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -26849,6 +28159,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -26874,6 +28185,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -26893,6 +28205,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "create", }, @@ -26912,6 +28225,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "update", }, @@ -26943,6 +28257,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -26955,6 +28270,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skipDuplicates", }, @@ -26986,6 +28302,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -26998,6 +28315,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skipDuplicates", }, @@ -27023,6 +28341,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -27054,6 +28373,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -27067,6 +28387,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -27098,6 +28419,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -27111,6 +28433,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -27123,6 +28446,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -27154,6 +28478,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -27167,6 +28492,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -27179,6 +28505,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -27204,6 +28531,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -27216,6 +28544,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -27247,6 +28576,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -27272,6 +28602,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -27291,6 +28622,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "create", }, @@ -27310,6 +28642,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "update", }, @@ -27341,6 +28674,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -27353,6 +28687,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skipDuplicates", }, @@ -27384,6 +28719,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -27396,6 +28732,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skipDuplicates", }, @@ -27421,6 +28758,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -27452,6 +28790,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -27465,6 +28804,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -27496,6 +28836,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -27509,6 +28850,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -27521,6 +28863,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -27552,6 +28895,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -27565,6 +28909,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -27577,6 +28922,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -27602,6 +28948,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -27614,6 +28961,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -27638,6 +28986,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "query", }, @@ -27650,6 +28999,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "parameters", }, @@ -27673,6 +29023,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "query", }, @@ -27685,6 +29036,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "parameters", }, @@ -28544,6 +29896,7 @@ exports[`getDMMF success @@unique model 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -29030,9 +30383,9 @@ exports[`getDMMF success @@unique model 1`] = ` } `; -exports[`getDMMF success big schema read 1`] = `163930366`; +exports[`getDMMF success big schema read 1`] = `178601452`; -exports[`getDMMF success chinook introspected schema 1`] = `1011534`; +exports[`getDMMF success chinook introspected schema 1`] = `1106509`; exports[`getDMMF success if a datamodel is provided, succeeds even when a non-existing datamodel path is given 2`] = ` { @@ -29084,6 +30437,7 @@ exports[`getDMMF success if a datamodel is provided, succeeds even when a non-ex }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "query", }, @@ -29096,6 +30450,7 @@ exports[`getDMMF success if a datamodel is provided, succeeds even when a non-ex }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "parameters", }, @@ -29119,6 +30474,7 @@ exports[`getDMMF success if a datamodel is provided, succeeds even when a non-ex }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "query", }, @@ -29131,6 +30487,7 @@ exports[`getDMMF success if a datamodel is provided, succeeds even when a non-ex }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "parameters", }, @@ -29361,6 +30718,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -29373,6 +30731,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -29397,6 +30756,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -29409,6 +30769,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -29433,6 +30794,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -29445,6 +30807,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -29477,6 +30840,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -29490,6 +30854,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -29509,6 +30874,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -29527,6 +30893,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -29545,6 +30912,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -29571,6 +30939,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -29584,6 +30953,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -29611,6 +30981,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -29630,6 +31001,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -29643,6 +31015,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -29662,6 +31035,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -29680,6 +31054,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -29706,6 +31081,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -29719,6 +31095,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -29732,6 +31109,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -29745,6 +31123,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -29758,6 +31137,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -29771,6 +31151,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -29784,6 +31165,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -29815,6 +31197,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -29828,6 +31211,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -29847,6 +31231,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -29865,6 +31250,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -29883,6 +31269,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -29915,6 +31302,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -29928,6 +31316,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -29947,6 +31336,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -29965,6 +31355,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -29983,6 +31374,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "title", }, @@ -30009,6 +31401,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -30022,6 +31415,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "title", }, @@ -30049,6 +31443,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -30068,6 +31463,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -30081,6 +31477,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -30100,6 +31497,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -30118,6 +31516,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "title", }, @@ -30144,6 +31543,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -30157,6 +31557,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "title", }, @@ -30170,6 +31571,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -30183,6 +31585,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -30196,6 +31599,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -30227,6 +31631,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -30240,6 +31645,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -30259,6 +31665,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -30277,6 +31684,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -30295,6 +31703,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "title", }, @@ -30320,6 +31729,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -30332,6 +31742,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -30356,6 +31767,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -30368,6 +31780,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -30398,6 +31811,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -30416,6 +31830,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -30446,6 +31861,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -30464,6 +31880,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -30488,6 +31905,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -30500,6 +31918,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -30530,6 +31949,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -30548,6 +31968,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -30578,6 +31999,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -30596,6 +32018,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -30620,6 +32043,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -30632,6 +32056,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "title", }, @@ -30656,6 +32081,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -30668,6 +32094,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "title", }, @@ -30698,6 +32125,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -30716,6 +32144,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "title", }, @@ -30746,6 +32175,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -30764,6 +32194,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "title", }, @@ -30788,6 +32219,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -30800,6 +32232,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "title", }, @@ -30830,6 +32263,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -30848,6 +32282,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "title", }, @@ -30878,6 +32313,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -30896,6 +32332,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "title", }, @@ -30926,6 +32363,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -30938,6 +32376,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -30950,6 +32389,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -30968,6 +32408,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -30986,6 +32427,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -31004,6 +32446,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -31022,6 +32465,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -31040,6 +32484,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -31067,6 +32512,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -31079,6 +32525,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -31091,6 +32538,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -31109,6 +32557,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -31127,6 +32576,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -31145,6 +32595,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -31163,6 +32614,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -31181,6 +32633,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -31199,6 +32652,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -31217,6 +32671,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -31235,6 +32690,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -31257,6 +32713,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -31270,6 +32727,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -31295,6 +32753,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -31320,6 +32779,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -31333,6 +32793,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -31358,6 +32819,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -31371,6 +32833,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -31396,6 +32859,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -31426,6 +32890,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -31438,6 +32903,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -31450,6 +32916,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -31468,6 +32935,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -31486,6 +32954,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -31504,6 +32973,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -31522,6 +32992,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -31540,6 +33011,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -31553,6 +33025,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -31566,6 +33039,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -31579,6 +33053,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -31592,6 +33067,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -31605,6 +33081,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -31632,6 +33109,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -31644,6 +33122,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -31656,6 +33135,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -31674,6 +33154,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -31692,6 +33173,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -31710,6 +33192,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -31728,6 +33211,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -31746,6 +33230,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -31764,6 +33249,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -31782,6 +33268,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -31800,6 +33287,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -31813,6 +33301,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -31826,6 +33315,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -31839,6 +33329,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -31861,6 +33352,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -31874,6 +33366,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "title", }, @@ -31899,6 +33392,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -31912,6 +33406,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "title", }, @@ -31937,6 +33432,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -31950,6 +33446,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "title", }, @@ -31974,6 +33471,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -31986,6 +33484,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "increment", }, @@ -31998,6 +33497,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "decrement", }, @@ -32010,6 +33510,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "multiply", }, @@ -32022,6 +33523,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "divide", }, @@ -32046,6 +33548,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -32076,6 +33579,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -32088,6 +33592,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -32100,6 +33605,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -32118,6 +33624,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -32136,6 +33643,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -32154,6 +33662,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -32172,6 +33681,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -32190,6 +33700,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -32217,6 +33728,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -32229,6 +33741,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -32241,6 +33754,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -32259,6 +33773,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -32277,6 +33792,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -32295,6 +33811,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -32313,6 +33830,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -32331,6 +33849,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -32349,6 +33868,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -32367,6 +33887,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -32385,6 +33906,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -32412,6 +33934,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -32424,6 +33947,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -32436,6 +33960,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -32454,6 +33979,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -32472,6 +33998,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -32490,6 +34017,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -32508,6 +34036,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -32526,6 +34055,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -32539,6 +34069,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -32552,6 +34083,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -32565,6 +34097,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -32578,6 +34111,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -32591,6 +34125,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -32618,6 +34153,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -32630,6 +34166,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -32642,6 +34179,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -32660,6 +34198,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -32678,6 +34217,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -32696,6 +34236,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -32714,6 +34255,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -32732,6 +34274,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -32759,6 +34302,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -32771,6 +34315,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -32783,6 +34328,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -32801,6 +34347,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -32819,6 +34366,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -32837,6 +34385,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -32855,6 +34404,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -32873,6 +34423,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -32891,6 +34442,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -32909,6 +34461,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -32927,6 +34480,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -32940,6 +34494,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -32953,6 +34508,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -32966,6 +34522,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -33142,6 +34699,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -33161,6 +34719,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -33174,6 +34733,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -33186,6 +34746,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -33198,6 +34759,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -33217,6 +34779,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -33242,6 +34805,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -33261,6 +34825,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -33274,6 +34839,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -33286,6 +34852,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -33298,6 +34865,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -33317,6 +34885,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -33342,6 +34911,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -33361,6 +34931,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -33374,6 +34945,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -33386,6 +34958,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -33398,6 +34971,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -33417,6 +34991,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -33442,6 +35017,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -33461,6 +35037,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -33474,6 +35051,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -33486,6 +35064,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -33498,6 +35077,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -33523,6 +35103,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -33542,6 +35123,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -33561,6 +35143,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "by", }, @@ -33574,6 +35157,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "having", }, @@ -33586,6 +35170,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -33598,6 +35183,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -33623,6 +35209,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -33648,6 +35235,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -33673,6 +35261,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -33692,6 +35281,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -33705,6 +35295,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -33717,6 +35308,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -33729,6 +35321,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -33748,6 +35341,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -33773,6 +35367,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -33792,6 +35387,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -33805,6 +35401,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -33817,6 +35414,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -33829,6 +35427,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -33848,6 +35447,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -33873,6 +35473,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -33892,6 +35493,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -33905,6 +35507,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -33917,6 +35520,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -33929,6 +35533,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -33948,6 +35553,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -33973,6 +35579,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -33992,6 +35599,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -34005,6 +35613,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -34017,6 +35626,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -34029,6 +35639,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -34054,6 +35665,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -34073,6 +35685,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -34092,6 +35705,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "by", }, @@ -34105,6 +35719,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "having", }, @@ -34117,6 +35732,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -34129,6 +35745,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -34154,6 +35771,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -34179,6 +35797,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -34215,6 +35834,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -34240,6 +35860,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -34259,6 +35880,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "create", }, @@ -34278,6 +35900,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "update", }, @@ -34309,6 +35932,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -34340,6 +35964,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -34365,6 +35990,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -34396,6 +36022,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -34409,6 +36036,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -34440,6 +36068,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -34453,6 +36082,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -34465,6 +36095,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -34496,6 +36127,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -34509,6 +36141,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -34521,6 +36154,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -34546,6 +36180,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -34558,6 +36193,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -34589,6 +36225,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -34614,6 +36251,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -34633,6 +36271,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "create", }, @@ -34652,6 +36291,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "update", }, @@ -34683,6 +36323,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -34714,6 +36355,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -34739,6 +36381,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -34770,6 +36413,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -34783,6 +36427,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -34814,6 +36459,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -34827,6 +36473,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -34839,6 +36486,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -34870,6 +36518,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -34883,6 +36532,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -34895,6 +36545,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -34920,6 +36571,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -34932,6 +36584,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -34956,6 +36609,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "query", }, @@ -34968,6 +36622,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "parameters", }, @@ -34991,6 +36646,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "query", }, @@ -35003,6 +36659,7 @@ exports[`getDMMF success multiple files 1`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "parameters", }, @@ -35475,7 +37132,7 @@ exports[`getDMMF success multiple files 1`] = ` } `; -exports[`getDMMF success odoo introspected schema 1`] = `138518688`; +exports[`getDMMF success odoo introspected schema 1`] = `150655492`; exports[`getDMMF success simple model, mongodb 1`] = ` { @@ -35673,6 +37330,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -35685,6 +37343,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -35709,6 +37368,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -35721,6 +37381,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -35745,6 +37406,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -35757,6 +37419,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -35781,6 +37444,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -35793,6 +37457,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -35817,6 +37482,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -35829,6 +37495,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -35853,6 +37520,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -35865,6 +37533,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -35897,6 +37566,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -35910,6 +37580,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -35929,6 +37600,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -35947,6 +37619,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -35965,6 +37638,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -35991,6 +37665,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -36004,6 +37679,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -36031,6 +37707,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -36050,6 +37727,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -36063,6 +37741,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -36082,6 +37761,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -36100,6 +37780,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -36126,6 +37807,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -36139,6 +37821,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -36152,6 +37835,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -36165,6 +37849,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -36178,6 +37863,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -36191,6 +37877,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -36204,6 +37891,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -36235,6 +37923,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -36248,6 +37937,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -36267,6 +37957,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -36285,6 +37976,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -36303,6 +37995,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -36328,6 +38021,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -36340,6 +38034,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -36364,6 +38059,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -36376,6 +38072,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -36406,6 +38103,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -36436,6 +38134,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -36460,6 +38159,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -36472,6 +38172,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -36502,6 +38203,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -36532,6 +38234,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -36562,6 +38265,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -36580,6 +38284,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -36598,6 +38303,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -36616,6 +38322,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -36634,6 +38341,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -36652,6 +38360,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -36670,6 +38379,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -36688,6 +38398,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -36715,6 +38426,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -36733,6 +38445,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -36751,6 +38464,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -36769,6 +38483,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -36787,6 +38502,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -36805,6 +38521,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -36823,6 +38540,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -36841,6 +38559,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -36859,6 +38578,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -36877,6 +38597,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -36890,6 +38611,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "mode", }, @@ -36908,6 +38630,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -36930,6 +38653,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -36943,6 +38667,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -36968,6 +38693,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -36993,6 +38719,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -37006,6 +38733,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -37031,6 +38759,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -37044,6 +38773,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -37069,6 +38799,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -37099,6 +38830,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -37117,6 +38849,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -37135,6 +38868,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -37153,6 +38887,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -37171,6 +38906,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -37189,6 +38925,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -37207,6 +38944,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -37225,6 +38963,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -37238,6 +38977,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -37251,6 +38991,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -37264,6 +39005,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -37277,6 +39019,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -37290,6 +39033,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -37317,6 +39061,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -37335,6 +39080,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -37353,6 +39099,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -37371,6 +39118,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -37389,6 +39137,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -37407,6 +39156,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -37425,6 +39175,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -37443,6 +39194,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -37461,6 +39213,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -37479,6 +39232,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -37492,6 +39246,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "mode", }, @@ -37510,6 +39265,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -37523,6 +39279,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -37536,6 +39293,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -37549,6 +39307,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -37570,6 +39329,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -37600,6 +39360,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -37618,6 +39379,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -37636,6 +39398,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -37654,6 +39417,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -37672,6 +39436,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -37690,6 +39455,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -37708,6 +39474,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -37726,6 +39493,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -37753,6 +39521,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -37771,6 +39540,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -37789,6 +39559,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -37807,6 +39578,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -37825,6 +39597,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -37843,6 +39616,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -37861,6 +39635,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -37879,6 +39654,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -37897,6 +39673,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -37915,6 +39692,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -37933,6 +39711,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -37960,6 +39739,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -37978,6 +39758,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -37996,6 +39777,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -38014,6 +39796,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -38032,6 +39815,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -38050,6 +39834,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -38068,6 +39853,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -38086,6 +39872,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -38099,6 +39886,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -38112,6 +39900,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -38125,6 +39914,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -38138,6 +39928,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -38151,6 +39942,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -38178,6 +39970,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -38196,6 +39989,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -38214,6 +40008,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -38232,6 +40027,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -38250,6 +40046,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -38268,6 +40065,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -38286,6 +40084,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -38304,6 +40103,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -38331,6 +40131,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -38349,6 +40150,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -38367,6 +40169,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -38385,6 +40188,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -38403,6 +40207,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -38421,6 +40226,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -38439,6 +40245,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -38457,6 +40264,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -38475,6 +40283,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -38493,6 +40302,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -38511,6 +40321,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -38524,6 +40335,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -38537,6 +40349,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -38550,6 +40363,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -38601,6 +40415,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -38620,6 +40435,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -38633,6 +40449,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -38645,6 +40462,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -38657,6 +40475,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -38676,6 +40495,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -38701,6 +40521,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -38720,6 +40541,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -38733,6 +40555,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -38745,6 +40568,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -38757,6 +40581,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -38776,6 +40601,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -38801,6 +40627,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -38820,6 +40647,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -38833,6 +40661,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -38845,6 +40674,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -38857,6 +40687,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -38876,6 +40707,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -38901,6 +40733,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -38920,6 +40753,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -38933,6 +40767,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -38945,6 +40780,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -38957,6 +40793,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -38982,6 +40819,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -39001,6 +40839,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -39020,6 +40859,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "by", }, @@ -39033,6 +40873,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "having", }, @@ -39045,6 +40886,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -39057,6 +40899,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -39082,6 +40925,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -39107,6 +40951,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -39131,6 +40976,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "filter", }, @@ -39143,6 +40989,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "options", }, @@ -39166,6 +41013,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "pipeline", }, @@ -39178,6 +41026,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "options", }, @@ -39213,6 +41062,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -39238,6 +41088,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -39257,6 +41108,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "create", }, @@ -39276,6 +41128,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "update", }, @@ -39307,6 +41160,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -39332,6 +41186,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -39363,6 +41218,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -39376,6 +41232,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -39407,6 +41264,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -39420,6 +41278,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -39432,6 +41291,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -39457,6 +41317,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -39469,6 +41330,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -39493,6 +41355,7 @@ exports[`getDMMF success simple model, mongodb 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "command", }, @@ -39985,6 +41848,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -39997,6 +41861,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -40021,6 +41886,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -40033,6 +41899,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -40057,6 +41924,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -40069,6 +41937,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -40101,6 +41970,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -40114,6 +41984,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -40133,6 +42004,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -40151,6 +42023,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -40169,6 +42042,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -40195,6 +42069,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -40208,6 +42083,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -40221,6 +42097,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_relevance", }, @@ -40248,6 +42125,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -40267,6 +42145,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -40280,6 +42159,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -40299,6 +42179,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -40317,6 +42198,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -40343,6 +42225,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -40356,6 +42239,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -40369,6 +42253,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -40382,6 +42267,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -40395,6 +42281,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -40408,6 +42295,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -40421,6 +42309,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -40452,6 +42341,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -40465,6 +42355,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -40484,6 +42375,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -40502,6 +42394,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -40520,6 +42413,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -40545,6 +42439,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -40557,6 +42452,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -40581,6 +42477,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -40593,6 +42490,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -40623,6 +42521,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -40641,6 +42540,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -40671,6 +42571,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -40689,6 +42590,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -40713,6 +42615,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -40725,6 +42628,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -40755,6 +42659,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -40773,6 +42678,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -40803,6 +42709,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -40821,6 +42728,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -40851,6 +42759,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -40863,6 +42772,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -40875,6 +42785,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -40893,6 +42804,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -40911,6 +42823,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -40929,6 +42842,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -40947,6 +42861,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -40965,6 +42880,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -40992,6 +42908,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -41004,6 +42921,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -41016,6 +42934,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -41034,6 +42953,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -41052,6 +42972,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -41070,6 +42991,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -41088,6 +43010,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -41106,6 +43029,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -41124,6 +43048,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -41142,6 +43067,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -41154,6 +43080,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "search", }, @@ -41172,6 +43099,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -41200,6 +43128,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "fields", }, @@ -41213,6 +43142,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "sort", }, @@ -41225,6 +43155,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "search", }, @@ -41250,6 +43181,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -41263,6 +43195,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -41288,6 +43221,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -41313,6 +43247,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -41326,6 +43261,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -41351,6 +43287,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -41364,6 +43301,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -41389,6 +43327,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -41419,6 +43358,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -41431,6 +43371,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -41443,6 +43384,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -41461,6 +43403,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -41479,6 +43422,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -41497,6 +43441,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -41515,6 +43460,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -41533,6 +43479,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -41546,6 +43493,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -41559,6 +43507,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -41572,6 +43521,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -41585,6 +43535,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -41598,6 +43549,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -41625,6 +43577,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -41637,6 +43590,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -41649,6 +43603,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -41667,6 +43622,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -41685,6 +43641,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -41703,6 +43660,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -41721,6 +43679,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -41739,6 +43698,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -41757,6 +43717,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -41775,6 +43736,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -41787,6 +43749,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "search", }, @@ -41805,6 +43768,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -41818,6 +43782,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -41831,6 +43796,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -41844,6 +43810,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -41865,6 +43832,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -41877,6 +43845,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "increment", }, @@ -41889,6 +43858,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "decrement", }, @@ -41901,6 +43871,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "multiply", }, @@ -41913,6 +43884,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "divide", }, @@ -41937,6 +43909,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -41967,6 +43940,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -41979,6 +43953,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -41991,6 +43966,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -42009,6 +43985,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -42027,6 +44004,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -42045,6 +44023,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -42063,6 +44042,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -42081,6 +44061,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -42108,6 +44089,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -42120,6 +44102,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -42132,6 +44115,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -42150,6 +44134,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -42168,6 +44153,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -42186,6 +44172,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -42204,6 +44191,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -42222,6 +44210,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -42240,6 +44229,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -42258,6 +44248,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -42270,6 +44261,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "search", }, @@ -42288,6 +44280,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -42315,6 +44308,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -42327,6 +44321,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -42339,6 +44334,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -42357,6 +44353,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -42375,6 +44372,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -42393,6 +44391,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -42411,6 +44410,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -42429,6 +44429,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -42442,6 +44443,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -42455,6 +44457,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -42468,6 +44471,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -42481,6 +44485,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -42494,6 +44499,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -42521,6 +44527,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -42533,6 +44540,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -42545,6 +44553,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -42563,6 +44572,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -42581,6 +44591,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -42599,6 +44610,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -42617,6 +44629,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -42635,6 +44648,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -42662,6 +44676,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -42674,6 +44689,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -42686,6 +44702,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -42704,6 +44721,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -42722,6 +44740,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -42740,6 +44759,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -42758,6 +44778,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -42776,6 +44797,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -42794,6 +44816,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -42812,6 +44835,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -42824,6 +44848,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "search", }, @@ -42842,6 +44867,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -42855,6 +44881,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -42868,6 +44895,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -42881,6 +44909,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -42932,6 +44961,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -42951,6 +44981,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -42964,6 +44995,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -42976,6 +45008,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -42988,6 +45021,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -43007,6 +45041,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -43032,6 +45067,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -43051,6 +45087,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -43064,6 +45101,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -43076,6 +45114,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -43088,6 +45127,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -43107,6 +45147,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -43132,6 +45173,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -43151,6 +45193,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -43164,6 +45207,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -43176,6 +45220,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -43188,6 +45233,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -43207,6 +45253,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -43232,6 +45279,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -43251,6 +45299,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -43264,6 +45313,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -43276,6 +45326,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -43288,6 +45339,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -43313,6 +45365,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -43332,6 +45385,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -43351,6 +45405,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "by", }, @@ -43364,6 +45419,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "having", }, @@ -43376,6 +45432,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -43388,6 +45445,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -43413,6 +45471,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -43438,6 +45497,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -43474,6 +45534,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -43499,6 +45560,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -43518,6 +45580,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "create", }, @@ -43537,6 +45600,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "update", }, @@ -43568,6 +45632,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -43580,6 +45645,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skipDuplicates", }, @@ -43605,6 +45671,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -43636,6 +45703,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -43649,6 +45717,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -43680,6 +45749,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -43693,6 +45763,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -43705,6 +45776,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -43730,6 +45802,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -43742,6 +45815,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -43766,6 +45840,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "query", }, @@ -43778,6 +45853,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "parameters", }, @@ -43801,6 +45877,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "query", }, @@ -43813,6 +45890,7 @@ exports[`getDMMF success simple model, mysql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "parameters", }, @@ -44286,6 +46364,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -44298,6 +46377,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -44322,6 +46402,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -44334,6 +46415,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -44358,6 +46440,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -44370,6 +46453,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -44402,6 +46486,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -44415,6 +46500,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -44434,6 +46520,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -44452,6 +46539,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -44470,6 +46558,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -44496,6 +46585,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -44509,6 +46599,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -44536,6 +46627,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -44555,6 +46647,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -44568,6 +46661,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -44587,6 +46681,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -44605,6 +46700,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -44631,6 +46727,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -44644,6 +46741,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -44657,6 +46755,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -44670,6 +46769,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -44683,6 +46783,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -44696,6 +46797,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -44709,6 +46811,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -44740,6 +46843,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -44753,6 +46857,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -44772,6 +46877,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -44790,6 +46896,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -44808,6 +46915,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -44833,6 +46941,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -44845,6 +46954,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -44869,6 +46979,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -44881,6 +46992,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -44911,6 +47023,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -44941,6 +47054,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -44971,6 +47085,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -45001,6 +47116,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -45031,6 +47147,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -45043,6 +47160,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -45055,6 +47173,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -45073,6 +47192,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -45091,6 +47211,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -45109,6 +47230,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -45127,6 +47249,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -45145,6 +47268,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -45172,6 +47296,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -45184,6 +47309,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -45196,6 +47322,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -45214,6 +47341,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -45232,6 +47360,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -45250,6 +47379,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -45268,6 +47398,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -45286,6 +47417,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -45304,6 +47436,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -45322,6 +47455,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -45340,6 +47474,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -45362,6 +47497,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -45375,6 +47511,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -45400,6 +47537,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -45425,6 +47563,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -45438,6 +47577,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -45463,6 +47603,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -45476,6 +47617,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -45501,6 +47643,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -45531,6 +47674,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -45543,6 +47687,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -45555,6 +47700,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -45573,6 +47719,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -45591,6 +47738,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -45609,6 +47757,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -45627,6 +47776,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -45645,6 +47795,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -45658,6 +47809,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -45671,6 +47823,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -45684,6 +47837,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -45697,6 +47851,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -45710,6 +47865,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -45737,6 +47893,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -45749,6 +47906,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -45761,6 +47919,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -45779,6 +47938,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -45797,6 +47957,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -45815,6 +47976,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -45833,6 +47995,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -45851,6 +48014,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -45869,6 +48033,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -45887,6 +48052,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -45905,6 +48071,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -45918,6 +48085,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -45931,6 +48099,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -45944,6 +48113,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -45965,6 +48135,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -45995,6 +48166,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -46007,6 +48179,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -46019,6 +48192,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -46037,6 +48211,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -46055,6 +48230,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -46073,6 +48249,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -46091,6 +48268,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -46109,6 +48287,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -46136,6 +48315,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -46148,6 +48328,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -46160,6 +48341,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -46178,6 +48360,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -46196,6 +48379,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -46214,6 +48398,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -46232,6 +48417,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -46250,6 +48436,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -46268,6 +48455,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -46286,6 +48474,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -46304,6 +48493,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -46331,6 +48521,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -46343,6 +48534,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -46355,6 +48547,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -46373,6 +48566,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -46391,6 +48585,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -46409,6 +48604,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -46427,6 +48623,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -46445,6 +48642,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -46458,6 +48656,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -46471,6 +48670,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -46484,6 +48684,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -46497,6 +48698,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -46510,6 +48712,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -46537,6 +48740,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -46549,6 +48753,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -46561,6 +48766,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -46579,6 +48785,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -46597,6 +48804,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -46615,6 +48823,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -46633,6 +48842,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -46651,6 +48861,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -46678,6 +48889,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -46690,6 +48902,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -46702,6 +48915,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -46720,6 +48934,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -46738,6 +48953,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -46756,6 +48972,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -46774,6 +48991,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -46792,6 +49010,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -46810,6 +49029,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -46828,6 +49048,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -46846,6 +49067,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -46859,6 +49081,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -46872,6 +49095,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -46885,6 +49109,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -46936,6 +49161,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -46955,6 +49181,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -46968,6 +49195,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -46980,6 +49208,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -46992,6 +49221,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -47011,6 +49241,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -47036,6 +49267,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -47055,6 +49287,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -47068,6 +49301,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -47080,6 +49314,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -47092,6 +49327,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -47111,6 +49347,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -47136,6 +49373,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -47155,6 +49393,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -47168,6 +49407,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -47180,6 +49420,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -47192,6 +49433,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -47211,6 +49453,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -47236,6 +49479,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -47255,6 +49499,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -47268,6 +49513,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -47280,6 +49526,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -47292,6 +49539,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -47317,6 +49565,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -47336,6 +49585,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -47355,6 +49605,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "by", }, @@ -47368,6 +49619,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "having", }, @@ -47380,6 +49632,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -47392,6 +49645,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -47417,6 +49671,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -47442,6 +49697,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -47478,6 +49734,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -47503,6 +49760,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -47522,6 +49780,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "create", }, @@ -47541,6 +49800,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "update", }, @@ -47566,6 +49826,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -47597,6 +49858,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -47610,6 +49872,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -47641,6 +49904,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -47654,6 +49918,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -47666,6 +49931,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -47691,6 +49957,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -47703,6 +49970,7 @@ exports[`getDMMF success simple model, no datasource 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -48199,6 +50467,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -48211,6 +50480,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -48235,6 +50505,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -48247,6 +50518,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -48271,6 +50543,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -48283,6 +50556,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -48307,6 +50581,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -48319,6 +50594,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -48343,6 +50619,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -48355,6 +50632,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -48379,6 +50657,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -48391,6 +50670,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -48423,6 +50703,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -48436,6 +50717,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -48455,6 +50737,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -48473,6 +50756,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -48491,6 +50775,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -48517,6 +50802,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -48530,6 +50816,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -48557,6 +50844,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -48576,6 +50864,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -48589,6 +50878,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -48608,6 +50898,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -48626,6 +50917,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -48652,6 +50944,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -48665,6 +50958,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -48678,6 +50972,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -48691,6 +50986,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -48704,6 +51000,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -48717,6 +51014,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -48730,6 +51028,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -48761,6 +51060,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -48774,6 +51074,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -48793,6 +51094,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -48811,6 +51113,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -48829,6 +51132,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -48854,6 +51158,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -48866,6 +51171,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -48890,6 +51196,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -48902,6 +51209,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -48932,6 +51240,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -48950,6 +51259,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -48980,6 +51290,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -48998,6 +51309,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -49022,6 +51334,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -49034,6 +51347,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -49064,6 +51378,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -49082,6 +51397,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -49112,6 +51428,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -49130,6 +51447,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -49160,6 +51478,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -49178,6 +51497,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -49196,6 +51516,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -49214,6 +51535,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -49232,6 +51554,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -49250,6 +51573,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -49268,6 +51592,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -49286,6 +51611,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -49313,6 +51639,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -49331,6 +51658,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -49349,6 +51677,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -49367,6 +51696,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -49385,6 +51715,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -49403,6 +51734,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -49421,6 +51753,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -49439,6 +51772,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -49457,6 +51791,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -49475,6 +51810,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -49488,6 +51824,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "mode", }, @@ -49506,6 +51843,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -49528,6 +51866,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -49541,6 +51880,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -49566,6 +51906,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -49591,6 +51932,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -49604,6 +51946,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -49629,6 +51972,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -49642,6 +51986,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -49667,6 +52012,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -49697,6 +52043,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -49715,6 +52062,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -49733,6 +52081,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -49751,6 +52100,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -49769,6 +52119,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -49787,6 +52138,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -49805,6 +52157,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -49823,6 +52176,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -49836,6 +52190,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -49849,6 +52204,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -49862,6 +52218,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -49875,6 +52232,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -49888,6 +52246,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -49915,6 +52274,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -49933,6 +52293,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -49951,6 +52312,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -49969,6 +52331,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -49987,6 +52350,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -50005,6 +52369,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -50023,6 +52388,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -50041,6 +52407,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -50059,6 +52426,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -50077,6 +52445,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -50090,6 +52459,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "mode", }, @@ -50108,6 +52478,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -50121,6 +52492,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -50134,6 +52506,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -50147,6 +52520,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -50168,6 +52542,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -50180,6 +52555,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "increment", }, @@ -50192,6 +52568,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "decrement", }, @@ -50204,6 +52581,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "multiply", }, @@ -50216,6 +52594,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "divide", }, @@ -50240,6 +52619,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -50270,6 +52650,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -50288,6 +52669,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -50306,6 +52688,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -50324,6 +52707,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -50342,6 +52726,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -50360,6 +52745,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -50378,6 +52764,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -50396,6 +52783,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -50423,6 +52811,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -50441,6 +52830,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -50459,6 +52849,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -50477,6 +52868,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -50495,6 +52887,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -50513,6 +52906,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -50531,6 +52925,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -50549,6 +52944,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -50567,6 +52963,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -50585,6 +52982,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -50603,6 +53001,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -50630,6 +53029,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -50648,6 +53048,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -50666,6 +53067,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -50684,6 +53086,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -50702,6 +53105,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -50720,6 +53124,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -50738,6 +53143,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -50756,6 +53162,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -50769,6 +53176,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -50782,6 +53190,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -50795,6 +53204,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -50808,6 +53218,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -50821,6 +53232,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -50848,6 +53260,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -50866,6 +53279,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -50884,6 +53298,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -50902,6 +53317,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -50920,6 +53336,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -50938,6 +53355,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -50956,6 +53374,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -50974,6 +53393,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -51001,6 +53421,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -51019,6 +53440,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -51037,6 +53459,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -51055,6 +53478,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -51073,6 +53497,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -51091,6 +53516,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -51109,6 +53535,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -51127,6 +53554,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -51145,6 +53573,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -51163,6 +53592,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -51181,6 +53611,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -51194,6 +53625,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -51207,6 +53639,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -51220,6 +53653,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -51321,6 +53755,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -51340,6 +53775,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -51353,6 +53789,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -51365,6 +53802,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -51377,6 +53815,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -51396,6 +53835,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -51421,6 +53861,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -51440,6 +53881,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -51453,6 +53895,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -51465,6 +53908,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -51477,6 +53921,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -51496,6 +53941,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -51521,6 +53967,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -51540,6 +53987,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -51553,6 +54001,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -51565,6 +54014,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -51577,6 +54027,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -51596,6 +54047,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -51621,6 +54073,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -51640,6 +54093,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -51653,6 +54107,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -51665,6 +54120,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -51677,6 +54133,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -51702,6 +54159,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -51721,6 +54179,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -51740,6 +54199,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "by", }, @@ -51753,6 +54213,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "having", }, @@ -51765,6 +54226,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -51777,6 +54239,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -51802,6 +54265,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -51827,6 +54291,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -51863,6 +54328,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -51888,6 +54354,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -51907,6 +54374,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "create", }, @@ -51926,6 +54394,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "update", }, @@ -51957,6 +54426,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -51969,6 +54439,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skipDuplicates", }, @@ -52000,6 +54471,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -52012,6 +54484,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skipDuplicates", }, @@ -52037,6 +54510,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -52068,6 +54542,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -52081,6 +54556,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -52112,6 +54588,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -52125,6 +54602,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -52137,6 +54615,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -52168,6 +54647,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -52181,6 +54661,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -52193,6 +54674,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -52218,6 +54700,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -52230,6 +54713,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -52254,6 +54738,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "query", }, @@ -52266,6 +54751,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "parameters", }, @@ -52289,6 +54775,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "query", }, @@ -52301,6 +54788,7 @@ exports[`getDMMF success simple model, postgresql 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "parameters", }, @@ -52788,6 +55276,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -52800,6 +55289,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -52824,6 +55314,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -52836,6 +55327,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -52860,6 +55352,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -52872,6 +55365,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -52904,6 +55398,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -52917,6 +55412,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -52936,6 +55432,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -52954,6 +55451,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -52972,6 +55470,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -52998,6 +55497,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -53011,6 +55511,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -53038,6 +55539,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -53057,6 +55559,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -53070,6 +55573,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -53089,6 +55593,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -53107,6 +55612,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -53133,6 +55639,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -53146,6 +55653,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -53159,6 +55667,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -53172,6 +55681,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -53185,6 +55695,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -53198,6 +55709,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -53211,6 +55723,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -53242,6 +55755,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -53255,6 +55769,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -53274,6 +55789,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -53292,6 +55808,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -53310,6 +55827,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -53335,6 +55853,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -53347,6 +55866,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -53371,6 +55891,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -53383,6 +55904,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -53413,6 +55935,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -53431,6 +55954,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -53461,6 +55985,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -53479,6 +56004,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -53503,6 +56029,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -53515,6 +56042,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -53545,6 +56073,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -53563,6 +56092,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -53593,6 +56123,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -53611,6 +56142,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -53641,6 +56173,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -53653,6 +56186,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -53665,6 +56199,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -53683,6 +56218,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -53701,6 +56237,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -53719,6 +56256,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -53737,6 +56275,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -53755,6 +56294,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -53782,6 +56322,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -53794,6 +56335,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -53806,6 +56348,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -53824,6 +56367,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -53842,6 +56386,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -53860,6 +56405,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -53878,6 +56424,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -53896,6 +56443,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -53914,6 +56462,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -53932,6 +56481,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -53950,6 +56500,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -53972,6 +56523,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -53985,6 +56537,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -54010,6 +56563,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -54035,6 +56589,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -54048,6 +56603,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -54073,6 +56629,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -54086,6 +56643,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -54111,6 +56669,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -54141,6 +56700,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -54153,6 +56713,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -54165,6 +56726,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -54183,6 +56745,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -54201,6 +56764,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -54219,6 +56783,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -54237,6 +56802,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -54255,6 +56821,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -54268,6 +56835,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -54281,6 +56849,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -54294,6 +56863,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -54307,6 +56877,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -54320,6 +56891,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -54347,6 +56919,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -54359,6 +56932,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -54371,6 +56945,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -54389,6 +56964,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -54407,6 +56983,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -54425,6 +57002,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -54443,6 +57021,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -54461,6 +57040,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -54479,6 +57059,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -54497,6 +57078,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -54515,6 +57097,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -54528,6 +57111,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -54541,6 +57125,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -54554,6 +57139,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -54575,6 +57161,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -54587,6 +57174,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "increment", }, @@ -54599,6 +57187,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "decrement", }, @@ -54611,6 +57200,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "multiply", }, @@ -54623,6 +57213,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "divide", }, @@ -54647,6 +57238,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -54677,6 +57269,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -54689,6 +57282,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -54701,6 +57295,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -54719,6 +57314,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -54737,6 +57333,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -54755,6 +57352,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -54773,6 +57371,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -54791,6 +57390,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -54818,6 +57418,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -54830,6 +57431,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -54842,6 +57444,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -54860,6 +57463,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -54878,6 +57482,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -54896,6 +57501,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -54914,6 +57520,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -54932,6 +57539,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -54950,6 +57558,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -54968,6 +57577,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -54986,6 +57596,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -55013,6 +57624,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -55025,6 +57637,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -55037,6 +57650,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -55055,6 +57669,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -55073,6 +57688,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -55091,6 +57707,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -55109,6 +57726,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -55127,6 +57745,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -55140,6 +57759,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -55153,6 +57773,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -55166,6 +57787,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -55179,6 +57801,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -55192,6 +57815,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -55219,6 +57843,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -55231,6 +57856,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -55243,6 +57869,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -55261,6 +57888,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -55279,6 +57907,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -55297,6 +57926,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -55315,6 +57945,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -55333,6 +57964,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -55360,6 +57992,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -55372,6 +58005,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -55384,6 +58018,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -55402,6 +58037,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -55420,6 +58056,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -55438,6 +58075,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -55456,6 +58094,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -55474,6 +58113,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -55492,6 +58132,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -55510,6 +58151,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -55528,6 +58170,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -55541,6 +58184,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -55554,6 +58198,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -55567,6 +58212,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -55618,6 +58264,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -55637,6 +58284,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -55650,6 +58298,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -55662,6 +58311,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -55674,6 +58324,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -55693,6 +58344,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -55718,6 +58370,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -55737,6 +58390,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -55750,6 +58404,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -55762,6 +58417,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -55774,6 +58430,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -55793,6 +58450,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -55818,6 +58476,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -55837,6 +58496,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -55850,6 +58510,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -55862,6 +58523,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -55874,6 +58536,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -55893,6 +58556,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -55918,6 +58582,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -55937,6 +58602,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -55950,6 +58616,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -55962,6 +58629,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -55974,6 +58642,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -55999,6 +58668,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -56018,6 +58688,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -56037,6 +58708,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "by", }, @@ -56050,6 +58722,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "having", }, @@ -56062,6 +58735,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -56074,6 +58748,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -56099,6 +58774,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -56124,6 +58800,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -56160,6 +58837,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -56185,6 +58863,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -56204,6 +58883,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "create", }, @@ -56223,6 +58903,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "update", }, @@ -56254,6 +58935,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -56279,6 +58961,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -56310,6 +58993,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -56323,6 +59007,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -56354,6 +59039,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -56367,6 +59053,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -56379,6 +59066,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -56404,6 +59092,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -56416,6 +59105,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -56440,6 +59130,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "query", }, @@ -56452,6 +59143,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "parameters", }, @@ -56475,6 +59167,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "query", }, @@ -56487,6 +59180,7 @@ exports[`getDMMF success simple model, sql server 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "parameters", }, @@ -56972,6 +59666,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -56984,6 +59679,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -57008,6 +59704,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -57020,6 +59717,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -57044,6 +59742,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_ref", }, @@ -57056,6 +59755,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "_container", }, @@ -57088,6 +59788,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -57101,6 +59802,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -57120,6 +59822,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -57138,6 +59841,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -57156,6 +59860,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -57182,6 +59887,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -57195,6 +59901,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -57222,6 +59929,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -57241,6 +59949,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -57254,6 +59963,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -57273,6 +59983,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -57291,6 +60002,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -57317,6 +60029,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -57330,6 +60043,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -57343,6 +60057,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -57356,6 +60071,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -57369,6 +60085,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -57382,6 +60099,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -57395,6 +60113,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -57426,6 +60145,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "AND", }, @@ -57439,6 +60159,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "OR", }, @@ -57458,6 +60179,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "NOT", }, @@ -57476,6 +60198,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -57494,6 +60217,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -57519,6 +60243,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -57531,6 +60256,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -57555,6 +60281,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -57567,6 +60294,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -57597,6 +60325,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -57615,6 +60344,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -57645,6 +60375,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -57663,6 +60394,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -57687,6 +60419,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "id", }, @@ -57699,6 +60432,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": true, "name": "name", }, @@ -57729,6 +60463,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -57747,6 +60482,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -57777,6 +60513,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "id", }, @@ -57795,6 +60532,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "name", }, @@ -57825,6 +60563,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -57837,6 +60576,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -57849,6 +60589,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -57867,6 +60608,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -57885,6 +60627,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -57903,6 +60646,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -57921,6 +60665,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -57939,6 +60684,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -57966,6 +60712,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -57978,6 +60725,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -57990,6 +60738,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -58008,6 +60757,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -58026,6 +60776,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -58044,6 +60795,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -58062,6 +60814,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -58080,6 +60833,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -58098,6 +60852,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -58116,6 +60871,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -58134,6 +60890,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -58156,6 +60913,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -58169,6 +60927,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -58194,6 +60953,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -58219,6 +60979,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -58232,6 +60993,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -58257,6 +61019,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -58270,6 +61033,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "name", }, @@ -58295,6 +61059,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "id", }, @@ -58325,6 +61090,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -58337,6 +61103,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -58349,6 +61116,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -58367,6 +61135,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -58385,6 +61154,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -58403,6 +61173,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -58421,6 +61192,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -58439,6 +61211,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -58452,6 +61225,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -58465,6 +61239,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -58478,6 +61253,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -58491,6 +61267,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -58504,6 +61281,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -58531,6 +61309,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -58543,6 +61322,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -58555,6 +61335,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -58573,6 +61354,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -58591,6 +61373,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -58609,6 +61392,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -58627,6 +61411,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -58645,6 +61430,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -58663,6 +61449,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -58681,6 +61468,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -58699,6 +61487,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -58712,6 +61501,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -58725,6 +61515,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -58738,6 +61529,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -58759,6 +61551,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -58771,6 +61564,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "increment", }, @@ -58783,6 +61577,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "decrement", }, @@ -58795,6 +61590,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "multiply", }, @@ -58807,6 +61603,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "divide", }, @@ -58831,6 +61628,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "set", }, @@ -58861,6 +61659,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -58873,6 +61672,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -58885,6 +61685,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -58903,6 +61704,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -58921,6 +61723,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -58939,6 +61742,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -58957,6 +61761,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -58975,6 +61780,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -59002,6 +61808,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -59014,6 +61821,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -59026,6 +61834,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -59044,6 +61853,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -59062,6 +61872,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -59080,6 +61891,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -59098,6 +61910,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -59116,6 +61929,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -59134,6 +61948,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -59152,6 +61967,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -59170,6 +61986,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -59197,6 +62014,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -59209,6 +62027,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -59221,6 +62040,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -59239,6 +62059,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -59257,6 +62078,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -59275,6 +62097,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -59293,6 +62116,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -59311,6 +62135,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -59324,6 +62149,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -59337,6 +62163,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_avg", }, @@ -59350,6 +62177,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_sum", }, @@ -59363,6 +62191,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -59376,6 +62205,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -59403,6 +62233,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -59415,6 +62246,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -59427,6 +62259,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -59445,6 +62278,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -59463,6 +62297,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -59481,6 +62316,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -59499,6 +62335,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -59517,6 +62354,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -59544,6 +62382,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "equals", }, @@ -59556,6 +62395,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "in", }, @@ -59568,6 +62408,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "notIn", }, @@ -59586,6 +62427,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lt", }, @@ -59604,6 +62446,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "lte", }, @@ -59622,6 +62465,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gt", }, @@ -59640,6 +62484,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "gte", }, @@ -59658,6 +62503,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "contains", }, @@ -59676,6 +62522,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "startsWith", }, @@ -59694,6 +62541,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "endsWith", }, @@ -59712,6 +62560,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": true, "isRequired": false, "name": "not", }, @@ -59725,6 +62574,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_count", }, @@ -59738,6 +62588,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_min", }, @@ -59751,6 +62602,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "_max", }, @@ -59852,6 +62704,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -59871,6 +62724,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -59884,6 +62738,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -59896,6 +62751,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -59908,6 +62764,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -59927,6 +62784,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -59952,6 +62810,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -59971,6 +62830,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -59984,6 +62844,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -59996,6 +62857,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -60008,6 +62870,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -60027,6 +62890,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -60052,6 +62916,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -60071,6 +62936,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -60084,6 +62950,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -60096,6 +62963,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -60108,6 +62976,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -60127,6 +62996,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "distinct", }, @@ -60152,6 +63022,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -60171,6 +63042,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -60184,6 +63056,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "cursor", }, @@ -60196,6 +63069,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -60208,6 +63082,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -60233,6 +63108,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -60252,6 +63128,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "orderBy", }, @@ -60271,6 +63148,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "by", }, @@ -60284,6 +63162,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "having", }, @@ -60296,6 +63175,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "take", }, @@ -60308,6 +63188,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "skip", }, @@ -60333,6 +63214,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -60358,6 +63240,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -60394,6 +63277,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -60419,6 +63303,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -60438,6 +63323,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "create", }, @@ -60457,6 +63343,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "update", }, @@ -60488,6 +63375,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -60519,6 +63407,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -60544,6 +63433,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -60575,6 +63465,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -60588,6 +63479,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "where", }, @@ -60619,6 +63511,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -60632,6 +63525,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -60644,6 +63538,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -60675,6 +63570,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "data", }, @@ -60688,6 +63584,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -60700,6 +63597,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -60725,6 +63623,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "where", }, @@ -60737,6 +63636,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "limit", }, @@ -60761,6 +63661,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "query", }, @@ -60773,6 +63674,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "parameters", }, @@ -60796,6 +63698,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": true, "name": "query", }, @@ -60808,6 +63711,7 @@ exports[`getDMMF success simple model, sqlite 2`] = ` }, ], "isNullable": false, + "isParameterizable": false, "isRequired": false, "name": "parameters", }, diff --git a/packages/json-protocol/src/index.ts b/packages/json-protocol/src/index.ts index 6292381954ae..9fac6edc6024 100644 --- a/packages/json-protocol/src/index.ts +++ b/packages/json-protocol/src/index.ts @@ -74,6 +74,7 @@ export type FieldRefTaggedValue = { $type: 'FieldRef'; value: { _ref: string; _c export type EnumTaggedValue = { $type: 'Enum'; value: string } export type JsonTaggedValue = { $type: 'Json'; value: string } export type RawTaggedValue = { $type: 'Raw'; value: unknown } +export type PlaceholderTaggedValue = { $type: 'Param'; value: Placeholder } export type JsonInputTaggedValue = | DateTaggedValue @@ -84,6 +85,7 @@ export type JsonInputTaggedValue = | JsonTaggedValue | EnumTaggedValue | RawTaggedValue + | PlaceholderTaggedValue export type JsonOutputTaggedValue = | DateTaggedValue @@ -91,3 +93,21 @@ export type JsonOutputTaggedValue = | BytesTaggedValue | BigIntTaggedValue | JsonTaggedValue + +export type Placeholder = { + name: string +} & PlaceholderType + +export type PlaceholderType = + | { type: 'Any' } + | { type: 'BigInt' } + | { type: 'Boolean' } + | { type: 'Bytes' } + | { type: 'DateTime' } + | { type: 'Enum' } + | { type: 'Float' } + | { type: 'Int' } + | { type: 'Json' } + | { type: 'List'; inner: PlaceholderType } + | { type: 'String' } + | { type: 'Uuid' } diff --git a/packages/migrate/README.md b/packages/migrate/README.md index f3abde8a2f01..aaf4eb9ac952 100644 --- a/packages/migrate/README.md +++ b/packages/migrate/README.md @@ -3,7 +3,7 @@

Prisma Migrate

Declarative data modeling & schema migrations

- Quickstart + Quickstart   •   Website   •   diff --git a/packages/migrate/package.json b/packages/migrate/package.json index a96d7423388d..7191b5e3cb49 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -54,7 +54,7 @@ "@prisma/config": "workspace:*", "@prisma/debug": "workspace:*", "@prisma/driver-adapter-utils": "workspace:*", - "@prisma/engines-version": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", + "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", "@prisma/generator": "workspace:*", "@prisma/get-platform": "workspace:*", "@prisma/internals": "workspace:*", diff --git a/packages/param-graph-builder/README.md b/packages/param-graph-builder/README.md new file mode 100644 index 000000000000..58a6231cc1f2 --- /dev/null +++ b/packages/param-graph-builder/README.md @@ -0,0 +1,9 @@ +# @prisma/param-graph-builder + +This package is intended for Prisma's internal use. + +Builds a ParamGraph from DMMF (Data Model Metadata Format) at client generation time. + +The ParamGraph is a compact data structure that enables schema-aware parameterization at runtime. It stores only parameterizable paths and uses a string table to de-duplicate field names. + +This package is used by both `@prisma/client-generator-js` and `@prisma/client-generator-ts` to generate the parameterization schema that is embedded in the generated Prisma Client. diff --git a/packages/param-graph-builder/helpers/build.ts b/packages/param-graph-builder/helpers/build.ts new file mode 100644 index 000000000000..5350df5ceb8e --- /dev/null +++ b/packages/param-graph-builder/helpers/build.ts @@ -0,0 +1,4 @@ +import { build } from '../../../helpers/compile/build' +import { unbundledConfig } from '../../../helpers/compile/configs' + +void build(unbundledConfig) diff --git a/packages/param-graph-builder/package.json b/packages/param-graph-builder/package.json new file mode 100644 index 000000000000..9659179ad7c2 --- /dev/null +++ b/packages/param-graph-builder/package.json @@ -0,0 +1,39 @@ +{ + "name": "@prisma/param-graph-builder", + "version": "0.0.0", + "description": "This package is intended for Prisma's internal use", + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "exports": { + ".": { + "require": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "import": { + "types": "./dist/index.d.ts", + "default": "./dist/index.mjs" + } + } + }, + "repository": { + "type": "git", + "url": "https://github.com/prisma/prisma.git", + "directory": "packages/param-graph-builder" + }, + "license": "Apache-2.0", + "dependencies": { + "@prisma/dmmf": "workspace:*", + "@prisma/param-graph": "workspace:*" + }, + "scripts": { + "dev": "DEV=true tsx helpers/build.ts", + "build": "tsx helpers/build.ts", + "prepublishOnly": "pnpm run build" + }, + "files": [ + "dist" + ], + "sideEffects": false +} diff --git a/packages/param-graph-builder/src/build-param-graph.ts b/packages/param-graph-builder/src/build-param-graph.ts new file mode 100644 index 000000000000..2a7359c43368 --- /dev/null +++ b/packages/param-graph-builder/src/build-param-graph.ts @@ -0,0 +1,41 @@ +/** + * Entry point for building ParamGraph from DMMF. + * + * This module provides the main API for client generators to build + * parameterization schemas from DMMF at generation time. + */ + +import type * as DMMF from '@prisma/dmmf' +import type { ParamGraphData, SerializedParamGraph } from '@prisma/param-graph' + +import { DMMFTraverser } from './dmmf-traverser' +import { ParamGraphBuilder } from './param-graph-builder' + +/** + * Builds a ParamGraphData from DMMF schema. + * + * @param dmmf - The DMMF document from the schema + * @returns The param graph data structure + */ +export function buildParamGraph(dmmf: DMMF.Document): ParamGraphData { + const builder = new ParamGraphBuilder() + const traverser = new DMMFTraverser(builder, dmmf) + traverser.processRoots(dmmf.mappings.modelOperations) + return builder.build() +} + +/** + * Builds and serializes a ParamGraph from DMMF schema. + * + * This is the primary API for generators - it returns the compact + * serialized format ready to be embedded in generated clients. + * + * @param dmmf - The DMMF document from the schema + * @returns The serialized param graph + */ +export function buildAndSerializeParamGraph(dmmf: DMMF.Document): SerializedParamGraph { + const builder = new ParamGraphBuilder() + const traverser = new DMMFTraverser(builder, dmmf) + traverser.processRoots(dmmf.mappings.modelOperations) + return builder.buildAndSerialize() +} diff --git a/packages/param-graph-builder/src/dmmf-traverser.ts b/packages/param-graph-builder/src/dmmf-traverser.ts new file mode 100644 index 000000000000..01392db517e7 --- /dev/null +++ b/packages/param-graph-builder/src/dmmf-traverser.ts @@ -0,0 +1,453 @@ +/** + * DMMFTraverser: DMMF traversal logic for building ParamGraph. + * + * This class contains the traversal algorithms that walk DMMF structures + * and build the param graph. It uses ParamGraphBuilder for allocation + * and caching. + */ + +import type * as DMMF from '@prisma/dmmf' +import { ModelAction } from '@prisma/dmmf' +import type { InputEdgeData, OutputEdgeData } from '@prisma/param-graph' +import { EdgeFlag, scalarTypeToMask } from '@prisma/param-graph' + +import type { NodeId, ParamGraphBuilder } from './param-graph-builder' + +interface PendingInputNode { + nodeId: NodeId + fields: readonly DMMF.SchemaArg[] +} + +interface PendingUnionNode { + nodeId: NodeId + typeNames: string[] +} + +/** + * Traverses DMMF and populates a ParamGraphBuilder. + */ +export class DMMFTraverser { + readonly #builder: ParamGraphBuilder + readonly #inputTypeMap: Map + readonly #outputTypeMap: Map + + readonly #pendingInputNodes: PendingInputNode[] = [] + readonly #pendingUnionNodes: PendingUnionNode[] = [] + + constructor(builder: ParamGraphBuilder, dmmf: DMMF.Document) { + this.#builder = builder + this.#inputTypeMap = new Map() + this.#outputTypeMap = new Map() + + // Collect all input types + for (const inputType of dmmf.schema.inputObjectTypes.prisma ?? []) { + this.#inputTypeMap.set(getTypeName(inputType.name, 'prisma'), inputType) + } + for (const inputType of dmmf.schema.inputObjectTypes.model ?? []) { + this.#inputTypeMap.set(getTypeName(inputType.name, 'model'), inputType) + } + + // Collect all output types + for (const outputType of dmmf.schema.outputObjectTypes.prisma ?? []) { + this.#outputTypeMap.set(getTypeName(outputType.name, 'prisma'), outputType) + } + for (const outputType of dmmf.schema.outputObjectTypes.model ?? []) { + this.#outputTypeMap.set(getTypeName(outputType.name, 'model'), outputType) + } + } + + /** + * Process all root operations from model mappings. + */ + processRoots(mappings: readonly DMMF.ModelMapping[]): void { + for (const mapping of mappings) { + const modelName = mapping.model + const actions = Object.keys(ModelAction) as `${ModelAction}`[] + + for (const action of actions) { + const fieldName = mapping[action] + if (!fieldName) continue + + const rootField = this.#findRootField(fieldName) + if (!rootField) continue + + const argsNodeId = this.buildInputNodeFromArgs(rootField.args) + + let outputNodeId: NodeId | undefined + if (rootField.outputType.location === 'outputObjectTypes') { + outputNodeId = this.buildOutputTypeNode( + getTypeName(rootField.outputType.type, rootField.outputType.namespace), + ) + } + + const dmmfActionToJsonAction: Partial> = { + create: 'createOne', + update: 'updateOne', + delete: 'deleteOne', + upsert: 'upsertOne', + } + + const jsonAction = dmmfActionToJsonAction[action] ?? action + const rootKey = `${modelName}.${jsonAction}` + + this.#builder.setRoot(rootKey, { + argsNodeId, + outputNodeId, + }) + } + } + + // Process all queued work iteratively to avoid stack overflow + this.#drainPendingWork() + } + + /** + * Iteratively processes all pending input and union nodes. + * This avoids deep recursion that can cause stack overflow on complex schemas. + */ + #drainPendingWork(): void { + while (this.#pendingInputNodes.length > 0 || this.#pendingUnionNodes.length > 0) { + // Process pending input nodes + while (this.#pendingInputNodes.length > 0) { + const pending = this.#pendingInputNodes.pop()! + this.#processInputNodeFields(pending.nodeId, pending.fields) + } + + // Process pending union nodes + while (this.#pendingUnionNodes.length > 0) { + const pending = this.#pendingUnionNodes.pop()! + this.#processUnionNodeFields(pending.nodeId, pending.typeNames) + } + } + } + + #findRootField(fieldName: string): DMMF.SchemaField | undefined { + const queryType = this.#outputTypeMap.get('prisma.Query') + if (queryType) { + const field = queryType.fields.find((f) => f.name === fieldName) + if (field) return field + } + + const mutationType = this.#outputTypeMap.get('prisma.Mutation') + if (mutationType) { + const field = mutationType.fields.find((f) => f.name === fieldName) + if (field) return field + } + + return undefined + } + + /** + * Builds an input node from schema arguments. + */ + buildInputNodeFromArgs(args: readonly DMMF.SchemaArg[]): NodeId | undefined { + const edges: Record = {} + let hasAnyEdge = false + + for (const arg of args) { + const edge = this.#mergeFieldVariants([arg]) + if (edge) { + const stringIndex = this.#builder.internString(arg.name) + edges[stringIndex] = edge + hasAnyEdge = true + } + } + + if (!hasAnyEdge) { + return undefined + } + + const nodeId = this.#builder.allocateInputNode() + this.#builder.setInputNodeEdges(nodeId, edges) + return nodeId + } + + /** + * Builds an input node for a named input type. + * Node allocation happens immediately, but field processing is deferred + * to avoid deep recursion. + */ + buildInputTypeNode(typeName: string): NodeId | undefined { + if (this.#builder.hasInputTypeNode(typeName)) { + return this.#builder.getInputTypeNode(typeName) + } + + const inputType = this.#inputTypeMap.get(typeName) + if (!inputType) { + this.#builder.setInputTypeNode(typeName, undefined) + return undefined + } + + // Pre-allocate node to handle cycles + const nodeId = this.#builder.allocateInputNode() + this.#builder.setInputTypeNode(typeName, nodeId) + + // Queue field processing for later to avoid deep recursion + this.#pendingInputNodes.push({ nodeId, fields: inputType.fields }) + + return nodeId + } + + /** + * Process fields for an input node (called from drainPendingWork). + */ + #processInputNodeFields(nodeId: NodeId, fields: readonly DMMF.SchemaArg[]): void { + const edges: Record = {} + let hasAnyEdge = false + + for (const field of fields) { + const edge = this.#mergeFieldVariants([field]) + if (edge) { + const stringIndex = this.#builder.internString(field.name) + edges[stringIndex] = edge + hasAnyEdge = true + } + } + + if (hasAnyEdge) { + this.#builder.setInputNodeEdges(nodeId, edges) + } + } + + /** + * Builds a union node for multiple input types. + * Node allocation happens immediately, but field processing is deferred + * to avoid deep recursion. + */ + buildUnionNode(typeNames: string[]): NodeId | undefined { + // Sort type names for stable cache key + const sortedNames = [...typeNames].sort() + const cacheKey = sortedNames.join('|') + + if (this.#builder.hasUnionNode(cacheKey)) { + return this.#builder.getUnionNode(cacheKey) + } + + // Pre-allocate node + const nodeId = this.#builder.allocateInputNode() + this.#builder.setUnionNode(cacheKey, nodeId) + + // Queue field processing for later to avoid deep recursion + this.#pendingUnionNodes.push({ nodeId, typeNames }) + + return nodeId + } + + /** + * Process fields for a union node (called from drainPendingWork). + */ + #processUnionNodeFields(nodeId: NodeId, typeNames: string[]): void { + // Collect all fields from all variants + const fieldsByName = new Map() + + for (const typeName of typeNames) { + const inputType = this.#inputTypeMap.get(typeName) + if (!inputType) continue + + for (const field of inputType.fields) { + let fieldsForName = fieldsByName.get(field.name) + if (!fieldsForName) { + fieldsForName = [] + fieldsByName.set(field.name, fieldsForName) + } + fieldsForName.push(field) + } + } + + // Merge fields conservatively + const mergedEdges: Record = {} + let hasAnyEdge = false + + for (const [fieldName, variantFields] of fieldsByName) { + const mergedEdge = this.#mergeFieldVariants(variantFields) + if (mergedEdge) { + const stringIndex = this.#builder.internString(fieldName) + mergedEdges[stringIndex] = mergedEdge + hasAnyEdge = true + } + } + + if (hasAnyEdge) { + this.#builder.setInputNodeEdges(nodeId, mergedEdges) + } + } + + /** + * Merges field variants to produce a single edge descriptor. + * This is the most complex part of the traversal - it handles + * union types and determines what kinds of values a field accepts. + */ + #mergeFieldVariants(variants: readonly DMMF.SchemaArg[]): InputEdgeData | undefined { + let flags = 0 + let scalarMask = 0 + let childNodeId: NodeId | undefined + let enumNameIndex: number | undefined + + const scalarTypes: DMMF.InputTypeRef[] = [] + const enumTypes: DMMF.InputTypeRef[] = [] + const inputObjectTypes: DMMF.InputTypeRef[] = [] + + for (const variant of variants) { + for (const inputType of variant.inputTypes) { + switch (inputType.location) { + case 'scalar': + if (variant.isParameterizable) { + scalarTypes.push(inputType) + } + break + case 'enumTypes': + if (variant.isParameterizable) { + enumTypes.push(inputType) + } + break + case 'inputObjectTypes': + if ( + !inputObjectTypes.some( + (ot) => + ot.type === inputType.type && ot.namespace === inputType.namespace && ot.isList === inputType.isList, + ) + ) { + inputObjectTypes.push(inputType) + } + break + case 'fieldRefTypes': + break + default: + throw new Error(`Invalid location ${inputType.location satisfies never}`) + } + } + } + + // Process scalar types + for (const st of scalarTypes) { + scalarMask |= scalarTypeToMask(st.type) + if (st.isList) { + flags |= EdgeFlag.ParamListScalar + } else { + flags |= EdgeFlag.ParamScalar + } + } + + // Process enum types + for (const et of enumTypes) { + if (et.namespace === 'model') { + // Enum names are now stored in the main string table + enumNameIndex = this.#builder.internString(et.type) + if (et.isList) { + flags |= EdgeFlag.ParamListEnum + } else { + flags |= EdgeFlag.ParamEnum + } + break + } + } + + // Process input object types + if (inputObjectTypes.length > 0) { + const hasObjectList = inputObjectTypes.some((iot) => iot.isList) + const hasSingleObject = inputObjectTypes.some((iot) => !iot.isList) + + if (hasObjectList) { + flags |= EdgeFlag.ListObject + } + if (hasSingleObject) { + flags |= EdgeFlag.Object + } + + if (inputObjectTypes.length === 1) { + childNodeId = this.buildInputTypeNode(getTypeName(inputObjectTypes[0].type, inputObjectTypes[0].namespace)) + } else { + childNodeId = this.buildUnionNode(inputObjectTypes.map((iot) => getTypeName(iot.type, iot.namespace))) + } + } + + // If no flags are set, this field is not parameterizable + if (flags === 0) { + return undefined + } + + const edge: InputEdgeData = { flags } + if (childNodeId !== undefined) { + edge.childNodeId = childNodeId + } + if (scalarMask !== 0) { + edge.scalarMask = scalarMask + } + if (enumNameIndex !== undefined) { + edge.enumNameIndex = enumNameIndex + } + + return edge + } + + /** + * Builds an output node for a named output type. + */ + buildOutputTypeNode(typeName: string): NodeId | undefined { + if (this.#builder.hasOutputTypeNode(typeName)) { + return this.#builder.getOutputTypeNode(typeName) + } + + const outputType = this.#outputTypeMap.get(typeName) + if (!outputType) { + this.#builder.setOutputTypeNode(typeName, undefined) + return undefined + } + + // Pre-allocate to handle cycles + const nodeId = this.#builder.allocateOutputNode() + this.#builder.setOutputTypeNode(typeName, nodeId) + + const edges: Record = {} + let hasAnyEdge = false + + for (const field of outputType.fields) { + const edge = this.#buildOutputEdge(field) + if (edge) { + const stringIndex = this.#builder.internString(field.name) + edges[stringIndex] = edge + hasAnyEdge = true + } + } + + if (hasAnyEdge) { + this.#builder.setOutputNodeEdges(nodeId, edges) + } + + return nodeId + } + + #buildOutputEdge(field: DMMF.SchemaField): OutputEdgeData | undefined { + let argsNodeId: NodeId | undefined + let outputNodeId: NodeId | undefined + + if (field.args.length > 0) { + argsNodeId = this.buildInputNodeFromArgs(field.args) + } + + if (field.outputType.location === 'outputObjectTypes') { + outputNodeId = this.buildOutputTypeNode(getTypeName(field.outputType.type, field.outputType.namespace)) + } + + if (argsNodeId === undefined && outputNodeId === undefined) { + return undefined + } + + const edge: OutputEdgeData = {} + if (argsNodeId !== undefined) { + edge.argsNodeId = argsNodeId + } + if (outputNodeId !== undefined) { + edge.outputNodeId = outputNodeId + } + + return edge + } +} + +function getTypeName(name: string, namespace: string | undefined): string { + if (namespace === undefined) { + return name + } + return `${namespace}.${name}` +} diff --git a/packages/param-graph-builder/src/index.ts b/packages/param-graph-builder/src/index.ts new file mode 100644 index 000000000000..a056a8ca57d9 --- /dev/null +++ b/packages/param-graph-builder/src/index.ts @@ -0,0 +1,4 @@ +export { buildAndSerializeParamGraph, buildParamGraph } from './build-param-graph' +export { DMMFTraverser } from './dmmf-traverser' +export type { NodeId } from './param-graph-builder' +export { ParamGraphBuilder } from './param-graph-builder' diff --git a/packages/param-graph-builder/src/param-graph-builder.ts b/packages/param-graph-builder/src/param-graph-builder.ts new file mode 100644 index 000000000000..eb319f82c9d2 --- /dev/null +++ b/packages/param-graph-builder/src/param-graph-builder.ts @@ -0,0 +1,156 @@ +/** + * ParamGraphBuilder: Data holder for building ParamGraph. + * + * This class manages allocation and caching during graph construction. + * The actual traversal logic is in DMMFTraverser. + */ + +import type { + InputEdgeData, + InputNodeData, + OutputEdgeData, + OutputNodeData, + ParamGraphData, + RootEntryData, + SerializedParamGraph, +} from '@prisma/param-graph' +import { serializeParamGraph } from '@prisma/param-graph' + +export type NodeId = number + +/** + * Builder class that accumulates graph data during construction. + */ +export class ParamGraphBuilder { + readonly #stringTable: string[] = [] + readonly #stringToIndex = new Map() + readonly #inputNodes: InputNodeData[] = [] + readonly #outputNodes: OutputNodeData[] = [] + readonly #roots: Record = {} + + readonly #inputTypeNodeCache = new Map() + readonly #unionNodeCache = new Map() + readonly #outputTypeNodeCache = new Map() + + /** + * Interns a string into the string table, returning its index. + * Both field names and enum names go through this method. + */ + internString(str: string): number { + let index = this.#stringToIndex.get(str) + if (index === undefined) { + index = this.#stringTable.length + this.#stringTable.push(str) + this.#stringToIndex.set(str, index) + } + return index + } + + /** + * Allocates a new input node and returns its ID. + */ + allocateInputNode(): NodeId { + const id = this.#inputNodes.length + this.#inputNodes.push({ edges: {} }) + return id + } + + /** + * Sets edges on an input node. + */ + setInputNodeEdges(nodeId: NodeId, edges: Record): void { + if (Object.keys(edges).length > 0) { + this.#inputNodes[nodeId].edges = edges + } + } + + /** + * Allocates a new output node and returns its ID. + */ + allocateOutputNode(): NodeId { + const id = this.#outputNodes.length + this.#outputNodes.push({ edges: {} }) + return id + } + + /** + * Sets edges on an output node. + */ + setOutputNodeEdges(nodeId: NodeId, edges: Record): void { + if (Object.keys(edges).length > 0) { + this.#outputNodes[nodeId].edges = edges + } + } + + /** + * Records a root entry for an operation. + */ + setRoot(key: string, entry: RootEntryData): void { + if (entry.argsNodeId !== undefined || entry.outputNodeId !== undefined) { + // Intern the root key into the string table for binary serialization + this.internString(key) + this.#roots[key] = entry + } + } + + // Cache methods for input type nodes + + getInputTypeNode(typeName: string): NodeId | undefined { + return this.#inputTypeNodeCache.get(typeName) + } + + setInputTypeNode(typeName: string, nodeId: NodeId | undefined): void { + this.#inputTypeNodeCache.set(typeName, nodeId) + } + + hasInputTypeNode(typeName: string): boolean { + return this.#inputTypeNodeCache.has(typeName) + } + + // Cache methods for union nodes + + getUnionNode(key: string): NodeId | undefined { + return this.#unionNodeCache.get(key) + } + + setUnionNode(key: string, nodeId: NodeId | undefined): void { + this.#unionNodeCache.set(key, nodeId) + } + + hasUnionNode(key: string): boolean { + return this.#unionNodeCache.has(key) + } + + // Cache methods for output type nodes + + getOutputTypeNode(typeName: string): NodeId | undefined { + return this.#outputTypeNodeCache.get(typeName) + } + + setOutputTypeNode(typeName: string, nodeId: NodeId | undefined): void { + this.#outputTypeNodeCache.set(typeName, nodeId) + } + + hasOutputTypeNode(typeName: string): boolean { + return this.#outputTypeNodeCache.has(typeName) + } + + /** + * Builds the final ParamGraphData structure. + */ + build(): ParamGraphData { + return { + strings: this.#stringTable, + inputNodes: this.#inputNodes, + outputNodes: this.#outputNodes, + roots: this.#roots, + } + } + + /** + * Builds and serializes to the compact binary format. + */ + buildAndSerialize(): SerializedParamGraph { + return serializeParamGraph(this.build()) + } +} diff --git a/packages/param-graph-builder/tsconfig.build.json b/packages/param-graph-builder/tsconfig.build.json new file mode 100644 index 000000000000..1eae4ca25256 --- /dev/null +++ b/packages/param-graph-builder/tsconfig.build.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.build.regular.json", + "compilerOptions": { + "outDir": "dist" + }, + "include": ["src"] +} diff --git a/packages/param-graph-builder/tsconfig.json b/packages/param-graph-builder/tsconfig.json new file mode 100644 index 000000000000..63e20a2cf0b8 --- /dev/null +++ b/packages/param-graph-builder/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.json", + "include": ["./**/*"] +} diff --git a/packages/param-graph/README.md b/packages/param-graph/README.md new file mode 100644 index 000000000000..49c5f169b5b5 --- /dev/null +++ b/packages/param-graph/README.md @@ -0,0 +1,17 @@ +# @prisma/param-graph + +This package is intended for Prisma's internal use. + +Contains the ParamGraph types and utilities for schema-aware query parameterization in Prisma Client. + +ParamGraph is a compact data structure generated from DMMF (Data Model Metadata Format) at client generation time. It enables precise, schema-driven parameterization of query values at runtime. + +## Contents + +- `ParamGraph` - The main type representing the compact schema +- `InputNode` / `OutputNode` - Node types for input arguments and output selections +- `InputEdge` / `OutputEdge` - Edge types describing field capabilities +- `EdgeFlag` - Bit flags for input field capabilities +- `ScalarMask` - Bit mask for scalar type categories +- `scalarTypeToMask` - Maps DMMF scalar type names to mask values +- `hasFlag` / `getScalarMask` - Helper functions for edge inspection diff --git a/packages/param-graph/helpers/build.ts b/packages/param-graph/helpers/build.ts new file mode 100644 index 000000000000..5350df5ceb8e --- /dev/null +++ b/packages/param-graph/helpers/build.ts @@ -0,0 +1,4 @@ +import { build } from '../../../helpers/compile/build' +import { unbundledConfig } from '../../../helpers/compile/configs' + +void build(unbundledConfig) diff --git a/packages/param-graph/package.json b/packages/param-graph/package.json new file mode 100644 index 000000000000..c4892602f273 --- /dev/null +++ b/packages/param-graph/package.json @@ -0,0 +1,36 @@ +{ + "name": "@prisma/param-graph", + "version": "0.0.0", + "description": "This package is intended for Prisma's internal use", + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "exports": { + ".": { + "require": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "import": { + "types": "./dist/index.d.ts", + "default": "./dist/index.mjs" + } + } + }, + "repository": { + "type": "git", + "url": "https://github.com/prisma/prisma.git", + "directory": "packages/param-graph" + }, + "license": "Apache-2.0", + "scripts": { + "dev": "DEV=true tsx helpers/build.ts", + "build": "tsx helpers/build.ts", + "prepublishOnly": "pnpm run build", + "test": "vitest run" + }, + "files": [ + "dist" + ], + "sideEffects": false +} diff --git a/packages/param-graph/src/index.ts b/packages/param-graph/src/index.ts new file mode 100644 index 000000000000..3914da22abc3 --- /dev/null +++ b/packages/param-graph/src/index.ts @@ -0,0 +1,14 @@ +export type { EnumLookup, InputEdge, InputNode, OutputEdge, OutputNode, RootEntry } from './param-graph' +export type { + InputEdgeData, + InputNodeData, + OutputEdgeData, + OutputNodeData, + ParamGraphData, + RootEntryData, +} from './param-graph' +export type { EdgeFlagValue, ScalarMaskValue } from './param-graph' +export { ParamGraph } from './param-graph' +export { EdgeFlag, getScalarMask, hasFlag, ScalarMask, scalarTypeToMask } from './param-graph' +export type { SerializedParamGraph } from './serialization' +export { deserializeParamGraph, serializeParamGraph } from './serialization' diff --git a/packages/param-graph/src/param-graph.ts b/packages/param-graph/src/param-graph.ts new file mode 100644 index 000000000000..61617a37674a --- /dev/null +++ b/packages/param-graph/src/param-graph.ts @@ -0,0 +1,327 @@ +/** + * ParamGraph: Runtime class for schema-aware parameterization. + * + * This class provides a readable API for navigating the param graph structure + * at runtime. It's created once per PrismaClient instance from the serialized + * format embedded in the generated client. + */ + +import type { SerializedParamGraph } from './serialization' +import { deserializeParamGraph } from './serialization' +import type { + InputEdgeData, + InputNodeData, + OutputEdgeData, + OutputNodeData, + ParamGraphData, + RootEntryData, +} from './types' + +/** + * Function type for looking up enum values by name. + * This allows ParamGraph to remain decoupled from RuntimeDataModel. + */ +export type EnumLookup = (enumName: string) => readonly string[] | undefined + +/** + * Readable view of root entry. + */ +export interface RootEntry { + readonly argsNodeId: number | undefined + readonly outputNodeId: number | undefined +} + +/** + * Readable view of input node. + */ +export interface InputNode { + readonly id: number +} + +/** + * Readable view of output node. + */ +export interface OutputNode { + readonly id: number +} + +/** + * Readable view of input edge. + */ +export interface InputEdge { + readonly flags: number + readonly childNodeId: number | undefined + readonly scalarMask: number + readonly enumNameIndex: number | undefined +} + +/** + * Readable view of output edge. + */ +export interface OutputEdge { + readonly argsNodeId: number | undefined + readonly outputNodeId: number | undefined +} + +/** + * ParamGraph provides runtime access to the schema information + * needed for parameterization decisions. + */ +export class ParamGraph { + readonly #data: ParamGraphData + readonly #stringIndex: Map + readonly #enumLookup: EnumLookup + + private constructor(data: ParamGraphData, enumLookup: EnumLookup) { + this.#data = data + this.#enumLookup = enumLookup + + // Build string-to-index map for O(1) lookups + this.#stringIndex = new Map() + for (let i = 0; i < data.strings.length; i++) { + this.#stringIndex.set(data.strings[i], i) + } + } + + /** + * Creates a ParamGraph from serialized format. + * This is the primary factory method for runtime use. + */ + static deserialize(serialized: SerializedParamGraph, enumLookup: EnumLookup): ParamGraph { + const data = deserializeParamGraph(serialized) + return new ParamGraph(data, enumLookup) + } + + /** + * Creates a ParamGraph from builder data. + * Used by the builder for testing and direct construction. + */ + static fromData(data: ParamGraphData, enumLookup: EnumLookup): ParamGraph { + return new ParamGraph(data, enumLookup) + } + + /** + * Look up a root entry by "Model.action" or "action". + */ + root(key: string): RootEntry | undefined { + const entry = this.#data.roots[key] + if (!entry) { + return undefined + } + return { + argsNodeId: entry.argsNodeId, + outputNodeId: entry.outputNodeId, + } + } + + /** + * Get an input node by ID. + */ + inputNode(id: number | undefined): InputNode | undefined { + if (id === undefined || id < 0 || id >= this.#data.inputNodes.length) { + return undefined + } + return { id } + } + + /** + * Get an output node by ID. + */ + outputNode(id: number | undefined): OutputNode | undefined { + if (id === undefined || id < 0 || id >= this.#data.outputNodes.length) { + return undefined + } + return { id } + } + + /** + * Get an input edge for a field name within a node. + */ + inputEdge(node: InputNode | undefined, fieldName: string): InputEdge | undefined { + if (!node) { + return undefined + } + + const nodeData = this.#data.inputNodes[node.id] + if (!nodeData) { + return undefined + } + + const fieldIndex = this.#stringIndex.get(fieldName) + if (fieldIndex === undefined) { + return undefined + } + + const edge = nodeData.edges[fieldIndex] + if (!edge) { + return undefined + } + + return { + flags: edge.flags, + childNodeId: edge.childNodeId, + scalarMask: edge.scalarMask ?? 0, + enumNameIndex: edge.enumNameIndex, + } + } + + /** + * Get an output edge for a field name within a node. + */ + outputEdge(node: OutputNode | undefined, fieldName: string): OutputEdge | undefined { + if (!node) { + return undefined + } + + const nodeData = this.#data.outputNodes[node.id] + if (!nodeData) { + return undefined + } + + const fieldIndex = this.#stringIndex.get(fieldName) + if (fieldIndex === undefined) { + return undefined + } + + const edge = nodeData.edges[fieldIndex] + if (!edge) { + return undefined + } + + return { + argsNodeId: edge.argsNodeId, + outputNodeId: edge.outputNodeId, + } + } + + /** + * Get enum values for an edge that references a user enum. + * Returns undefined if the edge doesn't reference an enum. + */ + enumValues(edge: InputEdge | undefined): readonly string[] | undefined { + if (edge?.enumNameIndex === undefined) { + return undefined + } + + const enumName = this.#data.strings[edge.enumNameIndex] + if (!enumName) { + return undefined + } + + return this.#enumLookup(enumName) + } + + /** + * Get a string from the string table by index. + */ + getString(index: number): string | undefined { + return this.#data.strings[index] + } +} + +/** + * Bit flags for InputEdge.flags describing what the field accepts. + */ +export const EdgeFlag = { + /** + * Field may be parameterized as a scalar value. + * Check ScalarMask to validate the value type. + */ + ParamScalar: 1, + + /** + * Field may be parameterized as an enum. + * Check enum ID to validate the value type. + */ + ParamEnum: 2, + + /** + * Field accepts list-of-scalar values. + * Parameterize the whole list if all elements match ScalarMask. + */ + ParamListScalar: 4, + + /** + * Field accepts list-of-enum values. + * Parameterize the whole list if all elements match enum ID. + */ + ParamListEnum: 8, + + /** + * Field accepts list-of-object values. + * Recurse into each element using the child node. + */ + ListObject: 16, + + /** + * Field accepts object values. + * Recurse into child input node. + */ + Object: 32, +} as const + +export type EdgeFlagValue = (typeof EdgeFlag)[keyof typeof EdgeFlag] + +/** + * Bit mask for scalar type categories. + * Used in InputEdge.scalarMask to validate runtime value types. + */ +export const ScalarMask = { + String: 1, + Int: 2, + BigInt: 4, + Float: 8, + Decimal: 16, + Boolean: 32, + DateTime: 64, + Json: 128, + Bytes: 256, +} as const + +export type ScalarMaskValue = (typeof ScalarMask)[keyof typeof ScalarMask] + +/** + * Helper function to check if an edge has a specific flag. + */ +export function hasFlag(edge: InputEdge, flag: number): boolean { + return (edge.flags & flag) !== 0 +} + +/** + * Helper function to get the scalar mask from an edge. + */ +export function getScalarMask(edge: InputEdge): number { + return edge.scalarMask +} + +/** + * Maps DMMF scalar type names to ScalarMask values. + */ +export function scalarTypeToMask(typeName: string): number { + switch (typeName) { + case 'String': + case 'UUID': + return ScalarMask.String + case 'Int': + return ScalarMask.Int + case 'BigInt': + return ScalarMask.BigInt + case 'Float': + return ScalarMask.Float + case 'Decimal': + return ScalarMask.Decimal + case 'Boolean': + return ScalarMask.Boolean + case 'DateTime': + return ScalarMask.DateTime + case 'Json': + return ScalarMask.Json + case 'Bytes': + return ScalarMask.Bytes + default: + return 0 + } +} + +// Re-export data types for builder use +export type { InputEdgeData, InputNodeData, OutputEdgeData, OutputNodeData, ParamGraphData, RootEntryData } diff --git a/packages/param-graph/src/serialization.test.ts b/packages/param-graph/src/serialization.test.ts new file mode 100644 index 000000000000..66585fa44c33 --- /dev/null +++ b/packages/param-graph/src/serialization.test.ts @@ -0,0 +1,206 @@ +import { describe, expect, test } from 'vitest' + +import { deserializeParamGraph, serializeParamGraph } from './serialization' +import type { ParamGraphData } from './types' + +describe('param-graph serialization', () => { + test('roundtrip with empty data', () => { + const data: ParamGraphData = { + strings: ['root1'], + inputNodes: [], + outputNodes: [], + roots: { root1: {} }, + } + + const serialized = serializeParamGraph(data) + const deserialized = deserializeParamGraph(serialized) + + expect(deserialized.strings).toEqual(data.strings) + expect(deserialized.inputNodes).toEqual(data.inputNodes) + expect(deserialized.outputNodes).toEqual(data.outputNodes) + expect(deserialized.roots).toEqual(data.roots) + }) + + test('roundtrip with small data', () => { + const data: ParamGraphData = { + strings: ['findMany', 'where', 'id'], + inputNodes: [{ edges: { 1: { flags: 0, scalarMask: 1 } } }], + outputNodes: [{ edges: { 2: { argsNodeId: 0 } } }], + roots: { findMany: { argsNodeId: 0, outputNodeId: 0 } }, + } + + const serialized = serializeParamGraph(data) + const deserialized = deserializeParamGraph(serialized) + + expect(deserialized.strings).toEqual(data.strings) + expect(deserialized.inputNodes.length).toBe(data.inputNodes.length) + expect(deserialized.outputNodes.length).toBe(data.outputNodes.length) + expect(Object.keys(deserialized.roots)).toEqual(Object.keys(data.roots)) + }) + + test('roundtrip with multiple nodes and edges', () => { + const data: ParamGraphData = { + strings: ['findMany', 'create', 'update', 'where', 'data', 'id', 'name', 'Status'], + inputNodes: [ + { edges: { 3: { flags: 1, scalarMask: 1, childNodeId: 1 }, 4: { flags: 0, scalarMask: 2 } } }, + { edges: { 5: { flags: 2, enumNameIndex: 7 } } }, + ], + outputNodes: [{ edges: { 6: { argsNodeId: 0, outputNodeId: 1 } } }, { edges: {} }], + roots: { + findMany: { argsNodeId: 0, outputNodeId: 0 }, + create: { argsNodeId: 1, outputNodeId: 1 }, + update: { argsNodeId: 0 }, + }, + } + + const serialized = serializeParamGraph(data) + const deserialized = deserializeParamGraph(serialized) + + expect(deserialized.inputNodes.length).toBe(2) + expect(deserialized.outputNodes.length).toBe(2) + expect(Object.keys(deserialized.roots).length).toBe(3) + + // Verify edge data is preserved + const inputEdge = deserialized.inputNodes[0].edges[3] + expect(inputEdge.flags).toBe(1) + expect(inputEdge.scalarMask).toBe(1) + expect(inputEdge.childNodeId).toBe(1) + + const enumEdge = deserialized.inputNodes[1].edges[5] + expect(enumEdge.flags).toBe(2) + expect(enumEdge.enumNameIndex).toBe(7) + }) + + test('handles undefined values correctly', () => { + const data: ParamGraphData = { + strings: ['root'], + inputNodes: [{ edges: { 0: { flags: 0 } } }], + outputNodes: [{ edges: { 0: {} } }], + roots: { root: { argsNodeId: 0 } }, + } + + const serialized = serializeParamGraph(data) + const deserialized = deserializeParamGraph(serialized) + + // Undefined values should not be present in deserialized data + expect(deserialized.inputNodes[0].edges[0].childNodeId).toBeUndefined() + expect(deserialized.inputNodes[0].edges[0].scalarMask).toBeUndefined() + expect(deserialized.inputNodes[0].edges[0].enumNameIndex).toBeUndefined() + expect(deserialized.outputNodes[0].edges[0].argsNodeId).toBeUndefined() + expect(deserialized.outputNodes[0].edges[0].outputNodeId).toBeUndefined() + expect(deserialized.roots['root'].outputNodeId).toBeUndefined() + }) + + test('base64url encoding produces URL-safe output', () => { + const data: ParamGraphData = { + strings: ['test'], + inputNodes: [{ edges: { 255: { flags: 255, scalarMask: 65535, childNodeId: 0, enumNameIndex: 0 } } }], + outputNodes: [], + roots: { test: { argsNodeId: 0 } }, + } + + const serialized = serializeParamGraph(data) + + // Should only contain URL-safe characters + expect(serialized.graph).toMatch(/^[A-Za-z0-9_-]+$/) + }) + + test('handles large indices requiring multi-byte varints (128-16383)', () => { + // Generate enough strings to require 2-byte varints (>127) + const strings = Array.from({ length: 200 }, (_, i) => `field${i}`) + const data: ParamGraphData = { + strings, + inputNodes: [ + { + edges: { + // Use indices that require 2-byte encoding (128+) + 128: { flags: 1, childNodeId: 150 }, + 150: { flags: 2, enumNameIndex: 180 }, + }, + }, + ], + outputNodes: [{ edges: { 199: { argsNodeId: 0, outputNodeId: 0 } } }], + roots: { field0: { argsNodeId: 0, outputNodeId: 0 } }, + } + + const serialized = serializeParamGraph(data) + const deserialized = deserializeParamGraph(serialized) + + expect(deserialized.inputNodes[0].edges[128].flags).toBe(1) + expect(deserialized.inputNodes[0].edges[128].childNodeId).toBe(150) + expect(deserialized.inputNodes[0].edges[150].flags).toBe(2) + expect(deserialized.inputNodes[0].edges[150].enumNameIndex).toBe(180) + expect(deserialized.outputNodes[0].edges[199].argsNodeId).toBe(0) + expect(deserialized.outputNodes[0].edges[199].outputNodeId).toBe(0) + }) + + test('handles very large indices requiring 3-byte varints (16384+)', () => { + // Generate enough strings to require 3-byte varints (>16383) + const strings = Array.from({ length: 17000 }, (_, i) => `f${i}`) + const data: ParamGraphData = { + strings, + inputNodes: [ + { + edges: { + 16384: { flags: 1, childNodeId: 16500 }, + }, + }, + ], + outputNodes: [{ edges: { 16999: { argsNodeId: 0, outputNodeId: 0 } } }], + roots: { f0: { argsNodeId: 0, outputNodeId: 0 } }, + } + + const serialized = serializeParamGraph(data) + const deserialized = deserializeParamGraph(serialized) + + expect(deserialized.inputNodes[0].edges[16384].flags).toBe(1) + expect(deserialized.inputNodes[0].edges[16384].childNodeId).toBe(16500) + expect(deserialized.outputNodes[0].edges[16999].argsNodeId).toBe(0) + }) + + test('varint boundary values encode and decode correctly', () => { + // Test values at varint encoding boundaries + const boundaryValues = [0, 1, 127, 128, 16383, 16384] + + for (const value of boundaryValues) { + // Create strings to make the index value valid + const strings = Array.from({ length: Math.max(value + 1, 2) }, (_, i) => `s${i}`) + + const data: ParamGraphData = { + strings, + inputNodes: [{ edges: { [value]: { flags: 0 } } }], + outputNodes: [], + roots: { s0: {} }, + } + + const serialized = serializeParamGraph(data) + const deserialized = deserializeParamGraph(serialized) + + expect(deserialized.inputNodes[0].edges[value]).toBeDefined() + expect(deserialized.inputNodes[0].edges[value].flags).toBe(0) + } + }) + + test('optional value 0 is correctly distinguished from undefined', () => { + const data: ParamGraphData = { + strings: ['root', 'field'], + inputNodes: [ + { edges: { 1: { flags: 0, childNodeId: 0 } } }, // childNodeId = 0 (not undefined) + ], + outputNodes: [ + { edges: { 1: { argsNodeId: 0, outputNodeId: 0 } } }, // both are 0 (not undefined) + ], + roots: { root: { argsNodeId: 0, outputNodeId: 0 } }, // both are 0 (not undefined) + } + + const serialized = serializeParamGraph(data) + const deserialized = deserializeParamGraph(serialized) + + // Value 0 should be preserved, not converted to undefined + expect(deserialized.inputNodes[0].edges[1].childNodeId).toBe(0) + expect(deserialized.outputNodes[0].edges[1].argsNodeId).toBe(0) + expect(deserialized.outputNodes[0].edges[1].outputNodeId).toBe(0) + expect(deserialized.roots['root'].argsNodeId).toBe(0) + expect(deserialized.roots['root'].outputNodeId).toBe(0) + }) +}) diff --git a/packages/param-graph/src/serialization.ts b/packages/param-graph/src/serialization.ts new file mode 100644 index 000000000000..dd9a94d1d1a1 --- /dev/null +++ b/packages/param-graph/src/serialization.ts @@ -0,0 +1,431 @@ +/** + * Binary serialization for ParamGraph. + * + * This module handles compact binary encoding/decoding of the param graph structure. + * The format uses a hybrid approach: JSON string array for field names + binary blob + * for structural data (nodes, edges, roots). + * + * ## Serialized Representation + * + * ``` + * SerializedParamGraph { + * strings: string[] // String table (field names, enum names, root keys) + * graph: string // Base64url-encoded binary blob + * } + * ``` + * + * ## Why Hybrid? + * + * - **Strings stay as JSON**: V8's JSON.parse is highly optimized for string arrays + * - **Structure goes binary**: Indices, flags, masks benefit from compact encoding + * - **Best of both**: Fast parsing + compact size where it matters + * + * ## Variable-Length Encoding + * + * All integer values (except fixed-size fields like `scalarMask` and `flags`) use + * unsigned LEB128 (Little Endian Base 128) variable-length encoding: + * + * - Values 0-127: 1 byte + * - Values 128-16383: 2 bytes + * - Values 16384-2097151: 3 bytes + * - And so on... + * + * Optional values use value+1 encoding: 0 means "none/undefined", N+1 means actual value N. + * + * ## Binary Blob Layout + * + * ``` + * ┌───────────────────────────────────────────────────────────────────┐ + * │ HEADER │ + * ├───────────────────────────────────────────────────────────────────┤ + * │ inputNodeCount: varuint │ + * │ outputNodeCount: varuint │ + * │ rootCount: varuint │ + * └───────────────────────────────────────────────────────────────────┘ + * + * ┌───────────────────────────────────────────────────────────────────┐ + * │ INPUT NODES (repeated inputNodeCount times) │ + * ├───────────────────────────────────────────────────────────────────┤ + * │ edgeCount: varuint │ + * │ edges[] │ + * └───────────────────────────────────────────────────────────────────┘ + * + * ┌───────────────────────────────────────────────────────────────────┐ + * │ INPUT EDGE │ + * ├───────────────────────────────────────────────────────────────────┤ + * │ fieldIndex: varuint │ + * │ scalarMask: u16 │ + * │ childNodeId: varuint (0=none, N+1=actual) │ + * │ enumNameIndex: varuint (0=none, N+1=actual) │ + * │ flags: u8 │ + * └───────────────────────────────────────────────────────────────────┘ + * + * ┌───────────────────────────────────────────────────────────────────┐ + * │ OUTPUT NODES (repeated outputNodeCount times) │ + * ├───────────────────────────────────────────────────────────────────┤ + * │ edgeCount: varuint │ + * │ edges[] │ + * └───────────────────────────────────────────────────────────────────┘ + * + * ┌───────────────────────────────────────────────────────────────────┐ + * │ OUTPUT EDGE │ + * ├───────────────────────────────────────────────────────────────────┤ + * │ fieldIndex: varuint │ + * │ argsNodeId: varuint (0=none, N+1=actual) │ + * │ outputNodeId: varuint (0=none, N+1=actual) │ + * └───────────────────────────────────────────────────────────────────┘ + * + * ┌───────────────────────────────────────────────────────────────────┐ + * │ ROOTS (repeated rootCount times) │ + * ├───────────────────────────────────────────────────────────────────┤ + * │ keyIndex: varuint │ + * │ argsNodeId: varuint (0=none, N+1=actual) │ + * │ outputNodeId: varuint (0=none, N+1=actual) │ + * └───────────────────────────────────────────────────────────────────┘ + * ``` + * + * ## Embedding in Generated Client + * + * ```js + * config.parameterizationSchema = { + * strings: JSON.parse('["where","id","email",...]'), + * graph: "base64url_encoded_binary_blob..." + * } + * ``` + */ + +import type { + InputEdgeData, + InputNodeData, + OutputEdgeData, + OutputNodeData, + ParamGraphData, + RootEntryData, +} from './types' + +/** + * Serialized format stored in the generated client. + */ +export interface SerializedParamGraph { + /** String table (field names, enum names, root keys) */ + strings: string[] + /** Base64url-encoded binary blob for structural data */ + graph: string +} + +/** + * Serializes a ParamGraphData to the compact binary format. + */ +export function serializeParamGraph(data: ParamGraphData): SerializedParamGraph { + return new Serializer(data).serialize() +} + +/** + * Deserializes a binary-encoded ParamGraph. + */ +export function deserializeParamGraph(serialized: SerializedParamGraph): ParamGraphData { + return new Deserializer(serialized).deserialize() +} + +function encodeBase64url(bytes: Uint8Array): string { + return Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString('base64url') +} + +function decodeBase64url(str: string): Uint8Array { + return Buffer.from(str, 'base64url') +} + +/** + * Calculates the number of bytes needed to encode a value as an unsigned LEB128 varint. + */ +function varuintSize(value: number): number { + let size = 1 + while (value >= 0x80) { + size++ + value >>>= 7 + } + return size +} + +class Serializer { + #data: ParamGraphData + #buffer: ArrayBuffer + #view: DataView + #offset: number = 0 + #rootKeys: string[] + + constructor(data: ParamGraphData) { + this.#data = data + this.#rootKeys = Object.keys(data.roots) + + const size = this.#calculateBufferSize() + this.#buffer = new ArrayBuffer(size) + this.#view = new DataView(this.#buffer) + } + + serialize(): SerializedParamGraph { + this.#writeHeader() + this.#writeInputNodes() + this.#writeOutputNodes() + this.#writeRoots() + + return { + strings: this.#data.strings, + graph: encodeBase64url(new Uint8Array(this.#buffer, 0, this.#offset)), + } + } + + #writeVaruint(value: number): void { + while (value >= 0x80) { + this.#view.setUint8(this.#offset++, (value & 0x7f) | 0x80) + value >>>= 7 + } + this.#view.setUint8(this.#offset++, value) + } + + #writeOptionalVaruint(value: number | undefined): void { + this.#writeVaruint(value === undefined ? 0 : value + 1) + } + + #writeByte(value: number): void { + this.#view.setUint8(this.#offset, value) + this.#offset += 1 + } + + #writeU16(value: number): void { + this.#view.setUint16(this.#offset, value, true) + this.#offset += 2 + } + + #calculateBufferSize(): number { + let size = 0 + + // Header: 3 varints + size += varuintSize(this.#data.inputNodes.length) + size += varuintSize(this.#data.outputNodes.length) + size += varuintSize(this.#rootKeys.length) + + for (const node of this.#data.inputNodes) { + const fieldIndices = Object.keys(node.edges).map(Number) + size += varuintSize(fieldIndices.length) + + for (const fieldIndex of fieldIndices) { + const edge = node.edges[fieldIndex] + size += varuintSize(fieldIndex) + size += 2 // scalarMask: u16 + size += varuintSize(edge.childNodeId === undefined ? 0 : edge.childNodeId + 1) + size += varuintSize(edge.enumNameIndex === undefined ? 0 : edge.enumNameIndex + 1) + size += 1 // flags: u8 + } + } + + for (const node of this.#data.outputNodes) { + const fieldIndices = Object.keys(node.edges).map(Number) + size += varuintSize(fieldIndices.length) + + for (const fieldIndex of fieldIndices) { + const edge = node.edges[fieldIndex] + size += varuintSize(fieldIndex) + size += varuintSize(edge.argsNodeId === undefined ? 0 : edge.argsNodeId + 1) + size += varuintSize(edge.outputNodeId === undefined ? 0 : edge.outputNodeId + 1) + } + } + + for (const key of this.#rootKeys) { + const root = this.#data.roots[key] + const keyIndex = this.#data.strings.indexOf(key) + size += varuintSize(keyIndex) + size += varuintSize(root.argsNodeId === undefined ? 0 : root.argsNodeId + 1) + size += varuintSize(root.outputNodeId === undefined ? 0 : root.outputNodeId + 1) + } + + return size + } + + #writeHeader(): void { + this.#writeVaruint(this.#data.inputNodes.length) + this.#writeVaruint(this.#data.outputNodes.length) + this.#writeVaruint(this.#rootKeys.length) + } + + #writeInputNodes(): void { + for (const node of this.#data.inputNodes) { + const fieldIndices = Object.keys(node.edges).map(Number) + this.#writeVaruint(fieldIndices.length) + + for (const fieldIndex of fieldIndices) { + const edge = node.edges[fieldIndex] + + this.#writeVaruint(fieldIndex) + this.#writeU16(edge.scalarMask ?? 0) + this.#writeOptionalVaruint(edge.childNodeId) + this.#writeOptionalVaruint(edge.enumNameIndex) + this.#writeByte(edge.flags) + } + } + } + + #writeOutputNodes(): void { + for (const node of this.#data.outputNodes) { + const fieldIndices = Object.keys(node.edges).map(Number) + this.#writeVaruint(fieldIndices.length) + + for (const fieldIndex of fieldIndices) { + const edge = node.edges[fieldIndex] + + this.#writeVaruint(fieldIndex) + this.#writeOptionalVaruint(edge.argsNodeId) + this.#writeOptionalVaruint(edge.outputNodeId) + } + } + } + + #writeRoots(): void { + for (const key of this.#rootKeys) { + const root = this.#data.roots[key] + const keyIndex = this.#data.strings.indexOf(key) + if (keyIndex === -1) { + throw new Error(`Root key "${key}" not found in strings table`) + } + + this.#writeVaruint(keyIndex) + this.#writeOptionalVaruint(root.argsNodeId) + this.#writeOptionalVaruint(root.outputNodeId) + } + } +} + +class Deserializer { + #serialized: SerializedParamGraph + #view: DataView + #offset: number = 0 + + constructor(serialized: SerializedParamGraph) { + this.#serialized = serialized + const bytes = decodeBase64url(serialized.graph) + this.#view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength) + } + + deserialize(): ParamGraphData { + const { inputNodeCount, outputNodeCount, rootCount } = this.#readHeader() + const inputNodes = this.#readInputNodes(inputNodeCount) + const outputNodes = this.#readOutputNodes(outputNodeCount) + const roots = this.#readRoots(rootCount) + + return { + strings: this.#serialized.strings, + inputNodes, + outputNodes, + roots, + } + } + + #readVaruint(): number { + let value = 0 + let shift = 0 + let byte: number + do { + byte = this.#view.getUint8(this.#offset++) + value |= (byte & 0x7f) << shift + shift += 7 + } while (byte >= 0x80) + return value + } + + #readOptionalVaruint(): number | undefined { + const value = this.#readVaruint() + return value === 0 ? undefined : value - 1 + } + + #readByte(): number { + const value = this.#view.getUint8(this.#offset) + this.#offset += 1 + return value + } + + #readU16(): number { + const value = this.#view.getUint16(this.#offset, true) + this.#offset += 2 + return value + } + + #readHeader(): { inputNodeCount: number; outputNodeCount: number; rootCount: number } { + const inputNodeCount = this.#readVaruint() + const outputNodeCount = this.#readVaruint() + const rootCount = this.#readVaruint() + + return { inputNodeCount, outputNodeCount, rootCount } + } + + #readInputNodes(count: number): InputNodeData[] { + const inputNodes: InputNodeData[] = [] + + for (let i = 0; i < count; i++) { + const edgeCount = this.#readVaruint() + const edges: Record = {} + + for (let j = 0; j < edgeCount; j++) { + const fieldIndex = this.#readVaruint() + const scalarMask = this.#readU16() + const childNodeId = this.#readOptionalVaruint() + const enumNameIndex = this.#readOptionalVaruint() + const flags = this.#readByte() + + const edge: InputEdgeData = { flags } + if (scalarMask !== 0) edge.scalarMask = scalarMask + if (childNodeId !== undefined) edge.childNodeId = childNodeId + if (enumNameIndex !== undefined) edge.enumNameIndex = enumNameIndex + + edges[fieldIndex] = edge + } + + inputNodes.push({ edges }) + } + + return inputNodes + } + + #readOutputNodes(count: number): OutputNodeData[] { + const outputNodes: OutputNodeData[] = [] + + for (let i = 0; i < count; i++) { + const edgeCount = this.#readVaruint() + const edges: Record = {} + + for (let j = 0; j < edgeCount; j++) { + const fieldIndex = this.#readVaruint() + const argsNodeId = this.#readOptionalVaruint() + const outputNodeId = this.#readOptionalVaruint() + + const edge: OutputEdgeData = {} + if (argsNodeId !== undefined) edge.argsNodeId = argsNodeId + if (outputNodeId !== undefined) edge.outputNodeId = outputNodeId + + edges[fieldIndex] = edge + } + + outputNodes.push({ edges }) + } + + return outputNodes + } + + #readRoots(count: number): Record { + const roots: Record = {} + + for (let i = 0; i < count; i++) { + const keyIndex = this.#readVaruint() + const argsNodeId = this.#readOptionalVaruint() + const outputNodeId = this.#readOptionalVaruint() + + const key = this.#serialized.strings[keyIndex] + const root: RootEntryData = {} + if (argsNodeId !== undefined) root.argsNodeId = argsNodeId + if (outputNodeId !== undefined) root.outputNodeId = outputNodeId + + roots[key] = root + } + + return roots + } +} diff --git a/packages/param-graph/src/types.ts b/packages/param-graph/src/types.ts new file mode 100644 index 000000000000..d3a991d9386a --- /dev/null +++ b/packages/param-graph/src/types.ts @@ -0,0 +1,79 @@ +/** + * Internal data types for ParamGraph. + * + * These types represent the in-memory structure of the param graph, + * used both during building and after deserialization. + */ + +/** + * Complete param graph data structure. + * This is the internal representation, not the serialized format. + */ +export interface ParamGraphData { + /** String table containing field names and enum names */ + strings: string[] + + /** Input nodes for argument objects and input types */ + inputNodes: InputNodeData[] + + /** Output nodes for selection traversal */ + outputNodes: OutputNodeData[] + + /** Root mapping: "Model.action" -> entry */ + roots: Record +} + +/** + * Input node data: describes parameterizable fields in an input object. + */ +export interface InputNodeData { + /** Map from string-table index to edge descriptor */ + edges: Record +} + +/** + * Output node data: describes fields in a selection set. + */ +export interface OutputNodeData { + /** Map from string-table index to edge descriptor */ + edges: Record +} + +/** + * Input edge data: describes what a field accepts. + */ +export interface InputEdgeData { + /** Bit flags describing field capabilities (see EdgeFlag) */ + flags: number + + /** Child input node id (for object values) */ + childNodeId?: number + + /** Scalar type mask (see ScalarMask) */ + scalarMask?: number + + /** Enum name index into string table */ + enumNameIndex?: number +} + +/** + * Output edge data: describes a field in a selection set. + */ +export interface OutputEdgeData { + /** Args node id for this field */ + argsNodeId?: number + + /** Next output node id for nested selection */ + outputNodeId?: number +} + +/** + * Root entry data: entry point for an operation. + */ +export interface RootEntryData { + /** Args node id */ + argsNodeId?: number + + /** Output node id */ + outputNodeId?: number +} diff --git a/packages/param-graph/tsconfig.build.json b/packages/param-graph/tsconfig.build.json new file mode 100644 index 000000000000..1eae4ca25256 --- /dev/null +++ b/packages/param-graph/tsconfig.build.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.build.regular.json", + "compilerOptions": { + "outDir": "dist" + }, + "include": ["src"] +} diff --git a/packages/param-graph/tsconfig.json b/packages/param-graph/tsconfig.json new file mode 100644 index 000000000000..63e20a2cf0b8 --- /dev/null +++ b/packages/param-graph/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.json", + "include": ["./**/*"] +} diff --git a/packages/query-plan-executor/package.json b/packages/query-plan-executor/package.json index 8340de572ce8..2ad7cd5cd157 100644 --- a/packages/query-plan-executor/package.json +++ b/packages/query-plan-executor/package.json @@ -21,7 +21,7 @@ "@prisma/adapter-mssql": "workspace:*", "@prisma/client-engine-runtime": "workspace:*", "@prisma/driver-adapter-utils": "workspace:*", - "hono": "4.10.6", + "hono": "4.11.7", "temporal-polyfill": "0.3.0", "vitest": "3.2.4", "zod": "4.1.3" diff --git a/packages/schema-files-loader/package.json b/packages/schema-files-loader/package.json index e8d0f94dfb09..19197587c7b0 100644 --- a/packages/schema-files-loader/package.json +++ b/packages/schema-files-loader/package.json @@ -22,7 +22,7 @@ ], "sideEffects": false, "dependencies": { - "@prisma/prisma-schema-wasm": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", + "@prisma/prisma-schema-wasm": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", "fs-extra": "11.3.0" } } diff --git a/packages/sqlcommenter-query-insights/src/parameterize/parameterize.ts b/packages/sqlcommenter-query-insights/src/parameterize/parameterize.ts index 908fb70bbba4..c68059b69a7b 100644 --- a/packages/sqlcommenter-query-insights/src/parameterize/parameterize.ts +++ b/packages/sqlcommenter-query-insights/src/parameterize/parameterize.ts @@ -100,7 +100,8 @@ function parameterize(value: unknown, context: Context, key?: string): unknown { } if (isTaggedValue(value)) { - return value.$type === 'FieldRef' ? value : PARAM_PLACEHOLDER + // Preserve structural tagged values: FieldRef (field comparisons) and Param (already parameterized) + return value.$type === 'FieldRef' || value.$type === 'Param' ? value : PARAM_PLACEHOLDER } if (Array.isArray(value)) { diff --git a/packages/sqlcommenter-query-insights/src/parameterize/tests/tagged-values.test.ts b/packages/sqlcommenter-query-insights/src/parameterize/tests/tagged-values.test.ts index d4989ba95ad3..026e9ab3d019 100644 --- a/packages/sqlcommenter-query-insights/src/parameterize/tests/tagged-values.test.ts +++ b/packages/sqlcommenter-query-insights/src/parameterize/tests/tagged-values.test.ts @@ -164,6 +164,70 @@ describe('parameterizeQuery - tagged values', () => { }) }) + it('preserves pre-existing Param tagged values', () => { + const query = { + arguments: { + where: { + email: { contains: PARAM_PLACEHOLDER }, + age: { gte: PARAM_PLACEHOLDER }, + }, + }, + selection: { $scalars: true }, + } + + expect(parameterizeQuery(query)).toEqual({ + arguments: { + where: { + email: { contains: PARAM_PLACEHOLDER }, + age: { gte: PARAM_PLACEHOLDER }, + }, + }, + selection: { $scalars: true }, + }) + }) + + it('preserves pre-existing Param tagged values in data context', () => { + const query = { + arguments: { + data: { + name: PARAM_PLACEHOLDER, + email: PARAM_PLACEHOLDER, + }, + }, + selection: { $scalars: true }, + } + + expect(parameterizeQuery(query)).toEqual({ + arguments: { + data: { + name: PARAM_PLACEHOLDER, + email: PARAM_PLACEHOLDER, + }, + }, + selection: { $scalars: true }, + }) + }) + + it('preserves pre-existing Param tagged values in arrays', () => { + const query = { + arguments: { + where: { + id: { in: [PARAM_PLACEHOLDER, PARAM_PLACEHOLDER] }, + }, + }, + selection: { $scalars: true }, + } + + expect(parameterizeQuery(query)).toEqual({ + arguments: { + where: { + id: { in: [PARAM_PLACEHOLDER, PARAM_PLACEHOLDER] }, + }, + }, + selection: { $scalars: true }, + }) + }) + it('parameterizes tagged values in data context', () => { const query = { arguments: { diff --git a/packages/type-benchmark-tests/test.ts b/packages/type-benchmark-tests/test.ts index 0d6e7e36f2ce..1499a6f2a24b 100644 --- a/packages/type-benchmark-tests/test.ts +++ b/packages/type-benchmark-tests/test.ts @@ -111,7 +111,10 @@ function getBenchmarkFiles(dir: string) { async function runGenerate(dir: string, cwd: string) { console.log(`Running generate command in ${dir}...`) - await execa('tsx', ['../../cli/src/bin.ts', 'generate', '--no-hints'], { cwd, stdio: 'inherit' }) + // tsx sometimes crashes with stack overflow with the default stack size when + // using `pnpm dev` instead of `pnpm build` in the workspace, which skips type + // bundling and re-exports the types in `.d.ts` files from the raw TypeScript sources. + await execa('tsx', ['--stack-size=2048', '../../cli/src/bin.ts', 'generate', '--no-hints'], { cwd, stdio: 'inherit' }) } async function runBenchmark({ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 36a56a9321f3..1420f26c6b4a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,9 +6,10 @@ settings: overrides: form-data: '>=4.0.4' - hono: '>=4.10.3' + hono: '>=4.11.7' jws: '>=4.0.1' tar-fs: '>=2.1.4' + lodash: '>=4.17.23' importers: @@ -247,8 +248,8 @@ importers: packages/adapter-libsql: dependencies: '@libsql/client': - specifier: ^0.8.1 - version: 0.8.1 + specifier: ^0.17.0 + version: 0.17.0(encoding@0.1.13) '@prisma/driver-adapter-utils': specifier: workspace:* version: link:../driver-adapter-utils @@ -441,7 +442,7 @@ importers: devDependencies: '@hono/node-server': specifier: 1.19.9 - version: 1.19.9(hono@4.11.4) + version: 1.19.9(hono@4.11.7) '@inquirer/prompts': specifier: 7.3.3 version: 7.3.3(@types/node@20.19.25) @@ -551,8 +552,8 @@ importers: specifier: 4.10.0 version: 4.10.0 hono: - specifier: '>=4.10.3' - version: 4.11.4 + specifier: '>=4.11.7' + version: 4.11.7 jest: specifier: 29.7.0 version: 29.7.0(@types/node@20.19.25)(ts-node@10.9.2(@swc/core@1.11.5)(@types/node@20.19.25)(typescript@5.4.5)) @@ -637,7 +638,7 @@ importers: version: 2.0.3(@jest/expect@29.7.0)(@jest/globals@29.7.0) '@hono/node-server': specifier: 1.19.0 - version: 1.19.0(hono@4.11.4) + version: 1.19.0(hono@4.11.7) '@inquirer/prompts': specifier: 7.3.3 version: 7.3.3(@types/node@20.19.25) @@ -729,8 +730,8 @@ importers: specifier: workspace:* version: link:../engines '@prisma/engines-version': - specifier: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 - version: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 + specifier: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 + version: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 '@prisma/fetch-engine': specifier: workspace:* version: link:../fetch-engine @@ -758,9 +759,15 @@ importers: '@prisma/migrate': specifier: workspace:* version: link:../migrate + '@prisma/param-graph': + specifier: workspace:* + version: link:../param-graph + '@prisma/param-graph-builder': + specifier: workspace:* + version: link:../param-graph-builder '@prisma/query-compiler-wasm': - specifier: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 - version: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 + specifier: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 + version: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 '@prisma/query-plan-executor': specifier: workspace:* version: link:../query-plan-executor @@ -935,6 +942,9 @@ importers: '@prisma/internals': specifier: workspace:* version: link:../internals + '@prisma/param-graph': + specifier: workspace:* + version: link:../param-graph packages/client-engine-runtime: dependencies: @@ -1009,8 +1019,8 @@ importers: specifier: workspace:* version: link:../dmmf '@prisma/engines-version': - specifier: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 - version: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 + specifier: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 + version: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 '@prisma/fetch-engine': specifier: workspace:* version: link:../fetch-engine @@ -1023,6 +1033,9 @@ importers: '@prisma/internals': specifier: workspace:* version: link:../internals + '@prisma/param-graph-builder': + specifier: workspace:* + version: link:../param-graph-builder '@prisma/ts-builders': specifier: workspace:* version: link:../ts-builders @@ -1086,8 +1099,8 @@ importers: specifier: workspace:* version: link:../dmmf '@prisma/engines-version': - specifier: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 - version: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 + specifier: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 + version: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 '@prisma/fetch-engine': specifier: workspace:* version: link:../fetch-engine @@ -1100,6 +1113,9 @@ importers: '@prisma/internals': specifier: workspace:* version: link:../internals + '@prisma/param-graph-builder': + specifier: workspace:* + version: link:../param-graph-builder '@prisma/ts-builders': specifier: workspace:* version: link:../ts-builders @@ -1221,8 +1237,8 @@ importers: specifier: workspace:* version: link:../debug '@prisma/engines-version': - specifier: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 - version: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 + specifier: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 + version: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 '@prisma/fetch-engine': specifier: workspace:* version: link:../fetch-engine @@ -1258,8 +1274,8 @@ importers: specifier: workspace:* version: link:../debug '@prisma/engines-version': - specifier: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 - version: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 + specifier: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 + version: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 '@prisma/get-platform': specifier: workspace:* version: link:../get-platform @@ -1547,11 +1563,11 @@ importers: specifier: workspace:* version: link:../get-platform '@prisma/prisma-schema-wasm': - specifier: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 - version: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 + specifier: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 + version: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 '@prisma/schema-engine-wasm': - specifier: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 - version: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 + specifier: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 + version: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 '@prisma/schema-files-loader': specifier: workspace:* version: link:../schema-files-loader @@ -1712,8 +1728,8 @@ importers: specifier: workspace:* version: link:../driver-adapter-utils '@prisma/engines-version': - specifier: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 - version: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 + specifier: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 + version: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 '@prisma/generator': specifier: workspace:* version: link:../generator @@ -1818,14 +1834,25 @@ importers: specifier: 5.92.1 version: 5.92.1(@swc/core@1.11.5)(esbuild@0.25.5) + packages/param-graph: {} + + packages/param-graph-builder: + dependencies: + '@prisma/dmmf': + specifier: workspace:* + version: link:../dmmf + '@prisma/param-graph': + specifier: workspace:* + version: link:../param-graph + packages/query-plan-executor: devDependencies: '@hono/node-server': specifier: 1.19.0 - version: 1.19.0(hono@4.10.6) + version: 1.19.0(hono@4.11.7) '@hono/zod-validator': specifier: 0.7.2 - version: 0.7.2(hono@4.10.6)(zod@4.1.3) + version: 0.7.2(hono@4.11.7)(zod@4.1.3) '@opentelemetry/api': specifier: 1.9.0 version: 1.9.0 @@ -1851,8 +1878,8 @@ importers: specifier: workspace:* version: link:../driver-adapter-utils hono: - specifier: '>=4.10.3' - version: 4.10.6 + specifier: '>=4.11.7' + version: 4.11.7 temporal-polyfill: specifier: 0.3.0 version: 0.3.0 @@ -1866,8 +1893,8 @@ importers: packages/schema-files-loader: dependencies: '@prisma/prisma-schema-wasm': - specifier: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 - version: 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735 + specifier: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 + version: 7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57 fs-extra: specifier: 11.3.0 version: 11.3.0 @@ -2868,18 +2895,18 @@ packages: resolution: {integrity: sha512-1k8/8OHf5VIymJEcJyVksFpT+AQ5euY0VA5hUkCnlKpD4mr8FSbvXaHblxeTTEr90OaqWzAkQaqD80qHZQKxBA==} engines: {node: '>=18.14.1'} peerDependencies: - hono: '>=4.10.3' + hono: '>=4.11.7' '@hono/node-server@1.19.9': resolution: {integrity: sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==} engines: {node: '>=18.14.1'} peerDependencies: - hono: '>=4.10.3' + hono: '>=4.11.7' '@hono/zod-validator@0.7.2': resolution: {integrity: sha512-ub5eL/NeZ4eLZawu78JpW/J+dugDAYhwqUIdp9KYScI6PZECij4Hx4UsrthlEUutqDDhPwRI0MscUfNkvn/mqQ==} peerDependencies: - hono: '>=4.10.3' + hono: '>=4.11.7' zod: ^3.25.0 || ^4.0.0 '@humanfs/core@0.19.1': @@ -3285,9 +3312,15 @@ packages: peerDependencies: tslib: '2' + '@libsql/client@0.17.0': + resolution: {integrity: sha512-TLjSU9Otdpq0SpKHl1tD1Nc9MKhrsZbCFGot3EbCxRa8m1E5R1mMwoOjKMMM31IyF7fr+hPNHLpYfwbMKNusmg==} + '@libsql/client@0.8.1': resolution: {integrity: sha512-xGg0F4iTDFpeBZ0r4pA6icGsYa5rG6RAG+i/iLDnpCAnSuTqEWMDdPlVseiq4Z/91lWI9jvvKKiKpovqJ1kZWA==} + '@libsql/core@0.17.0': + resolution: {integrity: sha512-hnZRnJHiS+nrhHKLGYPoJbc78FE903MSDrFJTbftxo+e52X+E0Y0fHOCVYsKWcg6XgB7BbJYUrz/xEkVTSaipw==} + '@libsql/core@0.8.1': resolution: {integrity: sha512-u6nrj6HZMTPsgJ9EBhLzO2uhqhlHQJQmVHV+0yFLvfGf3oSP8w7TjZCNUgu1G8jHISx6KFi7bmcrdXW9lRt++A==} @@ -3296,45 +3329,93 @@ packages: cpu: [arm64] os: [darwin] + '@libsql/darwin-arm64@0.5.22': + resolution: {integrity: sha512-4B8ZlX3nIDPndfct7GNe0nI3Yw6ibocEicWdC4fvQbSs/jdq/RC2oCsoJxJ4NzXkvktX70C1J4FcmmoBy069UA==} + cpu: [arm64] + os: [darwin] + '@libsql/darwin-x64@0.3.10': resolution: {integrity: sha512-SNVN6n4qNUdMW1fJMFmx4qn4n5RnXsxjFbczpkzG/V7m/5VeTFt1chhGcrahTHCr3+K6eRJWJUEQHRGqjBwPkw==} cpu: [x64] os: [darwin] + '@libsql/darwin-x64@0.5.22': + resolution: {integrity: sha512-ny2HYWt6lFSIdNFzUFIJ04uiW6finXfMNJ7wypkAD8Pqdm6nAByO+Fdqu8t7sD0sqJGeUCiOg480icjyQ2/8VA==} + cpu: [x64] + os: [darwin] + '@libsql/hrana-client@0.6.2': resolution: {integrity: sha512-MWxgD7mXLNf9FXXiM0bc90wCjZSpErWKr5mGza7ERy2FJNNMXd7JIOv+DepBA1FQTIfI8TFO4/QDYgaQC0goNw==} + '@libsql/hrana-client@0.9.0': + resolution: {integrity: sha512-pxQ1986AuWfPX4oXzBvLwBnfgKDE5OMhAdR/5cZmRaB4Ygz5MecQybvwZupnRz341r2CtFmbk/BhSu7k2Lm+Jw==} + '@libsql/isomorphic-fetch@0.2.1': resolution: {integrity: sha512-Sv07QP1Aw8A5OOrmKgRUBKe2fFhF2hpGJhtHe3d1aRnTESZCGkn//0zDycMKTGamVWb3oLYRroOsCV8Ukes9GA==} '@libsql/isomorphic-ws@0.1.5': resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==} + '@libsql/linux-arm-gnueabihf@0.5.22': + resolution: {integrity: sha512-3Uo3SoDPJe/zBnyZKosziRGtszXaEtv57raWrZIahtQDsjxBVjuzYQinCm9LRCJCUT5t2r5Z5nLDPJi2CwZVoA==} + cpu: [arm] + os: [linux] + + '@libsql/linux-arm-musleabihf@0.5.22': + resolution: {integrity: sha512-LCsXh07jvSojTNJptT9CowOzwITznD+YFGGW+1XxUr7fS+7/ydUrpDfsMX7UqTqjm7xG17eq86VkWJgHJfvpNg==} + cpu: [arm] + os: [linux] + '@libsql/linux-arm64-gnu@0.3.10': resolution: {integrity: sha512-2uXpi9d8qtyIOr7pyG4a88j6YXgemyIHEs2Wbp+PPletlCIPsFS+E7IQHbz8VwTohchOzcokGUm1Bc5QC+A7wg==} cpu: [arm64] os: [linux] + '@libsql/linux-arm64-gnu@0.5.22': + resolution: {integrity: sha512-KSdnOMy88c9mpOFKUEzPskSaF3VLflfSUCBwas/pn1/sV3pEhtMF6H8VUCd2rsedwoukeeCSEONqX7LLnQwRMA==} + cpu: [arm64] + os: [linux] + '@libsql/linux-arm64-musl@0.3.10': resolution: {integrity: sha512-72SN1FUavLvzHddCS861ynSpQndcW5oLGKA3U8CyMfgIZIwJAPc7+48Uj1plW00htXBx4GBpcntFp68KKIx3YQ==} cpu: [arm64] os: [linux] + '@libsql/linux-arm64-musl@0.5.22': + resolution: {integrity: sha512-mCHSMAsDTLK5YH//lcV3eFEgiR23Ym0U9oEvgZA0667gqRZg/2px+7LshDvErEKv2XZ8ixzw3p1IrBzLQHGSsw==} + cpu: [arm64] + os: [linux] + '@libsql/linux-x64-gnu@0.3.10': resolution: {integrity: sha512-hXyNqVRi7ONuyWZ1SX6setxL0QaQ7InyS3bHLupsi9s7NpOGD5vcpTaYicJOqmIIm+6kt8vJfmo7ZxlarIHy7Q==} cpu: [x64] os: [linux] + '@libsql/linux-x64-gnu@0.5.22': + resolution: {integrity: sha512-kNBHaIkSg78Y4BqAdgjcR2mBilZXs4HYkAmi58J+4GRwDQZh5fIUWbnQvB9f95DkWUIGVeenqLRFY2pcTmlsew==} + cpu: [x64] + os: [linux] + '@libsql/linux-x64-musl@0.3.10': resolution: {integrity: sha512-kNmIRxomVwt9S+cLyYS497F/3gXFF4r8wW12YSBQgxG75JYft07AHVd8J7HINg+oqRkLzT0s+mVX5dM6nk68EQ==} cpu: [x64] os: [linux] + '@libsql/linux-x64-musl@0.5.22': + resolution: {integrity: sha512-UZ4Xdxm4pu3pQXjvfJiyCzZop/9j/eA2JjmhMaAhe3EVLH2g11Fy4fwyUp9sT1QJYR1kpc2JLuybPM0kuXv/Tg==} + cpu: [x64] + os: [linux] + '@libsql/win32-x64-msvc@0.3.10': resolution: {integrity: sha512-c/6rjdtGULKrJkLgfLobFefObfOtxjXGmCfPxv6pr0epPCeUEssfDbDIeEH9fQUgzogIMWEHwT8so52UJ/iT1Q==} cpu: [x64] os: [win32] + '@libsql/win32-x64-msvc@0.5.22': + resolution: {integrity: sha512-Fj0j8RnBpo43tVZUVoNK6BV/9AtDUM5S7DF3LB4qTYg1LMSZqi3yeCneUTLJD6XomQJlZzbI4mst89yspVSAnA==} + cpu: [x64] + os: [win32] + '@microsoft/api-extractor-model@7.30.7': resolution: {integrity: sha512-TBbmSI2/BHpfR9YhQA7nH0nqVmGgJ0xH0Ex4D99/qBDAUpnhA2oikGmdXanbw9AWWY/ExBYIpkmY8dBHdla3YQ==} @@ -3586,8 +3667,8 @@ packages: '@prisma/dev@0.20.0': resolution: {integrity: sha512-ovlBYwWor0OzG+yH4J3Ot+AneD818BttLA+Ii7wjbcLHUrnC4tbUPVGyNd3c/+71KETPKZfjhkTSpdS15dmXNQ==} - '@prisma/engines-version@7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735': - resolution: {integrity: sha512-IH2va2ouUHihyiTTRW889LjKAl1CusZOvFfZxCDNpjSENt7g2ndFsK0vdIw/72v7+jCN6YgkHmdAP/BI7SDgyg==} + '@prisma/engines-version@7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57': + resolution: {integrity: sha512-5o3/bubIYdUeg38cyNf+VDq+LVtxvvi2393Fd1Uru52LPfkGJnmVbCaX1wBOAncgKR3BCloMJFD+Koog9LtYqQ==} '@prisma/get-platform@7.2.0': resolution: {integrity: sha512-k1V0l0Td1732EHpAfi2eySTezyllok9dXb6UQanajkJQzPUGi3vO2z7jdkz67SypFTdmbnyGYxvEvYZdZsMAVA==} @@ -3598,17 +3679,17 @@ packages: '@prisma/ppg@1.0.1': resolution: {integrity: sha512-rRRXuPPerXwNWjSA3OE0e/bqXSTfsE82EsMvoiluc0fN0DizQSe3937/Tnl5+DPbxY5rdAOlYjWXG0A2wwTbKA==} - '@prisma/prisma-schema-wasm@7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735': - resolution: {integrity: sha512-pL9W918JLoK9fdAccH07ryjN9D4TZU1H3zBrLtYZbd+YhsAYQVvyM8hhyxzv8UrXVDKwsiYWoMdTb2PC+cjy3A==} + '@prisma/prisma-schema-wasm@7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57': + resolution: {integrity: sha512-c4l8sQorhTZGIRx2IcJZUoFBaST0jVhbKb7yC68FF065T11K5BNAQt8mgcsdsC2UA1AsRK1LFpMZjvfiYg1tNA==} - '@prisma/query-compiler-wasm@7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735': - resolution: {integrity: sha512-RsqWxibTq1vXlCpns2NuZ8VJQuxPKtf0CK+786jsxHEBJ2utuSlMpcyl8bFazu2hMPCNE8EjaKRcJrROk3fmwQ==} + '@prisma/query-compiler-wasm@7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57': + resolution: {integrity: sha512-UfjxUfReGmDFGz7OaQ+C5X28b6GojCysgv3c1gmD6wyx8Z8dNQNJpn/5XmsF3Gyq+/dPlI8G/FB+yBHqlgjOqg==} '@prisma/query-plan-executor@7.2.0': resolution: {integrity: sha512-EOZmNzcV8uJ0mae3DhTsiHgoNCuu1J9mULQpGCh62zN3PxPTd+qI9tJvk5jOst8WHKQNwJWR3b39t0XvfBB0WQ==} - '@prisma/schema-engine-wasm@7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735': - resolution: {integrity: sha512-C1Ahpv7VAfrSKhooPWBJlxIrljwfQsm7LaXTxgk7zxooHWyiRI7uK3HVBHYL4fC8PM4kCT5Q6FXvuMWR5eq6vg==} + '@prisma/schema-engine-wasm@7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57': + resolution: {integrity: sha512-iYJdHsejfsqMq4pufb8yDESDdgvah9BX8e2io+pPcKHGDEtEq6s1+6yIih9zLLKoRammgeScA6V6MFngNa/xHA==} '@prisma/studio-core@0.13.1': resolution: {integrity: sha512-agdqaPEePRHcQ7CexEfkX1RvSH9uWDb6pXrZnhCRykhDFAV0/0P3d07WtfiY8hZWb7oRU4v+NkT4cGFHkQJIPg==} @@ -4872,6 +4953,9 @@ packages: create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + cross-fetch@4.1.0: + resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -5707,12 +5791,8 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - hono@4.10.6: - resolution: {integrity: sha512-BIdolzGpDO9MQ4nu3AUuDwHZZ+KViNm+EZ75Ae55eMXMqLVhDFqEMXxtUe9Qh8hjL+pIna/frs2j6Y2yD5Ua/g==} - engines: {node: '>=16.9.0'} - - hono@4.11.4: - resolution: {integrity: sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==} + hono@4.11.7: + resolution: {integrity: sha512-l7qMiNee7t82bH3SeyUCt9UF15EVmaBvsppY2zQtrbIhl/yzBTny+YUxsVjSjQ6gaqaeVtZmGocom8TzBlA4Yw==} engines: {node: '>=16.9.0'} hosted-git-info@2.8.9: @@ -6308,6 +6388,11 @@ packages: cpu: [x64, arm64, wasm32] os: [darwin, linux, win32] + libsql@0.5.22: + resolution: {integrity: sha512-NscWthMQt7fpU8lqd7LXMvT9pi+KhhmTHAJWUB/Lj6MWa0MKFv0F2V4C6WKKpjCVZl0VwcDz4nOI3CyaT1DDiA==} + cpu: [x64, arm64, wasm32, arm] + os: [darwin, linux, win32] + lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -6372,8 +6457,8 @@ packages: lodash.once@4.1.1: resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} @@ -7808,6 +7893,7 @@ packages: tar@6.1.14: resolution: {integrity: sha512-piERznXu0U7/pW7cdSn7hjqySIVTYT6F76icmFk7ptU7dDYlXTm5r9A6K04R2vU3olYgoKeo1Cg3eeu5nhftAw==} engines: {node: '>=10'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me tarn@3.0.2: resolution: {integrity: sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==} @@ -8920,12 +9006,12 @@ snapshots: dependencies: '@chevrotain/gast': 10.5.0 '@chevrotain/types': 10.5.0 - lodash: 4.17.21 + lodash: 4.17.23 '@chevrotain/gast@10.5.0': dependencies: '@chevrotain/types': 10.5.0 - lodash: 4.17.21 + lodash: 4.17.23 '@chevrotain/types@10.5.0': {} @@ -8987,7 +9073,7 @@ snapshots: dependencies: '@codspeed/core': 4.0.0 benchmark: 2.1.4 - lodash: 4.17.21 + lodash: 4.17.23 stack-trace: 1.0.0-pre2 transitivePeerDependencies: - debug @@ -9332,21 +9418,17 @@ snapshots: '@gar/promisify@1.1.3': optional: true - '@hono/node-server@1.19.0(hono@4.10.6)': + '@hono/node-server@1.19.0(hono@4.11.7)': dependencies: - hono: 4.10.6 + hono: 4.11.7 - '@hono/node-server@1.19.0(hono@4.11.4)': + '@hono/node-server@1.19.9(hono@4.11.7)': dependencies: - hono: 4.11.4 + hono: 4.11.7 - '@hono/node-server@1.19.9(hono@4.11.4)': + '@hono/zod-validator@0.7.2(hono@4.11.7)(zod@4.1.3)': dependencies: - hono: 4.11.4 - - '@hono/zod-validator@0.7.2(hono@4.10.6)(zod@4.1.3)': - dependencies: - hono: 4.10.6 + hono: 4.11.7 zod: 4.1.3 '@humanfs/core@0.19.1': {} @@ -9846,6 +9928,18 @@ snapshots: dependencies: tslib: 2.8.1 + '@libsql/client@0.17.0(encoding@0.1.13)': + dependencies: + '@libsql/core': 0.17.0 + '@libsql/hrana-client': 0.9.0(encoding@0.1.13) + js-base64: 3.7.5 + libsql: 0.5.22 + promise-limit: 2.7.0 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + '@libsql/client@0.8.1': dependencies: '@libsql/core': 0.8.1 @@ -9857,6 +9951,10 @@ snapshots: - bufferutil - utf-8-validate + '@libsql/core@0.17.0': + dependencies: + js-base64: 3.7.5 + '@libsql/core@0.8.1': dependencies: js-base64: 3.7.5 @@ -9864,9 +9962,15 @@ snapshots: '@libsql/darwin-arm64@0.3.10': optional: true + '@libsql/darwin-arm64@0.5.22': + optional: true + '@libsql/darwin-x64@0.3.10': optional: true + '@libsql/darwin-x64@0.5.22': + optional: true + '@libsql/hrana-client@0.6.2': dependencies: '@libsql/isomorphic-fetch': 0.2.1 @@ -9877,6 +9981,17 @@ snapshots: - bufferutil - utf-8-validate + '@libsql/hrana-client@0.9.0(encoding@0.1.13)': + dependencies: + '@libsql/isomorphic-ws': 0.1.5 + cross-fetch: 4.1.0(encoding@0.1.13) + js-base64: 3.7.5 + node-fetch: 3.3.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + '@libsql/isomorphic-fetch@0.2.1': {} '@libsql/isomorphic-ws@0.1.5': @@ -9887,21 +10002,42 @@ snapshots: - bufferutil - utf-8-validate + '@libsql/linux-arm-gnueabihf@0.5.22': + optional: true + + '@libsql/linux-arm-musleabihf@0.5.22': + optional: true + '@libsql/linux-arm64-gnu@0.3.10': optional: true + '@libsql/linux-arm64-gnu@0.5.22': + optional: true + '@libsql/linux-arm64-musl@0.3.10': optional: true + '@libsql/linux-arm64-musl@0.5.22': + optional: true + '@libsql/linux-x64-gnu@0.3.10': optional: true + '@libsql/linux-x64-gnu@0.5.22': + optional: true + '@libsql/linux-x64-musl@0.3.10': optional: true + '@libsql/linux-x64-musl@0.5.22': + optional: true + '@libsql/win32-x64-msvc@0.3.10': optional: true + '@libsql/win32-x64-msvc@0.5.22': + optional: true + '@microsoft/api-extractor-model@7.30.7(@types/node@20.19.25)': dependencies: '@microsoft/tsdoc': 0.15.1 @@ -9919,7 +10055,7 @@ snapshots: '@rushstack/rig-package': 0.5.3 '@rushstack/terminal': 0.15.4(@types/node@20.19.25) '@rushstack/ts-command-line': 5.0.2(@types/node@20.19.25) - lodash: 4.17.21 + lodash: 4.17.23 minimatch: 10.0.3 resolve: 1.22.10 semver: 7.5.4 @@ -10185,13 +10321,13 @@ snapshots: '@electric-sql/pglite': 0.3.15 '@electric-sql/pglite-socket': 0.0.20(@electric-sql/pglite@0.3.15) '@electric-sql/pglite-tools': 0.2.20(@electric-sql/pglite@0.3.15) - '@hono/node-server': 1.19.9(hono@4.11.4) + '@hono/node-server': 1.19.9(hono@4.11.7) '@mrleebo/prisma-ast': 0.13.1 '@prisma/get-platform': 7.2.0 '@prisma/query-plan-executor': 7.2.0 foreground-child: 3.3.1 get-port-please: 3.2.0 - hono: 4.11.4 + hono: 4.11.7 http-status-codes: 2.3.0 pathe: 2.0.3 proper-lockfile: 4.1.2 @@ -10202,7 +10338,7 @@ snapshots: transitivePeerDependencies: - typescript - '@prisma/engines-version@7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735': {} + '@prisma/engines-version@7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57': {} '@prisma/get-platform@7.2.0': dependencies: @@ -10219,13 +10355,13 @@ snapshots: - bufferutil - utf-8-validate - '@prisma/prisma-schema-wasm@7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735': {} + '@prisma/prisma-schema-wasm@7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57': {} - '@prisma/query-compiler-wasm@7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735': {} + '@prisma/query-compiler-wasm@7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57': {} '@prisma/query-plan-executor@7.2.0': {} - '@prisma/schema-engine-wasm@7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735': {} + '@prisma/schema-engine-wasm@7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57': {} '@prisma/studio-core@0.13.1': {} @@ -10816,7 +10952,7 @@ snapshots: '@typescript/vfs@1.6.1(typescript@5.8.2)': dependencies: - debug: 4.4.0(supports-color@10.2.2) + debug: 4.4.1 typescript: 5.8.2 transitivePeerDependencies: - supports-color @@ -11102,7 +11238,7 @@ snapshots: glob: 8.1.0 graceful-fs: 4.2.11 lazystream: 1.0.1 - lodash: 4.17.21 + lodash: 4.17.23 normalize-path: 3.0.0 readable-stream: 3.6.2 @@ -11283,7 +11419,7 @@ snapshots: benchmark@2.1.4: dependencies: - lodash: 4.17.21 + lodash: 4.17.23 platform: 1.3.6 better-sqlite3@11.10.0: @@ -11494,7 +11630,7 @@ snapshots: '@chevrotain/gast': 10.5.0 '@chevrotain/types': 10.5.0 '@chevrotain/utils': 10.5.0 - lodash: 4.17.21 + lodash: 4.17.23 regexp-to-ast: 0.5.0 chokidar@4.0.3: @@ -11671,6 +11807,12 @@ snapshots: create-require@1.1.1: {} + cross-fetch@4.1.0(encoding@0.1.13): + dependencies: + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -12570,9 +12712,7 @@ snapshots: dependencies: function-bind: 1.1.2 - hono@4.10.6: {} - - hono@4.11.4: {} + hono@4.11.7: {} hosted-git-info@2.8.9: {} @@ -13376,6 +13516,21 @@ snapshots: '@libsql/linux-x64-musl': 0.3.10 '@libsql/win32-x64-msvc': 0.3.10 + libsql@0.5.22: + dependencies: + '@neon-rs/load': 0.0.4 + detect-libc: 2.0.2 + optionalDependencies: + '@libsql/darwin-arm64': 0.5.22 + '@libsql/darwin-x64': 0.5.22 + '@libsql/linux-arm-gnueabihf': 0.5.22 + '@libsql/linux-arm-musleabihf': 0.5.22 + '@libsql/linux-arm64-gnu': 0.5.22 + '@libsql/linux-arm64-musl': 0.5.22 + '@libsql/linux-x64-gnu': 0.5.22 + '@libsql/linux-x64-musl': 0.5.22 + '@libsql/win32-x64-msvc': 0.5.22 + lilconfig@2.1.0: {} lilconfig@3.1.3: {} @@ -13438,7 +13593,7 @@ snapshots: lodash.once@4.1.1: {} - lodash@4.17.21: {} + lodash@4.17.23: {} log-symbols@4.1.0: dependencies: diff --git a/tsconfig.build.bundle.json b/tsconfig.build.bundle.json index 0cd48129c7fd..fc3173eea217 100644 --- a/tsconfig.build.bundle.json +++ b/tsconfig.build.bundle.json @@ -32,6 +32,8 @@ "@prisma/adapter-neon": ["./packages/adapter-neon/src"], "@prisma/adapter-pg": ["./packages/adapter-pg/src"], "@prisma/adapter-planetscale": ["./packages/adapter-planetscale/src"], + "@prisma/param-graph": ["./packages/param-graph/src"], + "@prisma/param-graph-builder": ["./packages/param-graph-builder/src"], "@prisma/query-plan-executor": ["./packages/query-plan-executor/src"], "@prisma/sqlcommenter": ["./packages/sqlcommenter/src"], "@prisma/sqlcommenter-query-insights": ["./packages/sqlcommenter-query-insights/src"],