js-rql
Version:
Javascript RQL lib to transform js/ts object to rql query string
36 lines (35 loc) • 1.13 kB
TypeScript
export interface BaseModel {
[key: string]: any;
}
export interface IRQLExpression<T extends BaseModel, K extends keyof T = keyof T> {
$and?: Array<FieldsIRQL<T>> | Array<IRQLExpression<T, K>>;
$eq?: string | number | null;
$ne?: string | number;
$not?: IRQLExpression<T, K>;
$gt?: number | string;
$ge?: number | string;
$lt?: number | string;
$le?: number | string;
$like?: string;
$ilike?: string;
$in?: Array<T[K]>;
$out?: Array<T[K]>;
$or?: Array<FieldsIRQL<T>> | Array<IRQLExpression<T, K>>;
$range?: {
min: number;
max: number;
};
}
export declare type Operation<T extends BaseModel, K extends keyof T> = T[K] | Array<T[K]> | IRQLExpression<T, K>;
export declare type FieldsIRQL<T extends BaseModel> = {
[K in keyof T]?: Operation<T, K>;
};
export interface IRQL<T extends BaseModel> {
$and?: Array<FieldsIRQL<T>>;
$or?: Array<FieldsIRQL<T>>;
$ordering?: Array<keyof T> | keyof T;
$select?: Array<keyof T>;
limit?: number;
offset?: number;
}
export declare type Query<T extends BaseModel> = IRQL<T> & FieldsIRQL<T>;