UNPKG

node-pg-migrate

Version:

PostgreSQL database migration management tool for node.js

95 lines (94 loc) 4.26 kB
import type { QueryResult } from 'pg'; import type { DBConnection } from './db'; import MigrationBuilder from './migrationBuilder'; import type { ColumnDefinitions } from './operations/tables'; import type { Logger, MigrationAction, MigrationBuilderActions, MigrationDirection, RunnerOption } from './types'; export interface RunMigration { readonly path: string; readonly name: string; readonly timestamp: number; } export declare enum FilenameFormat { timestamp = "timestamp", utc = "utc" } export interface CreateOptionsTemplate { templateFileName: string; } export interface CreateOptionsDefault { language?: 'js' | 'ts' | 'sql'; ignorePattern?: string; } export type CreateOptions = { filenameFormat?: FilenameFormat | `${FilenameFormat}`; } & (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 */ export 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<string[]>; /** * extracts numeric value from everything in `filename` before `SEPARATOR`. * 17 digit numbers are interpreted as utc date and converted to the number representation of that date. * @param filename filename to extract the prefix from * @param logger Redirect messages to this logger object, rather than `console`. * @returns numeric value of the filename prefix (everything before `SEPARATOR`). */ export declare function getNumericPrefix(filename: string, logger?: Logger): number; export declare class Migration implements RunMigration { static create(name: string, directory: string, options?: CreateOptions): Promise<string>; 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<unknown>; _getAction(direction: MigrationDirection): MigrationAction; apply(direction: MigrationDirection): Promise<unknown>; markAsRun(direction: MigrationDirection): Promise<QueryResult>; } export {};