///
import { EventEmitter } from 'events';
import * as MONGO from 'mongodb';
export declare class ReHash extends EventEmitter {
private fObj;
args: any;
private _collection_;
private _data_;
private _online_;
private _bind_auto_save;
ready: boolean;
get findKey(): any;
private _jugetfunc;
setObjectID(objID: object, v: any): void;
constructor(parent: MONGO.Collection, fObj: Object, judgefunc: ((a: T, b: T) => number) | undefined, args: any);
force_ok(): void;
insert(v: T): Promise;
/**
* 返回的都是 拷贝项,变更都要主动set
* @param key
*/
get(key: string): any;
private _changeKey;
private _get;
private _set;
set(key: string, value: any): void;
mset(a: {
k: string;
v: any;
}[]): void;
/**
* 按照一个key 一个 value的方式传入参数
* @param args
*/
lset(...args: any[]): void;
/**
* 标记一个字段需要重新保存一下
* @param key
*/
flag(key: string): void;
private _auto_save;
private _check_save;
/**
* 立即保存数据到数据库
*/
force_save(): Promise;
private auto_save;
/**
* 从数据库加载数据
* @param fitle
*/
load(fitle?: any): Promise>;
/**
* 是否是空数据
*/
get empty(): boolean;
get data(): T;
clone(): T;
get value(): T;
get value_all(): T;
/**
* 删除某个字段
* @param key
*/
del(key: string | string[]): void;
/**
* 删除当前数据
*/
remove(): void;
private _reload_count;
private _on_load;
private _cc_;
private _judge_list;
private batchFind;
}
export declare class ReList {
private fobj;
private _collection_;
args: any;
private _data_;
private _online_;
constructor(parent: MONGO.Collection, fobj: Object, args: any);
get findKey(): Object;
clone(): T[];
get value(): T[];
get value_all(): T[];
get data(): T[];
set(index: number, key: string, value: any): void;
push_back(v: T): void;
private _start;
private _limit;
limit(num: number): this;
skip(num: number): this;
/**
* @description 加载列表数据
* @date 2020-03-25
* @param {boolean} [desc=false] 排序(暂时无效)
* @param {*} [filter] 筛选的字段
* @returns 返回查询对象
* @memberof ReList
*/
load(desc?: boolean, filter?: any): Promise>;
get length(): number;
get_at(index: number, org?: boolean): T | null;
rm_at(index: number): void;
clear_all(): void;
private _has_same;
del(fObj: any): void;
}
export interface IFIndex {
col: string;
keys?: any;
index: string;
}
export declare class TeMongoDBUnit extends EventEmitter {
private db;
private index_check_pool;
private collections;
private _collect_pool;
private ready;
check_ready(): void;
constructor(db: MONGO.Db, collections: string[] | undefined, col_indexs: IFIndex[]);
private _judge_count;
private _judge_index_finish;
private _ct_wait_list;
private _col_create_ret;
private _create_index;
private _idx_wait_list;
private _col_idx_create_ret;
private _check_index_keys;
private _judge_index;
/**
* 检查数据集是否存在
*/
private _check_collections;
private _init_finish;
get_unit(col_name: string, fObj?: Object, jugetfunc?: ((a: T, b: T) => number) | undefined, ...args: any[]): ReHash;
get_list(col_name: string, fObj?: Object, ...args: any[]): ReList;
/**
* 直接插入数据,如果_id重复就异常
* @param col_name
* @param fObj
* @param insert_value
*/
insert(col_name: string, insert_value: any): Promise & {
_id: unknown;
}>>;
/**
* 只有不存在的时候才会插入新数据
* @param col_name
* @param fObj
* @param insert_value
*/
find_insert_unit(col_name: string, fObj: Object | undefined, insert_value: any): Promise;
update_insert(col_name: string, fObj: Object | undefined, insert_value: any): Promise;
/**合并内容 */
private merageInfo;
/**
* 更新数据
* @param col_name
* @param fObj
* @param value
* @param insert 如果是 false的时候,数据不存在也返回操作成功
*/
update(col_name: string, fObj: Object | undefined, value: any, insert?: boolean): Promise;
get_collection(table: string): MONGO.Collection;
get_collection_size(dbname: string, cb: (infos: string) => void): void;
get_aggregate(dbname: string, pipeline: any[]): Promise;
/**
* 检查和跟新存储函数
* @param func
*/
check_func(func: Function): Promise;
call_func(fun_name: string, ...args: (string)[]): Promise<{
ok: number;
retval: any;
}>;
private eval;
del(table: string, fobj: Object): Promise;
}
interface IFMongoPreInit {
database: string;
colltions: string[];
indexs: IFIndex[];
ready?: boolean;
}
export declare class TeMongoDB extends EventEmitter {
private _gl_opts;
private _pre_inits;
protected mongodb: MONGO.MongoClient | MONGO.ReplSet;
constructor();
private _state_;
private _update_time;
private _last_error;
get ready(): boolean;
get state(): "error" | "close" | "timeout" | "ready" | "left_primate";
set state(v: "error" | "close" | "timeout" | "ready" | "left_primate");
get sys_state(): {
state: "error" | "close" | "timeout" | "ready" | "left_primate";
up_time: number;
last_err: string;
};
protected db_maps: {
[x: string]: TeMongoDBUnit;
};
protected db_keys: string[];
/**
*
* @param database_name 数据库的名字
* @param collections 需要的数据集 可以选,选择后会生成对应的数据集后返回准备状态
*/
get_database(database_name: string, collections?: string[], col_indexs?: IFIndex[]): TeMongoDBUnit;
get_collection_size(db: any, col: any, cb: (info: string) => void): void;
get defaultBDName(): string;
error_listen(): void;
init(hosts: {
host: string;
port: number;
}[] | string, options: MONGO.MongoClientOptions | undefined, pre_inits: IFMongoPreInit[]): this;
private _on_ready;
private _check_ready;
}
export {};