export enum MigrationStatus { PENDING = "PENDING", RUNNING = "RUNNING", COMPLETE = "COMPLETE", FAILED = "FAILED", } export interface MigrationInfo { name: string; filename: string; status: MigrationStatus; timeTaken?: number; startDate?: Date; endDate?: Date; result?: string; } export interface MigrationStorage { getPerformedMigrations(): Promise; insertMigration(name: string, filename: string): Promise; updateMigration(name: string, status: MigrationStatus, result: string, timeTaken: number): Promise; close(): Promise; } export type MigrationExecutorFn = (context: Context) => Promise; export interface MigratorOptions { pattern: string; storage: MigrationStorage; } export interface MigrationResult { pendingMigrations: MigrationInfo[]; chosenMigrations: MigrationInfo[]; performedMigrations: MigrationInfo[]; failedMigrations: MigrationInfo[]; }