@decaf-ts/core
Version:
Core persistence module for the decaf framework
22 lines (21 loc) • 1.4 kB
TypeScript
import { ContextOf, Migration } from "./types";
import { Adapter } from "./Adapter";
import { LoggedClass } from "@decaf-ts/logging";
export declare function prefixMethod(obj: any, after: (...args: any[]) => any, prefix: (...args: any[]) => any, afterName?: string): void;
export type ConnectionForAdapter<A extends Adapter<any, any, any, any>> = A extends Adapter<any, any, infer CONN, any> ? CONN : never;
export declare abstract class AbsMigration<A extends Adapter<any, any, any, any>, QUERYRUNNER = ConnectionForAdapter<A>> extends LoggedClass implements Migration<QUERYRUNNER, A> {
transaction: boolean;
protected constructor();
protected get adapter(): A;
protected abstract getQueryRunner(conn: ConnectionForAdapter<A>): QUERYRUNNER;
private enforceRules;
private prefix;
abstract down(qr: QUERYRUNNER, adapter: A, ctx: ContextOf<A>): Promise<void>;
abstract up(qr: QUERYRUNNER, adapter: A, ctx: ContextOf<A>): Promise<void>;
}
export type MigrationRule<A extends Adapter<any, any, any, any> = any, QUERYRUNNER = ConnectionForAdapter<A>> = (qr: QUERYRUNNER, adapter: A, ctx: ContextOf<A>) => Promise<boolean>;
export type MigrationMetadata = {
flavour: string;
rules?: MigrationRule[];
};
export declare function migration(flavour: string, rules?: MigrationRule[]): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;