import { Injectable } from "@nestjs/common"; import { InjectModel } from "@nestjs/mongoose"; import { FilterQuery, Model, Types } from "mongoose"; import { ClaimCase, ClaimCaseDocument } from "../schema/claim-cases.schema"; @Injectable() export class ClaimCaseDbService { constructor( @InjectModel(ClaimCase.name) private readonly claimCaseModel: Model, ) {} async create(payload: Partial): Promise { return this.claimCaseModel.create(payload); } async findById(id: string | Types.ObjectId): Promise { return this.claimCaseModel.findById(id); } async findOne(filter: FilterQuery): Promise { return this.claimCaseModel.findOne(filter); } async findByIdAndUpdate( id: string | Types.ObjectId, update: any, ): Promise { return this.claimCaseModel.findByIdAndUpdate(id, update, { new: true }); } async findOneAndUpdate( filter: FilterQuery, update: any, options?: { new?: boolean }, ): Promise { return this.claimCaseModel.findOneAndUpdate(filter, update, { new: options?.new !== false, }); } async find( filter: FilterQuery, options?: { lean?: boolean; select?: string }, ): Promise[]> { if (options?.lean) { const query = options?.select ? this.claimCaseModel.find(filter).select(options.select).lean() : this.claimCaseModel.find(filter).lean(); return query.exec() as Promise[]>; } const query = options?.select ? this.claimCaseModel.find(filter).select(options.select) : this.claimCaseModel.find(filter); return query.exec() as Promise; } async countByFilter(filter: FilterQuery): Promise { return this.claimCaseModel.countDocuments(filter); } }