@squiz/db-lib 1.71.2 → 1.72.0
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 +19 -0
- package/lib/AbstractRepository.d.ts +2 -0
- package/lib/AbstractRepository.d.ts.map +1 -0
- package/lib/AbstractRepository.integration.spec.d.ts +1 -0
- package/lib/AbstractRepository.integration.spec.d.ts.map +1 -0
- package/lib/AbstractRepository.integration.spec.js +118 -0
- package/lib/AbstractRepository.integration.spec.js.map +1 -0
- package/lib/AbstractRepository.js +187 -0
- package/lib/AbstractRepository.js.map +1 -0
- package/lib/ConnectionManager.d.ts +1 -0
- package/lib/ConnectionManager.d.ts.map +1 -0
- package/lib/ConnectionManager.js +58 -0
- package/lib/ConnectionManager.js.map +1 -0
- package/lib/Migrator.d.ts +1 -0
- package/lib/Migrator.d.ts.map +1 -0
- package/lib/Migrator.js +160 -0
- package/lib/Migrator.js.map +1 -0
- package/lib/PostgresErrorCodes.d.ts +1 -0
- package/lib/PostgresErrorCodes.d.ts.map +1 -0
- package/lib/PostgresErrorCodes.js +274 -0
- package/lib/PostgresErrorCodes.js.map +1 -0
- package/lib/Repositories.d.ts +1 -0
- package/lib/Repositories.d.ts.map +1 -0
- package/lib/Repositories.js +3 -0
- package/lib/Repositories.js.map +1 -0
- package/lib/dynamodb/AbstractDynamoDbRepository.d.ts +50 -9
- package/lib/dynamodb/AbstractDynamoDbRepository.d.ts.map +1 -0
- package/lib/dynamodb/AbstractDynamoDbRepository.js +456 -0
- package/lib/dynamodb/AbstractDynamoDbRepository.js.map +1 -0
- package/lib/dynamodb/AbstractDynamoDbRepository.spec.d.ts +1 -0
- package/lib/dynamodb/AbstractDynamoDbRepository.spec.d.ts.map +1 -0
- package/lib/dynamodb/AbstractDynamoDbRepository.spec.js +924 -0
- package/lib/dynamodb/AbstractDynamoDbRepository.spec.js.map +1 -0
- package/lib/dynamodb/DynamoDbManager.d.ts +1 -0
- package/lib/dynamodb/DynamoDbManager.d.ts.map +1 -0
- package/lib/dynamodb/DynamoDbManager.js +66 -0
- package/lib/dynamodb/DynamoDbManager.js.map +1 -0
- package/lib/dynamodb/getDynamoDbOptions.d.ts +1 -0
- package/lib/dynamodb/getDynamoDbOptions.d.ts.map +1 -0
- package/lib/dynamodb/getDynamoDbOptions.js +15 -0
- package/lib/dynamodb/getDynamoDbOptions.js.map +1 -0
- package/lib/error/DuplicateItemError.d.ts +1 -0
- package/lib/error/DuplicateItemError.d.ts.map +1 -0
- package/lib/error/DuplicateItemError.js +12 -0
- package/lib/error/DuplicateItemError.js.map +1 -0
- package/lib/error/InvalidDataFormatError.d.ts +1 -0
- package/lib/error/InvalidDataFormatError.d.ts.map +1 -0
- package/lib/error/InvalidDataFormatError.js +12 -0
- package/lib/error/InvalidDataFormatError.js.map +1 -0
- package/lib/error/InvalidDbSchemaError.d.ts +1 -0
- package/lib/error/InvalidDbSchemaError.d.ts.map +1 -0
- package/lib/error/InvalidDbSchemaError.js +12 -0
- package/lib/error/InvalidDbSchemaError.js.map +1 -0
- package/lib/error/MissingKeyValuesError.d.ts +1 -0
- package/lib/error/MissingKeyValuesError.d.ts.map +1 -0
- package/lib/error/MissingKeyValuesError.js +12 -0
- package/lib/error/MissingKeyValuesError.js.map +1 -0
- package/lib/error/TransactionError.d.ts +1 -0
- package/lib/error/TransactionError.d.ts.map +1 -0
- package/lib/error/TransactionError.js +12 -0
- package/lib/error/TransactionError.js.map +1 -0
- package/lib/getConnectionInfo.d.ts +1 -0
- package/lib/getConnectionInfo.d.ts.map +1 -0
- package/lib/getConnectionInfo.js +30 -0
- package/lib/getConnectionInfo.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +33 -70416
- package/lib/index.js.map +1 -7
- package/package.json +5 -5
- package/src/AbstractRepository.ts +26 -20
- package/src/dynamodb/AbstractDynamoDbRepository.spec.ts +289 -37
- package/src/dynamodb/AbstractDynamoDbRepository.ts +140 -31
- package/src/dynamodb/getDynamoDbOptions.ts +1 -1
- package/tsconfig.json +5 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/build.js +0 -31
@@ -0,0 +1,456 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.AbstractDynamoDbRepository = void 0;
|
4
|
+
const __1 = require("..");
|
5
|
+
const InvalidDataFormatError_1 = require("../error/InvalidDataFormatError");
|
6
|
+
class AbstractDynamoDbRepository {
|
7
|
+
constructor(tableName, dbManager, entityName, entityDefinition, classRef) {
|
8
|
+
this.tableName = tableName;
|
9
|
+
this.dbManager = dbManager;
|
10
|
+
this.entityName = entityName;
|
11
|
+
this.entityDefinition = entityDefinition;
|
12
|
+
this.classRef = classRef;
|
13
|
+
this.client = dbManager.client;
|
14
|
+
this.keys = entityDefinition.keys;
|
15
|
+
this.indexes = entityDefinition.indexes;
|
16
|
+
this.fieldsAsJsonString = entityDefinition.fieldsAsJsonString;
|
17
|
+
this.keysFormat = {
|
18
|
+
[this.keys.pk.attributeName]: this.keys.pk.format,
|
19
|
+
[this.keys.sk.attributeName]: this.keys.sk.format,
|
20
|
+
};
|
21
|
+
Object.keys(this.indexes).forEach((key) => {
|
22
|
+
const index = this.indexes[key];
|
23
|
+
this.keysFormat[index.pk.attributeName] = index.pk.format;
|
24
|
+
this.keysFormat[index.sk.attributeName] = index.sk.format;
|
25
|
+
});
|
26
|
+
}
|
27
|
+
/**
|
28
|
+
* Get the single item matching the key fields value in the given
|
29
|
+
* partial item. Will throw MissingKeyValuesError if key field values
|
30
|
+
* are missing
|
31
|
+
*
|
32
|
+
* @param item
|
33
|
+
*
|
34
|
+
* @throws MissingKeyValuesError
|
35
|
+
*/
|
36
|
+
async getItem(item) {
|
37
|
+
const output = await this.client.get({
|
38
|
+
TableName: this.tableName,
|
39
|
+
Key: {
|
40
|
+
[this.keys.pk.attributeName]: this.getPk(item),
|
41
|
+
[this.keys.sk.attributeName]: this.getSk(item),
|
42
|
+
},
|
43
|
+
});
|
44
|
+
if (output.Item === undefined) {
|
45
|
+
return undefined;
|
46
|
+
}
|
47
|
+
return this.hydrateItem(output.Item);
|
48
|
+
}
|
49
|
+
/**
|
50
|
+
* Get the single item each matching the key fields value in the given
|
51
|
+
* partial items. Will throw MissingKeyValuesError if key field values
|
52
|
+
* are missing
|
53
|
+
* Uses batchGet() to request 100 items in a batch
|
54
|
+
*
|
55
|
+
* @param item
|
56
|
+
*
|
57
|
+
* @throws MissingKeyValuesError
|
58
|
+
*/
|
59
|
+
async getItems(items) {
|
60
|
+
// this is the maximum items allowed by BatchGetItem()
|
61
|
+
const batchSize = 100;
|
62
|
+
let result = [];
|
63
|
+
for (let i = 0; i < items.length; i += batchSize) {
|
64
|
+
const batchResult = await this.getBatchItems(items.slice(i, i + batchSize));
|
65
|
+
result = result.concat(batchResult);
|
66
|
+
}
|
67
|
+
return result;
|
68
|
+
}
|
69
|
+
/**
|
70
|
+
* Returns the batch items from the items primary key
|
71
|
+
*
|
72
|
+
* @param items
|
73
|
+
* @returns
|
74
|
+
*/
|
75
|
+
async getBatchItems(items) {
|
76
|
+
const keys = [];
|
77
|
+
for (const item of items) {
|
78
|
+
keys.push({
|
79
|
+
[this.keys.pk.attributeName]: this.getPk(item),
|
80
|
+
[this.keys.sk.attributeName]: this.getSk(item),
|
81
|
+
});
|
82
|
+
}
|
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 [];
|
94
|
+
}
|
95
|
+
/**
|
96
|
+
* Finds all the items matching the partition key or
|
97
|
+
* the gsi key (when gsi index name is specified)
|
98
|
+
*
|
99
|
+
* @param item
|
100
|
+
* @param options
|
101
|
+
* @throws MissingKeyValuesError
|
102
|
+
*/
|
103
|
+
async queryItems(item, options) {
|
104
|
+
var _a, _b;
|
105
|
+
const useSortKey = (options === null || options === void 0 ? void 0 : options.useSortKey) || (options === null || options === void 0 ? void 0 : options.filter);
|
106
|
+
const index = options === null || options === void 0 ? void 0 : options.index;
|
107
|
+
let pkName = this.keys.pk.attributeName;
|
108
|
+
let skName = this.keys.sk.attributeName;
|
109
|
+
let indexName = null;
|
110
|
+
if (index) {
|
111
|
+
if (this.indexes[index] === undefined) {
|
112
|
+
throw new __1.MissingKeyValuesError(`Table index '${index}' not defined on entity ${this.entityName}`);
|
113
|
+
}
|
114
|
+
indexName = index;
|
115
|
+
pkName = this.indexes[index].pk.attributeName;
|
116
|
+
skName = this.indexes[index].sk.attributeName;
|
117
|
+
}
|
118
|
+
const pk = this.getKey(item, pkName);
|
119
|
+
const keyConditionExpression = ['#pkName = :pkValue'];
|
120
|
+
const expressionAttributeNames = { '#pkName': pkName };
|
121
|
+
const expressionAttributeValues = { ':pkValue': pk };
|
122
|
+
if (useSortKey) {
|
123
|
+
const sk = (_b = (_a = options === null || options === void 0 ? void 0 : options.filter) === null || _a === void 0 ? void 0 : _a.keyword) !== null && _b !== void 0 ? _b : this.getKey(item, skName);
|
124
|
+
keyConditionExpression.push(this.getFilterKeyConditionExpression(options === null || options === void 0 ? void 0 : options.filter));
|
125
|
+
expressionAttributeNames['#skName'] = skName;
|
126
|
+
expressionAttributeValues[':skValue'] = sk;
|
127
|
+
}
|
128
|
+
const queryCommandInput = {
|
129
|
+
TableName: this.tableName,
|
130
|
+
KeyConditionExpression: keyConditionExpression.join(' AND '),
|
131
|
+
ExpressionAttributeNames: expressionAttributeNames,
|
132
|
+
ExpressionAttributeValues: expressionAttributeValues,
|
133
|
+
};
|
134
|
+
if (indexName) {
|
135
|
+
queryCommandInput['IndexName'] = String(indexName);
|
136
|
+
}
|
137
|
+
if ((options === null || options === void 0 ? void 0 : options.order) !== undefined) {
|
138
|
+
queryCommandInput.ScanIndexForward = options.order === 'asc';
|
139
|
+
}
|
140
|
+
if ((options === null || options === void 0 ? void 0 : options.limit) !== undefined) {
|
141
|
+
queryCommandInput.Limit = options.limit;
|
142
|
+
}
|
143
|
+
const output = await this.client.query(queryCommandInput);
|
144
|
+
return !output.Items ? [] : output.Items.map((item) => this.hydrateItem(item));
|
145
|
+
}
|
146
|
+
/**
|
147
|
+
* Evaluate filter condition for sort key
|
148
|
+
* @param filter
|
149
|
+
* @returns string
|
150
|
+
*/
|
151
|
+
getFilterKeyConditionExpression(filter) {
|
152
|
+
if (filter === undefined) {
|
153
|
+
return '#skName = :skValue';
|
154
|
+
}
|
155
|
+
else if (filter.type === 'begins_with') {
|
156
|
+
return 'begins_with(#skName, :skValue)';
|
157
|
+
}
|
158
|
+
throw new Error(`Invalid query filter type: ${filter === null || filter === void 0 ? void 0 : filter.type}`);
|
159
|
+
}
|
160
|
+
/**
|
161
|
+
* Update the existing item matching the key fields value
|
162
|
+
* in the passed newValue
|
163
|
+
* @param newValue
|
164
|
+
* @param transaction
|
165
|
+
*
|
166
|
+
* @returns Promise<SHAPE | undefined>
|
167
|
+
* @throws MissingKeyValuesError
|
168
|
+
*/
|
169
|
+
async updateItem(newValue, transaction = {}) {
|
170
|
+
var _a, _b;
|
171
|
+
const oldValue = await this.getItem(newValue);
|
172
|
+
if (oldValue === undefined) {
|
173
|
+
return undefined;
|
174
|
+
}
|
175
|
+
const value = { ...oldValue, ...newValue };
|
176
|
+
this.assertValueMatchesModel(value);
|
177
|
+
this.convertSelectedValuesToJsonString(newValue);
|
178
|
+
const updateExpression = [];
|
179
|
+
const expressionAttributeNames = {};
|
180
|
+
const expressionAttributeValues = {};
|
181
|
+
for (const modelProperty of Object.keys(newValue)) {
|
182
|
+
const propValue = (_a = newValue[modelProperty]) !== null && _a !== void 0 ? _a : null;
|
183
|
+
if (propValue === oldValue[modelProperty]) {
|
184
|
+
// don't need to update the properties that are unchanged
|
185
|
+
continue;
|
186
|
+
}
|
187
|
+
const propName = `#${modelProperty}`;
|
188
|
+
const propValuePlaceHolder = `:${modelProperty}`;
|
189
|
+
updateExpression.push(`${propName} = ${propValuePlaceHolder}`);
|
190
|
+
expressionAttributeNames[propName] = modelProperty;
|
191
|
+
expressionAttributeValues[propValuePlaceHolder] = propValue;
|
192
|
+
}
|
193
|
+
if (!updateExpression.length) {
|
194
|
+
// nothing to update
|
195
|
+
return value;
|
196
|
+
}
|
197
|
+
const updateCommandInput = {
|
198
|
+
TableName: this.tableName,
|
199
|
+
Key: {
|
200
|
+
[this.keys.pk.attributeName]: this.getPk(newValue),
|
201
|
+
[this.keys.sk.attributeName]: this.getSk(newValue),
|
202
|
+
},
|
203
|
+
UpdateExpression: 'SET ' + updateExpression.join(','),
|
204
|
+
ExpressionAttributeValues: expressionAttributeValues,
|
205
|
+
ExpressionAttributeNames: expressionAttributeNames,
|
206
|
+
ConditionExpression: `attribute_exists(${this.keys.pk.attributeName})`,
|
207
|
+
};
|
208
|
+
if ((_b = transaction.id) === null || _b === void 0 ? void 0 : _b.length) {
|
209
|
+
// this command will be executed together with
|
210
|
+
// other db write commands in the "transaction" block
|
211
|
+
this.dbManager.addWriteTransactionItem(transaction.id, {
|
212
|
+
Update: updateCommandInput,
|
213
|
+
});
|
214
|
+
return new this.classRef(value);
|
215
|
+
}
|
216
|
+
let output;
|
217
|
+
try {
|
218
|
+
output = await this.client.update({
|
219
|
+
...updateCommandInput,
|
220
|
+
ReturnValues: 'ALL_NEW',
|
221
|
+
});
|
222
|
+
}
|
223
|
+
catch (e) {
|
224
|
+
if (e && e.name === 'ConditionalCheckFailedException') {
|
225
|
+
return undefined;
|
226
|
+
}
|
227
|
+
throw e;
|
228
|
+
}
|
229
|
+
let item = undefined;
|
230
|
+
if (output.Attributes) {
|
231
|
+
item = this.hydrateItem(output.Attributes);
|
232
|
+
}
|
233
|
+
return item ? item : undefined;
|
234
|
+
}
|
235
|
+
/**
|
236
|
+
* Adds new item to the table
|
237
|
+
*
|
238
|
+
* @param value
|
239
|
+
* @param transaction
|
240
|
+
* @param additionalValue Additional item properties that are not part of the DATA_CLASS
|
241
|
+
*
|
242
|
+
* @returns Promise<SHAPE>
|
243
|
+
* @throws DuplicateItemError
|
244
|
+
* @throws MissingKeyValuesError
|
245
|
+
*/
|
246
|
+
async createItem(value, transaction = {}, additionalValue = {}) {
|
247
|
+
var _a;
|
248
|
+
this.assertValueMatchesModel(value);
|
249
|
+
const columns = {};
|
250
|
+
for (const modelProperty of Object.keys(value)) {
|
251
|
+
columns[modelProperty] = value[modelProperty];
|
252
|
+
}
|
253
|
+
this.convertSelectedValuesToJsonString(columns);
|
254
|
+
const keyFields = {
|
255
|
+
[this.keys.pk.attributeName]: this.getPk({ ...value, ...additionalValue }),
|
256
|
+
[this.keys.sk.attributeName]: this.getSk({ ...value, ...additionalValue }),
|
257
|
+
};
|
258
|
+
Object.keys(this.indexes).forEach((key) => {
|
259
|
+
const index = this.indexes[key];
|
260
|
+
keyFields[index.pk.attributeName] = this.getKey({ ...value, ...additionalValue }, index.pk.attributeName);
|
261
|
+
keyFields[index.sk.attributeName] = this.getKey({ ...value, ...additionalValue }, index.sk.attributeName);
|
262
|
+
});
|
263
|
+
const putCommandInput = {
|
264
|
+
TableName: this.tableName,
|
265
|
+
Item: {
|
266
|
+
...keyFields,
|
267
|
+
...columns,
|
268
|
+
},
|
269
|
+
ConditionExpression: `attribute_not_exists(${this.keys.pk.attributeName})`,
|
270
|
+
};
|
271
|
+
if ((_a = transaction.id) === null || _a === void 0 ? void 0 : _a.length) {
|
272
|
+
// this command will be executed together with
|
273
|
+
// other db write commands in the "transaction block"
|
274
|
+
this.dbManager.addWriteTransactionItem(transaction.id, {
|
275
|
+
Put: putCommandInput,
|
276
|
+
});
|
277
|
+
return value;
|
278
|
+
}
|
279
|
+
await this.client.put(putCommandInput);
|
280
|
+
return value;
|
281
|
+
}
|
282
|
+
/**
|
283
|
+
* Deletes an item from the table
|
284
|
+
*
|
285
|
+
* @param partialItem
|
286
|
+
* @param transaction
|
287
|
+
* @returns number
|
288
|
+
* @throw MissingKeyValuesError
|
289
|
+
*/
|
290
|
+
async deleteItem(partialItem, transaction = {}) {
|
291
|
+
var _a;
|
292
|
+
const deleteCommandInput = {
|
293
|
+
TableName: this.tableName,
|
294
|
+
Key: {
|
295
|
+
[this.keys.pk.attributeName]: this.getPk(partialItem),
|
296
|
+
[this.keys.sk.attributeName]: this.getSk(partialItem),
|
297
|
+
},
|
298
|
+
ConditionExpression: `attribute_exists(${this.keys.pk.attributeName})`,
|
299
|
+
};
|
300
|
+
if ((_a = transaction.id) === null || _a === void 0 ? void 0 : _a.length) {
|
301
|
+
// For transaction block, don't worry if the item being deleted does not exist
|
302
|
+
delete deleteCommandInput.ConditionExpression;
|
303
|
+
// this command will be executed together with
|
304
|
+
// other db write commands in the "transaction block"
|
305
|
+
this.dbManager.addWriteTransactionItem(transaction.id, {
|
306
|
+
Delete: deleteCommandInput,
|
307
|
+
});
|
308
|
+
return 1;
|
309
|
+
}
|
310
|
+
try {
|
311
|
+
await this.client.delete(deleteCommandInput);
|
312
|
+
}
|
313
|
+
catch (e) {
|
314
|
+
if (e && e.name === 'ConditionalCheckFailedException') {
|
315
|
+
return 0;
|
316
|
+
}
|
317
|
+
throw e;
|
318
|
+
}
|
319
|
+
return 1;
|
320
|
+
}
|
321
|
+
/**
|
322
|
+
* Return repo model object from the db value
|
323
|
+
* @param item
|
324
|
+
* @returns
|
325
|
+
*/
|
326
|
+
hydrateItem(item) {
|
327
|
+
for (const fieldName of Object.keys(item)) {
|
328
|
+
if (this.fieldsAsJsonString.includes(fieldName)) {
|
329
|
+
if (typeof item[fieldName] === 'string') {
|
330
|
+
item[fieldName] = JSON.parse(item[fieldName]);
|
331
|
+
}
|
332
|
+
else {
|
333
|
+
throw new InvalidDataFormatError_1.InvalidDataFormatError(`Field '${fieldName}' defined as JSON String has a non-string data`);
|
334
|
+
}
|
335
|
+
}
|
336
|
+
}
|
337
|
+
return new this.classRef(item);
|
338
|
+
}
|
339
|
+
convertSelectedValuesToJsonString(item) {
|
340
|
+
for (const fieldName of Object.keys(item)) {
|
341
|
+
if (this.fieldsAsJsonString.includes(fieldName)) {
|
342
|
+
item[fieldName] = JSON.stringify(item[fieldName]);
|
343
|
+
}
|
344
|
+
}
|
345
|
+
}
|
346
|
+
/**
|
347
|
+
* Evaluate the partition key value from the partial item
|
348
|
+
* @param item
|
349
|
+
* @returns string
|
350
|
+
* @throw MissingKeyValuesError
|
351
|
+
*/
|
352
|
+
getPk(item) {
|
353
|
+
return this.getKey(item, this.keys.pk.attributeName);
|
354
|
+
}
|
355
|
+
/**
|
356
|
+
* Evaluate the sort key value from the partial item
|
357
|
+
* @param item
|
358
|
+
* @returns string
|
359
|
+
*
|
360
|
+
* @throw MissingKeyValuesError
|
361
|
+
*/
|
362
|
+
getSk(item) {
|
363
|
+
return this.getKey(item, this.keys.sk.attributeName);
|
364
|
+
}
|
365
|
+
/**
|
366
|
+
* Evaluate the key value from the
|
367
|
+
*
|
368
|
+
* Example 1:
|
369
|
+
* Input:
|
370
|
+
* - item: {id: foo, name: 'some-name' }
|
371
|
+
* - attributeName: pk
|
372
|
+
* - this.keysFormat = { pk: 'item#{id}', 'sk': '#meta', ... }
|
373
|
+
* Output:
|
374
|
+
* - 'item#foo'
|
375
|
+
*
|
376
|
+
* Example 2:
|
377
|
+
* Input:
|
378
|
+
* - item: {id: foo, name: 'some-name', itemType: 'A' }
|
379
|
+
* - attributeName: sk
|
380
|
+
* - this.keysFormat = { pk: 'item#{id}', 'sk': 'type#{itemType}', ... }
|
381
|
+
* Output:
|
382
|
+
* - 'type#A'
|
383
|
+
*
|
384
|
+
* Example 3:
|
385
|
+
* Input:
|
386
|
+
* - item: {id: foo, name: 'some-name' }
|
387
|
+
* - attributeName: sk
|
388
|
+
* - this.keysFormat = { pk: 'item#{id}', 'sk': 'name-type#{itemType}{name}', ... }
|
389
|
+
* Output:
|
390
|
+
* - Error: "Key field "itemType" must be specified in the input item"
|
391
|
+
*
|
392
|
+
* @param item
|
393
|
+
* @param attributeName
|
394
|
+
*
|
395
|
+
* @returns string
|
396
|
+
* @throw MissingKeyValuesError
|
397
|
+
*/
|
398
|
+
getKey(item, attributeName) {
|
399
|
+
var _a;
|
400
|
+
let keyFormat = this.keysFormat[attributeName];
|
401
|
+
if (keyFormat == undefined || !keyFormat.length) {
|
402
|
+
throw new __1.MissingKeyValuesError(`Key format not defined or empty for key attribute '${attributeName}' in entity ${this.entityName}`);
|
403
|
+
}
|
404
|
+
const matches = keyFormat.match(/{[a-zA-Z]+?}/g);
|
405
|
+
const replacements = !matches
|
406
|
+
? []
|
407
|
+
: matches.map((match) => {
|
408
|
+
return {
|
409
|
+
property: match.slice(1, -1),
|
410
|
+
placeholder: match,
|
411
|
+
};
|
412
|
+
});
|
413
|
+
for (let i = 0; i < replacements.length; i++) {
|
414
|
+
const field = replacements[i].property;
|
415
|
+
if (item[field] === undefined) {
|
416
|
+
throw new __1.MissingKeyValuesError(`Key field "${String(field)}" must be specified in the input item in entity ${this.entityName}`);
|
417
|
+
}
|
418
|
+
keyFormat = keyFormat.replace(replacements[i].placeholder, String((_a = item[field]) !== null && _a !== void 0 ? _a : ''));
|
419
|
+
}
|
420
|
+
const moreMatches = keyFormat.match(/{[a-zA-Z]+?}/g);
|
421
|
+
if (moreMatches === null || moreMatches === void 0 ? void 0 : moreMatches.length) {
|
422
|
+
throw new __1.MissingKeyValuesError(`Cannot resolve key placeholder(s) for key attribute format '${this.keysFormat[attributeName]} in entity ${this.entityName}: '${moreMatches.join("','")}'`);
|
423
|
+
}
|
424
|
+
return keyFormat;
|
425
|
+
}
|
426
|
+
/**
|
427
|
+
* Whether the given property name is part of the entity's pk/sk string
|
428
|
+
* @param propertyName
|
429
|
+
* @returns boolean
|
430
|
+
*/
|
431
|
+
isPropertyPartOfKeys(propertyName) {
|
432
|
+
if (this.keysFormat[this.keys.pk.attributeName].search(`{${propertyName}}`) !== -1)
|
433
|
+
return true;
|
434
|
+
if (this.keysFormat[this.keys.sk.attributeName].search(`{${propertyName}}`) !== -1)
|
435
|
+
return true;
|
436
|
+
return false;
|
437
|
+
}
|
438
|
+
/**
|
439
|
+
* Validate the data matches with "DATA_MODEL"
|
440
|
+
* @param value
|
441
|
+
* @return void
|
442
|
+
*/
|
443
|
+
assertValueMatchesModel(value) {
|
444
|
+
// Trigger AssertionError if model instantiation fails
|
445
|
+
// see the DATA_CLASS model class
|
446
|
+
const obj = new this.classRef(value);
|
447
|
+
const inputProperties = Object.keys(value);
|
448
|
+
const modelProperties = Object.keys(obj);
|
449
|
+
const excessProperties = inputProperties.filter((prop) => !modelProperties.includes(prop));
|
450
|
+
if (excessProperties.length > 0) {
|
451
|
+
throw new __1.InvalidDbSchemaError(`Excess properties in entity ${this.entityName}: ${excessProperties.join(', ')}`);
|
452
|
+
}
|
453
|
+
}
|
454
|
+
}
|
455
|
+
exports.AbstractDynamoDbRepository = AbstractDynamoDbRepository;
|
456
|
+
//# sourceMappingURL=AbstractDynamoDbRepository.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"AbstractDynamoDbRepository.js","sourceRoot":"","sources":["../../src/dynamodb/AbstractDynamoDbRepository.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +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"}
|