node-pg-migrate
Version:
PostgreSQL database migration management tool for node.js
95 lines (94 loc) • 4.26 kB
TypeScript
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 {};