siquil
v1.0.1
Published
Simple SQL migration tool for PostgreSQL
Maintainers
Readme
Siquil is a simple SQL migration tool for PostgreSQL. It runs each migration inside a transaction, ensuring your database never ends up in a partially migrated state.
Siquil can be used as a CLI tool or as a library in your application.
Getting Started
Installation
npm install -g siquilConfiguration
Set your database connection:
export DATABASE_URL=postgres://user:password@localhost:5432/mydbOptionally, create a siquil.toml in your project root:
migrations_dir = "migrations"Initialize your project
siquil database setupThis creates the migrations directory and the __siquil_migrations tracking table.
Code Examples
Generating migrations
$ siquil migration generate create_users
Created migration: 20260127225011_create_usersThis creates the following structure:
migrations/
└── 20260127225011_create_users/
├── up.sql
└── down.sqlWriting migrations
Edit up.sql:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);Edit down.sql:
DROP TABLE users;Running migrations
$ siquil migration run
Running migration: 20260127225011_create_users
Applied successfully
Applied 1 migration(s)Reverting migrations
$ siquil migration revert
Reverting migration: 20260127225011_create_users
Reverted successfullyResetting the database
$ siquil database reset
Dropping all tables...
Migrations table recreated
Running migration: 20260127225011_create_users
Applied successfully
Applied 1 migration(s)Using as a Library
Siquil can also be used programmatically in your application:
import { Pool } from 'pg';
import { runPendingMigrations } from 'siquil';
async function main() {
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
});
const applied = await runPendingMigrations(pool, './migrations');
for (const migration of applied) {
console.log(`Applied: ${migration.version}_${migration.name}`);
}
await pool.end();
}
main();CLI Reference
| Command | Description |
|---------|-------------|
| siquil database setup | Initialize migrations table and run pending migrations |
| siquil database reset | Drop all tables and re-run all migrations |
| siquil migration generate <name> | Create a new migration |
| siquil migration run | Run all pending migrations |
| siquil migration revert | Revert the last applied migration |
License
Licensed under the MIT License. See LICENSE for details.
