@restorecommerce/resource-base-interface 0.0.9 → 0.2.1
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.
- package/CHANGELOG.md +25 -0
- package/lib/core/GraphResourcesServiceBase.d.ts +3 -1
- package/lib/core/GraphResourcesServiceBase.js +105 -68
- package/lib/core/GraphResourcesServiceBase.js.map +1 -0
- package/lib/core/ResourcesAPI.d.ts +3 -2
- package/lib/core/ResourcesAPI.js +137 -86
- package/lib/core/ResourcesAPI.js.map +1 -0
- package/lib/core/ServiceBase.d.ts +2 -0
- package/lib/core/ServiceBase.js +238 -57
- package/lib/core/ServiceBase.js.map +1 -0
- package/lib/core/interfaces.d.ts +34 -1
- package/lib/core/interfaces.js +30 -0
- package/lib/core/interfaces.js.map +1 -0
- package/lib/index.d.ts +9 -2
- package/lib/index.js +168 -63
- package/lib/index.js.map +1 -0
- package/package.json +19 -20
- package/test.js +16 -0
- package/testFilter.js +221 -0
- package/tsconfig.json +2 -1
package/lib/core/ResourcesAPI.js
CHANGED
|
@@ -113,7 +113,7 @@ class ResourcesAPIBase {
|
|
|
113
113
|
* @param {string} collectionName Name of database collection.
|
|
114
114
|
* @param {any} fieldHandlerConf The collection's field generators configuration.
|
|
115
115
|
*/
|
|
116
|
-
constructor(db, collectionName, fieldHandlerConf, edgeCfg, graphName) {
|
|
116
|
+
constructor(db, collectionName, fieldHandlerConf, edgeCfg, graphName, logger) {
|
|
117
117
|
this.db = db;
|
|
118
118
|
this.collectionName = collectionName;
|
|
119
119
|
this.edgeCfg = edgeCfg;
|
|
@@ -220,7 +220,15 @@ class ResourcesAPIBase {
|
|
|
220
220
|
return __awaiter(this, void 0, void 0, function* () {
|
|
221
221
|
const collection = this.collectionName;
|
|
222
222
|
const toInsert = [];
|
|
223
|
+
let result = [];
|
|
223
224
|
try {
|
|
225
|
+
let result = [];
|
|
226
|
+
// check if all the required fields are present
|
|
227
|
+
if (this.requiredFields && this.requiredFields[this.resourceName]) {
|
|
228
|
+
const requiredFieldsResult = this.checkRequiredFields(this.requiredFields[this.resourceName], documents, result);
|
|
229
|
+
documents = requiredFieldsResult.documents;
|
|
230
|
+
result = requiredFieldsResult.result;
|
|
231
|
+
}
|
|
224
232
|
for (let i = 0; i < documents.length; i += 1) {
|
|
225
233
|
documents[i] = yield setDefaults(documents[i], collection);
|
|
226
234
|
// decode the buffer and store it to DB
|
|
@@ -228,56 +236,70 @@ class ResourcesAPIBase {
|
|
|
228
236
|
toInsert.push(decodeBufferObj(_.cloneDeep(documents[i]), this.bufferField));
|
|
229
237
|
}
|
|
230
238
|
}
|
|
231
|
-
// check if all the required fields are present
|
|
232
|
-
if (this.requiredFields && this.requiredFields[this.resourceName]) {
|
|
233
|
-
this.checkRequiredFields(this.requiredFields[this.resourceName], documents);
|
|
234
|
-
}
|
|
235
|
-
let result = [];
|
|
236
239
|
if (this.isGraphDB(this.db)) {
|
|
237
240
|
yield this.db.createGraphDB(this.graphName);
|
|
238
241
|
yield this.db.addVertexCollection(collection);
|
|
239
|
-
|
|
242
|
+
let createVertexResp = yield this.db.createVertex(collection, this.bufferField ? toInsert : documents);
|
|
240
243
|
for (let document of documents) {
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
244
|
+
if (this.edgeCfg && _.isArray(this.edgeCfg) && this.edgeCfg.length > 0) {
|
|
245
|
+
for (let eachEdgeCfg of this.edgeCfg) {
|
|
246
|
+
const fromIDkey = eachEdgeCfg.from;
|
|
247
|
+
const from_id = document[fromIDkey];
|
|
248
|
+
const toIDkey = eachEdgeCfg.to;
|
|
249
|
+
const to_id = document[toIDkey];
|
|
250
|
+
// edges are created outbound, if it is inbound - check for direction
|
|
251
|
+
const direction = eachEdgeCfg.direction;
|
|
252
|
+
let fromVerticeName = collection;
|
|
253
|
+
let toVerticeName = eachEdgeCfg.toVerticeName;
|
|
254
|
+
if (direction === 'inbound') {
|
|
255
|
+
fromVerticeName = eachEdgeCfg.fromVerticeName;
|
|
256
|
+
toVerticeName = collection;
|
|
257
|
+
}
|
|
258
|
+
if (from_id && to_id) {
|
|
259
|
+
if (_.isArray(to_id)) {
|
|
260
|
+
for (let toID of to_id) {
|
|
261
|
+
yield this.db.createEdge(eachEdgeCfg.edgeName, null, `${fromVerticeName}/${from_id}`, `${toVerticeName}/${toID}`);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
yield this.db.createEdge(eachEdgeCfg.edgeName, null, `${fromVerticeName}/${from_id}`, `${toVerticeName}/${to_id}`);
|
|
261
266
|
}
|
|
262
|
-
continue;
|
|
263
267
|
}
|
|
264
|
-
yield this.db.createEdge(eachEdgeCfg.edgeName, null, `${fromVerticeName}/${from_id}`, `${toVerticeName}/${to_id}`);
|
|
265
268
|
}
|
|
266
269
|
}
|
|
267
270
|
}
|
|
268
|
-
|
|
271
|
+
if (_.isArray(createVertexResp)) {
|
|
272
|
+
for (let eachVertexResp of createVertexResp) {
|
|
273
|
+
result.push(eachVertexResp);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
result.push(createVertexResp);
|
|
278
|
+
}
|
|
269
279
|
return result;
|
|
270
280
|
}
|
|
271
281
|
else {
|
|
272
|
-
|
|
282
|
+
let checkReqFieldResult = [];
|
|
283
|
+
if (!_.isEmpty(result)) {
|
|
284
|
+
checkReqFieldResult = result;
|
|
285
|
+
}
|
|
286
|
+
result = yield this.db.insert(collection, this.bufferField ? toInsert : documents);
|
|
287
|
+
if (!_.isEmpty(checkReqFieldResult)) {
|
|
288
|
+
for (let reqFieldResult of checkReqFieldResult) {
|
|
289
|
+
result.push(reqFieldResult);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return result;
|
|
273
293
|
}
|
|
274
294
|
}
|
|
275
295
|
catch (e) {
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
296
|
+
this.logger.error('Error creating documents', { error: e.message });
|
|
297
|
+
result.push({
|
|
298
|
+
error: true,
|
|
299
|
+
errorNum: e.code,
|
|
300
|
+
errorMessage: e.details ? e.details : e.message
|
|
301
|
+
});
|
|
302
|
+
return result;
|
|
281
303
|
}
|
|
282
304
|
});
|
|
283
305
|
}
|
|
@@ -289,20 +311,29 @@ class ResourcesAPIBase {
|
|
|
289
311
|
* @param requiredFields
|
|
290
312
|
* @param documents
|
|
291
313
|
*/
|
|
292
|
-
checkRequiredFields(requiredFields, documents) {
|
|
314
|
+
checkRequiredFields(requiredFields, documents, result) {
|
|
293
315
|
for (let document of documents) {
|
|
294
316
|
for (let eachField of requiredFields) {
|
|
295
317
|
const isArray = _.isArray(eachField);
|
|
296
318
|
if (!document[eachField]) {
|
|
297
|
-
|
|
298
|
-
|
|
319
|
+
result.push({
|
|
320
|
+
error: true,
|
|
321
|
+
errorNum: 400,
|
|
322
|
+
errorMessage: `Field ${eachField} is necessary for ${this.resourceName} for documentID ${document.id}`
|
|
323
|
+
});
|
|
324
|
+
documents = documents.filter(doc => doc.id != document.id);
|
|
299
325
|
}
|
|
300
326
|
if ((isArray && document[eachField].length == 0)) {
|
|
301
|
-
|
|
302
|
-
|
|
327
|
+
result.push({
|
|
328
|
+
error: true,
|
|
329
|
+
errorNum: 400,
|
|
330
|
+
errorMessage: `Field ${eachField} is necessary for ${this.resourceName} for documentID ${document.id}`
|
|
331
|
+
});
|
|
332
|
+
documents = documents.filter(doc => doc.id != document.id);
|
|
303
333
|
}
|
|
304
334
|
}
|
|
305
335
|
}
|
|
336
|
+
return { documents, result };
|
|
306
337
|
}
|
|
307
338
|
/**
|
|
308
339
|
* Removes documents found by id.
|
|
@@ -311,28 +342,32 @@ class ResourcesAPIBase {
|
|
|
311
342
|
*/
|
|
312
343
|
delete(ids) {
|
|
313
344
|
return __awaiter(this, void 0, void 0, function* () {
|
|
314
|
-
|
|
315
|
-
id: {
|
|
316
|
-
$in: ids
|
|
317
|
-
}
|
|
318
|
-
};
|
|
345
|
+
let deleteResponse = [];
|
|
319
346
|
try {
|
|
347
|
+
if (!_.isArray(ids)) {
|
|
348
|
+
ids = [ids];
|
|
349
|
+
}
|
|
320
350
|
if (this.isGraphDB(this.db)) {
|
|
321
351
|
// Modify the Ids to include documentHandle
|
|
322
352
|
if (ids.length > 0) {
|
|
323
353
|
ids = _.map(ids, (id) => {
|
|
324
354
|
return `${this.collectionName}/${id}`;
|
|
325
355
|
});
|
|
326
|
-
|
|
356
|
+
deleteResponse = yield this.db.removeVertex(this.collectionName, ids);
|
|
357
|
+
return deleteResponse;
|
|
327
358
|
}
|
|
328
359
|
}
|
|
329
|
-
yield this.db.delete(this.collectionName,
|
|
360
|
+
deleteResponse = yield this.db.delete(this.collectionName, ids);
|
|
361
|
+
return deleteResponse;
|
|
330
362
|
}
|
|
331
363
|
catch (err) {
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
364
|
+
this.logger.error('Error deleting documents', { error: err.message });
|
|
365
|
+
deleteResponse.push({
|
|
366
|
+
error: true,
|
|
367
|
+
errorNum: err.code,
|
|
368
|
+
errorMessage: err.details ? err.details : err.message
|
|
369
|
+
});
|
|
370
|
+
return deleteResponse;
|
|
336
371
|
}
|
|
337
372
|
});
|
|
338
373
|
}
|
|
@@ -368,16 +403,20 @@ class ResourcesAPIBase {
|
|
|
368
403
|
*/
|
|
369
404
|
upsert(documents, events, resourceName) {
|
|
370
405
|
return __awaiter(this, void 0, void 0, function* () {
|
|
406
|
+
let result = [];
|
|
371
407
|
try {
|
|
372
408
|
const dispatch = []; // CRUD events to be dispatched
|
|
373
409
|
for (let i = 0; i < documents.length; i += 1) {
|
|
374
410
|
let doc = documents[i];
|
|
375
411
|
decodeBufferObj(doc, this.bufferField);
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
412
|
+
let foundDocs;
|
|
413
|
+
if (doc && doc.id) {
|
|
414
|
+
foundDocs = yield this.db.find(this.collectionName, { id: doc.id }, {
|
|
415
|
+
fields: {
|
|
416
|
+
meta: 1
|
|
417
|
+
}
|
|
418
|
+
});
|
|
419
|
+
}
|
|
381
420
|
let eventName;
|
|
382
421
|
if (_.isEmpty(foundDocs)) {
|
|
383
422
|
// insert
|
|
@@ -392,7 +431,7 @@ class ResourcesAPIBase {
|
|
|
392
431
|
}
|
|
393
432
|
dispatch.push(events.emit(`${resourceName}${eventName}`, doc));
|
|
394
433
|
}
|
|
395
|
-
|
|
434
|
+
result = yield this.db.upsert(this.collectionName, documents);
|
|
396
435
|
yield dispatch;
|
|
397
436
|
if (this.bufferField) {
|
|
398
437
|
return _.map(result, doc => encodeMsgObj(doc, this.bufferField));
|
|
@@ -400,10 +439,13 @@ class ResourcesAPIBase {
|
|
|
400
439
|
return result;
|
|
401
440
|
}
|
|
402
441
|
catch (error) {
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
442
|
+
this.logger.error('Error upserting documents', { error: error.message });
|
|
443
|
+
result.push({
|
|
444
|
+
error: true,
|
|
445
|
+
errorNum: error.code,
|
|
446
|
+
errorMessage: error.details ? error.details : error.message
|
|
447
|
+
});
|
|
448
|
+
return result;
|
|
407
449
|
}
|
|
408
450
|
});
|
|
409
451
|
}
|
|
@@ -415,24 +457,24 @@ class ResourcesAPIBase {
|
|
|
415
457
|
*/
|
|
416
458
|
update(documents) {
|
|
417
459
|
return __awaiter(this, void 0, void 0, function* () {
|
|
460
|
+
let updateResponse = [];
|
|
418
461
|
try {
|
|
419
462
|
const collectionName = this.collectionName;
|
|
420
|
-
let
|
|
463
|
+
let docsWithUpMetadata = [];
|
|
421
464
|
for (let i = 0; i < documents.length; i += 1) {
|
|
422
465
|
let doc = documents[i];
|
|
423
466
|
if (this.bufferField) {
|
|
424
467
|
doc = decodeBufferObj(_.cloneDeep(documents[i]), this.bufferField);
|
|
425
468
|
}
|
|
426
|
-
const foundDocs = yield this.db.find(collectionName, { id: doc.id }
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
469
|
+
const foundDocs = yield this.db.find(collectionName, { id: doc.id });
|
|
470
|
+
let dbDoc;
|
|
471
|
+
if (foundDocs && foundDocs.length === 1) {
|
|
472
|
+
dbDoc = foundDocs[0];
|
|
473
|
+
doc = updateMetadata(dbDoc.meta, doc);
|
|
474
|
+
}
|
|
475
|
+
else {
|
|
476
|
+
dbDoc = doc; // doc not existing assigning to generate error message in response
|
|
433
477
|
}
|
|
434
|
-
const dbDoc = foundDocs[0];
|
|
435
|
-
doc = updateMetadata(dbDoc.meta, doc);
|
|
436
478
|
if (this.isGraphDB(this.db)) {
|
|
437
479
|
const db = this.db;
|
|
438
480
|
for (let eachEdgeCfg of this.edgeCfg) {
|
|
@@ -459,12 +501,16 @@ class ResourcesAPIBase {
|
|
|
459
501
|
}
|
|
460
502
|
const edgeCollectionName = eachEdgeCfg.edgeName;
|
|
461
503
|
let outgoingEdges = yield db.getOutEdges(edgeCollectionName, `${collectionName}/${dbDoc.id}`);
|
|
462
|
-
|
|
463
|
-
|
|
504
|
+
if (_.isArray(outgoingEdges.edges)) {
|
|
505
|
+
for (let outgoingEdge of outgoingEdges.edges) {
|
|
506
|
+
yield db.removeEdge(edgeCollectionName, outgoingEdge._id);
|
|
507
|
+
}
|
|
464
508
|
}
|
|
465
509
|
let incomingEdges = yield db.getInEdges(edgeCollectionName, `${collectionName}/${dbDoc.id}`);
|
|
466
|
-
|
|
467
|
-
|
|
510
|
+
if (_.isArray(incomingEdges.edges)) {
|
|
511
|
+
for (let incomingEdge of incomingEdges.edges) {
|
|
512
|
+
yield db.removeEdge(edgeCollectionName, incomingEdge._id);
|
|
513
|
+
}
|
|
468
514
|
}
|
|
469
515
|
// Create new edges
|
|
470
516
|
if (from_id && modified_to_idValues) {
|
|
@@ -472,28 +518,33 @@ class ResourcesAPIBase {
|
|
|
472
518
|
for (let toID of modified_to_idValues) {
|
|
473
519
|
yield db.createEdge(eachEdgeCfg.edgeName, null, `${fromVerticeName}/${from_id}`, `${toVerticeName}/${toID}`);
|
|
474
520
|
}
|
|
475
|
-
continue;
|
|
476
521
|
}
|
|
477
|
-
|
|
522
|
+
else {
|
|
523
|
+
yield db.createEdge(edgeCollectionName, null, `${fromVerticeName}/${from_id}`, `${toVerticeName}/${modified_to_idValues}`);
|
|
524
|
+
}
|
|
478
525
|
}
|
|
479
526
|
}
|
|
480
527
|
}
|
|
481
528
|
}
|
|
482
|
-
|
|
529
|
+
docsWithUpMetadata.push(doc);
|
|
483
530
|
}
|
|
484
|
-
|
|
531
|
+
updateResponse = yield this.db.update(collectionName, docsWithUpMetadata);
|
|
485
532
|
if (this.bufferField) {
|
|
486
|
-
|
|
533
|
+
updateResponse = _.map(updateResponse, patch => encodeMsgObj(patch, this.bufferField));
|
|
487
534
|
}
|
|
488
|
-
return
|
|
535
|
+
return updateResponse;
|
|
489
536
|
}
|
|
490
537
|
catch (e) {
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
538
|
+
this.logger.error('Error updating documents', { error: e.message });
|
|
539
|
+
updateResponse.push({
|
|
540
|
+
error: true,
|
|
541
|
+
errorNum: e.code,
|
|
542
|
+
errorMessage: e.message
|
|
543
|
+
});
|
|
544
|
+
return updateResponse;
|
|
495
545
|
}
|
|
496
546
|
});
|
|
497
547
|
}
|
|
498
548
|
}
|
|
499
549
|
exports.ResourcesAPIBase = ResourcesAPIBase;
|
|
550
|
+
//# sourceMappingURL=ResourcesAPI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResourcesAPI.js","sourceRoot":"","sources":["../../src/core/ResourcesAPI.ts"],"names":[],"mappings":"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"}
|