UNPKG

warehouse

Version:
64 lines (63 loc) 1.96 kB
import BluebirdPromise from 'bluebird'; import Model from './model'; import Schema from './schema'; import SchemaType from './schematype'; import type { AddSchemaTypeOptions, NodeJSLikeCallback } from './types'; interface DatabaseOptions { version: number; path: string; onUpgrade: (oldVersion: number, newVersion: number) => any; onDowngrade: (oldVersion: number, newVersion: number) => any; } declare class Database { options: DatabaseOptions; _models: Record<string, Model<any>>; Model: typeof Model; /** * Database constructor. * * @param {object} [options] * @param {number} [options.version=0] Database version * @param {string} [options.path] Database path * @param {function} [options.onUpgrade] Triggered when the database is upgraded * @param {function} [options.onDowngrade] Triggered when the database is downgraded */ constructor(options?: { path: string; } & Partial<DatabaseOptions>); /** * Creates a new model. * * @param {string} name * @param {Schema|object} [schema] * @return {Model} */ model<T = any>(name: string, schema?: Schema<T> | Record<string, AddSchemaTypeOptions>): Model<any>; /** * Loads database. * * @param {function} [callback] * @return {BluebirdPromise} */ load(callback?: NodeJSLikeCallback<any>): BluebirdPromise<any>; /** * Saves database. * * @param {function} [callback] * @return {BluebirdPromise} */ save(callback?: NodeJSLikeCallback<any>): BluebirdPromise<void>; toJSON(): { meta: { version: number; warehouse: string; }; models: Record<string, Model<any>>; }; static Schema: typeof Schema; Schema: typeof Schema; static SchemaType: typeof SchemaType; SchemaType: typeof SchemaType; static version: number; } export default Database;