Migration Code Generation
Read First
src/lib/codegen/and its Laravel, TypeORM, and Django generators.src/lib/exporter/for dialect-specific SQL generation.src/lib/types.tsfor columns, indexes, and edge metadata.src/lib/utils.tsfor IDs and relationship helpers.
Change Rules
- Keep framework conventions explicit: Laravel timestamps and inferred foreign-key names, TypeORM's SQL parsing assumptions, and Django's
yourappplaceholder. - Validate identifier quoting, nullable/default/generated columns, indexes, composite foreign keys, on-delete/on-update behavior, and table ordering.
- Do not assume generated SQL has one formatting shape. If a generator parses SQL, keep the parser tolerant of the SQL it emits and test alterations as well as creates.
- Preserve hyphenated IDs when resolving handles and columns. Never use
split("-")[0]as a column-ID parser. - Treat output as a candidate artifact. Do not claim a migration is executable without reviewing or executing it against the target framework/database.
Verification
- Generate artifacts for empty, single-table, indexed, related, composite-key, and altered schemas.
- Inspect generated files for valid syntax, deterministic naming, and correct foreign-key direction.
- Exercise each supported database type where the generator accepts it.
- Run type-check, lint, and build; manually review generated output because no generated SQL test runner is configured.