UNPKG

typecql

Version:

ORM for CQL databases.

32 lines (31 loc) 1.36 kB
import { SpecialWhere, SpecialWhereAnd } from '../misc/classes/specialWhere'; import { Settings } from '../misc/utils/settings'; export type SelectResult<T, S extends SelectFields<T>[]> = { [U in S[number] as U['alias'] extends string ? U['alias'] : U['field']]: U['field'] extends keyof T ? T[U['field']] : U['field'] extends string ? unknown : never; } & object; export type SelectFields<T> = { field: keyof { [K in keyof T as T[K] extends (...args: any[]) => any ? never : K]: T[K]; } | string; alias?: string; }; export type OrderByFields<T> = { field: keyof { [K in keyof T as T[K] extends (...args: any[]) => any ? never : K]: T[K]; } | string; dir: 'ASC' | 'DESC'; }[]; export type WhereFields<T> = { [K in keyof T as T[K] extends (...args: any[]) => any ? never : K]?: T[K] | SpecialWhere | SpecialWhereAnd; } & { [key: string]: unknown | SpecialWhere | SpecialWhereAnd; }; export declare class QueryFactory<T> { private tableName; private settings; constructor(tableName: string, settings: Settings); createCountQuery(whereFields: WhereFields<T>): string; createQuery(selectFields: SelectFields<T>[], whereFields: WhereFields<T>, limit?: number, orderBy?: OrderByFields<T>, allowFiltering?: boolean): string; private selectFieldsFactory; private whereFieldsFactory; }