/** * Abstract base class for database migrations. * All migrations must extend this class and implement the abstract members. */ import type { TQueryFunction } from '../types.ts'; export abstract class BaseMigration { /** The migration version number (must be unique and sequential) */ abstract readonly version: number; /** A short description of what this migration does */ abstract readonly description: string; /** Execute the migration's SQL statements */ abstract up(query: TQueryFunction): void; /** Returns a human-readable name for logging */ getName(): string { return `Migration ${this.version}: ${this.description}`; } }