UNPKG

nestjs-express-cassandra

Version:
59 lines (58 loc) 1.8 kB
import { types } from 'cassandra-driver'; export interface SaveOptions { ttl?: number; if_not_exist?: boolean; } export interface BaseModelStatic<T> { new (props: T): BaseModel<T> & T; syncDB(callback?: (err: Error | null, result: boolean) => void): void; findAsync(query: FindQuery<T>, options: FindQueryOptions<T> & { raw: true; }): Promise<T[]>; findAsync(query: FindQuery<T>, options?: FindQueryOptions<T>): Promise<BaseModel<T>[]>; findOneAsync(query: FindQuery<T>, options?: FindQueryOptions<T>): Promise<BaseModel<T>>; updateAsync(query: FindQuery<T>, updateValue: Partial<T>, options?: UpdateOptions<T>): Promise<types.ResultSet>; deleteAsync(query: FindQuery<T>, options?: DeleteOptions): Promise<types.ResultSet>; } export interface BaseModel<T> extends BaseModelStatic<T> { saveAsync(options?: SaveOptions): Promise<T>; toJSON(): T; } export declare type FindQuery<Entity> = { [KEY in keyof Entity]?: Entity[KEY] | CqlOperatorOptions<Entity[KEY]>; } & CqlPaginationOptions<Entity>; export interface FindQueryOptions<T> { select?: (string | keyof T)[]; materialized_view?: string; } export interface CqlPaginationOptions<Entity> { $orderby?: { $asc?: keyof Entity | Array<keyof Entity>; $desc?: keyof Entity | Array<keyof Entity>; }; $limit?: number; } export interface CqlOperatorOptions<T> { $eq?: T; $ne?: T; $isnt?: T; $gt?: T; $lt?: T; $gte?: T; $lte?: T; $in?: T[]; $like?: string; $token?: T; $contains?: string; $contains_key?: string[]; } export interface UpdateOptions<T> { ttl?: number; if_exists?: boolean; conditions?: { [P in keyof T]?: T[P]; }; } export interface DeleteOptions { if_exists?: boolean; }