@squiz/db-lib 1.72.0 → 1.73.0

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Change Log
2
2
 
3
+ ## 1.73.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 2d8cba3: remove un-needed dynamodb transactions
8
+
3
9
  ## 1.72.0
4
10
 
5
11
  ### Minor Changes
@@ -14,11 +14,13 @@ export type QueryOptions = {
14
14
  interface Reader<T> {
15
15
  queryItems(partialItem: Partial<T>, options?: QueryOptions): Promise<T[]>;
16
16
  getItem(id: string | Partial<T>): Promise<T | undefined>;
17
+ getItems(partialItem: Partial<T>[]): Promise<T[]>;
17
18
  }
18
19
  interface Writer<T> {
19
20
  createItem(item: Partial<T>): Promise<T>;
20
21
  updateItem(partialItem: Partial<T>): Promise<T | undefined>;
21
22
  deleteItem(partialItem: Partial<T>): Promise<number>;
23
+ deleteItems(partialItem: Partial<T>[]): Promise<void>;
22
24
  }
23
25
  type Repository<T> = Reader<T> & Writer<T>;
24
26
  type Repositories = Record<string, Repository<any>>;
@@ -83,6 +85,17 @@ export declare abstract class AbstractDynamoDbRepository<SHAPE extends object, D
83
85
  * @returns
84
86
  */
85
87
  private getBatchItems;
88
+ /**
89
+ * Delete items in a batch
90
+ * Uses batchWrite() with 25 items
91
+ *
92
+ * @param item
93
+ *
94
+ * @throws MissingKeyValuesError
95
+ */
96
+ deleteItems(items: Partial<SHAPE>[]): Promise<void>;
97
+ private deleteBatchItems;
98
+ private getBatchKeys;
86
99
  /**
87
100
  * Finds all the items matching the partition key or
88
101
  * the gsi key (when gsi index name is specified)
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractDynamoDbRepository.d.ts","sourceRoot":"","sources":["../../src/dynamodb/AbstractDynamoDbRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAKjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,eAAe,EAA+C,MAAM,IAAI,CAAC;AAG/F,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IAGzB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,KAAK,CAAC,EAAE,MAAM,YAAY,CAAC;IAE3B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAEvB,MAAM,CAAC,EAAE,yBAAyB,CAAC;CACpC,CAAC;AAEF,UAAU,MAAM,CAAC,CAAC;IAChB,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAE1E,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;CAC1D;AAED,UAAU,MAAM,CAAC,CAAC;IAChB,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC5D,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtD;AAED,KAAK,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAE3C,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAEpD,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE;QACF,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,EAAE,EAAE;QACF,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAErD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,YAAY,EAAE,MAAM,CAAC,CAAC;AAE9E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;IACtB,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B,CAAC;AAEF,8BAAsB,0BAA0B,CAAC,KAAK,SAAS,MAAM,EAAE,UAAU,SAAS,KAAK,CAC7F,YAAW,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;IAYrC,SAAS,CAAC,SAAS,EAAE,MAAM;IAC3B,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC,YAAY,CAAC;IAClD,SAAS,CAAC,UAAU,EAAE,MAAM;IAC5B,SAAS,CAAC,gBAAgB,EAAE,gBAAgB;IAC5C,SAAS,CAAC,QAAQ,EAAE;QAAE,KAAK,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAAA;KAAE;IAd1E,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAEnC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;IAC1B,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC;IAChC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC;IAGjC,SAAS,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC;gBAG3B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,eAAe,CAAC,YAAY,CAAC,EACxC,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE;QAAE,KAAK,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAAA;KAAE;IAmB1E;;;;;;;;OAQG;IACU,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAc3E;;;;;;;;;OASG;IACU,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAYrE;;;;;OAKG;YACW,aAAa;IAsB3B;;;;;;;OAOG;IACU,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAiD5F;;;;OAIG;IACH,OAAO,CAAC,+BAA+B;IASvC;;;;;;;;OAQG;IACU,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,WAAW,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IA0EjH;;;;;;;;;;OAUG;IACU,UAAU,CACrB,KAAK,EAAE,UAAU,EACjB,WAAW,GAAE,WAAgB,EAC7B,eAAe,GAAE,OAAO,CAAC,KAAK,CAAM,GACnC,OAAO,CAAC,UAAU,CAAC;IA2CtB;;;;;;;OAOG;IACU,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,WAAW,GAAE,WAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAgCpG;;;;OAIG;IACH,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;IAahE,SAAS,CAAC,iCAAiC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAQzE;;;;;OAKG;IACH,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM;IAI7C;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM;IAI7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,MAAM,UAAU,GAAG,MAAM;IAuC/E;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;CAWhC"}
1
+ {"version":3,"file":"AbstractDynamoDbRepository.d.ts","sourceRoot":"","sources":["../../src/dynamodb/AbstractDynamoDbRepository.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AbstractDynamoDbRepository = void 0;
4
4
  const __1 = require("..");
5
5
  const InvalidDataFormatError_1 = require("../error/InvalidDataFormatError");
6
+ const MAX_REATTEMPTS = 3;
6
7
  class AbstractDynamoDbRepository {
7
8
  constructor(tableName, dbManager, entityName, entityDefinition, classRef) {
8
9
  this.tableName = tableName;
@@ -73,6 +74,65 @@ class AbstractDynamoDbRepository {
73
74
  * @returns
74
75
  */
75
76
  async getBatchItems(items) {
77
+ let resultItems = [];
78
+ let requestKeys = {
79
+ [this.tableName]: {
80
+ Keys: this.getBatchKeys(items),
81
+ },
82
+ };
83
+ let reattemptsCount = 0;
84
+ while (requestKeys && Object.keys(requestKeys).length) {
85
+ if (reattemptsCount++ > MAX_REATTEMPTS) {
86
+ throw Error('Maximum allowed retries exceeded for unprocessed items');
87
+ }
88
+ const output = await this.client.batchGet({
89
+ RequestItems: requestKeys,
90
+ });
91
+ requestKeys = output.UnprocessedKeys;
92
+ if (output.Responses && output.Responses[this.tableName] && output.Responses[this.tableName].length) {
93
+ resultItems = resultItems.concat(output.Responses[this.tableName].map((i) => this.hydrateItem(i)));
94
+ }
95
+ }
96
+ return resultItems;
97
+ }
98
+ /**
99
+ * Delete items in a batch
100
+ * Uses batchWrite() with 25 items
101
+ *
102
+ * @param item
103
+ *
104
+ * @throws MissingKeyValuesError
105
+ */
106
+ async deleteItems(items) {
107
+ // this is the maximum items allowed by BatchWriteItem()
108
+ const batchSize = 25;
109
+ for (let i = 0; i < items.length; i += batchSize) {
110
+ const keys = this.getBatchKeys(items.slice(i, i + batchSize));
111
+ await this.deleteBatchItems(keys);
112
+ }
113
+ }
114
+ async deleteBatchItems(keys) {
115
+ let requestItems = {
116
+ [this.tableName]: Object.values(keys).map((key) => {
117
+ return {
118
+ DeleteRequest: {
119
+ Key: key,
120
+ },
121
+ };
122
+ }),
123
+ };
124
+ let reattemptsCount = 0;
125
+ while (requestItems && Object.keys(requestItems).length) {
126
+ if (reattemptsCount++ > MAX_REATTEMPTS) {
127
+ throw Error('Maximum allowed retries exceeded for unprocessed items');
128
+ }
129
+ const response = await this.client.batchWrite({
130
+ RequestItems: requestItems,
131
+ });
132
+ requestItems = response.UnprocessedItems;
133
+ }
134
+ }
135
+ getBatchKeys(items) {
76
136
  const keys = [];
77
137
  for (const item of items) {
78
138
  keys.push({
@@ -80,17 +140,11 @@ class AbstractDynamoDbRepository {
80
140
  [this.keys.sk.attributeName]: this.getSk(item),
81
141
  });
82
142
  }
83
- const output = await this.client.batchGet({
84
- RequestItems: {
85
- [this.tableName]: {
86
- Keys: keys,
87
- },
88
- },
89
- });
90
- if (output.Responses && output.Responses[this.tableName].length) {
91
- return output.Responses[this.tableName].map((i) => this.hydrateItem(i));
92
- }
93
- return [];
143
+ // keys.push({
144
+ // [this.keys.pk.attributeName]: 'foo1',
145
+ // [this.keys.sk.attributeName]: 'foo2',
146
+ // });
147
+ return keys;
94
148
  }
95
149
  /**
96
150
  * Finds all the items matching the partition key or
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractDynamoDbRepository.js","sourceRoot":"","sources":["../../src/dynamodb/AbstractDynamoDbRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractDynamoDbRepository.js","sourceRoot":"","sources":["../../src/dynamodb/AbstractDynamoDbRepository.ts"],"names":[],"mappings":";;;AAYA,0BAA+F;AAC/F,4EAAyE;AA2DzE,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAsB,0BAA0B;IAY9C,YACY,SAAiB,EACjB,SAAwC,EACxC,UAAkB,EAClB,gBAAkC,EAClC,QAA8D;QAJ9D,cAAS,GAAT,SAAS,CAAQ;QACjB,cAAS,GAAT,SAAS,CAA+B;QACxC,eAAU,GAAV,UAAU,CAAQ;QAClB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,aAAQ,GAAR,QAAQ,CAAsD;QAExE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAE/B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;QACxC,IAAI,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,kBAAkB,CAAC;QAE9D,IAAI,CAAC,UAAU,GAAG;YAChB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;YACjD,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;SAClD,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC;YAC1D,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,OAAO,CAAC,IAAoB;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YACnC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG,EAAE;gBACH,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC9C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;aAC/C;SACF,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;YAC7B,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;;;;OASG;IACI,KAAK,CAAC,QAAQ,CAAC,KAAuB;QAC3C,sDAAsD;QACtD,MAAM,SAAS,GAAG,GAAG,CAAC;QAEtB,IAAI,MAAM,GAAiB,EAAE,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE;YAChD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;YAC5E,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;SACrC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,aAAa,CAAC,KAAuB;QACjD,IAAI,WAAW,GAAiB,EAAE,CAAC;QAEnC,IAAI,WAAW,GAAyC;YACtD,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBAChB,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;aAC/B;SACF,CAAC;QACF,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,OAAO,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE;YACrD,IAAI,eAAe,EAAE,GAAG,cAAc,EAAE;gBACtC,MAAM,KAAK,CAAC,wDAAwD,CAAC,CAAC;aACvE;YACD,MAAM,MAAM,GAA0B,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC/D,YAAY,EAAE,WAAW;aAC1B,CAAC,CAAC;YACH,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC;YACrC,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;gBACnG,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACpG;SACF;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,WAAW,CAAC,KAAuB;QAC9C,wDAAwD;QACxD,MAAM,SAAS,GAAG,EAAE,CAAC;QAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE;YAChD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;YAC9D,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;SACnC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,IAAiC;QAC9D,IAAI,YAAY,GAA2C;YACzD,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAChD,OAAO;oBACL,aAAa,EAAE;wBACb,GAAG,EAAE,GAAG;qBACT;iBACF,CAAC;YACJ,CAAC,CAAC;SACH,CAAC;QACF,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,OAAO,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;YACvD,IAAI,eAAe,EAAE,GAAG,cAAc,EAAE;gBACtC,MAAM,KAAK,CAAC,wDAAwD,CAAC,CAAC;aACvE;YACD,MAAM,QAAQ,GAA4B,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;gBACrE,YAAY,EAAE,YAAY;aAC3B,CAAC,CAAC;YACH,YAAY,GAAG,QAAQ,CAAC,gBAAgB,CAAC;SAC1C;IACH,CAAC;IAEO,YAAY,CAAC,KAAuB;QAC1C,MAAM,IAAI,GAAgC,EAAE,CAAC;QAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC;gBACR,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC9C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;aAC/C,CAAC,CAAC;SACJ;QACD,cAAc;QACd,0CAA0C;QAC1C,0CAA0C;QAC1C,MAAM;QAEN,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,UAAU,CAAC,IAAoB,EAAE,OAAsB;;QAClE,MAAM,UAAU,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,MAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA,CAAC;QAC1D,MAAM,KAAK,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC;QAE7B,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;QACxC,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;QACxC,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,IAAI,KAAK,EAAE;YACT,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;gBACrC,MAAM,IAAI,yBAAqB,CAAC,gBAAgB,KAAK,2BAA2B,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;aACpG;YACD,SAAS,GAAG,KAAK,CAAC;YAClB,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC;YAC9C,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC;SAC/C;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,MAAM,sBAAsB,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACtD,MAAM,wBAAwB,GAA2B,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAC/E,MAAM,yBAAyB,GAA4B,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QAC9E,IAAI,UAAU,EAAE;YACd,MAAM,EAAE,GAAG,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,OAAO,mCAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACjE,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC,CAAC,CAAC;YACnF,wBAAwB,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;YAC7C,yBAAyB,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;SAC5C;QAED,MAAM,iBAAiB,GAAsB;YAC3C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,sBAAsB,EAAE,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;YAC5D,wBAAwB,EAAE,wBAAwB;YAClD,yBAAyB,EAAE,yBAAyB;SACrD,CAAC;QACF,IAAI,SAAS,EAAE;YACb,iBAAiB,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;SACpD;QAED,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,MAAK,SAAS,EAAE;YAChC,iBAAiB,CAAC,gBAAgB,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC;SAC9D;QACD,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,MAAK,SAAS,EAAE;YAChC,iBAAiB,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;SACzC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,CAAC;IAED;;;;OAIG;IACK,+BAA+B,CAAC,MAA8B;QACpE,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,OAAO,oBAAoB,CAAC;SAC7B;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;YACxC,OAAO,gCAAgC,CAAC;SACzC;QACD,MAAM,IAAI,KAAK,CAAC,8BAA+B,MAAc,aAAd,MAAM,uBAAN,MAAM,CAAU,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,UAAU,CAAC,QAAwB,EAAE,cAA2B,EAAE;;QAC7E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,KAAK,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC3C,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,CAAC,iCAAiC,CAAC,QAAQ,CAAC,CAAC;QAEjD,MAAM,gBAAgB,GAAG,EAAE,CAAC;QAC5B,MAAM,wBAAwB,GAA2B,EAAE,CAAC;QAC5D,MAAM,yBAAyB,GAA4B,EAAE,CAAC;QAC9D,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACjD,MAAM,SAAS,GAAG,MAAA,QAAQ,CAAC,aAA4B,CAAC,mCAAI,IAAI,CAAC;YACjE,IAAI,SAAS,KAAK,QAAQ,CAAC,aAA4B,CAAC,EAAE;gBACxD,yDAAyD;gBACzD,SAAS;aACV;YAED,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;YACrC,MAAM,oBAAoB,GAAG,IAAI,aAAa,EAAE,CAAC;YAEjD,gBAAgB,CAAC,IAAI,CAAC,GAAG,QAAQ,MAAM,oBAAoB,EAAE,CAAC,CAAC;YAC/D,wBAAwB,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC;YACnD,yBAAyB,CAAC,oBAAoB,CAAC,GAAG,SAAS,CAAC;SAC7D;QACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC5B,oBAAoB;YACpB,OAAO,KAAK,CAAC;SACd;QAED,MAAM,kBAAkB,GAAG;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG,EAAE;gBACH,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAClD,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;aACnD;YACD,gBAAgB,EAAE,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;YACrD,yBAAyB,EAAE,yBAAyB;YACpD,wBAAwB,EAAE,wBAAwB;YAClD,mBAAmB,EAAE,oBAAoB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,GAAG;SACvE,CAAC;QAEF,IAAI,MAAA,WAAW,CAAC,EAAE,0CAAE,MAAM,EAAE;YAC1B,8CAA8C;YAC9C,qDAAqD;YACrD,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE,EAAE;gBACrD,MAAM,EAAE,kBAAkB;aAC3B,CAAC,CAAC;YACH,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACjC;QAED,IAAI,MAA2B,CAAC;QAChC,IAAI;YACF,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;gBAChC,GAAG,kBAAkB;gBACrB,YAAY,EAAE,SAAS;aACxB,CAAC,CAAC;SACJ;QAAC,OAAO,CAAM,EAAE;YACf,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,iCAAiC,EAAE;gBACrD,OAAO,SAAS,CAAC;aAClB;YACD,MAAM,CAAC,CAAC;SACT;QAED,IAAI,IAAI,GAA2B,SAAS,CAAC;QAC7C,IAAI,MAAM,CAAC,UAAU,EAAE;YACrB,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SAC5C;QACD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACjC,CAAC;IAED;;;;;;;;;;OAUG;IACI,KAAK,CAAC,UAAU,CACrB,KAAiB,EACjB,cAA2B,EAAE,EAC7B,kBAAkC,EAAE;;QAEpC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAEpC,MAAM,OAAO,GAAQ,EAAE,CAAC;QACxB,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC9C,OAAO,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,aAAiC,CAAC,CAAC;SACnE;QACD,IAAI,CAAC,iCAAiC,CAAC,OAAO,CAAC,CAAC;QAEhD,MAAM,SAAS,GAA4B;YACzC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,eAAe,EAAE,CAAC;YAC1E,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,eAAe,EAAE,CAAC;SAC3E,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,eAAe,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;YAC1G,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,eAAe,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;QAC5G,CAAC,CAAC,CAAC;QAEH,MAAM,eAAe,GAAoB;YACvC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE;gBACJ,GAAG,SAAS;gBACZ,GAAG,OAAO;aACX;YACD,mBAAmB,EAAE,wBAAwB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,GAAG;SAC3E,CAAC;QAEF,IAAI,MAAA,WAAW,CAAC,EAAE,0CAAE,MAAM,EAAE;YAC1B,8CAA8C;YAC9C,qDAAqD;YACrD,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE,EAAE;gBACrD,GAAG,EAAE,eAAe;aACrB,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;SACd;QAED,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAEvC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACI,KAAK,CAAC,UAAU,CAAC,WAA2B,EAAE,cAA2B,EAAE;;QAChF,MAAM,kBAAkB,GAAuB;YAC7C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG,EAAE;gBACH,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;gBACrD,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;aACtD;YACD,mBAAmB,EAAE,oBAAoB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,GAAG;SACvE,CAAC;QAEF,IAAI,MAAA,WAAW,CAAC,EAAE,0CAAE,MAAM,EAAE;YAC1B,8EAA8E;YAC9E,OAAO,kBAAkB,CAAC,mBAAmB,CAAC;YAC9C,8CAA8C;YAC9C,qDAAqD;YACrD,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE,EAAE;gBACrD,MAAM,EAAE,kBAAkB;aAC3B,CAAC,CAAC;YACH,OAAO,CAAC,CAAC;SACV;QAED,IAAI;YACF,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;SAC9C;QAAC,OAAO,CAAM,EAAE;YACf,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,iCAAiC,EAAE;gBACrD,OAAO,CAAC,CAAC;aACV;YACD,MAAM,CAAC,CAAC;SACT;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;;;OAIG;IACO,WAAW,CAAC,IAA6B;QACjD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACzC,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gBAC/C,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ,EAAE;oBACvC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAW,CAAC,CAAC;iBACzD;qBAAM;oBACL,MAAM,IAAI,+CAAsB,CAAC,UAAU,SAAS,gDAAgD,CAAC,CAAC;iBACvG;aACF;SACF;QACD,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAES,iCAAiC,CAAC,IAA6B;QACvE,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACzC,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gBAC/C,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;aACnD;SACF;IACH,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,IAAoB;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;OAMG;IACO,KAAK,CAAC,IAAoB;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACO,MAAM,CAAC,IAAoB,EAAE,aAA+B;;QACpE,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC/C,IAAI,SAAS,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YAC/C,MAAM,IAAI,yBAAqB,CAC7B,sDAAsD,aAAa,eAAe,IAAI,CAAC,UAAU,EAAE,CACpG,CAAC;SACH;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACjD,MAAM,YAAY,GAAqD,CAAC,OAAO;YAC7E,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACpB,OAAO;oBACL,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAgB;oBAC3C,WAAW,EAAE,KAAK;iBACnB,CAAC;YACJ,CAAC,CAAC,CAAC;QAEP,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YACvC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;gBAC7B,MAAM,IAAI,yBAAqB,CAC7B,cAAc,MAAM,CAAC,KAAK,CAAC,mDAAmD,IAAI,CAAC,UAAU,EAAE,CAChG,CAAC;aACH;YACD,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,mCAAI,EAAE,CAAC,CAAC,CAAC;SACvF;QAED,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACrD,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,EAAE;YACvB,MAAM,IAAI,yBAAqB,CAC7B,+DAA+D,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAC3F,IAAI,CAAC,UACP,MAAM,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CACjC,CAAC;SACH;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACK,oBAAoB,CAAC,YAAoB;QAC/C,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,IAAI,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAChG,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,IAAI,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAChG,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACK,uBAAuB,CAAC,KAAc;QAC5C,sDAAsD;QACtD,iCAAiC;QACjC,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,KAA4B,CAAC,CAAC;QAC5D,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;QACrD,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3F,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,MAAM,IAAI,wBAAoB,CAAC,+BAA+B,IAAI,CAAC,UAAU,KAAK,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAClH;IACH,CAAC;CACF;AAtjBD,gEAsjBC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractDynamoDbRepository.spec.d.ts","sourceRoot":"","sources":["../../src/dynamodb/AbstractDynamoDbRepository.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAgB,MAAM,8BAA8B,CAAC;AAoBxF,OAAO,EAAE,eAAe,EAAe,MAAM,mBAAmB,CAAC;AAIjE,OAAO,0BAA0B,CAAC;AAQlC,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,cAAM,QAAS,YAAW,SAAS;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;gBAEV,IAAI,GAAE,OAAO,CAAC,SAAS,CAAM;CAoB1C;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,kBAAkB,CAAC;CAC9B,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;AAgC9D,cAAM,kBAAmB,SAAQ,0BAA0B,CAAC,SAAS,EAAE,QAAQ,CAAC;gBAClE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa;CAGxD"}
1
+ {"version":3,"file":"AbstractDynamoDbRepository.spec.d.ts","sourceRoot":"","sources":["../../src/dynamodb/AbstractDynamoDbRepository.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAgB,MAAM,8BAA8B,CAAC;AAsBxF,OAAO,EAAE,eAAe,EAAe,MAAM,mBAAmB,CAAC;AAIjE,OAAO,0BAA0B,CAAC;AAQlC,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,cAAM,QAAS,YAAW,SAAS;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;gBAEV,IAAI,GAAE,OAAO,CAAC,SAAS,CAAM;CAoB1C;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,kBAAkB,CAAC;CAC9B,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;AAgC9D,cAAM,kBAAmB,SAAQ,0BAA0B,CAAC,SAAS,EAAE,QAAQ,CAAC;gBAClE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa;CAGxD"}
@@ -460,6 +460,146 @@ describe('AbstractRepository', () => {
460
460
  }),
461
461
  ]);
462
462
  });
463
+ it('should retry if unprocessed keys returned', async () => {
464
+ const input1 = {
465
+ RequestItems: {
466
+ [TABLE_NAME]: {
467
+ Keys: [
468
+ { pk: 'test_item#foo', sk: '#meta' },
469
+ { pk: 'test_item#foo2', sk: '#meta' },
470
+ ],
471
+ },
472
+ },
473
+ };
474
+ const input2 = {
475
+ RequestItems: {
476
+ [TABLE_NAME]: {
477
+ Keys: [{ pk: 'test_item#foo2', sk: '#meta' }],
478
+ },
479
+ },
480
+ };
481
+ ddbClientMock.on(lib_dynamodb_1.BatchGetCommand, input1).resolves({
482
+ $metadata: {
483
+ httpStatusCode: 200,
484
+ },
485
+ Responses: {
486
+ [TABLE_NAME]: [
487
+ {
488
+ name: 'foo',
489
+ age: 99,
490
+ country: 'au',
491
+ data: {},
492
+ data2: '{"foo":"bar","num":123}',
493
+ },
494
+ ],
495
+ },
496
+ UnprocessedKeys: {
497
+ [TABLE_NAME]: {
498
+ Keys: [{ pk: 'test_item#foo2', sk: '#meta' }],
499
+ },
500
+ },
501
+ });
502
+ ddbClientMock.on(lib_dynamodb_1.BatchGetCommand, input2).resolves({
503
+ $metadata: {
504
+ httpStatusCode: 200,
505
+ },
506
+ Responses: {
507
+ [TABLE_NAME]: [
508
+ {
509
+ name: 'foo2',
510
+ age: 999,
511
+ country: 'au',
512
+ data: {},
513
+ data2: '{"foo":"bar","num":123}',
514
+ },
515
+ ],
516
+ },
517
+ UnprocessedKeys: {},
518
+ });
519
+ const requestItems = [{ name: 'foo' }, { name: 'foo2' }];
520
+ const result = await repository.getItems(requestItems);
521
+ expect(ddbClientMock).toHaveReceivedNthCommandWith(1, lib_dynamodb_1.BatchGetCommand, input1);
522
+ expect(ddbClientMock).toHaveReceivedNthCommandWith(2, lib_dynamodb_1.BatchGetCommand, input2);
523
+ expect(result).toEqual([
524
+ new TestItem({
525
+ name: 'foo',
526
+ age: 99,
527
+ country: 'au',
528
+ data: {},
529
+ data2: {
530
+ foo: 'bar',
531
+ num: 123,
532
+ },
533
+ }),
534
+ new TestItem({
535
+ name: 'foo2',
536
+ age: 999,
537
+ country: 'au',
538
+ data: {},
539
+ data2: {
540
+ foo: 'bar',
541
+ num: 123,
542
+ },
543
+ }),
544
+ ]);
545
+ });
546
+ it('should fail after max retries for unprocessed keys', async () => {
547
+ const input1 = {
548
+ RequestItems: {
549
+ [TABLE_NAME]: {
550
+ Keys: [
551
+ { pk: 'test_item#foo', sk: '#meta' },
552
+ { pk: 'test_item#foo2', sk: '#meta' },
553
+ ],
554
+ },
555
+ },
556
+ };
557
+ const input2 = {
558
+ RequestItems: {
559
+ [TABLE_NAME]: {
560
+ Keys: [{ pk: 'test_item#foo2', sk: '#meta' }],
561
+ },
562
+ },
563
+ };
564
+ ddbClientMock.on(lib_dynamodb_1.BatchGetCommand, input1).resolves({
565
+ $metadata: {
566
+ httpStatusCode: 200,
567
+ },
568
+ Responses: {
569
+ [TABLE_NAME]: [
570
+ {
571
+ name: 'foo',
572
+ age: 99,
573
+ country: 'au',
574
+ data: {},
575
+ data2: '{"foo":"bar","num":123}',
576
+ },
577
+ ],
578
+ },
579
+ UnprocessedKeys: {
580
+ [TABLE_NAME]: {
581
+ Keys: [{ pk: 'test_item#foo2', sk: '#meta' }],
582
+ },
583
+ },
584
+ });
585
+ ddbClientMock.on(lib_dynamodb_1.BatchGetCommand, input2).resolves({
586
+ $metadata: {
587
+ httpStatusCode: 200,
588
+ },
589
+ Responses: {},
590
+ UnprocessedKeys: {
591
+ [TABLE_NAME]: {
592
+ Keys: [{ pk: 'test_item#foo2', sk: '#meta' }],
593
+ },
594
+ },
595
+ });
596
+ const requestItems = [{ name: 'foo' }, { name: 'foo2' }];
597
+ await expect(repository.getItems(requestItems)).rejects.toEqual(new Error('Maximum allowed retries exceeded for unprocessed items'));
598
+ expect(ddbClientMock).toHaveReceivedNthCommandWith(1, lib_dynamodb_1.BatchGetCommand, input1);
599
+ expect(ddbClientMock).toHaveReceivedNthCommandWith(2, lib_dynamodb_1.BatchGetCommand, input2);
600
+ expect(ddbClientMock).toHaveReceivedNthCommandWith(3, lib_dynamodb_1.BatchGetCommand, input2);
601
+ expect(ddbClientMock).toHaveReceivedNthCommandWith(4, lib_dynamodb_1.BatchGetCommand, input2);
602
+ });
463
603
  it('should request BatchGetItem in batch of 100 items to get result', async () => {
464
604
  ddbClientMock.on(lib_dynamodb_1.BatchGetCommand).resolves({
465
605
  $metadata: {
@@ -504,6 +644,190 @@ describe('AbstractRepository', () => {
504
644
  await expect(repository.getItems(requestItems)).rejects.toEqual(new __1.MissingKeyValuesError('Key field "name" must be specified in the input item in entity test-item-entity'));
505
645
  });
506
646
  });
647
+ describe('deleteItems()', () => {
648
+ it('should use batchWrite() to get result', async () => {
649
+ ddbClientMock.on(lib_dynamodb_1.BatchWriteCommand).resolves({
650
+ $metadata: {
651
+ httpStatusCode: 200,
652
+ },
653
+ ItemCollectionMetrics: {
654
+ [TABLE_NAME]: [{}],
655
+ },
656
+ });
657
+ const input = {
658
+ RequestItems: {
659
+ [TABLE_NAME]: [
660
+ {
661
+ DeleteRequest: {
662
+ Key: { pk: 'test_item#foo', sk: '#meta' },
663
+ },
664
+ },
665
+ {
666
+ DeleteRequest: {
667
+ Key: { pk: 'test_item#foo2', sk: '#meta' },
668
+ },
669
+ },
670
+ ],
671
+ },
672
+ };
673
+ const requestItems = [{ name: 'foo' }, { name: 'foo2' }];
674
+ await repository.deleteItems(requestItems);
675
+ expect(ddbClientMock).toHaveReceivedCommandWith(lib_dynamodb_1.BatchWriteCommand, input);
676
+ });
677
+ it('should use re-try if unprocessed items returned', async () => {
678
+ const input1 = {
679
+ RequestItems: {
680
+ [TABLE_NAME]: [
681
+ {
682
+ DeleteRequest: {
683
+ Key: { pk: 'test_item#foo', sk: '#meta' },
684
+ },
685
+ },
686
+ {
687
+ DeleteRequest: {
688
+ Key: { pk: 'test_item#foo2', sk: '#meta' },
689
+ },
690
+ },
691
+ ],
692
+ },
693
+ };
694
+ const input2 = {
695
+ RequestItems: {
696
+ [TABLE_NAME]: [
697
+ {
698
+ DeleteRequest: {
699
+ Key: { pk: 'test_item#foo2', sk: '#meta' },
700
+ },
701
+ },
702
+ ],
703
+ },
704
+ };
705
+ ddbClientMock.on(lib_dynamodb_1.BatchWriteCommand, input1).resolves({
706
+ $metadata: {
707
+ httpStatusCode: 200,
708
+ },
709
+ UnprocessedItems: {
710
+ [TABLE_NAME]: [
711
+ {
712
+ DeleteRequest: {
713
+ Key: { pk: 'test_item#foo2', sk: '#meta' },
714
+ },
715
+ },
716
+ ],
717
+ },
718
+ });
719
+ ddbClientMock.on(lib_dynamodb_1.BatchWriteCommand, input2).resolves({
720
+ $metadata: {
721
+ httpStatusCode: 200,
722
+ },
723
+ UnprocessedItems: {},
724
+ });
725
+ const requestItems = [{ name: 'foo' }, { name: 'foo2' }];
726
+ await repository.deleteItems(requestItems);
727
+ expect(ddbClientMock).toHaveReceivedNthCommandWith(1, lib_dynamodb_1.BatchWriteCommand, input1);
728
+ expect(ddbClientMock).toHaveReceivedNthCommandWith(2, lib_dynamodb_1.BatchWriteCommand, input2);
729
+ });
730
+ it('should fail after max number of retries', async () => {
731
+ const input1 = {
732
+ RequestItems: {
733
+ [TABLE_NAME]: [
734
+ {
735
+ DeleteRequest: {
736
+ Key: { pk: 'test_item#foo', sk: '#meta' },
737
+ },
738
+ },
739
+ {
740
+ DeleteRequest: {
741
+ Key: { pk: 'test_item#foo2', sk: '#meta' },
742
+ },
743
+ },
744
+ ],
745
+ },
746
+ };
747
+ const input2 = {
748
+ RequestItems: {
749
+ [TABLE_NAME]: [
750
+ {
751
+ DeleteRequest: {
752
+ Key: { pk: 'test_item#foo2', sk: '#meta' },
753
+ },
754
+ },
755
+ ],
756
+ },
757
+ };
758
+ ddbClientMock.on(lib_dynamodb_1.BatchWriteCommand).resolves({
759
+ $metadata: {
760
+ httpStatusCode: 200,
761
+ },
762
+ UnprocessedItems: {
763
+ [TABLE_NAME]: [
764
+ {
765
+ DeleteRequest: {
766
+ Key: { pk: 'test_item#foo2', sk: '#meta' },
767
+ },
768
+ },
769
+ ],
770
+ },
771
+ });
772
+ const requestItems = [{ name: 'foo' }, { name: 'foo2' }];
773
+ await expect(repository.deleteItems(requestItems)).rejects.toEqual(new Error('Maximum allowed retries exceeded for unprocessed items'));
774
+ expect(ddbClientMock).toHaveReceivedNthCommandWith(1, lib_dynamodb_1.BatchWriteCommand, input1);
775
+ expect(ddbClientMock).toHaveReceivedNthCommandWith(2, lib_dynamodb_1.BatchWriteCommand, input2);
776
+ expect(ddbClientMock).toHaveReceivedNthCommandWith(3, lib_dynamodb_1.BatchWriteCommand, input2);
777
+ expect(ddbClientMock).toHaveReceivedNthCommandWith(4, lib_dynamodb_1.BatchWriteCommand, input2);
778
+ });
779
+ it('should request batchWrite in batch of 25 items to get result', async () => {
780
+ ddbClientMock.on(lib_dynamodb_1.BatchWriteCommand).resolves({
781
+ $metadata: {
782
+ httpStatusCode: 200,
783
+ },
784
+ });
785
+ const requestItems = [];
786
+ for (let i = 0; i < 30; i++) {
787
+ requestItems.push({ name: `foo${i}` });
788
+ }
789
+ // keys for first batch request
790
+ const keys1 = [];
791
+ for (let i = 0; i < 25; i++) {
792
+ keys1.push({ pk: `test_item#foo${i}`, sk: '#meta' });
793
+ }
794
+ // keys for second batch request
795
+ const keys2 = [];
796
+ for (let i = 25; i < 30; i++) {
797
+ keys2.push({ pk: `test_item#foo${i}`, sk: '#meta' });
798
+ }
799
+ const input1 = {
800
+ RequestItems: {
801
+ [TABLE_NAME]: keys1.map((key) => {
802
+ return {
803
+ DeleteRequest: {
804
+ Key: key,
805
+ },
806
+ };
807
+ }),
808
+ },
809
+ };
810
+ const input2 = {
811
+ RequestItems: {
812
+ [TABLE_NAME]: keys2.map((key) => {
813
+ return {
814
+ DeleteRequest: {
815
+ Key: key,
816
+ },
817
+ };
818
+ }),
819
+ },
820
+ };
821
+ await repository.deleteItems(requestItems);
822
+ expect(ddbClientMock).toHaveReceivedCommandTimes(lib_dynamodb_1.BatchWriteCommand, 2);
823
+ expect(ddbClientMock).toHaveReceivedNthCommandWith(1, lib_dynamodb_1.BatchWriteCommand, input1);
824
+ expect(ddbClientMock).toHaveReceivedNthCommandWith(2, lib_dynamodb_1.BatchWriteCommand, input2);
825
+ });
826
+ it('should throw error if any input item does not includes key field(s)', async () => {
827
+ const requestItems = [{ name: 'foo' }, { age: 22 }];
828
+ await expect(repository.deleteItems(requestItems)).rejects.toEqual(new __1.MissingKeyValuesError('Key field "name" must be specified in the input item in entity test-item-entity'));
829
+ });
830
+ });
507
831
  describe('queryItems()', () => {
508
832
  it('should return the items if found', async () => {
509
833
  ddbClientMock.on(lib_dynamodb_1.QueryCommand).resolves({