prj_properties_facade.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  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. let std_prj_prop_mdl = mongoose.model("cfg_prj_property");
  7. module.exports = {
  8. createPrjProperties: createPrjProperties,
  9. removePrjProperties : removePrjProperties,
  10. updateWhole: updateWhole,
  11. updateOneProperty: updateOneProperty,
  12. addOrChangeProperty: addOrChangeProperty,
  13. removeOneProperty: removeOneProperty,
  14. getPrjProperty: getPrjProperty,
  15. createStdPrjProperties: createStdPrjProperties,
  16. getStdPrjProperties: getStdPrjProperties,
  17. createPrjPropertiesWithCallBack: createPrjPropertiesWithCallBack,
  18. removePrjPropertiesWithCallBack: removePrjPropertiesWithCallBack,
  19. updateWholeWithCallBack: updateWholeWithCallBack,
  20. updateOnePropertyWithCallBack: updateOnePropertyWithCallBack,
  21. addOrChangePropertyWithCallBack: addOrChangePropertyWithCallBack,
  22. removeOnePropertyWithCallBack: removeOnePropertyWithCallBack
  23. };
  24. async function createStdPrjProperties(rationLibId, items) {
  25. let data = {};
  26. data.rationLibID = rationLibId;
  27. data.properties = items;
  28. let rst = await std_prj_prop_mdl.create(data);
  29. return rst;
  30. }
  31. async function getStdPrjProperties(rationLibId) {
  32. let rst = await std_prj_prop_mdl.findOne({"rationLibID": rationLibId});
  33. return rst;
  34. }
  35. async function getPrjProperty(prjId) {
  36. let rst = await prj_prop_mdl.findOne({"projectID": prjId});
  37. return rst;
  38. }
  39. async function createPrjProperties(prjId, dftItems) {
  40. let data = {};
  41. data.projectID = prjId;
  42. data.properties = dftItems;
  43. let rst = await prj_prop_mdl.create(data);
  44. return rst;
  45. };
  46. async function removePrjProperties(prjId) {
  47. let rst = await prj_prop_mdl.remove({'projectID': prjId});
  48. return rst;
  49. };
  50. async function updateWhole(prjPropObj) {
  51. let rst = null;
  52. if (prjPropObj && prjPropObj.hasOwnProperty('projectID') && prjPropObj.hasOwnProperty('properties') && (prjPropObj.properties instanceof Array)) {
  53. rst = await prj_prop_mdl.update({'projectID': prjPropObj.projectID}, prjPropObj);
  54. }
  55. return rst;
  56. }
  57. async function updateOneProperty(prjId, key, newValue) {
  58. let rst = await prj_prop_mdl.update({"projectID": prjId, "properties.key": key}, {"$set": {"properties.$.value": newValue}});
  59. return rst;
  60. }
  61. async function addOrChangeProperty(prjId, newItem) {
  62. let rst = null;
  63. rst = await prj_prop_mdl.findOne({"projectID": prjId, "properties.key": newItem.key});
  64. //console.log('find result: ' + rst);
  65. if (rst === null || rst.length === 0) {
  66. rst = await prj_prop_mdl.update({"projectID": prjId}, {"$push": {"properties": newItem}});
  67. //console.log('push result: ' + rst);
  68. } else {
  69. rst = await prj_prop_mdl.update({"projectID": prjId, "properties.key": newItem.key}, {"$set": {"properties.$.value": newItem.value}});
  70. //console.log('update result: ' + rst);
  71. }
  72. return rst;
  73. };
  74. async function removeOneProperty(prjId, key) {
  75. let rst = prj_prop_mdl.update({"projectID": prjId}, {"$pull": {"properties": {"key": key}}});
  76. return rst;
  77. }
  78. function createPrjPropertiesWithCallBack(prjId, dftItems, cb) {
  79. let data = {};
  80. data.projectID = prjId;
  81. data.properties = dftItems;
  82. let saveObj = new prj_prop_mdl(data);
  83. saveObj.save(cb);
  84. };
  85. function removePrjPropertiesWithCallBack(prjId, cb) {
  86. prj_prop_mdl.remove({'projectID': prjId}, cb);
  87. }
  88. function updateWholeWithCallBack(prjPropObj, cb) {
  89. if (prjPropObj && prjPropObj.hasOwnProperty('projectID') && prjPropObj.hasOwnProperty('properties') && (prjPropObj.properties instanceof Array)) {
  90. prj_prop_mdl.update({'projectID': prjPropObj.projectID}, prjPropObj, cb);
  91. }
  92. }
  93. function updateOnePropertyWithCallBack(prjId, key, newValue, cb) {
  94. prj_prop_mdl.update({"projectID": prjId, "properties.key": key}, {"$set": {"properties.$.value": newValue}}, cb);
  95. }
  96. function addOrChangePropertyWithCallBack(prjId, newItem, cb) {
  97. prj_prop_mdl.findOne({"projectID": prjId, "properties.key": newItem.key}, function(err, result){
  98. if (err === null) {
  99. if (result === null) {
  100. console.log('no result');
  101. prj_prop_mdl.update({"projectID": prjId}, {"$push": {"properties": newItem}}, cb);
  102. } else {
  103. console.log('has result');
  104. prj_prop_mdl.update({"projectID": prjId, "properties.key": newItem.key}, {"$set": {"properties.$.value": newItem.value}}, cb);
  105. }
  106. }
  107. });
  108. }
  109. function removeOnePropertyWithCallBack(prjId, key, cb) {
  110. prj_prop_mdl.update({"projectID": prjId}, {"$pull": {"properties": {"key": key}}}, cb);
  111. }