Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | import { Injectable } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; import { Model } from 'mongoose'; import { Retailer, RetailerDocument } from '../../database/schemas/retailer.schema'; @Injectable() export class RetailersService { constructor( @InjectModel(Retailer.name) private retailerModel: Model<RetailerDocument>, ) {} async findAll(): Promise<RetailerDocument[]> { return this.retailerModel.find({ status: 'active' }).exec(); } async findOne(id: string): Promise<RetailerDocument | null> { return this.retailerModel.findById(id).exec(); } async findByName(name: string): Promise<RetailerDocument | null> { return this.retailerModel.findOne({ name }).exec(); } async create(retailerData: Partial<Retailer>): Promise<RetailerDocument> { const newRetailer = new this.retailerModel(retailerData); return newRetailer.save(); } async update(id: string, updateData: Partial<Retailer>): Promise<RetailerDocument | null> { return this.retailerModel.findByIdAndUpdate(id, updateData, { new: true }).exec(); } async delete(id: string): Promise<boolean> { const result = await this.retailerModel.findByIdAndDelete(id).exec(); return !!result; } async getActiveRetailers(): Promise<RetailerDocument[]> { return this.retailerModel.find({ status: 'active', 'apiConfig.isActive': true }).exec(); } async updateLastSync(id: string): Promise<void> { await this.retailerModel.findByIdAndUpdate(id, { 'apiConfig.lastSync': new Date(), }).exec(); } async updatePerformanceMetrics(id: string, metrics: { conversionRate?: number; averageOrderValue?: number; customerSatisfaction?: number; responseTime?: number; }): Promise<void> { await this.retailerModel.findByIdAndUpdate(id, { 'performance': { ...metrics }, }).exec(); } } |