UNPKG

@ifit/mongoose-dao

Version:

Mongo helper methods for working with data in a DAO or repository pattern

42 lines (41 loc) 1.82 kB
import "reflect-metadata"; import * as mongoose from "mongoose"; import { IDataObject } from "../data-objects/data-object"; import { IListOptions } from "../list-interfaces/list-options"; import { ISearchCriteria } from "../list-interfaces/search-criteria"; export interface IDataAccessObject<TData extends IDataObject, TObject extends IDataObject> { create(data: TData): Promise<TObject & { id: string; }>; insertMany(data: TData[]): Promise<TObject[]>; insertMany(data: TData[], options: { rawResult: true; }): Promise<TData[]>; findById(id: string): Promise<TObject>; list(searchCriteria?: ISearchCriteria, listOptions?: IListOptions): Promise<{ total: number; results: TObject[]; }>; update(data: TData): Promise<TObject>; deleteById(id: string): Promise<TObject>; } export declare abstract class DataAccessObject<TData extends IDataObject, TObject extends IDataObject> implements IDataAccessObject<TData, TObject> { protected abstract model: mongoose.Model<TData & mongoose.Document>; protected abstract targetClass: new (data: TData) => TObject; protected dataObjectClass: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"; create(data: TData): Promise<TObject & { id: string; }>; insertMany(data: TData[]): Promise<TObject[]>; insertMany(data: TData[], options: { rawResult: true; }): Promise<TData[]>; findById(id: string): Promise<TObject>; list(searchCriteria?: ISearchCriteria, listOptions?: IListOptions): Promise<{ total: number; results: TObject[]; }>; update(data: TData): Promise<TObject>; deleteById(id: string): Promise<TObject>; protected initObject(result: mongoose.MongooseDocument): TObject | null; }