@izara_project/izara-core-library-asynchronous-flow 1.0.11 → 1.0.13

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/index.js CHANGED
@@ -39,7 +39,7 @@ module.exports = {
39
39
  findPendingStepIdsAwaitingStep: asyncFlowSharedLib.findPendingStepIdsAwaitingStep,
40
40
  findPendingStepsAwaitingStep: asyncFlowSharedLib.findPendingStepsAwaitingStep,
41
41
  findPendingStepAwaitingStep: asyncFlowSharedLib.findPendingStepAwaitingStep,
42
-
42
+ findPendingStepAwaitingStepWithCallingFlow: asyncFlowSharedLib.findPendingStepAwaitingStepWithCallingFlow,
43
43
  // Checking and clearing steps
44
44
  checkAllAwaitingStepsFinished: asyncFlowSharedLib.checkAllAwaitingStepsFinished,
45
45
  clearAllAwaitingSteps: asyncFlowSharedLib.clearAllAwaitingSteps,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@izara_project/izara-core-library-asynchronous-flow",
3
- "version": "1.0.11",
3
+ "version": "1.0.13",
4
4
  "description": "Shared asynchronous flow logic",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -101,15 +101,11 @@ function createFieldNameStatus(prefix = 'cache') {
101
101
  async function createAwaitingMultipleStepsWithAdditionalAttributes(
102
102
  _izContext,
103
103
  records, // array of object including properties: awaitingStepId / (optional) additionalAttributes
104
- pendingStepId,
105
- tableName = "AwaitingMultipleSteps",
106
- byPendingTableName = "AwaitingMultipleStepByPending"
104
+ pendingStepId
107
105
  ) {
108
106
  _izContext.logger.debug("Lib:createAwaitingMultipleStepsWithAdditionalAttributes", {
109
107
  records: records,
110
- pendingStepId: pendingStepId,
111
- tableName: tableName,
112
- byPendingTableName: byPendingTableName
108
+ pendingStepId: pendingStepId
113
109
  });
114
110
  let promiseArray = []
115
111
 
@@ -125,14 +121,14 @@ async function createAwaitingMultipleStepsWithAdditionalAttributes(
125
121
  promiseArray.push(
126
122
  dynamodbSharedLib.putItem(
127
123
  _izContext,
128
- await dynamodbSharedLib.tableName(_izContext, tableName),
124
+ await dynamodbSharedLib.tableName(_izContext, "AwaitingMultipleSteps"),
129
125
  attributesWhenCreate
130
126
  )
131
127
  );
132
128
  promiseArray.push(
133
129
  dynamodbSharedLib.putItem(
134
130
  _izContext,
135
- await dynamodbSharedLib.tableName(_izContext, byPendingTableName),
131
+ await dynamodbSharedLib.tableName(_izContext, "AwaitingMultipleStepByPending"),
136
132
  {
137
133
  pendingStepId: pendingStepId,
138
134
  awaitingStepId: record.awaitingStepId,
@@ -149,15 +145,11 @@ async function createAwaitingMultipleStepsWithAdditionalAttributes(
149
145
  async function createAwaitingMultipleSteps(
150
146
  _izContext,
151
147
  records, // array of awaitingStepIds
152
- pendingStepId,
153
- tableName = "AwaitingMultipleSteps",
154
- byPendingTableName = "AwaitingMultipleStepByPending"
148
+ pendingStepId
155
149
  ) {
156
150
  _izContext.logger.debug("Lib:createAwaitingMultipleSteps", {
157
151
  records: records,
158
- pendingStepId: pendingStepId,
159
- tableName: tableName,
160
- byPendingTableName: byPendingTableName
152
+ pendingStepId: pendingStepId
161
153
  });
162
154
 
163
155
  // // 0001 ORG.
@@ -174,7 +166,7 @@ async function createAwaitingMultipleSteps(
174
166
  promiseArray.push(
175
167
  dynamodbSharedLib.putItem(
176
168
  _izContext,
177
- await dynamodbSharedLib.tableName(_izContext, tableName),
169
+ await dynamodbSharedLib.tableName(_izContext, "AwaitingMultipleSteps"),
178
170
  attributesWhenCreate
179
171
  )
180
172
  );
@@ -184,7 +176,7 @@ async function createAwaitingMultipleSteps(
184
176
  promiseArray.push(
185
177
  dynamodbSharedLib.putItem(
186
178
  _izContext,
187
- await dynamodbSharedLib.tableName(_izContext, byPendingTableName),
179
+ await dynamodbSharedLib.tableName(_izContext, "AwaitingMultipleStepByPending"),
188
180
  attributesWhenCreate
189
181
  )
190
182
  );
@@ -205,9 +197,15 @@ async function createAwaitingStep(
205
197
  _izContext,
206
198
  awaitingStepId,
207
199
  pendingStepId,
208
- tableName = "AwaitingStep",
209
- additionalAttributes = {} // save in top level
200
+ additionalAttributes = {}, // save in top level
201
+ callingFlowConfig = {} // optional
210
202
  ) {
203
+ console.log("Lib createAwaitingStep:", {
204
+ awaitingStepId,
205
+ pendingStepId,
206
+ additionalAttributes,
207
+ callingFlowConfig
208
+ });
211
209
 
212
210
  let attributesWhenCreate = {
213
211
  awaitingStepId: awaitingStepId,
@@ -217,30 +215,30 @@ async function createAwaitingStep(
217
215
  }
218
216
  // loop if not empty
219
217
  for (let additionalAttribute in additionalAttributes) {
220
- attributesWhenCreate[additionalAttribute] = additionalAttributes[additionalAttribute]
218
+ attributesWhenCreate[additionalAttribute] = additionalAttributes[additionalAttribute] // each additionalAttributes
221
219
  }
220
+ if (Object.keys(callingFlowConfig).length > 0) {
221
+ Object.assign(attributesWhenCreate, { callingFlowConfig })
222
+ };
222
223
 
223
224
  await dynamodbSharedLib.putItem(
224
225
  _izContext,
225
- await dynamodbSharedLib.tableName(_izContext, tableName),
226
+ await dynamodbSharedLib.tableName(_izContext, "AwaitingStep"),
226
227
  attributesWhenCreate
227
228
  );
228
229
  }
229
230
 
230
231
 
231
-
232
-
233
232
  async function findPendingStepIdsAwaitingStep(
234
233
  _izContext,
235
- awaitingStepId,
236
- tableName = "AwaitingStep"
234
+ awaitingStepId
237
235
  ) {
238
236
 
239
237
  let pendingStepIds = [];
240
238
 
241
239
  let listPendingStepIds = await dynamodbSharedLib.query(
242
240
  _izContext,
243
- await dynamodbSharedLib.tableName(_izContext, tableName),
241
+ await dynamodbSharedLib.tableName(_izContext, "AwaitingStep"),
244
242
  {
245
243
  awaitingStepId: awaitingStepId
246
244
  }
@@ -255,61 +253,75 @@ async function findPendingStepIdsAwaitingStep(
255
253
 
256
254
  async function findPendingStepsAwaitingStep(
257
255
  _izContext,
258
- awaitingStepId,
259
- tableName = "AwaitingStep"
256
+ awaitingStepId
260
257
  ) {
261
258
 
262
259
  let listPendingSteps = await dynamodbSharedLib.query(
263
260
  _izContext,
264
- await dynamodbSharedLib.tableName(_izContext, tableName),
261
+ await dynamodbSharedLib.tableName(_izContext, "AwaitingStep"),
265
262
  {
266
263
  awaitingStepId: awaitingStepId
267
264
  }
268
265
  );
269
- _izContext.logger.debug("Record of awaitingStepId", listPendingSteps)
266
+ _izContext.logger.debug("Record of awaitingStepId", listPendingSteps);
270
267
  return listPendingSteps.Items;
271
268
  }
269
+
272
270
  async function findPendingStepAwaitingStep(
273
271
  _izContext,
274
- awaitingStepId,
275
- tableName = "AwaitingStep"
272
+ awaitingStepId
276
273
  ) {
277
274
 
278
275
  let listPendingSteps = await dynamodbSharedLib.query(
279
276
  _izContext,
280
- await dynamodbSharedLib.tableName(_izContext, tableName),
277
+ await dynamodbSharedLib.tableName(_izContext, "AwaitingStep"),
281
278
  {
282
279
  awaitingStepId: awaitingStepId
283
280
  }
284
281
  );
285
282
  _izContext.logger.debug("Record of awaitingStepId", listPendingSteps)
286
283
 
287
- if (listPendingSteps.length !== 1) {
284
+ if (listPendingSteps.Items.length !== 1) {
288
285
  throw new NoRetryError("listPendingSteps not equals 1")
289
- }
290
-
286
+ };
291
287
  return listPendingSteps.Items[0];
292
288
  }
293
289
 
290
+ // for get callingFlow save in awaitingStpe and remove property callingFlow in awaitingStpe
291
+ async function findPendingStepAwaitingStepWithCallingFlow(
292
+ _izContext,
293
+ awaitingStepId,
294
+ ) {
294
295
 
296
+ let callingFlowConfig = null;
297
+ let awaitingStep = await findPendingStepAwaitingStep(
298
+ _izContext,
299
+ awaitingStepId
300
+ );
301
+
302
+ // callingFlowConfig.
303
+ // cleaning object awaitingStep not have callingFlowComfig after return.
304
+ if (awaitingStep.hasOwnProperty("callingFlowConfig")) {
305
+ callingFlowConfig = awaitingStep.callingFlowConfig
306
+ delete awaitingStep.callingFlowConfig
307
+ console.log("after delete awaitingStep", awaitingStep);
308
+ };
309
+
310
+ return [awaitingStep, callingFlowConfig]
311
+ }
295
312
 
296
313
  async function checkAllAwaitingStepsFinished(
297
314
  _izContext,
298
315
  pendingStepId,
299
316
  currentAwaitingStepId = null,
300
- errorsFound = [],
301
- tableName = 'AwaitingMultipleSteps',
302
- byPendingTableName = "AwaitingMultipleStepByPending"
303
- // indexName = ''
317
+ errorsFound = []
304
318
  ) {
305
319
 
306
320
  let remaining = await checkAllAwaitingStepsFinishedWithError(
307
321
  _izContext,
308
322
  pendingStepId,
309
323
  currentAwaitingStepId,
310
- errorsFound,
311
- tableName,
312
- byPendingTableName
324
+ errorsFound
313
325
  );
314
326
  return remaining;
315
327
  }
@@ -320,37 +332,18 @@ async function checkAllAwaitingStepsFinishedWithError(
320
332
  _izContext,
321
333
  pendingStepId,
322
334
  currentAwaitingStepId = null,
323
- errorsFound = [],
324
- tableName = 'AwaitingMultipleSteps',
325
- byPendingTableName = "AwaitingMultipleStepByPending"
326
- // indexName = ''
335
+ errorsFound = []
327
336
  ) {
328
337
  _izContext.logger.debug("Lib:checkAllAwaitingStepsFinishedWithError", {
329
338
  pendingStepId: pendingStepId,
330
339
  currentAwaitingStepId: currentAwaitingStepId,
331
- tableName: tableName,
332
- byPendingTableName: byPendingTableName
340
+ errorsFound: errorsFound
333
341
  });
334
342
 
335
343
  if (currentAwaitingStepId) {
336
-
337
- //* not need to save complete in AwaitingMultipleSteps Table but save in AwaitingMultipleStepByPending
338
- // await dynamodbSharedLib.updateItem(
339
- // _izContext,
340
- // dynamodbSharedLib.tableName(tableName),
341
- // {
342
- // awaitingStepId: currentAwaitingStepId,
343
- // pendingStepId: pendingStepId
344
- // },
345
- // {
346
- // complete: true
347
- // },
348
- // )
349
-
350
- _izContext.logger.debug(`---- update ${byPendingTableName} table ----`);
351
344
  await dynamodbSharedLib.updateItem(
352
345
  _izContext,
353
- await dynamodbSharedLib.tableName(_izContext, byPendingTableName),
346
+ await dynamodbSharedLib.tableName(_izContext, "AwaitingMultipleStepByPending"),
354
347
  {
355
348
  pendingStepId: pendingStepId,
356
349
  awaitingStepId: currentAwaitingStepId
@@ -364,7 +357,7 @@ async function checkAllAwaitingStepsFinishedWithError(
364
357
  }
365
358
  let listPendingStepIds = await dynamodbSharedLib.query(
366
359
  _izContext,
367
- await dynamodbSharedLib.tableName(_izContext, byPendingTableName),
360
+ await dynamodbSharedLib.tableName(_izContext, "AwaitingMultipleStepByPending"),
368
361
  {
369
362
  pendingStepId: pendingStepId
370
363
  },
@@ -437,52 +430,42 @@ async function checkAllAwaitingStepsFinishedWithError(
437
430
 
438
431
  async function clearAllAwaitingSteps(
439
432
  _izContext,
440
- pendingStepId,
441
- tableName = 'AwaitingMultipleSteps',
442
- byPendingTableName = "AwaitingMultipleStepByPending"
433
+ pendingStepId
443
434
  ) {
444
- _izContext.logger.debug("Lib:clearAllAwaitingSteps", {
445
- pendingStepId: pendingStepId,
446
- tableName: tableName,
447
- byPendingTableName: byPendingTableName
448
- })
449
-
450
- tableName = await dynamodbSharedLib.tableName(_izContext, tableName)
451
-
452
435
  // ----- query items from GSI table
453
436
  let listPendingStepIds = await dynamodbSharedLib.query(
454
437
  _izContext,
455
- await dynamodbSharedLib.tableName(_izContext, byPendingTableName),
438
+ await dynamodbSharedLib.tableName(_izContext, "AwaitingMultipleStepByPending"),
456
439
  {
457
440
  pendingStepId: pendingStepId
458
441
  },
459
442
  );
460
443
  _izContext.logger.debug('listPendingStepIds', listPendingStepIds);
461
444
 
462
-
463
445
  let promiseArray = []
464
446
 
465
447
  for (let idx = 0; idx < listPendingStepIds.Items.length; idx++) {
466
448
 
467
- let keyValues = {
468
- awaitingStepId: listPendingStepIds.Items[idx].awaitingStepId,
469
- pendingStepId: listPendingStepIds.Items[idx].pendingStepId
470
- }
471
- _izContext.logger.debug('deleting ... ', keyValues);
472
-
473
- _izContext.logger.debug(`delete item in dynamodb AwaitingMultipleSteps ==> awaitingStepId:${keyValues.awaitingStepId}`)
449
+ _izContext.logger.debug(`delete item in dynamodb AwaitingMultipleSteps`)
474
450
  promiseArray.push(
475
451
  dynamodbSharedLib.deleteItem(
476
452
  _izContext,
477
- tableName,
478
- keyValues
453
+ "AwaitingMultipleSteps",
454
+ {
455
+ awaitingStepId: listPendingStepIds.Items[idx].awaitingStepId,
456
+ pendingStepId: listPendingStepIds.Items[idx].pendingStepId
457
+ }
479
458
  ));
480
- _izContext.logger.debug(`delete item in dynamodb AwaitingMultipleStepByPending ==> awaitingStepId:${keyValues.awaitingStepId}`)
459
+
460
+ _izContext.logger.debug(`delete item in dynamodb AwaitingMultipleStepByPending`)
481
461
  promiseArray.push(
482
462
  dynamodbSharedLib.deleteItem(
483
463
  _izContext,
484
- await dynamodbSharedLib.tableName(_izContext, byPendingTableName),
485
- keyValues
464
+ await dynamodbSharedLib.tableName(_izContext, "AwaitingMultipleStepByPending"),
465
+ {
466
+ pendingStepId: listPendingStepIds.Items[idx].pendingStepId,
467
+ awaitingStepId: listPendingStepIds.Items[idx].awaitingStepId
468
+ }
486
469
  ));
487
470
 
488
471
  }
@@ -496,13 +479,12 @@ async function clearAllAwaitingSteps(
496
479
  async function removeAwaitingStep(
497
480
  _izContext,
498
481
  awaitingStepId,
499
- pendingStepId,
500
- tableName = "AwaitingStep"
482
+ pendingStepId
501
483
  ) {
502
484
 
503
485
  await dynamodbSharedLib.deleteItem(
504
486
  _izContext,
505
- await dynamodbSharedLib.tableName(_izContext, tableName),
487
+ await dynamodbSharedLib.tableName(_izContext, "AwaitingStep"),
506
488
  {
507
489
  awaitingStepId: awaitingStepId,
508
490
  pendingStepId: pendingStepId
@@ -514,15 +496,11 @@ async function removeAwaitingMultipleStep(
514
496
  _izContext,
515
497
  awaitingStepId,
516
498
  pendingStepId,
517
- errorsFound = [],
518
- tableName = "AwaitingMultipleSteps",
519
- byPendingTableName = "AwaitingMultipleStepByPending"
499
+ errorsFound = []
520
500
  ) {
521
501
  _izContext.logger.debug("Lib:removeAwaitingMultipleStep", {
522
502
  awaitingStepId: awaitingStepId,
523
- pendingStepId: pendingStepId,
524
- tableName: tableName,
525
- byPendingTableName: byPendingTableName
503
+ pendingStepId: pendingStepId
526
504
  })
527
505
 
528
506
  let promiseArray = []
@@ -546,15 +524,16 @@ async function removeAwaitingMultipleStep(
546
524
  promiseArray.push(
547
525
  dynamodbSharedLib.deleteItem(
548
526
  _izContext,
549
- await dynamodbSharedLib.tableName(_izContext, tableName),
527
+ await dynamodbSharedLib.tableName(_izContext, "AwaitingMultipleSteps"),
550
528
  keyValues
551
529
  ));
530
+
552
531
  if (errorsFound.length == 0) {
553
532
  _izContext.logger.debug(`delete item in dynamodb AwaitingMultipleStepByPending ==> awaitingStepId:${keyValues.awaitingStepId}`)
554
533
  promiseArray.push(
555
534
  dynamodbSharedLib.deleteItem(
556
535
  _izContext,
557
- await dynamodbSharedLib.tableName(_izContext, byPendingTableName),
536
+ await dynamodbSharedLib.tableName(_izContext, "AwaitingMultipleStepByPending"),
558
537
  keyValuesForByPending
559
538
  ));
560
539
  }
@@ -568,8 +547,7 @@ async function removeAwaitingStepWithCheckUniqueRequestId(
568
547
  awaitingStepId,
569
548
  pendingStepId,
570
549
  checkUniqueRequestId,
571
- prefix = "",
572
- tableName = "AwaitingStep"
550
+ prefix = ""
573
551
  ) {
574
552
 
575
553
  // if logicalElements add queryElements.logicalElements
@@ -590,7 +568,7 @@ async function removeAwaitingStepWithCheckUniqueRequestId(
590
568
 
591
569
  await dynamodbSharedLib.deleteItem(
592
570
  _izContext,
593
- await dynamodbSharedLib.tableName(_izContext, tableName),
571
+ await dynamodbSharedLib.tableName(_izContext, "AwaitingStep"),
594
572
  {
595
573
  awaitingStepId: awaitingStepId,
596
574
  pendingStepId: pendingStepId
@@ -966,6 +944,7 @@ module.exports = {
966
944
  findPendingStepIdsAwaitingStep,
967
945
  findPendingStepAwaitingStep,
968
946
  findPendingStepsAwaitingStep,
947
+ findPendingStepAwaitingStepWithCallingFlow,
969
948
  removeAwaitingStep,
970
949
  removeAwaitingStepWithCheckUniqueRequestId,
971
950