@restorecommerce/resource-base-interface 0.1.1 → 0.2.3

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.
@@ -1,19 +1,41 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
10
20
  };
11
21
  Object.defineProperty(exports, "__esModule", { value: true });
12
22
  exports.ServiceBase = void 0;
13
- const _ = require("lodash");
14
- const chassis = require("@restorecommerce/chassis-srv");
23
+ const _ = __importStar(require("lodash"));
24
+ const chassis = __importStar(require("@restorecommerce/chassis-srv"));
15
25
  const index_1 = require("../index");
16
26
  const errors = chassis.errors;
27
+ // Mapping of arangodb error codes to standard HTTP error codes
28
+ const arangoHttpErrCodeMap = new Map([
29
+ [1210, 409],
30
+ [1200, 409],
31
+ [1201, 400],
32
+ [1202, 404],
33
+ [1203, 404],
34
+ [1204, 400],
35
+ [1205, 400],
36
+ [1207, 409],
37
+ [1228, 404], // ERROR_ARANGO_DATABASE_NOT_FOUND
38
+ ]);
17
39
  /**
18
40
  * A microservice chassis ready class which provides endpoints for
19
41
  * CRUD resource operations.
@@ -33,6 +55,7 @@ class ServiceBase {
33
55
  entity: entityEvents
34
56
  };
35
57
  this.resourceapi = resourceapi;
58
+ this.resourceapi.logger = logger;
36
59
  this.isEventsEnabled = isEventsEnabled;
37
60
  }
38
61
  /**
@@ -41,74 +64,190 @@ class ServiceBase {
41
64
  * @param call request containing filter,limit, offset and sort options
42
65
  * @param context
43
66
  */
44
- read(call, context) {
45
- return __awaiter(this, void 0, void 0, function* () {
46
- if (!_.isEmpty(call.request.search)) {
47
- throw new errors.Unimplemented('Full-text search is not implemented');
48
- }
49
- try {
50
- let objectEntities = [];
51
- let sort;
52
- if (!_.isEmpty(call.request.sort)) {
53
- sort = {};
54
- _.forEach(call.request.sort, (s) => {
55
- switch (s.order) {
56
- case 'ASCENDING':
57
- case 1:
58
- sort[s.field] = 'ASC';
59
- break;
60
- case 2:
61
- case 'DESCENDING':
62
- sort[s.field] = 'DESC';
63
- break;
64
- case 'UNSORTED':
65
- case 0:
66
- default:
67
- break;
68
- }
69
- });
67
+ async read(call, context) {
68
+ let docs = {};
69
+ if (!_.isEmpty(call.request.search)) {
70
+ docs.operation_status = {
71
+ code: 404,
72
+ message: 'Full-text search is not implemented'
73
+ };
74
+ return docs;
75
+ }
76
+ try {
77
+ let objectEntities = [];
78
+ let sort;
79
+ if (!_.isEmpty(call.request.sort)) {
80
+ sort = {};
81
+ _.forEach(call.request.sort, (s) => {
82
+ switch (s.order) {
83
+ case 'ASCENDING':
84
+ case 1:
85
+ sort[s.field] = 'ASC';
86
+ break;
87
+ case 2:
88
+ case 'DESCENDING':
89
+ sort[s.field] = 'DESC';
90
+ break;
91
+ case 'UNSORTED':
92
+ case 0:
93
+ default:
94
+ break;
95
+ }
96
+ });
97
+ }
98
+ let limit = call.request.limit;
99
+ if (call.request.limit <= 0) {
100
+ limit = 1000;
101
+ }
102
+ const offset = call.request.offset;
103
+ let filter = {};
104
+ // convert the filter from proto structure (field, operation, value and operand) to {field: value } mapping
105
+ if (!_.isEmpty(call.request.filters)) {
106
+ if (_.isArray(call.request.filters)) {
107
+ for (let eachFilter of call.request.filters) {
108
+ let prevFilter = filter;
109
+ filter = (0, index_1.toObject)(eachFilter);
110
+ Object.assign(filter, prevFilter);
111
+ }
70
112
  }
71
- let limit = call.request.limit;
72
- if (call.request.limit <= 0) {
73
- limit = 1000;
113
+ else {
114
+ filter = (0, index_1.toObject)(call.request.filters);
74
115
  }
75
- const offset = call.request.offset;
76
- let filter = {};
77
- if (!_.isEmpty(call.request.filter)) {
78
- if (call.request.filter.list_value) {
79
- filter = index_1.toObject(call.request.filter, true);
80
- }
81
- else {
82
- filter = index_1.toObject(call.request.filter);
116
+ }
117
+ const field = {};
118
+ _.forEach(call.request.field, (f) => {
119
+ if (f.include) {
120
+ field[f.name] = 1;
121
+ return;
122
+ }
123
+ field[f.name] = 0;
124
+ });
125
+ const customQueries = call.request.custom_queries;
126
+ const customArgs = call.request.custom_arguments || {};
127
+ objectEntities = (await this.resourceapi.read(filter, limit, offset, sort, field, customQueries, customArgs)) || [];
128
+ let readResponseWithStatus = [];
129
+ for (let object of objectEntities) {
130
+ readResponseWithStatus.push({
131
+ payload: object,
132
+ status: {
133
+ code: 200,
134
+ message: 'success'
83
135
  }
136
+ });
137
+ }
138
+ docs = {
139
+ items: readResponseWithStatus,
140
+ total_count: objectEntities.length,
141
+ operation_status: {
142
+ code: 200,
143
+ message: 'success'
144
+ }
145
+ };
146
+ return docs;
147
+ }
148
+ catch (e) {
149
+ const { code, message } = e;
150
+ this.logger.error('Error caught while processing read request', { code, message });
151
+ if (!docs.status) {
152
+ docs.status = {};
153
+ }
154
+ docs.status = {
155
+ id: '',
156
+ code: e.code,
157
+ message: e.details ? e.details : e.message
158
+ };
159
+ return docs;
160
+ }
161
+ }
162
+ generateStatusResponse(responseItems, inputItems, deleteIds) {
163
+ let statusArray = [];
164
+ if (!_.isArray(responseItems)) {
165
+ responseItems = [responseItems];
166
+ }
167
+ if (!_.isArray(inputItems)) {
168
+ inputItems = [inputItems];
169
+ }
170
+ for (let i = 0; i < responseItems.length; i++) {
171
+ const item = responseItems[i];
172
+ if (item.error) {
173
+ let code;
174
+ let id;
175
+ if (!deleteIds) {
176
+ id = inputItems[i].id;
177
+ }
178
+ else {
179
+ id = inputItems[i]; // for delete operation ids is a string and not object
84
180
  }
85
- const field = {};
86
- _.forEach(call.request.field, (f) => {
87
- if (f.include) {
88
- field[f.name] = 1;
89
- return;
181
+ // map arango error code to http error code
182
+ arangoHttpErrCodeMap.forEach((value, key) => {
183
+ if (key === item.errorNum) {
184
+ code = value;
90
185
  }
91
- field[f.name] = 0;
92
186
  });
93
- const customQueries = call.request.custom_queries;
94
- const customArgs = call.request.custom_arguments || {};
95
- objectEntities = (yield this.resourceapi.read(filter, limit, offset, sort, field, customQueries, customArgs)) || [];
96
- return {
97
- items: objectEntities,
98
- total_count: objectEntities.length,
99
- };
100
- }
101
- catch (e) {
102
- const { code, message, details } = e;
103
- this.logger.error('Error caught while processing read request', { code, message });
104
- if (details) {
105
- throw { code, message: `${message} - ${details}` };
187
+ statusArray.push({
188
+ id,
189
+ code: code ? code : item.errorNum,
190
+ message: item.errorMessage
191
+ });
192
+ }
193
+ else {
194
+ statusArray.push({
195
+ id: item.id,
196
+ code: 200,
197
+ message: 'success'
198
+ });
199
+ }
200
+ }
201
+ return statusArray;
202
+ }
203
+ generateResponseWithStatus(responseItems, inputItems, deleteIds) {
204
+ let statusArray = [];
205
+ let responseItemsWithStatus = [];
206
+ if (!_.isArray(responseItems)) {
207
+ responseItems = [responseItems];
208
+ }
209
+ if (!_.isArray(inputItems)) {
210
+ inputItems = [inputItems];
211
+ }
212
+ for (let i = 0; i < responseItems.length; i++) {
213
+ const item = responseItems[i];
214
+ if (item.error) {
215
+ let code;
216
+ let id;
217
+ if (!deleteIds) {
218
+ id = inputItems[i].id;
106
219
  }
107
220
  else {
108
- throw { code, message };
221
+ id = inputItems[i]; // for delete operation ids is a string and not object
109
222
  }
223
+ // map arango error code to http error code
224
+ arangoHttpErrCodeMap.forEach((value, key) => {
225
+ if (key === item.errorNum) {
226
+ code = value;
227
+ }
228
+ });
229
+ responseItemsWithStatus.push({
230
+ payload: undefined,
231
+ status: {
232
+ id,
233
+ code: code ? code : item.errorNum,
234
+ message: item.errorMessage
235
+ }
236
+ });
237
+ statusArray.push();
238
+ }
239
+ else {
240
+ responseItemsWithStatus.push({
241
+ payload: item,
242
+ status: {
243
+ id: item.id,
244
+ code: 200,
245
+ message: 'success'
246
+ }
247
+ });
110
248
  }
111
- });
249
+ }
250
+ return responseItemsWithStatus;
112
251
  }
113
252
  /**
114
253
  * Endpoint create.
@@ -116,32 +255,39 @@ class ServiceBase {
116
255
  * @param call contains a list of resources to be created
117
256
  * @param context
118
257
  */
119
- create(call, context) {
120
- return __awaiter(this, void 0, void 0, function* () {
121
- try {
122
- yield this.resourceapi.create(call.request.items);
123
- const dispatch = [];
124
- const events = this.events.entity;
125
- this.logger.info(this.name + ' created', { items: call.request.items });
126
- if (this.isEventsEnabled) {
127
- _.forEach(call.request.items, (item) => {
258
+ async create(call, context) {
259
+ let docs = {};
260
+ try {
261
+ const createDocs = _.cloneDeep(call.request.items);
262
+ let createResponse = await this.resourceapi.create(createDocs);
263
+ const dispatch = [];
264
+ const events = this.events.entity;
265
+ if (this.isEventsEnabled) {
266
+ _.forEach(createResponse, (item) => {
267
+ if (!item.error) {
128
268
  dispatch.push(events.emit(`${this.name}Created`, item));
129
- });
130
- yield dispatch;
131
- }
132
- return { items: call.request.items, total_count: call.request.items.length, };
133
- }
134
- catch (e) {
135
- const { code, message, details } = e;
136
- this.logger.error('Error caught while processing create request', { code, message });
137
- if (details) {
138
- throw { code, message: `${message} - ${details}` };
139
- }
140
- else {
141
- throw { code, message };
142
- }
269
+ }
270
+ });
271
+ await dispatch;
143
272
  }
144
- });
273
+ let createResponseWithStatus = this.generateResponseWithStatus(createResponse, createDocs);
274
+ const operation_status = {
275
+ code: 200,
276
+ message: 'success'
277
+ };
278
+ docs = { items: createResponseWithStatus, total_count: createResponseWithStatus.length, operation_status };
279
+ this.logger.info(this.name + ' create response', docs);
280
+ return docs;
281
+ }
282
+ catch (e) {
283
+ const { code, message } = e;
284
+ this.logger.error('Error caught while processing create request', { code, message });
285
+ docs.operation_status = {
286
+ code: e.code,
287
+ message: e.details ? e.details : e.message
288
+ };
289
+ return docs;
290
+ }
145
291
  }
146
292
  /**
147
293
  * Endpoint delete.
@@ -149,42 +295,64 @@ class ServiceBase {
149
295
  * @param call contains list of resource IDs to be deleted
150
296
  * @param context
151
297
  */
152
- delete(call, context) {
153
- return __awaiter(this, void 0, void 0, function* () {
154
- try {
155
- const events = this.events.entity;
156
- let docs;
157
- if (call.request.collection) {
158
- docs = yield this.resourceapi.deleteCollection();
159
- this.logger.info(`${this.name} deleted`);
160
- }
161
- else {
162
- yield this.resourceapi.delete(call.request.ids);
163
- docs = call.request.ids;
298
+ async delete(call, context) {
299
+ let deleteResponse = { status: [], operation_status: {} };
300
+ try {
301
+ const events = this.events.entity;
302
+ let docs;
303
+ if (call.request.collection) {
304
+ docs = await this.resourceapi.deleteCollection();
305
+ this.logger.info(`${this.name} deleted`);
306
+ }
307
+ else {
308
+ docs = await this.resourceapi.delete(call.request.ids);
309
+ }
310
+ // sanitize delete response for docs
311
+ for (let doc of docs) {
312
+ if (doc._id && doc._key && doc._rev) {
313
+ delete doc._id;
314
+ const id = doc._key;
315
+ doc.id = id;
316
+ delete doc._key;
317
+ delete doc._rev;
164
318
  }
165
- if (this.isEventsEnabled) {
166
- const dispatch = [];
167
- _.forEach(docs, (id) => {
168
- if (typeof id == 'string') {
169
- id = { id };
170
- }
319
+ }
320
+ if (this.isEventsEnabled) {
321
+ const dispatch = [];
322
+ _.forEach(docs, (id) => {
323
+ if (typeof id == 'string') {
324
+ id = { id };
325
+ }
326
+ if (!id.error) {
171
327
  dispatch.push(events.emit(`${this.name}Deleted`, id));
172
- });
173
- yield dispatch;
174
- }
175
- return {};
328
+ }
329
+ });
330
+ await dispatch;
176
331
  }
177
- catch (e) {
178
- const { code, message, details } = e;
179
- this.logger.error('Error caught while processing delete request', { code, message });
180
- if (details) {
181
- throw { code, message: `${message} - ${details}` };
182
- }
183
- else {
184
- throw { code, message };
332
+ // if complete collection is dropped then there are no input ids provided,
333
+ // iterate docs and put ids to call.request.ids
334
+ if (call.request.collection && (_.isNil(call.request.ids) || _.isEmpty(call.request.ids))) {
335
+ call.request.ids = [];
336
+ for (let doc of docs) {
337
+ call.request.ids.push(doc.id);
185
338
  }
186
339
  }
187
- });
340
+ let statusArray = this.generateStatusResponse(docs, call.request.ids, true);
341
+ const operation_status = {
342
+ code: 200,
343
+ message: 'success'
344
+ };
345
+ return { status: statusArray, operation_status };
346
+ }
347
+ catch (e) {
348
+ const { code, message } = e;
349
+ this.logger.error('Error caught while processing delete request', { code, message });
350
+ deleteResponse.operation_status = {
351
+ code: e.code,
352
+ message: e.details ? e.details : e.message
353
+ };
354
+ return deleteResponse;
355
+ }
188
356
  }
189
357
  /**
190
358
  * Endpoint update.
@@ -192,32 +360,39 @@ class ServiceBase {
192
360
  * @param call contains list of resources to be modified
193
361
  * @param context
194
362
  */
195
- update(call, context) {
196
- return __awaiter(this, void 0, void 0, function* () {
197
- try {
198
- const updateResult = yield this.resourceapi.update(call.request.items);
199
- this.logger.info(this.name + ' updated', { items: updateResult });
200
- if (this.isEventsEnabled) {
201
- const dispatch = [];
202
- const events = this.events.entity;
203
- _.forEach(updateResult, (update) => {
363
+ async update(call, context) {
364
+ let docs = {};
365
+ try {
366
+ let updateDocs = _.cloneDeep(call.request.items);
367
+ let updateResponse = await this.resourceapi.update(updateDocs);
368
+ if (this.isEventsEnabled) {
369
+ const dispatch = [];
370
+ const events = this.events.entity;
371
+ _.forEach(updateResponse, (update) => {
372
+ if (!update.error) {
204
373
  dispatch.push(events.emit(`${this.name}Modified`, update));
205
- });
206
- yield dispatch;
207
- }
208
- return { items: updateResult, total_count: updateResult.length };
209
- }
210
- catch (e) {
211
- const { code, message, details } = e;
212
- this.logger.error('Error caught while processing update request', { code, message });
213
- if (details) {
214
- throw { code, message: `${message} - ${details}` };
215
- }
216
- else {
217
- throw { code, message };
218
- }
374
+ }
375
+ });
376
+ await dispatch;
219
377
  }
220
- });
378
+ let responseWithStatus = this.generateResponseWithStatus(updateResponse, updateDocs);
379
+ const operation_status = {
380
+ code: 200,
381
+ message: 'success'
382
+ };
383
+ docs = { items: responseWithStatus, total_count: responseWithStatus.length, operation_status };
384
+ this.logger.info(this.name + ' update response', docs);
385
+ return docs;
386
+ }
387
+ catch (e) {
388
+ const { code, message } = e;
389
+ this.logger.error('Error caught while processing update request', { code, message });
390
+ docs.operation_status = {
391
+ code: e.code,
392
+ message: e.details ? e.details : e.message
393
+ };
394
+ return docs;
395
+ }
221
396
  }
222
397
  /**
223
398
  * Endpoint upsert.
@@ -225,24 +400,29 @@ class ServiceBase {
225
400
  * @param call contains list of resources to be created or modified
226
401
  * @param context
227
402
  */
228
- upsert(call, context) {
229
- return __awaiter(this, void 0, void 0, function* () {
230
- try {
231
- const result = yield this.resourceapi.upsert(call.request.items, this.events.entity, this.name);
232
- this.logger.info(`${this.name} upserted`, { items: result });
233
- return { items: result, total_count: result.length };
234
- }
235
- catch (e) {
236
- const { code, message, details } = e;
237
- this.logger.error('Error caught while processing upsert request', { code, message });
238
- if (details) {
239
- throw { code, message: `${message} - ${details}` };
240
- }
241
- else {
242
- throw { code, message };
243
- }
244
- }
245
- });
403
+ async upsert(call, context) {
404
+ let docs = {};
405
+ try {
406
+ let upsertDocs = _.cloneDeep(call.request.items);
407
+ let upsertResponse = await this.resourceapi.upsert(upsertDocs, this.events.entity, this.name);
408
+ let responseWithStatus = this.generateResponseWithStatus(upsertResponse, upsertDocs);
409
+ const operation_status = {
410
+ code: 200,
411
+ message: 'success'
412
+ };
413
+ docs = { items: responseWithStatus, total_count: responseWithStatus.length, operation_status };
414
+ this.logger.info(`${this.name} upsert response`, { items: upsertResponse });
415
+ return docs;
416
+ }
417
+ catch (e) {
418
+ const { code, message } = e;
419
+ this.logger.error('Error caught while processing upsert request', { code, message });
420
+ docs.operation_status = {
421
+ code: e.code,
422
+ message: e.details ? e.details : e.message
423
+ };
424
+ return docs;
425
+ }
246
426
  }
247
427
  }
248
428
  exports.ServiceBase = ServiceBase;
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceBase.js","sourceRoot":"","sources":["../../src/core/ServiceBase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ServiceBase.js","sourceRoot":"","sources":["../../src/core/ServiceBase.ts"],"names":[],"mappings":"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"}