octonom
Version:
Object Document Mapper for any database
21 lines (20 loc) • 1.08 kB
TypeScript
import { IModelConstructor, Model } from '../model';
import { ObjectInstance } from './object';
import { ISanitizeOptions, ISchema, ISchemaOptions, IToObjectOptions, PopulateReference } from './schema';
export interface IModelInstance<T extends Model = Model> extends ObjectInstance<T> {
schema: ModelSchema<T>;
rawObject: T;
}
export declare type ModelInstance<T extends Model> = IModelInstance<T>;
export interface IModelOptions<T extends Model = Model> extends ISchemaOptions<ModelInstance<T>> {
model: IModelConstructor<T>;
callParentHooks?: boolean;
}
export declare class ModelSchema<T extends Model = Model> implements ISchema<T, ModelInstance<T>, Partial<T>> {
readonly options: IModelOptions<T>;
constructor(options: IModelOptions<T>);
create(value: any, sanitizeOptions?: ISanitizeOptions): IModelInstance<T>;
populate(instance: ModelInstance<T>, populateReference: PopulateReference): Promise<T>;
toObject(instance: ModelInstance<T>, options?: IToObjectOptions): Partial<T>;
validate(instance: ModelInstance<T>): Promise<void>;
}