prj_properties_facade.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. /**
  2. * Created by Tony on 2017/8/3.
  3. */
  4. let mongoose = require("mongoose");
  5. let prj_prop_mdl = mongoose.model("project_property");
  6. module.exports = {
  7. createPrjProperties: createPrjProperties,
  8. removeProperty : removeProperty,
  9. updateWhole: updateWhole,
  10. updateOneProperty: updateOneProperty,
  11. addOrChangeProperty: addOrChangeProperty,
  12. removeOneProperty: removeOneProperty,
  13. createPrjPropertiesWithCallBack: createPrjPropertiesWithCallBack,
  14. removePropertyWithCallBack: removePropertyWithCallBack,
  15. updateWholeWithCallBack: updateWholeWithCallBack,
  16. updateOnePropertyWithCallBack: updateOnePropertyWithCallBack,
  17. addOrChangePropertyWithCallBack: addOrChangePropertyWithCallBack,
  18. removeOnePropertyWithCallBack: removeOnePropertyWithCallBack
  19. };
  20. async function createPrjProperties(prjId, dftItems) {
  21. let data = {};
  22. data.projectID = prjId;
  23. data.properties = dftItems;
  24. let saveObj = new prj_prop_mdl(data);
  25. let rst = await saveObj.save();
  26. return rst;
  27. };
  28. async function removeProperty(prjId) {
  29. let rst = await prj_prop_mdl.remove({'projectID': prjId});
  30. return rst;
  31. };
  32. async function updateWhole(prjPropObj) {
  33. let rst = null;
  34. if (prjPropObj && prjPropObj.hasOwnProperty('projectID') && prjPropObj.hasOwnProperty('properties') && (prjPropObj.properties instanceof Array)) {
  35. rst = await prj_prop_mdl.update({'projectID': prjPropObj.projectID}, prjPropObj);
  36. }
  37. return rst;
  38. }
  39. async function updateOneProperty(prjId, key, newValue) {
  40. let rst = await prj_prop_mdl.update({"projectID": prjId, "properties.key": key}, {"$set": {"properties.$.value": newValue}});
  41. return rst;
  42. }
  43. async function addOrChangeProperty(prjId, newItem) {
  44. let rst = null;
  45. rst = await prj_prop_mdl.findOne({"projectID": prjId, "properties.key": newItem.key});
  46. //console.log('find result: ' + rst);
  47. if (rst === null || rst.length === 0) {
  48. rst = await prj_prop_mdl.update({"projectID": prjId}, {"$push": {"properties": newItem}});
  49. //console.log('push result: ' + rst);
  50. } else {
  51. rst = await prj_prop_mdl.update({"projectID": prjId, "properties.key": newItem.key}, {"$set": {"properties.$.value": newItem.value}});
  52. //console.log('update result: ' + rst);
  53. }
  54. return rst;
  55. };
  56. async function removeOneProperty(prjId, key) {
  57. let rst = prj_prop_mdl.update({"projectID": prjId}, {"$pull": {"properties": {"key": key}}});
  58. return rst;
  59. }
  60. function createPrjPropertiesWithCallBack(prjId, dftItems, cb) {
  61. let data = {};
  62. data.projectID = prjId;
  63. data.properties = dftItems;
  64. let saveObj = new prj_prop_mdl(data);
  65. saveObj.save(cb);
  66. };
  67. function removePropertyWithCallBack(prjId, cb) {
  68. prj_prop_mdl.remove({'projectID': prjId}, cb);
  69. }
  70. function updateWholeWithCallBack(prjPropObj, cb) {
  71. if (prjPropObj && prjPropObj.hasOwnProperty('projectID') && prjPropObj.hasOwnProperty('properties') && (prjPropObj.properties instanceof Array)) {
  72. prj_prop_mdl.update({'projectID': prjPropObj.projectID}, prjPropObj, cb);
  73. }
  74. }
  75. function updateOnePropertyWithCallBack(prjId, key, newValue, cb) {
  76. prj_prop_mdl.update({"projectID": prjId, "properties.key": key}, {"$set": {"properties.$.value": newValue}}, cb);
  77. }
  78. function addOrChangePropertyWithCallBack(prjId, newItem, cb) {
  79. prj_prop_mdl.findOne({"projectID": prjId, "properties.key": newItem.key}, function(err, result){
  80. if (err === null) {
  81. if (result === null) {
  82. console.log('no result');
  83. prj_prop_mdl.update({"projectID": prjId}, {"$push": {"properties": newItem}}, cb);
  84. } else {
  85. console.log('has result');
  86. prj_prop_mdl.update({"projectID": prjId, "properties.key": newItem.key}, {"$set": {"properties.$.value": newItem.value}}, cb);
  87. }
  88. }
  89. });
  90. }
  91. function removeOnePropertyWithCallBack(prjId, key, cb) {
  92. prj_prop_mdl.update({"projectID": prjId}, {"$pull": {"properties": {"key": key}}}, cb);
  93. }