import {Connection} from "mysql"; import MysqlConnectionManager from "./MysqlConnectionManager"; import {Type} from "../Utils"; export default abstract class Migration { public readonly version: number; public constructor(version: number) { this.version = version; } public async shouldRun(currentVersion: number): Promise { return this.version > currentVersion; } public abstract async install(connection: Connection): Promise; public abstract async rollback(connection: Connection): Promise; public registerModels?(): void; protected async query(queryString: string, connection: Connection): Promise { await MysqlConnectionManager.query(queryString, undefined, connection); } } export interface MigrationType extends Type { new(version: number): M; }