Kadak

Migrations

Create and run SQL migrations with lock safety, checksum verification, and dry-run planning.

Migrations

Problem: running SQL files manually causes drift across environments.

Solution: use createMigration() and runMigrations().

Create a migration file

import { createMigration } from '@shyk/kadak-orm'

const filePath = await createMigration('create_users_table')
console.log(filePath)

KadakORM creates a timestamped SQL file in ./migrations.

Apply migrations

import { runMigrations } from '@shyk/kadak-orm'

const result = await runMigrations({
  url: 'postgres://postgres:postgres@localhost:5432/kadak_demo',
  dir: './migrations',
  tableName: 'kadak_migrations',
  dryRun: false,
  lockTimeoutMs: 15000,
})

console.log('applied', result.applied)
console.log('skipped', result.skipped)
console.log('planned', result.planned)

Safe rollout flow

# 1) plan only
MIGRATIONS_DRY_RUN=1 pnpm migrate

# 2) apply
pnpm migrate

Built-in safety behavior

  • Advisory lock prevents concurrent migration runners.
  • Checksum verification detects edited already-applied migration files.
  • Sorted filename execution order remains deterministic.

On this page