import { Injectable } from "@nestjs/common"; import { InjectModel } from "@nestjs/mongoose"; import { FilterQuery, Model, Types } from "mongoose"; import { CallCenterAgentModel } from "../schema/call-center-agent.schema"; @Injectable() export class CallCenterAgentDbService { constructor( @InjectModel(CallCenterAgentModel.name) private readonly model: Model, ) {} async create( data: Partial & { password: string }, ): Promise { return this.model.create(data); } async findOne( filter: FilterQuery, ): Promise { return this.model.findOne(filter); } async findById(id: string): Promise { return this.model.findOne({ _id: new Types.ObjectId(id) }); } async findByLoginIdentifier( identifier: string, ): Promise { const id = identifier.trim(); const or: FilterQuery[] = [ { email: id }, { username: id }, ]; if (/^\d{10}$/.test(id)) { or.push({ nationalCode: id }); } return this.model.findOne({ $or: or }); } async findAll( filter: FilterQuery, ): Promise<(CallCenterAgentModel & { _id: Types.ObjectId })[]> { return this.model.find(filter).lean() as Promise< (CallCenterAgentModel & { _id: Types.ObjectId })[] >; } }