warehouse
Version:
Simple JSON-based database
67 lines (66 loc) • 1.78 kB
TypeScript
import type Model from './model';
import type Schema from './schema';
import type BluebirdPromise from 'bluebird';
import type { NodeJSLikeCallback, Options } from './types';
declare abstract class Document<T> {
abstract _model: Model<T>;
_id: string;
abstract _schema: Schema<T>;
[key: string]: any;
/**
* Document constructor.
*
* @param {object} data
*/
constructor(data?: T);
/**
* Saves the document.
*
* @param {function} [callback]
* @return {BluebirdPromise}
*/
save(callback?: NodeJSLikeCallback<any>): BluebirdPromise<any>;
/**
* Updates the document.
*
* @param {object} data
* @param {function} [callback]
* @return {BluebirdPromise}
*/
update(data: object, callback?: NodeJSLikeCallback<any>): BluebirdPromise<any>;
/**
* Replaces the document.
*
* @param {object} data
* @param {function} [callback]
* @return {BluebirdPromise}
*/
replace(data: T | Document<T>, callback?: NodeJSLikeCallback<any>): BluebirdPromise<any>;
/**
* Removes the document.
*
* @param {function} [callback]
* @return {BluebirdPromise}
*/
remove(callback?: NodeJSLikeCallback<any>): BluebirdPromise<any>;
/**
* Returns a plain JavaScript object.
*
* @return {object}
*/
toObject(): T extends object ? T : never;
/**
* Returns a string representing the document.
*
* @return {String}
*/
toString(): string;
/**
* Populates document references.
*
* @param {String|Object} expr
* @return {Document}
*/
populate(expr: string | string[] | Partial<Options>[] | Partial<Options>): Document<T>;
}
export default Document;