module.exports={ getData:getData, insertData:insertData, deleteEquipment:deleteEquipment, updateEquipments:updateEquipments }; let mongoose = require('mongoose'); let equipmentPurchaseModel = mongoose.model("equipment_purchase"); let consts = require('../../main/models/project_consts'); function getPreUpdate (pre, doc){ const update = {}; for (const key in doc) { update[`${pre}.${key}`] = doc[key]; } return update; }; async function deleteEquipment(projectID,ID){ await equipmentPurchaseModel.update({projectID},{'$pull':{equipments:{ ID }}}); } async function insertData (projectID,data){ await equipmentPurchaseModel.update({projectID},{'$push':{equipments:{ $each: data }}}); return data } async function updateEquipments (projectID,updateData,total){ let tasks = []; if(total !== undefined || total !== null) tasks.push({updateOne :{filter:{projectID},update:{$set:{total:total}}}}); for(let data of updateData){ if(data.type === 'insert' ){ tasks.push({updateOne:{ filter:{projectID},update:{'$push':{equipments:{ $each: data.documents }}}}}) }else { let task = {updateOne : { filter:{projectID,'equipments.ID':data.ID}, update:{$set:getPreUpdate('equipments.$',data.doc)} }} tasks.push(task) } } if(tasks.length > 0) await equipmentPurchaseModel.bulkWrite(tasks); return updateData } function getData(projectID, callback) { equipmentPurchaseModel.findOne({'projectID': projectID}).lean().exec((err, data) => { if (err) { callback(1, '', null); } else { callback(0, consts.projectConst.EQUIPMENT_PURCHASE, data); } }) }