123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- import { Document } from 'arangojs/documents';
- import { DocumentCollection } from 'arangojs/collection';
- import { AqlLiteral, GeneratedAqlQuery } from 'arangojs/aql';
- import { Database } from 'arangojs';
- export declare type CountFn<T extends Searchable, S extends Searchable = T> = (terms?: Terms<Document<DeepNonNullable<S>>>, inject?: Inject) => Promise<number>;
- export declare type DeepNonNullable<T> = NonNullable<T> extends object ? {
- [P in keyof T]-?: DeepNonNullable<T[P]>;
- } : T;
- export declare type Direction = 'ASC' | 'DESC';
- export declare type Filter<T> = {
- mode?: 'AND' | 'OR';
- eq?: T | null;
- gt?: T;
- gte?: T;
- in?: T[];
- like?: T & string;
- lt?: T;
- lte?: T;
- neq?: T | null;
- nin?: T[];
- nlike?: T & string;
- nreg?: T & string;
- reg?: T & string;
- };
- export declare type FindFn<T extends Searchable, S extends Searchable = T> = (terms?: Terms<Document<DeepNonNullable<S>>>, sort?: Sort<Document<T>>[] | Sort<Document<T>>, inject?: Inject) => Promise<Document<T> | undefined>;
- export declare type Inject = {
-
- beforeFilter?: string;
-
- beforeSort?: string;
-
- beforeLimit?: string;
-
- after?: string;
- };
- export declare type Limit = [number, number?];
- export declare type Searchable = Record<string, unknown>;
- export declare type Terms<T> = {
- [P in keyof T]?: NonNullable<NonNullable<T[P]> extends object ? Terms<T[P]> : Filter<T[P]>>;
- };
- export declare type SearchFn<T extends Searchable, S extends Searchable = T> = (terms?: Terms<Document<DeepNonNullable<S>>>, limit?: Limit, sort?: Sort<Document<S>>[] | Sort<Document<S>>, inject?: Inject) => Promise<SearchResult<T>>;
- export declare type SimpleSearchFn<T extends Searchable, S extends Searchable = T> = (terms?: Terms<Document<DeepNonNullable<S>>>, limit?: Limit, sort?: Sort<Document<S>>[] | Sort<Document<S>>) => Promise<SearchResult<T>>;
- export declare type SearchResult<T extends Searchable> = [number, Document<T>[], GeneratedAqlQuery];
- export declare type Sort<T> = [AqlLiteral | keyof T, Direction];
- export declare const formatData: <T>(data: T | T[]) => string;
- export declare const formatValue: <T>(data: T) => string;
- export declare const operatorMap: Record<keyof Omit<Filter<unknown>, 'mode'>, string>;
- export declare const operators: string[];
- export declare const parseLimit: (l: Limit) => string | number;
- export declare const parseFilter: <T>(param: string, search: Filter<T>) => string;
- export declare const parseSort: <T>(s: Sort<T> | Sort<T>[], parent: string) => string[];
- export declare const parseTerms: <T>(s: Terms<T>, parent: string) => string[];
- export declare const count: <T extends Searchable, S extends Searchable = T>(db: Database, c: DocumentCollection<T>, i?: string, n?: string) => CountFn<T, S>;
- export declare const find: <T extends Searchable, S extends Searchable = T>(db: Database, c: DocumentCollection<T>, i?: string) => FindFn<T, S>;
- export declare const search: <T extends Searchable, S extends Searchable = T>(db: Database, c: DocumentCollection<T>, i?: string, n?: string) => SearchFn<T, S>;
- declare const _default: {
- count: <T extends Searchable, S extends Searchable = T>(db: Database, c: DocumentCollection<T>, i?: string, n?: string) => CountFn<T, S>;
- find: <T_1 extends Searchable, S_1 extends Searchable = T_1>(db: Database, c: DocumentCollection<T_1>, i?: string) => FindFn<T_1, S_1>;
- formatData: <T_2>(data: T_2 | T_2[]) => string;
- formatValue: <T_3>(data: T_3) => string;
- operatorMap: Record<"eq" | "gt" | "gte" | "in" | "like" | "lt" | "lte" | "neq" | "nin" | "nlike" | "nreg" | "reg", string>;
- operators: string[];
- parseFilter: <T_4>(param: string, search: Filter<T_4>) => string;
- parseLimit: (l: Limit) => string | number;
- parseSort: <T_5>(s: Sort<T_5> | Sort<T_5>[], parent: string) => string[];
- parseTerms: <T_6>(s: Terms<T_6>, parent: string) => string[];
- search: <T_7 extends Searchable, S_2 extends Searchable = T_7>(db: Database, c: DocumentCollection<T_7>, i?: string, n?: string) => SearchFn<T_7, S_2>;
- };
- export default _default;
|