import { userModel } from "../models/user.model"; export abstract class UsersBaseService { async find(filterObject) { try { const resultObject = await userModel.findOne(filterObject).lean(); if (!resultObject) return { success: false, code: 404, error: "No Matching Result Found.", }; return { success: true, code: 200, record: resultObject, }; } catch (err) { console.log(`err.message`, err.message); return { success: false, code: 500, error: err.message, }; } } async create(form: any) { try { if (form.email) { form.email = form.email.toLowerCase(); let user = await this.find({ email: form.email }); if (user.success) return { success: false, error: "This email already exists", code: 409, }; } let newUser = new userModel(form); await newUser.save(); return { success: true, code: 201, }; } catch (err) { console.log(`err.message`, err.message); return { success: false, code: 500, error: err.message, }; } } async get(filterObject) { try { const resultObject = await userModel .findOne(filterObject) .lean() .select("-password"); if (!resultObject) return { success: false, code: 404, error: "No Matching Result Found.", }; return { success: true, code: 200, record: resultObject, }; } catch (err) { console.log(`err.message`, err.message); return { success: false, code: 500, error: err.message, }; } } async list(filterObject) { try { const resultArray = await userModel .find(filterObject) .lean() .select("-password"); if (!resultArray) return { success: false, code: 404, error: "No Matching Result Found.", }; const count = await userModel.countDocuments(filterObject); return { success: true, code: 200, record: resultArray, count, }; } catch (err) { console.log(`err.message`, err.message); return { success: false, code: 500, error: "Unexpected Error Happened.", }; } } }