hydrate-mongodb
Version:
An Object Document Mapper (ODM) for MongoDB.
123 lines (122 loc) • 8.15 kB
TypeScript
/// <reference types="rx-core" />
/// <reference types="rx-core-binding" />
/// <reference types="rx-lite" />
/// <reference types="rx-lite-aggregates" />
/// <reference types="rx-lite-backpressure" />
/// <reference types="rx-lite-coincidence" />
/// <reference types="rx-lite-experimental" />
/// <reference types="rx-lite-joinpatterns" />
/// <reference types="rx-lite-time" />
import { Callback } from "../core/callback";
import { ResultCallback } from "../core/callback";
import { IteratorCallback } from "../core/callback";
import { InternalSession } from "../session";
import { Constructor } from "../index";
import { Observable } from "rx";
import { CollationOptions } from "../mapping/collationOptions";
export interface QueryBuilder<T> {
findAll(callback?: ResultCallback<T[]>): FindQuery<T>;
findAll(criteria: QueryDocument, callback?: ResultCallback<T[]>): FindQuery<T>;
findOne(callback?: ResultCallback<T>): FindOneQuery<T>;
findOne(criteria: QueryDocument, callback?: ResultCallback<T>): FindOneQuery<T>;
findOneById(id: any, callback?: ResultCallback<T>): FindOneQuery<T>;
findOneAndRemove(callback?: ResultCallback<T>): FindOneAndRemoveQuery<T>;
findOneAndRemove(criteria: QueryDocument, callback?: ResultCallback<T>): FindOneAndRemoveQuery<T>;
findOneAndUpdate(updateDocument: QueryDocument, callback?: ResultCallback<T>): FindOneAndUpdateQuery<T>;
findOneAndUpdate(criteria: QueryDocument, updateDocument: QueryDocument, callback?: ResultCallback<T>): FindOneAndUpdateQuery<T>;
findOneAndUpsert(updateDocument: QueryDocument, callback?: ResultCallback<T>): FindOneAndUpdateQuery<T>;
findOneAndUpsert(criteria: QueryDocument, updateDocument: QueryDocument, callback?: ResultCallback<T>): FindOneAndUpdateQuery<T>;
removeAll(callback?: ResultCallback<number>): void;
removeAll(criteria: QueryDocument, callback?: ResultCallback<number>): void;
removeOne(callback?: ResultCallback<number>): void;
removeOne(criteria: QueryDocument, callback?: ResultCallback<number>): void;
updateAll(updateDocument: QueryDocument, callback?: ResultCallback<number>): void;
updateAll(criteria: QueryDocument, updateDocument: QueryDocument, callback?: ResultCallback<number>): void;
updateOne(updateDocument: QueryDocument, callback?: ResultCallback<number>): void;
updateOne(criteria: QueryDocument, updateDocument: QueryDocument, callback?: ResultCallback<number>): void;
upsert(updateDocument: QueryDocument, callback?: ResultCallback<number>): void;
upsert(criteria: QueryDocument, updateDocument: QueryDocument, callback?: ResultCallback<number>): void;
distinct(key: string, callback: ResultCallback<any[]>): void;
distinct(key: string, criteria: QueryDocument, callback: ResultCallback<any[]>): void;
count(callback?: ResultCallback<number>): CountQuery;
count(criteria: QueryDocument, callback?: ResultCallback<number>): CountQuery;
}
export interface QueryDocument {
[name: string]: any;
}
export interface Query<T> {
execute(callback: ResultCallback<any>): void;
asPromise(): Promise<T>;
}
export interface CountQuery extends Query<number> {
limit(value: number, callback?: ResultCallback<number>): CountQuery;
skip(value: number, callback?: ResultCallback<number>): CountQuery;
}
export interface FindOneAndRemoveQuery<T> extends Query<T> {
sort(field: string, direction: number, callback?: ResultCallback<T>): FindOneAndRemoveQuery<T>;
sort(fields: [string, number][], callback?: ResultCallback<T>): FindOneAndRemoveQuery<T>;
fetch(path: string, callback?: ResultCallback<T>): FindOneAndRemoveQuery<T>;
fetch(paths: string[], callback?: ResultCallback<T>): FindOneAndRemoveQuery<T>;
lazy(callback?: ResultCallback<T>): FindOneAndRemoveQuery<T>;
}
export interface FindOneAndUpdateQuery<T> extends Query<T> {
sort(field: string, direction: number, callback?: ResultCallback<T>): FindOneAndUpdateQuery<T>;
sort(fields: [string, number][], callback?: ResultCallback<T>): FindOneAndUpdateQuery<T>;
fetch(path: string, callback?: ResultCallback<T>): FindOneAndUpdateQuery<T>;
fetch(paths: string[], callback?: ResultCallback<T>): FindOneAndUpdateQuery<T>;
returnUpdated(callback?: ResultCallback<T>): FindOneAndUpdateQuery<T>;
lazy(callback?: ResultCallback<T>): FindOneAndUpdateQuery<T>;
}
export interface FindOneQuery<T> extends Query<T> {
fetch(path: string, callback?: ResultCallback<T>): FindOneQuery<T>;
fetch(paths: string[], callback?: ResultCallback<T>): FindOneQuery<T>;
lazy(callback?: ResultCallback<T>): FindOneQuery<T>;
}
export interface FindQuery<T> extends Query<T[]> {
sort(field: string, direction: number, callback?: ResultCallback<T[]>): FindQuery<T>;
sort(fields: [string, number][], callback?: ResultCallback<T[]>): FindQuery<T>;
fetch(path: string, callback?: ResultCallback<T[]>): FindQuery<T>;
fetch(paths: string[], callback?: ResultCallback<T[]>): FindQuery<T>;
limit(value: number, callback?: ResultCallback<T[]>): FindQuery<T>;
collation(value: CollationOptions, callback?: ResultCallback<T[]>): FindQuery<T>;
skip(value: number, callback?: ResultCallback<T[]>): FindQuery<T>;
lazy(callback?: ResultCallback<T[]>): FindQuery<T>;
batchSize(value: number): FindQuery<T>;
each(iterator: IteratorCallback<T>, callback: Callback): void;
eachSeries(iterator: IteratorCallback<T>, callback: Callback): void;
asObservable(): Observable<T>;
}
export declare class QueryBuilderImpl<T> implements QueryBuilder<T> {
private _session;
private _entityCtr;
constructor(session: InternalSession, entityCtr: Constructor<any>);
findAll(callback?: ResultCallback<T[]>): FindQuery<T>;
findAll(criteria: QueryDocument, callback?: ResultCallback<T[]>): FindQuery<T>;
findOne(callback?: ResultCallback<T>): FindOneQuery<T>;
findOne(criteria: QueryDocument, callback?: ResultCallback<T>): FindOneQuery<T>;
findOneById(id: any, callback?: ResultCallback<T>): FindOneQuery<T>;
findOneAndRemove(callback?: ResultCallback<T>): FindOneAndRemoveQuery<T>;
findOneAndRemove(criteria: QueryDocument, callback?: ResultCallback<T>): FindOneAndRemoveQuery<T>;
findOneAndUpdate(updateDocument: QueryDocument, callback?: ResultCallback<T>): FindOneAndUpdateQuery<T>;
findOneAndUpdate(criteria: QueryDocument, updateDocument: QueryDocument, callback?: ResultCallback<T>): FindOneAndUpdateQuery<T>;
findOneAndUpsert(updateDocument: QueryDocument, callback?: ResultCallback<T>): FindOneAndUpdateQuery<T>;
findOneAndUpsert(criteria: QueryDocument, updateDocument: QueryDocument, callback?: ResultCallback<T>): FindOneAndUpdateQuery<T>;
removeAll(callback?: ResultCallback<number>): void;
removeAll(criteria: QueryDocument, callback?: ResultCallback<number>): void;
removeOne(callback?: ResultCallback<number>): void;
removeOne(criteria: QueryDocument, callback?: ResultCallback<number>): void;
updateAll(updateDocument: QueryDocument, callback?: ResultCallback<number>): void;
updateAll(criteria: QueryDocument, updateDocument: QueryDocument, callback?: ResultCallback<number>): void;
updateOne(updateDocument: QueryDocument, callback?: ResultCallback<number>): void;
updateOne(criteria: QueryDocument, updateDocument: QueryDocument, callback?: ResultCallback<number>): void;
upsert(updateDocument: QueryDocument, callback?: ResultCallback<number>): void;
upsert(criteria: QueryDocument, updateDocument: QueryDocument, callback?: ResultCallback<number>): void;
distinct(key: string, callback: ResultCallback<any[]>): void;
distinct(key: string, criteria: QueryDocument, callback: ResultCallback<any[]>): void;
count(callback?: ResultCallback<number>): CountQuery;
count(criteria: QueryDocument, callback?: ResultCallback<number>): CountQuery;
private _createUpdateQuery(kind, criteriaOrUpdateDocument, updateDocumentOrCallback, callback?);
private _createRemoveQuery(kind, criteriaOrCallback?, callback?);
private _createFindQuery(kind, criteriaOrCallback?, callback?);
private _createQuery(kind);
}