@sqb/migrator
Version:
Database migrator for SQB
43 lines (42 loc) • 1.76 kB
TypeScript
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>;
}