blow-data-service
Version:
Observable data service for Blow.
55 lines (54 loc) • 2.06 kB
TypeScript
import { Query } from 'blow-query';
import { Observable } from 'rxjs';
import * as mongodb from 'mongodb';
import { DataConnector } from './DataConnector';
import { Entity } from '../Entity';
export interface ConnectOptions {
uriDecodeAuth: boolean;
db: Object;
server: Object;
replSet: Object;
mongos: Object;
}
export declare class MongoClient {
static connect(url: string, options?: ConnectOptions): Observable<Db>;
}
export declare class Db {
protected _db: mongodb.Db;
constructor(db: mongodb.Db);
collection<T>(name: string): Collection<T>;
delete(): Observable<{}>;
close(): Observable<boolean>;
}
export declare class Collection<T> {
protected _collection: mongodb.Collection;
constructor(collection: mongodb.Collection);
find(query?: any): Observable<T>;
count(query?: any): Observable<number>;
delete(query?: any): Observable<number>;
insert(doc: any): Observable<T>;
update(query: any, doc: any, options?: any): Observable<T>;
}
export declare class MongoDBConnector extends DataConnector {
protected _db: Db;
protected _buildQueryWhereForId(id: string): {
[key: string]: any;
};
protected _normalizeId(value: any): any;
protected _prepareQueryWhere(queryWhere: {
[key: string]: any;
}): {
[key: string]: any;
};
protected _collection<T>(collectionName: string): Collection<T>;
connect(): Observable<MongoDBConnector>;
disconnect(): Observable<MongoDBConnector>;
destroyDb(): Observable<MongoDBConnector>;
find<T>(collectionName: string, query?: Query): Observable<T>;
count(collectionName: string, query?: Query): Observable<number>;
delete(collectionName: string, query?: Query): Observable<number>;
deleteById(collectionName: string, id: string): Observable<boolean>;
get<T>(collectionName: string, id: string): Observable<T>;
save<T>(collectionName: string, doc: Entity): Observable<T>;
updateAttributes<T>(collectionName: string, id: string, attributes: Entity): Observable<T>;
}