@ifit/mongoose-dao
Version:
Mongo helper methods for working with data in a DAO or repository pattern
42 lines (41 loc) • 1.82 kB
TypeScript
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;
}