typecql
Version:
ORM for CQL databases.
32 lines (31 loc) • 1.36 kB
TypeScript
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;
}