UNPKG

firebird-query

Version:

node-firebird plugin for easy and safe query building.

178 lines 5.23 kB
import Firebird from "node-firebird"; export type TxIsolation = "READ_COMMITTED" | "READ_COMMITTED_READ_ONLY" | "READ_UNCOMMITTED" | "REPEATABLE_READ" | "SERIALIZABLE"; type Prettify<T> = { [K in keyof T]: T[K]; } & {}; export type TxReturnType = { queryRaw: <T>(strings: TemplateStringsArray, ...params: QueryParam[]) => { getQuery: () => string; execute: () => Promise<T[]>; paginated: (take: number, page?: number) => Promise<any>; }; insertOne: <T extends { [key: string]: any; }>(params: InsertOneParams<T>) => { getQuery: () => string; execute: () => Promise<T>; }; insertMany: <T extends { [key: string]: any; }>(params: InsertParams<T>) => { getQuery: () => string; execute: () => Promise<string>; }; updateOne: <T>(params: UpdateOneParams<T>) => { getQuery: () => string; execute: () => Promise<T>; }; updateOrInsert: <T>(params: UpdateOrInsertParams<T>) => { getQuery: () => string; execute: () => Promise<T>; }; deleteOne: <T>(params: DeleteOneParams<T>) => { getQuery: () => string; execute: () => Promise<T>; }; commit: () => Promise<void>; rollback: () => Promise<void>; commitRetaining: () => Promise<void>; rollbackRetaining: () => Promise<void>; }; export type PrimitiveValue = null | undefined | boolean | string | number | Date; type NumberOperators = { ne?: number; gt?: number; gte?: number; lt?: number; lte?: number; between?: { from: number; to: number; }; IN?: number[]; notIN?: number[]; }; type DateOperators = { ne?: Date; gt?: Date; gte?: Date; lt?: Date; lte?: Date; between?: { from: Date; to: Date; }; IN?: Date[]; notIN?: Date[]; }; type StringOperators = { ne?: string; IN?: string[]; notIN?: string[]; startsWith?: string; endsWith?: string; contains?: string; }; type WhereConditions = Prettify<NumberOperators | DateOperators | StringOperators>; type keyOmit<T, U extends keyof any> = Prettify<T & { [P in U]?: never; }>; export type WhereObject = keyOmit<{ [key: string]: PrimitiveValue | WhereConditions | ManuallyEscapedStatement; }, "OR"> | keyOmit<{ [key: string]: PrimitiveValue | WhereConditions | ManuallyEscapedStatement; }, "AND"> | { OR?: WhereObject[]; } | { AND?: WhereObject[]; }; export type ManuallyEscapedStatement = (escapeFn: typeof Firebird.escape) => string; export type QueryParam = PrimitiveValue | WhereObject | ManuallyEscapedStatement; export type InsertOneParams<T extends { [key: string]: any; }> = { tableName: string; rowValues: Record<string, PrimitiveValue>; returning?: (keyof T | string)[]; }; export type InsertParams<T> = { tableName: string; rowValues: Array<{ [k in keyof T]: PrimitiveValue; }>; columnNames: Array<keyof T>; }; export type UpdateOneParams<T> = { tableName: string; rowValues: { [k in string]: any; }; where: WhereObject; returning?: ReadonlyArray<keyof T | string>; }; export type UpdateOrInsertParams<T> = { tableName: string; rowValues: { [k in string]: any; }; returning?: ReadonlyArray<keyof T | string>; }; export type DeleteOneParams<T> = { tableName: string; where: WhereObject; returning?: ReadonlyArray<keyof T | string>; }; export declare class FirebirdQuery { private readonly options; private conn; private queryLogger?; private defaultIsolationLevel; constructor(poolOptions?: Firebird.Options & { maxConnections?: number; }, fqOptions?: { queryLogger?: ((query: string) => void); defaultIsolationLevel?: TxIsolation; }); private get db(); private manageQuery; get queryRaw(): <T>(strings: TemplateStringsArray, ...params: QueryParam[]) => { getQuery: () => string; execute: () => Promise<T[]>; paginated: (take: number, page?: number) => Promise<T[]>; }; get insertOne(): <T extends { [key: string]: any; }>(params: InsertOneParams<T>) => { getQuery: () => string; execute: () => Promise<T>; }; get insertMany(): <T extends { [key: string]: any; }>(params: InsertParams<T>) => { getQuery: () => string; execute: () => Promise<string>; }; get updateOne(): <T>(params: UpdateOneParams<T>) => { getQuery: () => string; execute: () => Promise<T>; }; get updateOrInsert(): <T>(params: UpdateOrInsertParams<T>) => { getQuery: () => string; execute: () => Promise<T>; }; get deleteOne(): <T>(params: DeleteOneParams<T>) => { getQuery: () => string; execute: () => Promise<T>; }; destroy(): Promise<void>; initTransaction<T>(cb: (tx: TxReturnType) => T, isolation?: TxIsolation): Promise<T>; private handleRawQuery; private handleInsertOne; private handleInsertMany; private handleUpdateOne; private handleUpdateOrInsert; private handleDeleteOne; private txHandler; } export {}; //# sourceMappingURL=index.d.ts.map