docs: Prisma Next feature-support matrix (scorecard) - #1000
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (20)
🚧 Files skipped from review as they are similar to previous changes (20)
📝 WalkthroughWalkthroughAdds an indexed Prisma Next feature-support scorecard with database-specific legends, category matrices, evidence links, migration subtopics, and aggregate coverage counts across Postgres, SQLite, and MongoDB. ChangesFeature-support scorecard
Estimated code review effort: 2 (Simple) | ~10 minutes Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
size-limit report 📦
|
@prisma-next/extension-author-tools
@prisma-next/mongo-runtime
@prisma-next/family-mongo
@prisma-next/sql-runtime
@prisma-next/family-sql
@prisma-next/extension-arktype-json
@prisma-next/middleware-cache
@prisma-next/mongo
@prisma-next/extension-paradedb
@prisma-next/extension-pgvector
@prisma-next/extension-postgis
@prisma-next/postgres
@prisma-next/sql-orm-client
@prisma-next/sqlite
@prisma-next/extension-supabase
@prisma-next/target-mongo
@prisma-next/adapter-mongo
@prisma-next/driver-mongo
@prisma-next/contract
@prisma-next/utils
@prisma-next/config
@prisma-next/errors
@prisma-next/framework-components
@prisma-next/operations
@prisma-next/ts-render
@prisma-next/contract-authoring
@prisma-next/ids
@prisma-next/psl-parser
@prisma-next/psl-printer
@prisma-next/cli
@prisma-next/cli-telemetry
@prisma-next/config-loader
@prisma-next/emitter
@prisma-next/language-server
@prisma-next/migration-tools
prisma-next
@prisma-next/vite-plugin-contract-emit
@prisma-next/mongo-codec
@prisma-next/mongo-contract
@prisma-next/mongo-value
@prisma-next/mongo-contract-psl
@prisma-next/mongo-contract-ts
@prisma-next/mongo-emitter
@prisma-next/mongo-schema-ir
@prisma-next/mongo-query-ast
@prisma-next/mongo-orm
@prisma-next/mongo-query-builder
@prisma-next/mongo-lowering
@prisma-next/mongo-wire
@prisma-next/sql-contract
@prisma-next/sql-errors
@prisma-next/sql-operations
@prisma-next/sql-schema-ir
@prisma-next/sql-contract-psl
@prisma-next/sql-contract-ts
@prisma-next/sql-contract-emitter
@prisma-next/sql-lane-query-builder
@prisma-next/sql-relational-core
@prisma-next/sql-builder
@prisma-next/target-postgres
@prisma-next/target-sqlite
@prisma-next/adapter-postgres
@prisma-next/adapter-sqlite
@prisma-next/driver-postgres
@prisma-next/driver-sqlite
commit: |
45e51a0 to
17b9b9d
Compare
There was a problem hiding this comment.
Actionable comments posted: 12
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@scorecard.md`:
- Around line 49-53: Correct the aggregate metadata in the scorecard: update the
group count to match the 30 listed groups, and recompute the ✅, 🟡, 🧪, ❌, and —
totals from the category matrices so they sum to all 1,746 cells across 582
feature rows and three databases.
In `@scorecard/03-psl-schema-language.md`:
- Line 37: The SQLite cell for “Native `@db`.* types” currently combines an
unsupported “(affinity)” label with the status icon. Replace it with the valid
verdict token 🟡 and relocate the affinity clarification to the feature name or
evidence column, preserving the matrix’s parseable status format.
In `@scorecard/05-sql-query-builder.md`:
- Line 26: Update the SQLite evidence in the orderBy(...) row to reference a
SQLite integration test that verifies ordering and NULL placement, and remove
the PostgreSQL adapter migration test from that cell. If no suitable SQLite test
exists, change the SQLite status from ✅ to 🟡.
- Line 15: Split each bundled scorecard entry into atomic feature rows: in
scorecard/05-sql-query-builder.md line 15 separate select columns, aliased
expressions, and callback records; in line 26 separate ordering direction from
NULL placement; in scorecard/06-sql-orm-client.md line 15 separate filter
callback, input, and shorthand forms, line 18 separate take and skip, line 20
separate distinct and distinctOn, and line 32 separate upsert conflict fallback
from explicit criteria. Preserve the existing support and evidence values for
each corresponding feature.
In `@scorecard/06-sql-orm-client.md`:
- Line 22: Update the `all()` evidence entry in the SQL ORM client scorecard so
it cites a test that explicitly verifies streamed-result behavior, such as
iteration or backpressure, rather than only returned rows and execution count;
otherwise rename the feature to reflect ordinary result retrieval.
In `@scorecard/09-filtering.md`:
- Line 16: Update the “Comparison ne” row in the filtering scorecard to describe
only the tested null-specific behavior, namely ne(col, null) lowering to IS NOT
NULL, or downgrade the rating until ordinary Postgres ne comparisons have an
integration test.
In `@scorecard/10-ordering-and-pagination.md`:
- Line 16: Update the scorecard row for orderBy null placement so it reflects
only the tested NULLS LAST behavior for ascending PostgreSQL ordering. Split out
or downgrade claims for NULLS FIRST/LAST generally and SQLite, and retain the
migration test citation only for the behavior it directly verifies.
In `@scorecard/14-transactions.md`:
- Line 15: Update the transaction API entry in the scorecard table to use the
evidenced withTransaction(runtime, fn) name, or replace the cited tests with an
integration test that directly exercises transaction(fn); keep the API label and
evidence consistent.
In `@scorecard/15-migrations.md`:
- Line 147: Narrow the migration scorecard row labeled “Create native
`@db`.*-typed columns” to explicitly claim native array columns, matching the
coverage provided by native-array-columns.integration.test.ts; do not imply
support for all `@db`.* types unless additional evidence is added.
- Line 134: Replace the Postgres evidence in the “Literal defaults migrated” row
of 15-migrations.md with a migration integration test that verifies literal
defaults, or change the Postgres status from ✅ to an accurate
unsupported/incomplete status; do not cite the DML test applies literal defaults
as migration evidence.
- Line 23: Update the “Drift detection / pre-DDL guard” row in the migration
scorecard to separate drift detection from the pre-DDL guard, retaining the
existing Mongo evidence only for drift detection. Mark Mongo pre-DDL guard
coverage as untested unless a test specifically proves migrations block DDL
before applying changes.
- Line 56: Update the “JSON column + DB-level JSON default” row in
15-migrations.md so it does not claim migration support based on the cited
typed-JSON and round-tripping tests; either split the capabilities into separate
rows or downgrade the database-level JSON-default status until a migration test
verifies it.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: CHILL
Plan: Pro
Run ID: 627d8a18-2af6-42ce-9f09-5642779e9074
📒 Files selected for processing (20)
scorecard.mdscorecard/01-targets-and-connection.mdscorecard/02-types-and-values.mdscorecard/03-psl-schema-language.mdscorecard/04-contract-emission-and-authoring.mdscorecard/05-sql-query-builder.mdscorecard/06-sql-orm-client.mdscorecard/07-mongodb-query-and-orm.mdscorecard/08-relations.mdscorecard/09-filtering.mdscorecard/10-ordering-and-pagination.mdscorecard/11-aggregation-and-grouping.mdscorecard/12-nested-writes-and-atomic-ops.mdscorecard/13-raw-and-typed-sql.mdscorecard/14-transactions.mdscorecard/15-migrations.mdscorecard/16-introspection.mdscorecard/17-cli-commands.mdscorecard/18-extensions.mdscorecard/19-observability-and-lifecycle.md
|
|
||
| | Feature | Postgres | SQLite | MongoDB | Prisma Next evidence | | ||
| | --- | --- | --- | --- | --- | | ||
| | `select(...)` (columns / aliased expr / callback record) | ✅ | ✅ | — | `test/integration/test/sql-builder/select.test.ts`; `test/e2e/framework/test/sqlite/sql-builder.test.ts` | |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift
Make every scorecard row represent exactly one atomic feature.
Bundled behaviors can have different database support and evidence, so a single ✅ can overstate coverage.
scorecard/05-sql-query-builder.md#L15-L15: split theselectvariants into separate rows.scorecard/05-sql-query-builder.md#L26-L26: split ordering direction from NULL placement.scorecard/06-sql-orm-client.md#L15-L15: split filter callback, input, and shorthand forms.scorecard/06-sql-orm-client.md#L18-L18: splittakeandskip.scorecard/06-sql-orm-client.md#L20-L20: splitdistinctanddistinctOn.scorecard/06-sql-orm-client.md#L32-L32: split upsert conflict fallback from explicit criteria.
📍 Affects 2 files
scorecard/05-sql-query-builder.md#L15-L15(this comment)scorecard/05-sql-query-builder.md#L26-L26scorecard/06-sql-orm-client.md#L15-L15scorecard/06-sql-orm-client.md#L18-L18scorecard/06-sql-orm-client.md#L20-L20scorecard/06-sql-orm-client.md#L32-L32
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@scorecard/05-sql-query-builder.md` at line 15, Split each bundled scorecard
entry into atomic feature rows: in scorecard/05-sql-query-builder.md line 15
separate select columns, aliased expressions, and callback records; in line 26
separate ordering direction from NULL placement; in
scorecard/06-sql-orm-client.md line 15 separate filter callback, input, and
shorthand forms, line 18 separate take and skip, line 20 separate distinct and
distinctOn, and line 32 separate upsert conflict fallback from explicit
criteria. Preserve the existing support and evidence values for each
corresponding feature.
Per-feature availability of Prisma Next across Postgres, SQLite, and MongoDB, feeding the Prisma 8 RC1 release project (PR #986). scorecard.md is the index (intro, legend, coverage summary, links); the matrix itself lives under scorecard/, one file per category. Each row is a single atomic feature; each cell states availability for that database and cites only Prisma Next tests. A cell is marked Works only when a genuine integration test (executing against PGlite / SQLite / mongodb-memory-server and asserting results) proves it for that database; unit tests do not qualify. Distinct capabilities are never bundled into one cell. Signed-off-by: Serhii Tatarintsev <tatarintsev@prisma.io>
Valid findings fixed: coverage summary recomputed (30 groups; 585 rows / 1,755 cells, escaped-pipe-aware counting) with a new per-database tally table; illegal verdict tokens normalized to plain glyphs; take/skip and orderBy direction vs NULLS placement split into atomic rows; SQLite orderBy cell no longer cites Postgres evidence; streamed-results row renamed to what the test proves and a genuine streaming test added; ne(...) evidence swapped to a test proving value inequality; NULLS first/last downgraded (no test uses the API); Mongo drift detection split from the pre-DDL guard; JSON-defaults row re-scoped to round-trip; native @db.* row narrowed to non-array types (untested). Rejected after verification: transaction(fn) rename (public API is client.transaction(fn); reviewer saw the low-level withTransaction primitive) and the literal-defaults demotion (the DML test runs against a schema provisioned by a real migration apply). Signed-off-by: Serhii Tatarintsev <tatarintsev@prisma.io>
f76375b to
a12bafe
Compare
Draft. Opens the Prisma Next feature-support matrix as a standalone document (
scorecard.md), feeding the Prisma 8 RC1 release project (#986).What this is
A per-feature matrix: one row per feature, one column per database (Postgres / SQLite / MongoDB). Each cell states whether the feature is available in Prisma Next — not whether Prisma 7 had it:
✅Works — proven by a named Prisma Next test suite (cited in the evidence column).🟡Untested — reachable through the Prisma Next public surface, but no proving Prisma Next test exists yet.🧪Experimental — shipped but outside the stability promise (polymorphism / MTI).❌Not in 8.0 — deliberately absent.—n/a for that database.The Prisma Next evidence column points only to Prisma Next (TypeScript) test suites; Rust/engine and Prisma 7 tests are never cited.
How the rows were derived
Scope / caveats
🟡cells are the RC test-porting work queue (reachable-but-unproven).✅/🟡boundary calls are conservative (marked🟡) where no Prisma Next test could be confirmed; these are worth a second pass against package-level codec suites.Draft for review of orientation and completeness before wiring into the #986 dashboard.
Summary by CodeRabbit