not-node 5.0.22 → 5.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/.eslintrc.json +1 -1
  2. package/bin/not-deploy.js +52 -0
  3. package/index.js +21 -19
  4. package/package.json +1 -1
  5. package/src/app.js +61 -58
  6. package/src/auth/abstract.js +17 -19
  7. package/src/auth/const.js +8 -12
  8. package/src/auth/fields.js +143 -124
  9. package/src/auth/index.js +14 -14
  10. package/src/auth/roles.js +64 -63
  11. package/src/auth/routes.js +89 -54
  12. package/src/auth/rules.js +63 -63
  13. package/src/auth/session.js +60 -62
  14. package/src/bootstrap/form.js +13 -13
  15. package/src/bootstrap/logic.js +45 -41
  16. package/src/bootstrap/model.js +14 -17
  17. package/src/bootstrap/route.js +132 -53
  18. package/src/common.js +86 -79
  19. package/src/core/fields/ID.js +6 -6
  20. package/src/core/fields/__closed.js +3 -3
  21. package/src/core/fields/__latest.js +3 -3
  22. package/src/core/fields/__version.js +3 -3
  23. package/src/core/fields/__versions.js +3 -3
  24. package/src/core/fields/_id.js +6 -6
  25. package/src/core/fields/active.js +9 -9
  26. package/src/core/fields/codeName.js +9 -9
  27. package/src/core/fields/createdAt.js +17 -17
  28. package/src/core/fields/default.js +9 -9
  29. package/src/core/fields/description.js +11 -11
  30. package/src/core/fields/email.js +9 -9
  31. package/src/core/fields/enabled.js +9 -9
  32. package/src/core/fields/expiredAt.js +16 -16
  33. package/src/core/fields/height.js +11 -11
  34. package/src/core/fields/ip.js +10 -10
  35. package/src/core/fields/objectId.js +10 -10
  36. package/src/core/fields/owner.js +13 -13
  37. package/src/core/fields/ownerModel.js +11 -11
  38. package/src/core/fields/price.js +11 -11
  39. package/src/core/fields/requiredObject.js +10 -10
  40. package/src/core/fields/session.js +10 -10
  41. package/src/core/fields/size.js +11 -11
  42. package/src/core/fields/telephone.js +9 -9
  43. package/src/core/fields/title.js +15 -15
  44. package/src/core/fields/updatedAt.js +17 -17
  45. package/src/core/fields/userId.js +11 -12
  46. package/src/core/fields/uuid.js +11 -11
  47. package/src/core/fields/validators/email.js +6 -4
  48. package/src/core/fields/validators/owner.js +6 -4
  49. package/src/core/fields/width.js +11 -11
  50. package/src/domain.js +435 -431
  51. package/src/env.js +23 -23
  52. package/src/error.js +20 -23
  53. package/src/exceptions/db.js +23 -0
  54. package/src/exceptions/http.js +43 -0
  55. package/src/fields/index.js +106 -111
  56. package/src/form/fabric.js +19 -24
  57. package/src/form/form.js +195 -186
  58. package/src/form/index.js +2 -2
  59. package/src/generic/index.js +2 -0
  60. package/src/generic/logic.js +595 -0
  61. package/src/generic/route.js +76 -0
  62. package/src/init/additional.js +7 -7
  63. package/src/init/app.js +75 -68
  64. package/src/init/bodyparser.js +14 -14
  65. package/src/init/compression.js +6 -7
  66. package/src/init/core.js +12 -12
  67. package/src/init/cors.js +22 -24
  68. package/src/init/db/index.js +41 -43
  69. package/src/init/db/ioredis.js +28 -20
  70. package/src/init/db/mongoose.js +42 -32
  71. package/src/init/db/redis.js +59 -48
  72. package/src/init/env.js +44 -36
  73. package/src/init/express.js +18 -21
  74. package/src/init/fileupload.js +8 -10
  75. package/src/init/http.js +65 -47
  76. package/src/init/index.js +141 -148
  77. package/src/init/informer.js +7 -9
  78. package/src/init/methodoverride.js +4 -6
  79. package/src/init/middleware.js +23 -26
  80. package/src/init/modules.js +4 -4
  81. package/src/init/monitoring.js +8 -8
  82. package/src/init/rateLimiter.js +53 -45
  83. package/src/init/routes.js +67 -69
  84. package/src/init/security.js +37 -33
  85. package/src/init/sequence.js +111 -107
  86. package/src/init/sequence.standart.js +54 -56
  87. package/src/init/sessions/index.js +21 -21
  88. package/src/init/sessions/mongoose.js +49 -36
  89. package/src/init/sessions/redis.js +28 -27
  90. package/src/init/static.js +53 -40
  91. package/src/init/template.js +17 -17
  92. package/src/lib.js +230 -200
  93. package/src/manifest/batchRunner.js +26 -25
  94. package/src/manifest/initializator/forms.js +24 -24
  95. package/src/manifest/initializator/index.js +8 -10
  96. package/src/manifest/initializator/manifests.js +45 -42
  97. package/src/manifest/initializator/models.js +37 -34
  98. package/src/manifest/manifest.filter.js +130 -97
  99. package/src/manifest/manifest.js +103 -77
  100. package/src/manifest/module.js +350 -360
  101. package/src/manifest/registrator/fields.js +90 -85
  102. package/src/manifest/registrator/forms.js +47 -47
  103. package/src/manifest/registrator/index.js +14 -16
  104. package/src/manifest/registrator/locales.js +17 -16
  105. package/src/manifest/registrator/logics.js +66 -64
  106. package/src/manifest/registrator/models.js +64 -62
  107. package/src/manifest/registrator/routes.js +171 -132
  108. package/src/manifest/registrator/routes.ws.js +109 -103
  109. package/src/manifest/route.js +216 -161
  110. package/src/model/buildValidator.js +53 -42
  111. package/src/model/default.js +304 -286
  112. package/src/model/enrich.js +69 -61
  113. package/src/model/increment.js +124 -137
  114. package/src/model/proto.js +179 -148
  115. package/src/model/routine.js +85 -76
  116. package/src/model/utils.js +33 -0
  117. package/src/model/versioning.js +148 -130
  118. package/src/obsolete.js +12 -8
  119. package/src/parser.js +29 -22
  120. package/src/repos.js +29 -31
  121. package/src/rollup.js +75 -65
  122. package/src/shell.helpers.js +28 -28
  123. package/static.js +31 -0
  124. package/src/generic/router.js +0 -16
  125. package/src/manifest/module.models.js +0 -0
  126. package/src/manifest/module.status.js +0 -0
@@ -1,173 +1,204 @@
1
1
  /** @module Model/Proto */
2
2
 
3
- const enrich = require('./enrich'),
4
- saveVersion = require('./versioning').version,
5
- { Schema } = require('mongoose'),
6
- defaultModel= require('./default'),
7
- log = require('not-log')(module, 'ModelProto');
8
-
9
-
10
- module.exports = class ModelFabricate{
11
-
12
- static isIgnored(targetModule){
13
- return targetModule.IGNORE;
14
- }
15
-
16
- static initOptions(options, targetModule){
17
- if (!options) {
18
- options = {
19
- schemaOptions: {}
20
- };
21
- } else {
22
- if (!options.schemaOptions) {
23
- options.schemaOptions = {};
24
- }
3
+ const enrich = require("./enrich"),
4
+ saveVersion = require("./versioning").version,
5
+ { Schema } = require("mongoose"),
6
+ defaultModel = require("./default"),
7
+ log = require("not-log")(module, "ModelProto");
8
+
9
+ module.exports = class ModelFabricate {
10
+ static isIgnored(targetModule) {
11
+ return targetModule.IGNORE;
25
12
  }
26
- if (targetModule.schemaOptions) {
27
- options.schemaOptions = targetModule.schemaOptions;
28
- }
29
- return options;
30
- }
31
-
32
13
 
33
- static isNotExtendable(targetModule){
34
- return targetModule.keepNotExtended;
35
- }
36
-
37
- static extendSchemaFrom(src, dest){
38
- if (src) {
39
- for (let j in src) {
40
- if (typeof src[j].get === 'function' && typeof src[j].set === 'function') {
41
- dest(j).get(src[j].get).set(src[j].set);
14
+ static initOptions(options, targetModule) {
15
+ if (!options) {
16
+ options = {
17
+ schemaOptions: {},
18
+ };
42
19
  } else {
43
- dest(j, src[j]);
20
+ if (!options.schemaOptions) {
21
+ options.schemaOptions = {};
22
+ }
23
+ }
24
+ if (targetModule.schemaOptions) {
25
+ options.schemaOptions = targetModule.schemaOptions;
44
26
  }
45
- }
27
+ return options;
46
28
  }
47
- }
48
29
 
49
- static extendBySource(schema, targetModule){
50
- if (targetModule.thisMethods) {
51
- Object.assign(schema.methods, targetModule.thisMethods);
30
+ static isNotExtendable(targetModule) {
31
+ return targetModule.keepNotExtended;
52
32
  }
53
33
 
54
- if (targetModule.thisStatics) {
55
- Object.assign(schema.statics, targetModule.thisStatics);
34
+ static extendSchemaFrom(src, dest) {
35
+ if (src) {
36
+ for (let j in src) {
37
+ if (
38
+ typeof src[j].get === "function" &&
39
+ typeof src[j].set === "function"
40
+ ) {
41
+ dest(j).get(src[j].get).set(src[j].set);
42
+ } else {
43
+ dest(j, src[j]);
44
+ }
45
+ }
46
+ }
56
47
  }
57
- this.extendSchemaFrom(targetModule.thisVirtuals, schema.virtual.bind(schema));
58
- this.extendSchemaFrom(targetModule.thisPre, schema.pre.bind(schema));
59
- this.extendSchemaFrom(targetModule.thisPost, schema.post.bind(schema));
60
- }
61
-
62
- static enrichByFields(targetModule, options){
63
- if (targetModule.enrich) {
64
- if (targetModule.enrich.validators) {
65
- targetModule.thisSchema = enrich.byFieldsValidators(targetModule.thisSchema, options);
66
- }
67
- if (targetModule.enrich.versioning) {
68
- targetModule.thisSchema = enrich.byFieldsForVersioning(targetModule.thisSchema, targetModule.thisModelName);
69
- }
70
- if (targetModule.enrich.increment) {
71
- targetModule.thisSchema = enrich.byFieldsForIncrement(targetModule.thisSchema, targetModule.thisModelName);
72
- }
48
+
49
+ static extendBySource(schema, targetModule) {
50
+ if (targetModule.thisMethods) {
51
+ Object.assign(schema.methods, targetModule.thisMethods);
52
+ }
53
+
54
+ if (targetModule.thisStatics) {
55
+ Object.assign(schema.statics, targetModule.thisStatics);
56
+ }
57
+ this.extendSchemaFrom(
58
+ targetModule.thisVirtuals,
59
+ schema.virtual.bind(schema)
60
+ );
61
+ this.extendSchemaFrom(targetModule.thisPre, schema.pre.bind(schema));
62
+ this.extendSchemaFrom(targetModule.thisPost, schema.post.bind(schema));
73
63
  }
74
- }
75
-
76
- static collectFieldsForIndexes(targetModule){
77
- let fieldsForIndexes = [];
78
- for(let fieldName in targetModule.thisSchema){
79
- let field = targetModule.thisSchema[fieldName];
80
- if (field.unique){
81
- fieldsForIndexes.push(fieldName);
82
- field.unique = false;
83
- }
64
+
65
+ static enrichByFields(targetModule, options) {
66
+ if (targetModule.enrich) {
67
+ if (targetModule.enrich.validators) {
68
+ targetModule.thisSchema = enrich.byFieldsValidators(
69
+ targetModule.thisSchema,
70
+ options
71
+ );
72
+ }
73
+ if (targetModule.enrich.versioning) {
74
+ targetModule.thisSchema = enrich.byFieldsForVersioning(
75
+ targetModule.thisSchema,
76
+ targetModule.thisModelName
77
+ );
78
+ }
79
+ if (targetModule.enrich.increment) {
80
+ targetModule.thisSchema = enrich.byFieldsForIncrement(
81
+ targetModule.thisSchema,
82
+ targetModule.thisModelName
83
+ );
84
+ }
85
+ }
84
86
  }
85
- return fieldsForIndexes;
86
- }
87
87
 
88
+ static collectFieldsForIndexes(targetModule) {
89
+ let fieldsForIndexes = [];
90
+ for (let fieldName in targetModule.thisSchema) {
91
+ let field = targetModule.thisSchema[fieldName];
92
+ if (field.unique) {
93
+ fieldsForIndexes.push(fieldName);
94
+ field.unique = false;
95
+ }
96
+ }
97
+ return fieldsForIndexes;
98
+ }
88
99
 
89
- static createIndexesForFields(schema, fieldsForIndexes){
90
- for(let fieldName of fieldsForIndexes){
91
- let rule = {__closed: 1, __latest: 1, _id: 1 };
92
- rule[fieldName] = 1;
93
- schema.index(rule, { unique: true });
100
+ static createIndexesForFields(schema, fieldsForIndexes) {
101
+ for (let fieldName of fieldsForIndexes) {
102
+ let rule = { __closed: 1, __latest: 1, _id: 1 };
103
+ rule[fieldName] = 1;
104
+ schema.index(rule, { unique: true });
105
+ }
94
106
  }
95
- }
96
-
97
- static createIndexesForText(schema, targetModule){
98
- if(targetModule.enrich.textIndex){
99
- schema.index(
100
- targetModule.enrich.textIndex,
101
- {
102
- name: Object.keys(targetModule.enrich.textIndex).join('__')
107
+
108
+ static createIndexesForText(schema, targetModule) {
109
+ if (targetModule.enrich.textIndex) {
110
+ schema.index(targetModule.enrich.textIndex, {
111
+ name: Object.keys(targetModule.enrich.textIndex).join("__"),
112
+ });
103
113
  }
104
- );
105
114
  }
106
- }
107
-
108
- static markFor(schema, targetModule){
109
- if (targetModule.enrich) {
110
- if (targetModule.enrich.increment) {
111
- if(Object.prototype.hasOwnProperty.call(targetModule.enrich, 'incrementOptions')){
112
- enrich.markForIncrement(schema, targetModule.thisModelName, targetModule.enrich.incrementOptions);
113
- }else{
114
- enrich.markForIncrement(schema, targetModule.thisModelName);
115
+
116
+ static markFor(schema, targetModule) {
117
+ if (targetModule.enrich) {
118
+ if (targetModule.enrich.increment) {
119
+ if (
120
+ Object.prototype.hasOwnProperty.call(
121
+ targetModule.enrich,
122
+ "incrementOptions"
123
+ )
124
+ ) {
125
+ enrich.markForIncrement(
126
+ schema,
127
+ targetModule.thisModelName,
128
+ targetModule.enrich.incrementOptions
129
+ );
130
+ } else {
131
+ enrich.markForIncrement(schema, targetModule.thisModelName);
132
+ }
133
+ }
134
+ if (targetModule.enrich.versioning) {
135
+ enrich.markForVersioning(schema);
136
+ schema.statics.saveVersion = saveVersion;
137
+ }
115
138
  }
116
- }
117
- if (targetModule.enrich.versioning) {
118
- enrich.markForVersioning(schema);
119
- schema.statics.saveVersion = saveVersion;
120
- }
121
139
  }
122
- }
123
-
124
- static extendSchema(targetModule, options){
125
- if (ModelFabricate.isNotExtendable(targetModule)) {
126
- return new Schema(targetModule.thisSchema, options.schemaOptions);
127
- } else {
128
- ModelFabricate.enrichByFields(targetModule, options);
129
- //collecting information of unique fields, removing unique flag from schema
130
- let fieldsForIndexes = ModelFabricate.collectFieldsForIndexes(targetModule);
131
- //creating schema for model
132
- let schema = new Schema(targetModule.thisSchema, options.schemaOptions);
133
- if(schema){
134
- //creating unique indexes
135
- ModelFabricate.createIndexesForFields(schema, fieldsForIndexes);
136
- ModelFabricate.createIndexesForText(schema, targetModule);
137
- //adding specific fields and indetificators
138
- ModelFabricate.markFor(schema, targetModule);
139
- //extending schema methods, statics, virtuals by user defined and default content
140
- ModelFabricate.extendBySource(schema, targetModule);
141
- ModelFabricate.extendBySource(schema, defaultModel);
142
- return schema;
143
- }else{
144
- return false;
145
- }
140
+
141
+ static extendSchema(targetModule, options) {
142
+ if (ModelFabricate.isNotExtendable(targetModule)) {
143
+ return new Schema(targetModule.thisSchema, options.schemaOptions);
144
+ } else {
145
+ ModelFabricate.enrichByFields(targetModule, options);
146
+ //collecting information of unique fields, removing unique flag from schema
147
+ let fieldsForIndexes =
148
+ ModelFabricate.collectFieldsForIndexes(targetModule);
149
+ //creating schema for model
150
+ let schema = new Schema(
151
+ targetModule.thisSchema,
152
+ options.schemaOptions
153
+ );
154
+ if (schema) {
155
+ //creating unique indexes
156
+ ModelFabricate.createIndexesForFields(schema, fieldsForIndexes);
157
+ ModelFabricate.createIndexesForText(schema, targetModule);
158
+ //adding specific fields and indetificators
159
+ ModelFabricate.markFor(schema, targetModule);
160
+ //extending schema methods, statics, virtuals by user defined and default content
161
+ ModelFabricate.extendBySource(schema, targetModule);
162
+ ModelFabricate.extendBySource(schema, defaultModel);
163
+ return schema;
164
+ } else {
165
+ return false;
166
+ }
167
+ }
146
168
  }
147
- }
148
169
 
149
- static initMongooseModel(targetModule, schema, mongoose){
150
- if (mongoose.modelNames().indexOf(targetModule.thisModelName)===-1){
151
- targetModule[targetModule.thisModelName] = mongoose.model(targetModule.thisModelName, schema);
152
- }else{
153
- targetModule[targetModule.thisModelName] = mongoose.connection.model(targetModule.thisModelName);
170
+ static initMongooseModel(targetModule, schema, mongoose) {
171
+ if (mongoose.modelNames().indexOf(targetModule.thisModelName) === -1) {
172
+ targetModule[targetModule.thisModelName] = mongoose.model(
173
+ targetModule.thisModelName,
174
+ schema
175
+ );
176
+ } else {
177
+ targetModule[targetModule.thisModelName] =
178
+ mongoose.connection.model(targetModule.thisModelName);
179
+ }
180
+ targetModule[targetModule.thisModelName].createIndexes();
154
181
  }
155
- targetModule[targetModule.thisModelName].createIndexes();
156
- }
157
-
158
- static fabricate(targetModule, options, mongoose) {
159
- if(ModelFabricate.isIgnored(targetModule)){ return; }
160
-
161
- options = ModelFabricate.initOptions(options, targetModule);
162
-
163
- const schema = ModelFabricate.extendSchema(targetModule, options);
164
- if(schema){
165
- targetModule.mongooseSchema = schema;
166
- try {
167
- ModelFabricate.initMongooseModel(targetModule, schema, mongoose);
168
- } catch (error) {
169
- log.error(error);
170
- }
182
+
183
+ static fabricate(targetModule, options, mongoose) {
184
+ if (ModelFabricate.isIgnored(targetModule)) {
185
+ return;
186
+ }
187
+
188
+ options = ModelFabricate.initOptions(options, targetModule);
189
+
190
+ const schema = ModelFabricate.extendSchema(targetModule, options);
191
+ if (schema) {
192
+ targetModule.mongooseSchema = schema;
193
+ try {
194
+ ModelFabricate.initMongooseModel(
195
+ targetModule,
196
+ schema,
197
+ mongoose
198
+ );
199
+ } catch (error) {
200
+ log.error(error);
201
+ }
202
+ }
171
203
  }
172
- }
173
204
  };
@@ -1,95 +1,104 @@
1
1
  /** @module Model/Routine */
2
2
 
3
- const incrementNext = require('./increment');
3
+ const incrementNext = require("./increment");
4
4
 
5
- class ModelRoutine{
6
-
7
- static incremental(model){
8
- return model.schema.statics.__incField;
9
- }
10
-
11
- static versioning(model){
12
- return model.schema.statics.__versioning;
13
- }
5
+ class ModelRoutine {
6
+ static incremental(model) {
7
+ return model.schema.statics.__incField;
8
+ }
14
9
 
15
- static addWithoutVersion(model, data) {
16
- return (new model(data)).save();
17
- }
10
+ static versioning(model) {
11
+ return model.schema.statics.__versioning;
12
+ }
18
13
 
19
- static async addWithVersion(model, data) {
20
- data.__latest = true;
21
- const item = await (new model(data)).save();
22
- return await model.saveVersion(item._id);
23
- }
14
+ static addWithoutVersion(model, data) {
15
+ return new model(data).save();
16
+ }
24
17
 
25
- static async add(model, data) {
26
- if (ModelRoutine.incremental(model)) {
27
- const modelID = await incrementNext.next(model.__incModel, model.__incFilter, data);
28
- data[model.__incField] = modelID;
29
- if (ModelRoutine.versioning(model)) {
30
- return await ModelRoutine.addWithVersion(model, data);
31
- } else {
32
- return await ModelRoutine.addWithoutVersion(model, data);
33
- }
34
- } else {
35
- if (ModelRoutine.versioning(model)) {
36
- return await ModelRoutine.addWithVersion(model, data);
37
- } else {
38
- return await ModelRoutine.addWithoutVersion(model, data);
39
- }
18
+ static async addWithVersion(model, data) {
19
+ data.__latest = true;
20
+ const item = await new model(data).save();
21
+ return await model.saveVersion(item._id);
40
22
  }
41
- }
42
23
 
43
- static async update(model, filter, data){
44
- if (ModelRoutine.versioning(model)) {
45
- return ModelRoutine.updateWithVersion(model, filter, data);
46
- } else {
47
- return ModelRoutine.updateWithoutVersion(model, filter, data);
24
+ static async add(model, data) {
25
+ if (ModelRoutine.incremental(model)) {
26
+ const modelID = await incrementNext.next(
27
+ model.__incModel,
28
+ model.__incFilter,
29
+ data
30
+ );
31
+ data[model.__incField] = modelID;
32
+ if (ModelRoutine.versioning(model)) {
33
+ return await ModelRoutine.addWithVersion(model, data);
34
+ } else {
35
+ return await ModelRoutine.addWithoutVersion(model, data);
36
+ }
37
+ } else {
38
+ if (ModelRoutine.versioning(model)) {
39
+ return await ModelRoutine.addWithVersion(model, data);
40
+ } else {
41
+ return await ModelRoutine.addWithoutVersion(model, data);
42
+ }
43
+ }
48
44
  }
49
- }
50
45
 
51
- static updateWithoutVersion(model, filter, data) {
52
- return model.findOneAndUpdate(
53
- filter,
54
- data,
55
- {returnOriginal: false, new: true}
56
- ).exec();
57
- }
46
+ static async update(model, filter, data) {
47
+ if (ModelRoutine.versioning(model)) {
48
+ return ModelRoutine.updateWithVersion(model, filter, data);
49
+ } else {
50
+ return ModelRoutine.updateWithoutVersion(model, filter, data);
51
+ }
52
+ }
58
53
 
59
- static async updateWithVersion(model, filter, data) {
60
- filter.__latest = true;
61
- filter.__closed = false;
62
- const item = await model.findOneAndUpdate(filter, data, {returnOriginal: false}).exec();
63
- return model.saveVersion(item._id);
64
- }
54
+ static updateWithoutVersion(model, filter, data) {
55
+ return model
56
+ .findOneAndUpdate(filter, data, {
57
+ returnOriginal: false,
58
+ new: true,
59
+ })
60
+ .exec();
61
+ }
65
62
 
66
- static async updateMany(model, filter, data){
67
- if (ModelRoutine.versioning(model)) {
68
- return ModelRoutine.updateManyWithVersion(model, filter, data);
69
- } else {
70
- return ModelRoutine.updateManyWithoutVersion(model, filter, data);
63
+ static async updateWithVersion(model, filter, data) {
64
+ filter.__latest = true;
65
+ filter.__closed = false;
66
+ const item = await model
67
+ .findOneAndUpdate(filter, data, { returnOriginal: false })
68
+ .exec();
69
+ return model.saveVersion(item._id);
71
70
  }
72
- }
73
71
 
74
- static updateManyWithoutVersion(model, filter, data) {
75
- return model.updateMany(
76
- filter,
77
- data
78
- );
79
- }
72
+ static async updateMany(model, filter, data) {
73
+ if (ModelRoutine.versioning(model)) {
74
+ return ModelRoutine.updateManyWithVersion(model, filter, data);
75
+ } else {
76
+ return ModelRoutine.updateManyWithoutVersion(model, filter, data);
77
+ }
78
+ }
80
79
 
81
- static async updateManyWithVersion(model, filter, data) {
82
- let list = await model.find({
83
- __closed: false,
84
- __latest: true,
85
- ...filter
86
- }).exec();
87
- return await Promise.allSettled(list.map((item) => {
88
- return ModelRoutine.updateWithVersion(model, {_id: item._id }, data);
89
- }));
90
- }
80
+ static updateManyWithoutVersion(model, filter, data) {
81
+ return model.updateMany(filter, data);
82
+ }
91
83
 
84
+ static async updateManyWithVersion(model, filter, data) {
85
+ const list = await model
86
+ .find({
87
+ __closed: false,
88
+ __latest: true,
89
+ ...filter,
90
+ })
91
+ .exec();
92
+ return await Promise.allSettled(
93
+ list.map((item) => {
94
+ return ModelRoutine.updateWithVersion(
95
+ model,
96
+ { _id: item._id },
97
+ data
98
+ );
99
+ })
100
+ );
101
+ }
92
102
  }
93
103
 
94
-
95
104
  module.exports = ModelRoutine;
@@ -0,0 +1,33 @@
1
+ /**
2
+ * checking result of modification queries to ensure that changes were made
3
+ */
4
+ function updateResponseSuccess(res, count = 1) {
5
+ if (res) {
6
+ const responseList = Object.keys(res);
7
+ if (responseList.includes("ok")) {
8
+ return res.ok === 1 && res.n === count;
9
+ } else {
10
+ return res.matchedCount === count && res.modifiedCount === count;
11
+ }
12
+ } else {
13
+ return false;
14
+ }
15
+ }
16
+ module.exports.updateResponseSuccess = updateResponseSuccess;
17
+
18
+ /**
19
+ * checking result of modification queries to ensure that changes were made
20
+ */
21
+ function deleteResponseSuccess(res, count = 1) {
22
+ if (res) {
23
+ const responseList = Object.keys(res);
24
+ if (responseList.includes("ok")) {
25
+ return res.ok === 1 && res.n === count;
26
+ } else {
27
+ return res.deletedCount === count;
28
+ }
29
+ } else {
30
+ return false;
31
+ }
32
+ }
33
+ module.exports.deleteResponseSuccess = deleteResponseSuccess;