Skip to content

drdxk/bs3m

Repository files navigation

bs3m

TypeScript/JavaScript migrations framework for SQLite databases using better-sqlite3. Handles multi-database setups with transaction coordination.

Status

In development. Core infrastructure complete. API functions implemented: init(), isUpToDate(), getStatus().

See TODO.md for implementation progress.

Features

  • Multi-database migration coordination
  • Two execution modes: separate connections or ATTACH-based
  • Transaction-based execution with rollback support
  • Migration validation and consistency checking
  • Dependency injection architecture with tinytsdi

Installation

npm install bs3m better-sqlite3

Usage

import {init, isUpToDate, getStatus} from 'bs3m';

init({
  migrationsDir: './migrations',
  databases: {
    main: './data/main.db',
    cache: './data/cache.db',
  },
});

// Check migration status
const upToDate = await isUpToDate();

// Get detailed status report
const status = await getStatus();

Migration Format

Migration IDs follow the pattern: yymmdd_hhmm_name__flags

Example: 250101_1430_add_users_table.js

export default {
  dbKeys: ['main'],
  up(dbs) {
    dbs.main.exec('CREATE TABLE users (id INTEGER PRIMARY KEY)');
  },
  down(dbs) {
    dbs.main.exec('DROP TABLE users');
  },
};

Requirements

  • Node.js >= 22.0.0
  • better-sqlite3 ^12.4.1

License

ISC

About

TypeScript/JavaScript migrations framework for SQLite databases using better-sqlite3.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages