UNPKG

baqend

Version:

Baqend JavaScript SDK

150 lines (149 loc) 6.5 kB
import { Entity } from '../binding'; import type { EntityManager } from '../EntityManager'; import { Class } from '../util'; import { PersistentError } from '../error'; import type { Node } from './Node'; /** * An abstract Query which allows retrieving results */ export declare abstract class Query<T extends Entity> { readonly entityManager: EntityManager; readonly resultClass: Class<T>; static readonly MAX_URI_SIZE = 2000; /** * @param entityManager - The owning EntityManager of this query * @param resultClass - The result class of this query */ constructor(entityManager: EntityManager, resultClass: Class<T>); /** * Add an ascending sort for the specified field to this query * @param field The field to sort * @return The resulting Query */ ascending(field: string): Node<T>; /** * Add an decending sort for the specified field to this query * @param field The field to sort * @return The resulting Query */ descending(field: string): Node<T>; /** * Sets the sort of the query and discard all existing paramaters * @param sort The new sort of the query which is an object whose keys are fields and the * values are either +1 for ascending order or -1 for descending order * @return The resulting Query * * @see http://docs.mongodb.org/manual/reference/method/cursor.sort/ */ sort(sort: { [field: string]: 1 | -1; }): Node<T>; /** * Sets the offset of the query, i.e. how many elements should be skipped * @param offset The offset of this query * @return The resulting Query * * @see http://docs.mongodb.org/manual/reference/method/cursor.skip/ */ offset(offset: number): Node<T>; /** * Sets the limit of this query, i.e hox many objects should be returnd * @param limit The limit of this query * @return The resulting Query * * @see http://docs.mongodb.org/manual/reference/method/cursor.limit/ */ limit(limit: number): Node<T>; /** * Execute the query and return the query results as a List * * Note: All local unsaved changes on matching objects, will be discarded. * * @param [options] The query options * @param [options.depth=0] The object depth which will be loaded. Depth 0 load only the found * objects, <code>true</code> loads the objects by reachability. * @param doneCallback Called when the operation succeed. * @param failCallback Called when the operation failed. * @return A promise that will be resolved with the query result as a list */ abstract resultList(options?: ResultOptions, doneCallback?: ResultListCallback<T>, failCallback?: FailCallback): Promise<T[]>; /** * Execute the query and return the query results as a List * * Note: All local unsaved changes on matching objects, will be discarded. * * @param doneCallback Called when the operation succeed. * @param failCallback Called when the operation failed. * @return A promise that will be resolved with the query result as a list */ abstract resultList(doneCallback?: ResultListCallback<T>, failCallback?: FailCallback): Promise<T[]>; /** * Execute the query that returns a single result * * Note: All local unsaved changes on the matched object, will be discarded. * * @param [options] The query options * @param [options.depth=0] The object depth which will be loaded. Depth 0 load only the found * object, <code>true</code> loads the objects by reachability. * @param doneCallback Called when the operation succeed. * @param failCallback Called when the operation failed. * @return A promise that will be resolved with the query result as a single result */ abstract singleResult(options?: ResultOptions, doneCallback?: SingleResultCallback<T>, failCallback?: FailCallback): Promise<T | null>; /** * Execute the query that returns a single result * * Note: All local unsaved changes on the matched object, will be discarded. * * @param doneCallback Called when the operation succeed. * @param failCallback Called when the operation failed. * @return A promise that will be resolved with the query result as a single result */ abstract singleResult(doneCallback?: SingleResultCallback<T>, failCallback?: FailCallback): Promise<T | null>; /** * Execute the query that returns the matching objects count. * @param doneCallback Called when the operation succeed. * @param failCallback Called when there is a server-side error * @return The total number of matched objects */ abstract count(doneCallback?: CountCallback, failCallback?: FailCallback): Promise<number>; abstract addOrder(field: string, order: 1 | -1): Node<T>; abstract addOrder(order: { [field: string]: 1 | -1; }): Node<T>; abstract addOffset(offset: number): Node<T>; abstract addLimit(limit: number): Node<T>; } export declare function flatArgs(args: any[]): any[]; export type ResultOptions = { depth?: number | boolean; }; /** * The resultList callback is called, when the asynchronous query operation completes successfully * @param result The query result list, an empty list if no match was found * @return A Promise, result or undefined */ export type ResultListCallback<T> = (result: T[]) => Promise<any> | any; /** * The singleResult callback is called, when the asynchronous query operation completes successfully * @param entity The matching object or null id no matching object was found * @return A Promise, result or undefined */ export type SingleResultCallback<T> = (entity: T | null) => Promise<any> | any; /** * The count callback is called, when the asynchronous query operation completes successfully * @param count the matching object count * @return A Promise, result or undefined */ export type CountCallback = (count: number) => Promise<any> | any; /** * The fail callback is called, when the asynchronous query operation is rejected by an error * @param error The error which reject the operation * @return A Promise, result or undefined */ export type FailCallback = (error: PersistentError) => Promise<any> | any; /** * This callback is called when the network connection is closed (e.g. because of network timeout or lost Wi-Fi * connection) */ export type CompleteCallback = () => any;