'use strict'; const Partner = require('../model/partner'), { AppParamError } = require('../helpers/app_error'), { Errors } = require('../helpers/constants'), assert = require('assert'); // Create a new partner async function createPartner_post(req, res) { const input = req.body; assert(input && input.name, AppParamError.create()); const partner = new Partner({ name: input.name, description: input.description || '', }); const newPartner = await partner.save(); res.json(newPartner); } // Get all partners async function getPartners_get(req, res) { const partners = await Partner.find().lean(); res.json(partners); } // Get a specific partner by ID async function getPartnerById_get(req, res) { const partnerId = req.params?.id; assert(partnerId, AppParamError.create()); const partner = await Partner.findById(partnerId).lean(); if (!partner) AppParamError.throw(Errors.NOT_FOUND); res.json(partner); } // Update a partner async function updatePartner_put(req, res) { const partnerId = req.params?.id; const input = req.body; assert(partnerId, AppParamError.create()); const partner = await Partner.findByIdAndUpdate( partnerId, { name: input.name, code: input.code, description: input.description, active: input.active, }, { new: true, runValidators: true } ); if (!partner) AppParamError.throw(Errors.NOT_FOUND); res.json(partner); } // Delete a partner async function deletePartner(req, res) { const partnerId = req.params.id; assert(partnerId, AppParamError.create()); const partner = await Partner.findByIdAndDelete(partnerId); if (!partner) AppParamError.throw(Errors.NOT_FOUND); res.json({ ok: true }); } module.exports = { createPartner_post, getPartners_get, getPartnerById_get, updatePartner_put, deletePartner, };