@migration-preflight/adapters-sqlite
v0.2.0
Published
node:sqlite driver for migration-preflight: test your SQLite migrations with zero runtime dependencies.
Downloads
302
Maintainers
Readme
🪶 @migration-preflight/adapters-sqlite
The SQLite driver for
migration-preflight.
A migration that silently drops data usually only fails once it meets real data, and by then it
already ran. This package is what lets that test run against SQLite.
Zero runtime dependencies: node:sqlite is a Node builtin, so testing your SQLite migrations never
requires installing or configuring anything else.
flowchart LR
Core["migration-preflight<br/>(replay engine)"] --> Sqlite["@migration-preflight/adapters-sqlite<br/>(node:sqlite)"]
Sqlite --> Test["Your migrations,<br/>tested with real data"]Install
pnpm add -D migration-preflight @migration-preflight/adapters-sqliteTwo entry points
So a consumer of the raw driver never has to install drizzle-orm / better-sqlite3:
| Import | Use it for |
| ---------------------------------------------- | ------------------------------------------------------- |
| @migration-preflight/adapters-sqlite | Seed-between-migrations tests, the one that matters |
| @migration-preflight/adapters-sqlite/drizzle | Quick "does the whole history apply cleanly" smoke test |
// Seed-between-migrations test
import { createNodeSqliteMigrationDatabase } from "@migration-preflight/adapters-sqlite";
// Quick smoke test
import { runDrizzleBetterSqliteMigrations } from "@migration-preflight/adapters-sqlite/drizzle";Usage
Works with any bundled migration source, Drizzle, Prisma, or plain SQL files:
import { createNodeSqliteMigrationDatabase } from "@migration-preflight/adapters-sqlite";
import { MigrationChain } from "migration-preflight";
import { drizzleFileSource, prismaFileSource, sqlFileSource } from "migration-preflight/sources";
const migrations = drizzleFileSource(join(import.meta.dirname, "out"));
// or: prismaFileSource(join(import.meta.dirname, "../prisma/migrations"))
// or: sqlFileSource(join(import.meta.dirname, "migrations"))
const chain = new MigrationChain(createNodeSqliteMigrationDatabase(), migrations);
await chain.applyAll();No emulator, no device, no Docker, this runs in plain Node, as fast as any other test. See How-to § Pick a migration source for what each folder layout looks like.
📦 Packages
| Package | What it's for |
| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- |
| migration-preflight | Core: replay engine, ports |
| @migration-preflight/adapters-sqlite | SQLite driver (node:sqlite) |
| @migration-preflight/adapters-postgres | Postgres driver (PGlite) |
@migration-preflight/adapters-sqlite isn't linked above: that's this package.
📚 Documentation
- 🚀 Tutorial: seed a row, run a migration, prove it survives.
- 🛠️ How-to guides: task recipes.
- 📖 Reference: API and package layout.
- 💡 Explanation: design rationale.
Contributing
pnpm --filter @migration-preflight/adapters-sqlite test # run the test suite
pnpm --filter @migration-preflight/adapters-sqlite typecheck # type-check
pnpm --filter @migration-preflight/adapters-sqlite lint # eslintLicense
MIT
