UNPKG

@decaf-ts/core

Version:

Core persistence module for the decaf framework

22 lines (21 loc) 1.4 kB
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;