diff --git a/src/files-loader.ts b/src/files-loader.ts index 013dd2f..9919024 100644 --- a/src/files-loader.ts +++ b/src/files-loader.ts @@ -21,6 +21,7 @@ export const loadMigrationFiles = async ( directory: string, // tslint:disable-next-line no-empty log: Logger = () => {}, + skipCreateMigrationTable: boolean = false, ): Promise> => { log(`Loading migrations from: ${directory}`) @@ -31,8 +32,16 @@ export const loadMigrationFiles = async ( return [] } - const migrationFiles = [ - path.join(__dirname, "migrations/0_create-migrations-table.sql"), + let migrationFiles = [] + + if (!skipCreateMigrationTable) { + migrationFiles.push( + path.join(__dirname, "migrations/0_create-migrations-table.sql"), + ) + } + + migrationFiles = [ + ...migrationFiles, ...fileNames.map((fileName) => path.resolve(directory, fileName)), ].filter(isValidFile) diff --git a/src/migrate.ts b/src/migrate.ts index e00807b..2349fc5 100644 --- a/src/migrate.ts +++ b/src/migrate.ts @@ -45,7 +45,7 @@ export async function migrate( if (typeof migrationsDirectory !== "string") { throw new Error("Must pass migrations directory as a string") } - const intendedMigrations = await loadMigrationFiles(migrationsDirectory, log) + const intendedMigrations = await loadMigrationFiles(migrationsDirectory, log, config.skipCreateMigrationTable) if ("client" in dbConfig) { // we have been given a client to use, it should already be connected diff --git a/src/types.ts b/src/types.ts index 5e16f9a..63f0e0c 100644 --- a/src/types.ts +++ b/src/types.ts @@ -59,6 +59,7 @@ export type Config = Partial export interface FullConfig { readonly logger: Logger + readonly skipCreateMigrationTable: boolean } export class MigrationError extends Error {