database-proxy
Version:
Through a set of access control rules configuration database access to realize the client directly access the database via HTTP.
135 lines • 4.63 kB
TypeScript
/// <reference types="node" />
import { AccessorInterface, ReadResult, UpdateResult, AddResult, RemoveResult, CountResult, ListIndexesResult, DropIndexResult, CreateIndexResult } from './accessor';
import { Params, Order } from '../types';
import { MongoClient, Filter } from 'mongodb';
import * as mongodb from 'mongodb';
import { LoggerInterface } from '../logger';
import { EventEmitter } from 'events';
import { AggregateStage } from 'database-ql/dist/commonjs/interface';
/**
* Mongodb Accessor is responsible for performing MongoDB data operations.
*/
export declare class MongoAccessor implements AccessorInterface {
readonly type = "mongo";
readonly client: MongoClient;
protected _event: EventEmitter;
get db(): mongodb.Db;
private _logger;
get logger(): LoggerInterface;
setLogger(logger: LoggerInterface): void;
constructor(client: MongoClient);
emit(event: string | symbol, ...args: any[]): boolean;
once(event: string | symbol, listener: (...args: any[]) => void): void;
removeAllListeners(event?: string | symbol): void;
on(event: string | symbol, listener: (...args: any[]) => void): void;
off(event: string | symbol, listener: (...args: any[]) => void): void;
close(): Promise<void>;
execute(params: Params): Promise<ReadResult | UpdateResult | AddResult | RemoveResult | CountResult | CreateIndexResult | DropIndexResult | ListIndexesResult | never>;
/**
* Query a single document, mainly used for data queries in `access rules`
*/
get(collection: string, query: Filter<any>): Promise<any>;
/**
* Emit result event
* @param params
* @param data
*/
protected emitResult(params: Params, result: any): void;
/**
* Execute read query
* @param collection collection name
* @param params query params
* @returns
*/
protected read(collection: string, params: Params): Promise<ReadResult>;
/**
* Execute aggregate query
* @param collection
* @param params
* @returns
*/
protected aggregate(collection: string, params: Params): Promise<ReadResult>;
/**
* Execute update query
* @param collection Collection name
* @param params
* @returns
*/
protected update(collection: string, params: Params): Promise<UpdateResult>;
/**
* Execute insert query
* @param collection Collection name
* @param params
* @returns
*/
protected add(collection: string, params: Params): Promise<AddResult>;
/**
* Execute remove query
* @param collection 集合名
* @param params 请求参数
* @returns 执行结果
*/
protected remove(collection: string, params: Params): Promise<RemoveResult>;
/**
* Execute count query
* @param collection collection name
* @param params query params
* @returns
*/
protected count(collection: string, params: Params): Promise<CountResult>;
/**
* Convert order params to Mongodb's order format
* @param order
* @returns
*/
protected processOrder(order: Order[]): (string | number)[][];
/**
* Generate a hex string document id
* @returns
*/
protected generateDocId(): string;
/**
* Serialize Bson to Extended JSON
* @see https://docs.mongodb.com/manual/reference/mongodb-extended-json/
* @param bsonDoc
* @returns
*/
protected serializeBson(bsonDoc: any): mongodb.BSON.Document;
/**
* Deserialize Extended JSOn to Bson
* @see https://docs.mongodb.com/manual/reference/mongodb-extended-json/
* @param ejsonDoc
* @returns
*/
protected deserializedEjson(ejsonDoc: any): any;
/**
* Convert aggregate stages params to Mongodb aggregate pipelines
* @param stages
* @returns
*/
protected processAggregateStages(stages: AggregateStage[]): {
[x: string]: any;
}[];
/**
* Execute create index query
* @param collection Collection name
* @param params
* @returns
*/
protected createIndex(collection: string, params: Params): Promise<CreateIndexResult>;
/**
* Execute drop index query
* @param collection Collection name
* @param params
* @returns
*/
protected dropIndex(collection: string, params: Params): Promise<DropIndexResult>;
/**
* Execute list indexes query
* @param collection Collection name
* @param params
* @returns
*/
protected listIndexes(collection: string, params: Params): Promise<ListIndexesResult>;
}
//# sourceMappingURL=mongo.d.ts.map