refactor(prisma): delegate validator checks to dsql-lint#412
Merged
Conversation
Replace hand-maintained Prisma schema checks (autoincrement, Serial types, fulltext indexes, ID field hints) with dsql-lint's lint mode. The validator now: 1. Checks relationMode = "prisma" (Prisma-specific, can't be caught via SQL) 2. Generates SQL via `prisma migrate diff --from-empty` 3. Runs dsql-lint on the generated SQL to catch all incompatibilities This means the validator no longer needs manual updates when DSQL adds or removes feature support — dsql-lint is the single source of truth for SQL compatibility rules. The dsql-migrate command skips the SQL lint step (skipSqlLint option) since its transform step (dsql-lint --fix) already handles those issues.
…ion failures - Update README example output to match actual dsql-lint messages - Update help text to reflect dsql-lint delegation - Remove dead "warning" type from ValidationIssue (nothing produces warnings anymore) and simplify formatting/control flow - Report prisma migrate diff failures as validation errors instead of silently swallowing them
…tion Add back tests for @db.Serial, @db.SmallSerial, @db.BigSerial, and @@fulltext — now tested through the full validateSchema path instead of testing regex checks directly. Prisma rejects these at schema level and the validator surfaces the Prisma error message. Also fix error extraction from prisma migrate diff failures to skip noise lines (e.g. "Loaded Prisma config") and find the actual error.
…e test - Remove dead `type: "error"` field from ValidationIssue interface - Replace single-field ValidateOptions interface with inline boolean - Fix stale warning count in README example output - Add break to validate switch case for consistency - Add test for prisma migrate diff failure path - Delete untracked plan doc
pkale
reviewed
Apr 28, 2026
pkale
reviewed
Apr 28, 2026
pkale
approved these changes
Apr 28, 2026
amaksimo
added a commit
that referenced
this pull request
Apr 28, 2026
## Summary Bump version to 0.1.1 for release. ### Changes since v0.1.0 - **Replace custom SQL transform with dsql-lint** (#401) — SQL transformation and linting now use `dsql-lint` instead of hand-written regex rules - **Delegate validator checks to dsql-lint** (#412) — Schema validation generates SQL and runs `dsql-lint` in lint mode instead of maintaining custom checks - **Reject unknown CLI flags** (#413) — All commands now error on unrecognized flags instead of silently ignoring them ## Test plan - [x] All 60 tests pass - [x] After merge, tag `node/prisma/v0.1.1` and push to trigger npm publish
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
autoincrement(),@db.Serial,@db.SmallSerial,@db.BigSerial,@@fulltext,Int @id,BigInt @id, andgen_random_uuid()without@db.Uuid. These are all removed.prisma migrate diffand runsdsql-linton the output to catch all SQL incompatibilities. This means the validator no longer needs manual updates when DSQL adds or removes feature support — dsql-lint is the single source of truth.relationMode = "prisma"remains as a Prisma-level check since it cannot be detected via SQL generation.dsql-migrateskips the SQL lint step (skipSqlLintparameter) since its transform step (dsql-lint --fix) already handles those issues.ValidateOptionsinterface (replaced with inline boolean), removed deadtypefield fromValidationIssue, added error reporting forprisma migrate difffailures.Net: -1132 lines removed, +612 lines added across validator, tests, and README.
Test plan
validatecommand catches SERIAL (from autoincrement) via dsql-lintvalidatecommand catches CREATE INDEX without ASYNC via dsql-lintvalidatecommand reports missingrelationMode = "prisma"validatecatches@db.Serial,@db.SmallSerial,@db.BigSerial(Prisma P1012 errors)validatecatches@@fulltext(Prisma P1012 error)validatereports error when prisma cannot parse schemavalidatepasses for DSQL-compatible schema (no indexes, UUID IDs)dsql-migratesucceeds end-to-end (skips SQL lint, transform fixes issues)dsql-migratefails on missingrelationMode