@sinkingsheep/jsondb
Version:
A lightweight JSON-based database for Node.js
44 lines (43 loc) • 2.01 kB
TypeScript
import { EventEmitter } from "events";
import { IndexConfig, DBOptions, Document, QueryOptions, OperatorQuery } from "./types";
import { QueryChain } from "./queryChain";
declare class JsonDB extends EventEmitter {
private directory;
private collections;
private dirty;
private prettyPrint;
private schemas;
private autoSaveManager;
private indexes;
private indexConfigs;
private transactions;
constructor(options: DBOptions);
createIndex(collection: string, field: string, config?: IndexConfig): Promise<void>;
init(): Promise<void>;
loadCollection(collectionName: string): Promise<void>;
saveCollection(collectionName: string): Promise<void>;
saveAll(): Promise<void>;
insert<T extends {
id?: string;
}>(collection: string, document: T): Promise<T & Document>;
insertMany<T extends {
id?: string;
}>(collectionName: string, documents: T[]): Promise<(T & {
id: string;
})[]>;
findWithJoin<T>(collectionName: string, query?: Partial<T>, options?: QueryOptions): Promise<T[]>;
find<T extends Document = Document>(collectionName: string, query?: OperatorQuery, options?: QueryOptions): Promise<T[]>;
findOne<T extends Document = Document>(collectionName: string, query?: OperatorQuery): Promise<T | null>;
update<T>(collectionName: string, query: Partial<T>, update: Partial<T>): Promise<number>;
updateOne<T>(collectionName: string, query: Partial<T>, update: Partial<T>): Promise<boolean>;
delete<T>(collectionName: string, query: Partial<T>): Promise<number>;
dropCollection(collectionName: string): Promise<void>;
beginTransaction(): Promise<string>;
private takeCollectionSnapshot;
commitTransaction(transactionId: string): Promise<void>;
rollbackTransaction(transactionId: string): Promise<void>;
chain<T extends Document = Document>(collectionName: string): QueryChain<T>;
private applySorting;
close(): Promise<void>;
}
export default JsonDB;