UNPKG

@sqb/migrator

Version:

Database migrator for SQB

43 lines (42 loc) 1.76 kB
import { PartialSome, StrictOmit } from 'ts-gems'; import type { MigrationAdapter } from './migration-adapter.js'; export interface MigrationPackage { name: string; description?: string; migrations: Migration[]; baseDir: string; informationTableName?: string; } export interface Migration { version: number; tasks: MigrationTask[]; baseDir: string; backup?: boolean; } export type MigrationTask = SqlScriptMigrationTask | CustomMigrationTask | InsertDataMigrationTask; export interface BaseMigrationTask { title?: string; filename?: string; } export interface SqlScriptMigrationTask extends BaseMigrationTask { script: string | Function; } export interface InsertDataMigrationTask extends BaseMigrationTask { tableName: string; rows: Record<string, any>[]; } export interface CustomMigrationTask extends BaseMigrationTask { fn: (connection: any, adapter: MigrationAdapter) => void | Promise<void>; } export declare function isSqlScriptMigrationTask(x: any): x is SqlScriptMigrationTask; export declare function isInsertDataMigrationTask(x: any): x is InsertDataMigrationTask; export declare function isCustomMigrationTask(x: any): x is CustomMigrationTask; export interface MigrationPackageConfig extends PartialSome<StrictOmit<MigrationPackage, 'migrations'>, 'baseDir'> { migrations: (string | MigrationConfig | (() => MigrationConfig) | (() => Promise<MigrationConfig>))[]; } export interface MigrationConfig extends StrictOmit<Migration, 'tasks' | 'baseDir'> { tasks: (string | MigrationTask | (() => MigrationTask) | (() => Promise<MigrationTask>))[]; } export declare namespace MigrationPackage { function load(asyncConfig: MigrationPackageConfig): Promise<MigrationPackage>; }