import { Logger } from "./logger.js"; import { DBConnection } from "./db.js"; import { MigrationBuilderActions } from "./sqlMigration.js"; import { MigrationDirection, RunnerOption } from "./runner.js"; import { ColumnDefinitions } from "./operations/tables/shared.js"; import { MigrationBuilder } from "./migrationBuilder.js"; import { QueryResult } from "pg"; //#region src/migration.d.ts type MigrationAction = (pgm: MigrationBuilder, run?: () => void) => Promise | void; interface RunMigration { readonly path: string; readonly name: string; readonly timestamp: number; } declare const FilenameFormat: Readonly<{ timestamp: "timestamp"; utc: "utc"; index: "index"; }>; type FilenameFormat = (typeof FilenameFormat)[keyof typeof FilenameFormat]; interface CreateOptionsTemplate { templateFileName: string; } interface CreateOptionsDefault { language?: 'js' | 'ts' | 'sql' | 'cjs' | 'mjs' | 'cts' | 'mts'; ignorePattern?: string; } type CreateOptions = { filenameFormat?: FilenameFormat; ignorePattern?: string; } & (CreateOptionsTemplate | CreateOptionsDefault); interface LoadMigrationFilesOptions { /** * Regex pattern for file names to ignore (ignores files starting with `.` by default). * Alternatively, provide a [glob](https://www.npmjs.com/package/glob) pattern or * an array of glob patterns and set `isGlob = true` * * Note: enabling glob will read both, `dir` _and_ `ignorePattern` as glob patterns */ ignorePattern?: string | string[]; /** * Use [glob](https://www.npmjs.com/package/glob) to find migration files. * This will use `dir` _and_ `options.ignorePattern` to glob-search for migration files. * * @default: false */ useGlob?: boolean; /** * Redirect messages to this logger object, rather than `console`. */ logger?: Logger; } /** * Reads files from `dir`, sorts them and returns an array of their absolute paths. * When not using globs, files are sorted by their numeric prefix values first. 17 digit numbers are interpreted as utc date and converted to the number representation of that date. * Glob matches are sorted via String.localeCompare with ignored punctuation. * * @param dir The directory containing your migration files. This path is resolved from `cwd()`. * Alternatively, provide a [glob](https://www.npmjs.com/package/glob) pattern or * an array of glob patterns and set `options.useGlob = true` * * Note: enabling glob will read both, `dir` _and_ `options.ignorePattern` as glob patterns * @param options * @returns Array of absolute paths */ declare function getMigrationFilePaths( /** * The directory containing your migration files. This path is resolved from `cwd()`. * Alternatively, provide a [glob](https://www.npmjs.com/package/glob) pattern or * an array of glob patterns and set `options.useGlob = true` * * Note: enabling glob will read both, `dir` _and_ `options.ignorePattern` as glob patterns */ dir: string | string[], options?: LoadMigrationFilesOptions): Promise; declare class Migration implements RunMigration { /** * Get file prefix for a new migrations file * * @method Migration.getFilePrefix * @param filenameFormat Filename format * @param directory Migrations directory * @param [ignorePattern] Glob ignore pattern * @returns string New file prefix */ static getFilePrefix(filenameFormat: string, directory: string, ignorePattern?: string): Promise; static create(name: string, directory: string, options?: CreateOptions): Promise; readonly db: DBConnection; readonly path: string; readonly name: string; readonly timestamp: number; up?: false | MigrationAction; down?: false | MigrationAction; readonly options: RunnerOption; readonly typeShorthands?: ColumnDefinitions; readonly logger: Logger; constructor(db: DBConnection, migrationPath: string, { up, down }: MigrationBuilderActions, options: RunnerOption, typeShorthands?: ColumnDefinitions, logger?: Logger); _getMarkAsRun(action: MigrationAction): string; _apply(action: MigrationAction, pgm: MigrationBuilder): Promise; _getAction(direction: MigrationDirection): MigrationAction; apply(direction: MigrationDirection): Promise; markAsRun(direction: MigrationDirection): Promise; } //#endregion export { CreateOptions, CreateOptionsDefault, CreateOptionsTemplate, FilenameFormat, Migration, MigrationAction, RunMigration, getMigrationFilePaths };