{"_id":"@aragornhq/pg-migration","_rev":"8-d87b541f96de617788d4749249aeea58","name":"@aragornhq/pg-migration","dist-tags":{"latest":"1.1.3"},"versions":{"1.0.1":{"name":"@aragornhq/pg-migration","version":"1.0.1","keywords":["postgres","migration","typescript","cli","rollback"],"author":{"name":"Aragorn AI"},"license":"MIT","_id":"@aragornhq/pg-migration@1.0.1","maintainers":[{"name":"aragornhq","email":"edward.adjei@aragorn.ai"}],"homepage":"https://github.com/aragornhq/pg-migration#readme","bugs":{"url":"https://github.com/aragornhq/pg-migration/issues"},"bin":{"pg-migrate":"dist/cli.js"},"dist":{"shasum":"489b30bed325f3a5649191f2e36c774a43b7eb64","tarball":"https://registry.npmjs.org/@aragornhq/pg-migration/-/pg-migration-1.0.1.tgz","fileCount":19,"integrity":"sha512-XWvt7wPGQZL+ApGbtm5V1/y7hP5E8e+qLN3A4de2/ow03GESK6zgbuEQOvm+2g3hNevs14juIvHWwLwgl+qvIw==","signatures":[{"sig":"MEQCIBSpWsJcSq2iX7sRjxZNRRrrLjFgg6QjmlXmd4T8Cn8nAiBRb7cak0A1qs3i/WD1nt7orGWET6+S455D+E8E4aHQrg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29659},"main":"dist/cli.js","types":"dist/cli.d.ts","gitHead":"1b433cf48219d859706ad275813935d378cd3e3a","scripts":{"test":"jest","build":"tsc","migration:up":"ts-node src/cli.ts migration:up","migration:down":"ts-node src/cli.ts migration:down","migration:create":"ts-node src/cli.ts migration:create"},"_npmUser":{"name":"aragornhq","email":"edward.adjei@aragorn.ai"},"repository":{"url":"git+https://github.com/aragornhq/pg-migration.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-grade PostgreSQL migration CLI with rollback and integrity checks","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.4","ts-node":"^10.0.0","@types/pg":"^8.15.5","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.10.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-migration_1.0.1_1758985511363_0.33741141620803217","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@aragornhq/pg-migration","version":"1.0.2","keywords":["postgres","migration","typescript","cli","rollback"],"author":{"name":"Aragorn AI"},"license":"MIT","_id":"@aragornhq/pg-migration@1.0.2","maintainers":[{"name":"aragornhq","email":"edward.adjei@aragorn.ai"}],"homepage":"https://github.com/aragornhq/pg-migration#readme","bugs":{"url":"https://github.com/aragornhq/pg-migration/issues"},"bin":{"pg-migrate":"dist/cli.js"},"dist":{"shasum":"078eb2552f1ab4368be44ebcea1a1291509e2dd3","tarball":"https://registry.npmjs.org/@aragornhq/pg-migration/-/pg-migration-1.0.2.tgz","fileCount":19,"integrity":"sha512-FdWFQGom9N7FKUm2PGPeB3ik8EjzAE3zIco7VBOaeMEkiqyfVJ1zjwWp8S4pWPJyu0GVK7CrRNMJ3gHe7U+Npw==","signatures":[{"sig":"MEUCIQCfAz5K4Md2PzTTybYBjyW47CwlXvzQBEjQqxGS8enjFQIgbCJnBPFu2TlAYLMrhxbfmL60moTXODYNzdL6hEhksuk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31400},"main":"dist/cli.js","types":"dist/cli.d.ts","gitHead":"b2a8130e3ccbbbcdd3cca2a10a4e290241f5d588","scripts":{"test":"jest","build":"tsc","migration:up":"ts-node src/cli.ts migration:up","migration:down":"ts-node src/cli.ts migration:down","migration:create":"ts-node src/cli.ts migration:create"},"_npmUser":{"name":"aragornhq","email":"edward.adjei@aragorn.ai"},"repository":{"url":"git+https://github.com/aragornhq/pg-migration.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-grade PostgreSQL migration CLI with rollback and integrity checks","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.4","ts-node":"^10.0.0","@types/pg":"^8.15.5","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.10.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-migration_1.0.2_1759004316743_0.035220965445159624","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@aragornhq/pg-migration","version":"1.0.3","keywords":["postgres","migration","typescript","cli","rollback"],"author":{"name":"Aragorn AI"},"license":"MIT","_id":"@aragornhq/pg-migration@1.0.3","maintainers":[{"name":"aragornhq","email":"edward.adjei@aragorn.ai"}],"homepage":"https://github.com/aragornhq/pg-migration#readme","bugs":{"url":"https://github.com/aragornhq/pg-migration/issues"},"bin":{"pg-migrate":"dist/cli.js"},"dist":{"shasum":"cd2ecb4776d01cfa9f7e075c5cedfee5c9f099ca","tarball":"https://registry.npmjs.org/@aragornhq/pg-migration/-/pg-migration-1.0.3.tgz","fileCount":19,"integrity":"sha512-uLvkKtcMxuIZufVGKSmyL85/ZG8QBUndUHMbDHFxEpNMDuaqvKeIdn3E1IpUa3tcVel/KlW8OwlzaFOkSkQ/Og==","signatures":[{"sig":"MEUCIQC7xWzGHhxGUEjnj0n9rKrR9PWEQnbFV9jhlMhXqz68CgIgOhrZRkkP7cRBATNnglGjAUSG4tOxB5hN6IKmDlYn9PE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39296},"main":"dist/cli.js","types":"dist/cli.d.ts","gitHead":"953b9405c6f184d834e0659b622d1d3577d100ae","scripts":{"test":"jest","build":"tsc","migration:up":"ts-node src/cli.ts migration:up","migration:down":"ts-node src/cli.ts migration:down","migration:create":"ts-node src/cli.ts migration:create"},"_npmUser":{"name":"aragornhq","email":"edward.adjei@aragorn.ai"},"repository":{"url":"git+https://github.com/aragornhq/pg-migration.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-grade PostgreSQL migration CLI with rollback and integrity checks","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.1","pg-dump-restore-nodejs":"^0.0.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.4","ts-node":"^10.0.0","@types/pg":"^8.15.5","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.10.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-migration_1.0.3_1759021345780_0.9039084602893632","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@aragornhq/pg-migration","version":"1.0.4","keywords":["postgres","migration","typescript","cli","rollback"],"author":{"name":"Aragorn AI"},"license":"MIT","_id":"@aragornhq/pg-migration@1.0.4","maintainers":[{"name":"aragornhq","email":"edward.adjei@aragorn.ai"}],"homepage":"https://github.com/aragornhq/pg-migration#readme","bugs":{"url":"https://github.com/aragornhq/pg-migration/issues"},"bin":{"pg-migrate":"dist/cli.js"},"dist":{"shasum":"e8b2f38d24224501b12bd720116e742dc1ed6ddc","tarball":"https://registry.npmjs.org/@aragornhq/pg-migration/-/pg-migration-1.0.4.tgz","fileCount":19,"integrity":"sha512-z9GFTjTKM0TK6dnWcWBWvfqpqRhc4Yf0uYHhvlQQO1iuW5yxxVkWqad/QDE9/dqIpr2ZU8tKQFbM7foS0IWaRw==","signatures":[{"sig":"MEQCIB0tn/B73p4mbBU87fOIi7UJMzFaTh5PJIrevprFAprSAiAs8s2l8OLj369OXZF/z6JbFEDOL6X2Ofcvc5S4pf4CiA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23870},"main":"dist/cli.js","types":"dist/cli.d.ts","gitHead":"f9b92266c793735ba17ca4b7f84f297e311d9855","scripts":{"test":"jest","build":"tsc","migration:up":"ts-node src/cli.ts migration:up","migration:down":"ts-node src/cli.ts migration:down","migration:create":"ts-node src/cli.ts migration:create"},"_npmUser":{"name":"aragornhq","email":"edward.adjei@aragorn.ai"},"repository":{"url":"git+https://github.com/aragornhq/pg-migration.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-grade PostgreSQL migration CLI with rollback and integrity checks","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.4","ts-node":"^10.0.0","@types/pg":"^8.15.5","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.10.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-migration_1.0.4_1759022405272_0.8385470239728721","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@aragornhq/pg-migration","version":"1.0.5","keywords":["postgres","migration","typescript","cli","rollback"],"author":{"name":"Aragorn AI"},"license":"MIT","_id":"@aragornhq/pg-migration@1.0.5","maintainers":[{"name":"aragornhq","email":"edward.adjei@aragorn.ai"}],"homepage":"https://github.com/aragornhq/pg-migration#readme","bugs":{"url":"https://github.com/aragornhq/pg-migration/issues"},"bin":{"pg-migrate":"dist/cli.js"},"dist":{"shasum":"dfd4f91d4331acf34094c214ffda7850f3521712","tarball":"https://registry.npmjs.org/@aragornhq/pg-migration/-/pg-migration-1.0.5.tgz","fileCount":19,"integrity":"sha512-Lhg0YK3p1rJK8qASfIiVLjA4CB1FJ+vXhcqBKe6HD30dFkLlUqfwwdl+mr7VX4lQ69fncCKyQL/TOtS29/zd8Q==","signatures":[{"sig":"MEQCIAlqpI4h6RXWSBrMBk3fS1J93fR778i0kEY5lpjRGHNGAiA4DqCXdSxhR3KgUT79Q4icoL9Yw3NFBN00e9HfFRTi0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25780},"main":"dist/cli.js","types":"dist/cli.d.ts","gitHead":"ca46c98ba1be25eb39fd8445868faf23fc0394cf","scripts":{"test":"jest","build":"tsc","migration:up":"ts-node src/cli.ts migration:up","migration:down":"ts-node src/cli.ts migration:down","migration:create":"ts-node src/cli.ts migration:create"},"_npmUser":{"name":"aragornhq","email":"edward.adjei@aragorn.ai"},"repository":{"url":"git+https://github.com/aragornhq/pg-migration.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-grade PostgreSQL migration CLI with rollback and integrity checks","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.4","ts-node":"^10.0.0","@types/pg":"^8.15.5","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.10.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-migration_1.0.5_1759024101444_0.9709761712513916","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@aragornhq/pg-migration","version":"1.0.6","keywords":["postgres","migration","typescript","cli","rollback"],"author":{"name":"Aragorn AI"},"license":"MIT","_id":"@aragornhq/pg-migration@1.0.6","maintainers":[{"name":"aragornhq","email":"edward.adjei@aragorn.ai"}],"homepage":"https://github.com/aragornhq/pg-migration#readme","bugs":{"url":"https://github.com/aragornhq/pg-migration/issues"},"bin":{"pg-migrate":"dist/cli.js"},"dist":{"shasum":"d026d912fb3d66fb4c37bccb94e76f93ea6ca2c1","tarball":"https://registry.npmjs.org/@aragornhq/pg-migration/-/pg-migration-1.0.6.tgz","fileCount":19,"integrity":"sha512-WqipgV8mpna+dRmyvlUK5d8rTkpS9hBpIGl5IxeU+orzy1cRaOlCNdwos1W5lqMw+Tm752TmypNBqVKIJUCrZQ==","signatures":[{"sig":"MEYCIQC2YFqwsSEu6eAxmZpZrxDE3SPgBJrlbkhlieziNQTmygIhAKEiM5Y7dPFvm03+9rbxVDS0wvz/fHR2D9G+26vqOUKi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26749},"main":"dist/cli.js","types":"dist/cli.d.ts","gitHead":"419704b370f0ce7880244057aff84f22c507ec51","scripts":{"test":"jest","build":"tsc","migration:up":"ts-node src/cli.ts migration:up","migration:down":"ts-node src/cli.ts migration:down","migration:create":"ts-node src/cli.ts migration:create"},"_npmUser":{"name":"aragornhq","email":"edward.adjei@aragorn.ai"},"repository":{"url":"git+https://github.com/aragornhq/pg-migration.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-grade PostgreSQL migration CLI with rollback and integrity checks","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.4","ts-node":"^10.0.0","@types/pg":"^8.15.5","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.10.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-migration_1.0.6_1759026663491_0.5470321637142466","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@aragornhq/pg-migration","version":"1.1.2","keywords":["postgres","migration","typescript","cli","rollback"],"author":{"name":"Aragorn AI"},"license":"MIT","_id":"@aragornhq/pg-migration@1.1.2","maintainers":[{"name":"aragornhq","email":"edward.adjei@aragorn.ai"}],"homepage":"https://github.com/aragornhq/pg-migration#readme","bugs":{"url":"https://github.com/aragornhq/pg-migration/issues"},"bin":{"pg-migrate":"dist/cli.js"},"dist":{"shasum":"683f0822c42f6536ecc79b6b065e9949d49ac99f","tarball":"https://registry.npmjs.org/@aragornhq/pg-migration/-/pg-migration-1.1.2.tgz","fileCount":19,"integrity":"sha512-LO1kUKY7LaQqvETn3ew2JMF+8dwqEwbtksQk8tqZFIk26+hJFEuTnnafYO8v3QjNa0UjPU0HfsbT83MITlfUiw==","signatures":[{"sig":"MEUCIGbg96YVdAji79UpCtkIFBwRBLa/j6b5CmF2h6sY4s5EAiEApIb3JZ3+22UagWCWoWvDTwsalWB8p6t1yvt0Vu/sRF4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27404},"main":"dist/cli.js","types":"dist/cli.d.ts","gitHead":"a82b9666f959788a2e63745fab399afff7982821","scripts":{"test":"jest","build":"tsc","migration:up":"ts-node src/cli.ts migration:up","migration:down":"ts-node src/cli.ts migration:down","migration:create":"ts-node src/cli.ts migration:create"},"_npmUser":{"name":"aragornhq","email":"edward.adjei@aragorn.ai"},"repository":{"url":"git+https://github.com/aragornhq/pg-migration.git","type":"git"},"_npmVersion":"10.8.2","description":"Production-grade PostgreSQL migration CLI with rollback and integrity checks","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.3.4","ts-node":"^10.0.0","@types/pg":"^8.15.5","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.10.3"},"_npmOperationalInternal":{"tmp":"tmp/pg-migration_1.1.2_1766592121297_0.7732385430562505","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@aragornhq/pg-migration","version":"1.1.3","description":"Production-grade PostgreSQL migration CLI with rollback and integrity checks","repository":{"type":"git","url":"git+https://github.com/aragornhq/pg-migration.git"},"homepage":"https://github.com/aragornhq/pg-migration#readme","bugs":{"url":"https://github.com/aragornhq/pg-migration/issues"},"main":"dist/cli.js","types":"dist/cli.d.ts","bin":{"pg-migrate":"dist/cli.js"},"scripts":{"build":"tsc","migration:create":"ts-node src/cli.ts migration:create","migration:up":"ts-node src/cli.ts migration:up","migration:down":"ts-node src/cli.ts migration:down","test":"jest"},"keywords":["postgres","migration","typescript","cli","rollback"],"author":{"name":"Aragorn AI"},"license":"MIT","dependencies":{"pg":"^8.11.1"},"devDependencies":{"@types/jest":"^29.5.14","@types/node":"^20.10.3","@types/pg":"^8.15.5","jest":"^29.7.0","ts-jest":"^29.3.4","ts-node":"^10.0.0","typescript":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_id":"@aragornhq/pg-migration@1.1.3","gitHead":"9847e5ec4f67e8aceb30ed27fdb4fcc690512ed1","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-X8qYPtaOtfN9T+tjVptFjEb3vXvZ07fOqjSTK09s79+mpnLoFXI2I0GVo93ZorZXRdP55kG5RTKvBLVGJMnuOA==","shasum":"e0e2032b7692a3d22d412c20e11ab526fface88f","tarball":"https://registry.npmjs.org/@aragornhq/pg-migration/-/pg-migration-1.1.3.tgz","fileCount":20,"unpackedSize":28839,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCckTpNuKu6ZsguK0+lvJ3QPv3JsZd2n6mmQmRqNlVTCAIhAJeX3XLVu2qLp8NKzGKpsXTrdx86hbTSHJk7XX9Z2RkV"}]},"_npmUser":{"name":"aragornhq","email":"edward.adjei@aragorn.ai"},"directories":{},"maintainers":[{"name":"aragornhq","email":"edward.adjei@aragorn.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pg-migration_1.1.3_1783274018729_0.7336536321945382"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-27T15:05:11.297Z","modified":"2026-07-05T17:53:38.963Z","1.0.1":"2025-09-27T15:05:11.561Z","1.0.2":"2025-09-27T20:18:36.943Z","1.0.3":"2025-09-28T01:02:25.994Z","1.0.4":"2025-09-28T01:20:05.452Z","1.0.5":"2025-09-28T01:48:21.670Z","1.0.6":"2025-09-28T02:31:03.677Z","1.1.2":"2025-12-24T16:02:01.434Z","1.1.3":"2026-07-05T17:53:38.860Z"},"bugs":{"url":"https://github.com/aragornhq/pg-migration/issues"},"author":{"name":"Aragorn AI"},"license":"MIT","homepage":"https://github.com/aragornhq/pg-migration#readme","keywords":["postgres","migration","typescript","cli","rollback"],"repository":{"type":"git","url":"git+https://github.com/aragornhq/pg-migration.git"},"description":"Production-grade PostgreSQL migration CLI with rollback and integrity checks","maintainers":[{"name":"aragornhq","email":"edward.adjei@aragorn.ai"}],"readme":"# @aragornhq/pg-migration\n\n> ⚔️ Production-grade CLI for managing PostgreSQL schema migrations with raw SQL, rollback, integrity tracking, strict mode, and GitHub automation.\n\n---\n\n## 🚀 Features\n\n- ✅ Native [PostgreSQL](https://www.postgresql.org/) support using [`pg`](https://www.npmjs.com/package/pg)\n- ✅ Fully typed CLI (TypeScript)\n- ✅ Supports `migration:create`, `migration:up`, `migration:down`\n- ✅ Rollback support using `-- ROLLBACK BELOW --` separator\n- ✅ SHA-256 hash tracking for applied migrations\n- ✅ Multiple statements per migration (up and rollback) in a single file\n- ✅ Optional config via `pg-migration.json`\n- ✅ Migrations run inside a single transaction for atomicity\n\n---\n\n## 📦 Installation\n\n```bash\nnpm install --save-dev @aragornhq/pg-migration\n```\n\n## 🔧 Setup\n\n1. Set the PostgreSQL connection using environment variables:\n\n```bash\nPG_HOST=localhost\nPG_PORT=5432\nPG_DB=postgres\nPG_USER=postgres\nPG_PASSWORD=password\nPG_USE_SSL=false\n```\n\nSet `PG_USE_SSL=true` (or `1` / `require`) for hosted PostgreSQL providers that require encrypted connections. If PostgreSQL reports `no pg_hba.conf entry ... SSL off`, SSL is required for that connection and this variable should be enabled.\n\n\n2. Specify where your migration files live via a `pg-migration.json` file:\n\n```json\n{\n  \"path\": \"db/migrations\"\n}\n```\n\nCreate the folder if it does not already exist.\n\n## 🛠️ Usage\n\nRun the CLI with `npx` or via an npm script. The executable name is `pg-migrate`:\n\n```bash\nnpx pg-migrate <command> [options]\n```\n\n### Commands\n\n- `migration:create <name> --path=<folder>` – create a timestamped migration file. The `--path` option is optional when the path is defined in `pg-migration.json`.\n- `migration:up --path=<folder>` – apply all pending migrations.\n- `migration:dry-run --path=<folder>` – run migrations in a transaction and roll back for validation.\n- `migration:down --file=<filename.sql> --path=<folder>` – roll back a single migration.\n\nEach file should contain your SQL up section followed by `-- ROLLBACK BELOW --` and the down section. Multiple statements are allowed in both sections and will be run sequentially.\n\n```sql\n-- 20250101_create_table.sql\nCREATE TABLE example (id SERIAL PRIMARY KEY);\nCREATE INDEX idx_example_id ON example (id);\n\n-- ROLLBACK BELOW --\nDROP INDEX idx_example_id;\nDROP TABLE example;\n```\n\nApplied migrations are recorded in a `migrations` table together with a SHA‑256 hash. If a hash changes, the run fails to prevent drift.\n","readmeFilename":"README.md"}