@rewiko/crud-request
Version:
NestJs CRUD for RESTful APIs - request query builder
90 lines (89 loc) • 2.74 kB
TypeScript
export declare type QueryFields = string[];
export interface QueryFilter {
field: string;
operator: ComparisonOperator;
value?: any;
}
export declare type QueryFilterArr = [string, ComparisonOperator, any?];
export interface QueryJoin {
field: string;
select?: QueryFields;
}
export declare type QueryJoinArr = [string, QueryFields?];
export interface QuerySort {
field: string;
order: QuerySortOperator;
}
export declare type QuerySortArr = [string, QuerySortOperator];
export declare type QuerySortOperator = 'ASC' | 'DESC';
declare type DeprecatedCondOperator = 'eq' | 'ne' | 'gt' | 'lt' | 'gte' | 'lte' | 'starts' | 'ends' | 'cont' | 'excl' | 'in' | 'notin' | 'isnull' | 'notnull' | 'between';
export declare enum CondOperator {
EQUALS = "$eq",
NOT_EQUALS = "$ne",
GREATER_THAN = "$gt",
LOWER_THAN = "$lt",
GREATER_THAN_EQUALS = "$gte",
LOWER_THAN_EQUALS = "$lte",
STARTS = "$starts",
ENDS = "$ends",
CONTAINS = "$cont",
EXCLUDES = "$excl",
IN = "$in",
NOT_IN = "$notin",
IS_NULL = "$isnull",
NOT_NULL = "$notnull",
BETWEEN = "$between",
EQUALS_LOW = "$eqL",
NOT_EQUALS_LOW = "$neL",
STARTS_LOW = "$startsL",
ENDS_LOW = "$endsL",
CONTAINS_LOW = "$contL",
EXCLUDES_LOW = "$exclL",
IN_LOW = "$inL",
NOT_IN_LOW = "$notinL"
}
export declare type ComparisonOperator = DeprecatedCondOperator | keyof SFieldOperator | string;
export declare type SPrimitivesVal = string | number | boolean;
export declare type SFiledValues = SPrimitivesVal | SPrimitivesVal[];
export interface SFieldOperator {
$eq?: SFiledValues;
$ne?: SFiledValues;
$gt?: SFiledValues;
$lt?: SFiledValues;
$gte?: SFiledValues;
$lte?: SFiledValues;
$starts?: SFiledValues;
$ends?: SFiledValues;
$cont?: SFiledValues;
$excl?: SFiledValues;
$in?: SFiledValues;
$notin?: SFiledValues;
$between?: SFiledValues;
$isnull?: SFiledValues;
$notnull?: SFiledValues;
$eqL?: SFiledValues;
$neL?: SFiledValues;
$startsL?: SFiledValues;
$endsL?: SFiledValues;
$contL?: SFiledValues;
$exclL?: SFiledValues;
$inL?: SFiledValues;
$notinL?: SFiledValues;
$or?: SFieldOperator;
$and?: never;
}
export declare type SField = SPrimitivesVal | SFieldOperator | {
[$custom: string]: SFiledValues;
};
export interface SFields {
[key: string]: SField | Array<SFields | SConditionAND> | undefined;
$or?: Array<SFields | SConditionAND>;
$and?: never;
}
export interface SConditionAND {
$and?: Array<SFields | SConditionAND>;
$or?: never;
}
export declare type SConditionKey = '$and' | '$or';
export declare type SCondition = SFields | SConditionAND;
export {};