feat(database): add migrations.ts with migration framework

This commit is contained in:
2026-06-22 05:37:32 +00:00
parent ad45ed3b4f
commit f9bcbb1f9c
+48
View File
@@ -0,0 +1,48 @@
import { readFileSync } from 'fs';
import { join } from 'path';
export type Migration = {
version: number;
name: string;
up: string; // SQL script for migration
};
export class MigrationManager {
private migrations: Migration[] = [];
constructor() {
this.loadMigrations();
}
private loadMigrations() {
// In a real implementation, this would load migration files from a directory
// For now, we'll just create a single migration for the initial schema
const schemaPath = join(__dirname, 'schema.sql');
const schemaSql = readFileSync(schemaPath, 'utf8');
const initialMigration: Migration = {
version: 1,
name: 'initial_schema',
up: schemaSql
};
this.migrations.push(initialMigration);
}
public getMigrations(): Migration[] {
return this.migrations;
}
public getMigrationByVersion(version: number): Migration | undefined {
return this.migrations.find(m => m.version === version);
}
public getLatestVersion(): number {
if (this.migrations.length === 0) return 0;
return Math.max(...this.migrations.map(m => m.version));
}
}
// Export a singleton instance
export const migrationManager = new MigrationManager();