@ftschopp/dynatable-core 1.0.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 +62 -0
- package/README.md +17 -0
- package/dist/builders/batch-get/create-batch-get-builder.d.ts +18 -0
- package/dist/builders/batch-get/create-batch-get-builder.d.ts.map +1 -0
- package/dist/builders/batch-get/create-batch-get-builder.js +71 -0
- package/dist/builders/batch-get/index.d.ts +3 -0
- package/dist/builders/batch-get/index.d.ts.map +1 -0
- package/dist/builders/batch-get/index.js +18 -0
- package/dist/builders/batch-get/types.d.ts +25 -0
- package/dist/builders/batch-get/types.d.ts.map +1 -0
- package/dist/builders/batch-get/types.js +2 -0
- package/dist/builders/batch-write/create-batch-write-builder.d.ts +12 -0
- package/dist/builders/batch-write/create-batch-write-builder.d.ts.map +1 -0
- package/dist/builders/batch-write/create-batch-write-builder.js +35 -0
- package/dist/builders/batch-write/index.d.ts +3 -0
- package/dist/builders/batch-write/index.d.ts.map +1 -0
- package/dist/builders/batch-write/index.js +18 -0
- package/dist/builders/batch-write/types.d.ts +30 -0
- package/dist/builders/batch-write/types.d.ts.map +1 -0
- package/dist/builders/batch-write/types.js +2 -0
- package/dist/builders/delete/create-delete-builder.d.ts +9 -0
- package/dist/builders/delete/create-delete-builder.d.ts.map +1 -0
- package/dist/builders/delete/create-delete-builder.js +72 -0
- package/dist/builders/delete/index.d.ts +3 -0
- package/dist/builders/delete/index.d.ts.map +1 -0
- package/dist/builders/delete/index.js +18 -0
- package/dist/builders/delete/types.d.ts +11 -0
- package/dist/builders/delete/types.d.ts.map +1 -0
- package/dist/builders/delete/types.js +2 -0
- package/dist/builders/get/create-get-builder.d.ts +12 -0
- package/dist/builders/get/create-get-builder.d.ts.map +1 -0
- package/dist/builders/get/create-get-builder.js +95 -0
- package/dist/builders/get/index.d.ts +3 -0
- package/dist/builders/get/index.d.ts.map +1 -0
- package/dist/builders/get/index.js +18 -0
- package/dist/builders/get/types.d.ts +28 -0
- package/dist/builders/get/types.d.ts.map +1 -0
- package/dist/builders/get/types.js +2 -0
- package/dist/builders/index.d.ts +12 -0
- package/dist/builders/index.d.ts.map +1 -0
- package/dist/builders/index.js +29 -0
- package/dist/builders/put/create-put-builder.d.ts +9 -0
- package/dist/builders/put/create-put-builder.d.ts.map +1 -0
- package/dist/builders/put/create-put-builder.js +104 -0
- package/dist/builders/put/index.d.ts +3 -0
- package/dist/builders/put/index.d.ts.map +1 -0
- package/dist/builders/put/index.js +18 -0
- package/dist/builders/put/types.d.ts +17 -0
- package/dist/builders/put/types.d.ts.map +1 -0
- package/dist/builders/put/types.js +2 -0
- package/dist/builders/query/create-query-builder.d.ts +9 -0
- package/dist/builders/query/create-query-builder.d.ts.map +1 -0
- package/dist/builders/query/create-query-builder.js +283 -0
- package/dist/builders/query/index.d.ts +3 -0
- package/dist/builders/query/index.d.ts.map +1 -0
- package/dist/builders/query/index.js +18 -0
- package/dist/builders/query/types.d.ts +79 -0
- package/dist/builders/query/types.d.ts.map +1 -0
- package/dist/builders/query/types.js +2 -0
- package/dist/builders/scan/create-scan-builder.d.ts +12 -0
- package/dist/builders/scan/create-scan-builder.d.ts.map +1 -0
- package/dist/builders/scan/create-scan-builder.js +103 -0
- package/dist/builders/scan/index.d.ts +3 -0
- package/dist/builders/scan/index.d.ts.map +1 -0
- package/dist/builders/scan/index.js +18 -0
- package/dist/builders/scan/types.d.ts +43 -0
- package/dist/builders/scan/types.d.ts.map +1 -0
- package/dist/builders/scan/types.js +2 -0
- package/dist/builders/shared/conditions.d.ts +18 -0
- package/dist/builders/shared/conditions.d.ts.map +1 -0
- package/dist/builders/shared/conditions.js +48 -0
- package/dist/builders/shared/index.d.ts +4 -0
- package/dist/builders/shared/index.d.ts.map +1 -0
- package/dist/builders/shared/index.js +19 -0
- package/dist/builders/shared/operators.d.ts +12 -0
- package/dist/builders/shared/operators.d.ts.map +1 -0
- package/dist/builders/shared/operators.js +197 -0
- package/dist/builders/shared/types.d.ts +77 -0
- package/dist/builders/shared/types.d.ts.map +1 -0
- package/dist/builders/shared/types.js +6 -0
- package/dist/builders/transact-get/create-transact-get-builder.d.ts +18 -0
- package/dist/builders/transact-get/create-transact-get-builder.d.ts.map +1 -0
- package/dist/builders/transact-get/create-transact-get-builder.js +60 -0
- package/dist/builders/transact-get/index.d.ts +3 -0
- package/dist/builders/transact-get/index.d.ts.map +1 -0
- package/dist/builders/transact-get/index.js +18 -0
- package/dist/builders/transact-get/types.d.ts +28 -0
- package/dist/builders/transact-get/types.d.ts.map +1 -0
- package/dist/builders/transact-get/types.js +2 -0
- package/dist/builders/transact-write/create-transact-write-builder.d.ts +18 -0
- package/dist/builders/transact-write/create-transact-write-builder.d.ts.map +1 -0
- package/dist/builders/transact-write/create-transact-write-builder.js +97 -0
- package/dist/builders/transact-write/index.d.ts +3 -0
- package/dist/builders/transact-write/index.d.ts.map +1 -0
- package/dist/builders/transact-write/index.js +18 -0
- package/dist/builders/transact-write/types.d.ts +34 -0
- package/dist/builders/transact-write/types.d.ts.map +1 -0
- package/dist/builders/transact-write/types.js +2 -0
- package/dist/builders/update/create-update-builder.d.ts +14 -0
- package/dist/builders/update/create-update-builder.d.ts.map +1 -0
- package/dist/builders/update/create-update-builder.js +180 -0
- package/dist/builders/update/index.d.ts +3 -0
- package/dist/builders/update/index.d.ts.map +1 -0
- package/dist/builders/update/index.js +18 -0
- package/dist/builders/update/types.d.ts +35 -0
- package/dist/builders/update/types.d.ts.map +1 -0
- package/dist/builders/update/types.js +2 -0
- package/dist/core/types.d.ts +224 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +3 -0
- package/dist/entity.d.ts +73 -0
- package/dist/entity.d.ts.map +1 -0
- package/dist/entity.js +161 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/table.d.ts +70 -0
- package/dist/table.d.ts.map +1 -0
- package/dist/table.js +69 -0
- package/dist/utils/dynamodb-logger.d.ts +118 -0
- package/dist/utils/dynamodb-logger.d.ts.map +1 -0
- package/dist/utils/dynamodb-logger.js +125 -0
- package/dist/utils/model-utils.d.ts +24 -0
- package/dist/utils/model-utils.d.ts.map +1 -0
- package/dist/utils/model-utils.js +88 -0
- package/dist/utils/zod-utils.d.ts +13 -0
- package/dist/utils/zod-utils.d.ts.map +1 -0
- package/dist/utils/zod-utils.js +35 -0
- package/eslint.config.mjs +4 -0
- package/jest.config.js +11 -0
- package/package.json +36 -0
- package/src/builders/README.md +272 -0
- package/src/builders/batch-get/README.md +98 -0
- package/src/builders/batch-get/create-batch-get-builder.test.ts +165 -0
- package/src/builders/batch-get/create-batch-get-builder.ts +106 -0
- package/src/builders/batch-get/index.ts +2 -0
- package/src/builders/batch-get/types.ts +29 -0
- package/src/builders/batch-write/README.md +204 -0
- package/src/builders/batch-write/create-batch-write-builder.test.ts +173 -0
- package/src/builders/batch-write/create-batch-write-builder.ts +49 -0
- package/src/builders/batch-write/index.ts +2 -0
- package/src/builders/batch-write/types.ts +33 -0
- package/src/builders/delete/create-delete-builder.test.ts +294 -0
- package/src/builders/delete/create-delete-builder.ts +100 -0
- package/src/builders/delete/index.ts +2 -0
- package/src/builders/delete/types.ts +11 -0
- package/src/builders/get/create-get-builder.test.ts +272 -0
- package/src/builders/get/create-get-builder.ts +140 -0
- package/src/builders/get/index.ts +2 -0
- package/src/builders/get/types.ts +30 -0
- package/src/builders/index.ts +14 -0
- package/src/builders/put/create-put-builder.test.ts +213 -0
- package/src/builders/put/create-put-builder.ts +151 -0
- package/src/builders/put/index.ts +2 -0
- package/src/builders/put/types.ts +18 -0
- package/src/builders/query/create-query-builder.test.ts +230 -0
- package/src/builders/query/create-query-builder.ts +353 -0
- package/src/builders/query/index.ts +2 -0
- package/src/builders/query/types.ts +95 -0
- package/src/builders/scan/create-scan-builder.test.ts +260 -0
- package/src/builders/scan/create-scan-builder.ts +217 -0
- package/src/builders/scan/index.ts +2 -0
- package/src/builders/scan/types.ts +49 -0
- package/src/builders/shared/conditions.ts +58 -0
- package/src/builders/shared/index.ts +3 -0
- package/src/builders/shared/operators.test.ts +270 -0
- package/src/builders/shared/operators.ts +200 -0
- package/src/builders/shared/types.ts +100 -0
- package/src/builders/transact-get/README.md +167 -0
- package/src/builders/transact-get/create-transact-get-builder.test.ts +239 -0
- package/src/builders/transact-get/create-transact-get-builder.ts +67 -0
- package/src/builders/transact-get/index.ts +2 -0
- package/src/builders/transact-get/types.ts +31 -0
- package/src/builders/transact-write/README.md +166 -0
- package/src/builders/transact-write/create-transact-write-builder.test.ts +288 -0
- package/src/builders/transact-write/create-transact-write-builder.ts +118 -0
- package/src/builders/transact-write/index.ts +2 -0
- package/src/builders/transact-write/types.ts +33 -0
- package/src/builders/update/create-update-builder.test.ts +333 -0
- package/src/builders/update/create-update-builder.ts +284 -0
- package/src/builders/update/index.ts +2 -0
- package/src/builders/update/types.ts +42 -0
- package/src/core/types.test.ts +506 -0
- package/src/core/types.ts +290 -0
- package/src/entity.ts +337 -0
- package/src/index.ts +22 -0
- package/src/table.ts +109 -0
- package/src/utils/dynamodb-logger.test.ts +246 -0
- package/src/utils/dynamodb-logger.ts +175 -0
- package/src/utils/model-utils.test.ts +232 -0
- package/src/utils/model-utils.ts +101 -0
- package/src/utils/zod-utils.test.ts +272 -0
- package/src/utils/zod-utils.ts +36 -0
- package/tests/integration/instagram-clone.integration.test.ts +966 -0
- package/tests/integration/pagination-timestamps.integration.test.ts +375 -0
- package/tests/integration/transactions.integration.test.ts +529 -0
- package/tsconfig.json +12 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# @ftschopp/dynatable-core 1.0.0 (2026-01-10)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* major initial release ([e282548](https://github.com/ftschopp/dynatable/commit/e28254895a40fdc26bab1dde2c634f663857ec16))
|
|
7
|
+
|
|
8
|
+
# @ftschopp/dynatable-core 1.0.0 (2026-01-10)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* major initial release ([e282548](https://github.com/ftschopp/dynatable/commit/e28254895a40fdc26bab1dde2c634f663857ec16))
|
|
14
|
+
|
|
15
|
+
# @ftschopp/dynatable-core 1.0.0 (2026-01-10)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Features
|
|
19
|
+
|
|
20
|
+
* major initial release ([fc6e561](https://github.com/ftschopp/dynatable/commit/fc6e561a4b06507a7acd9ae6fb594936a65d7c4f))
|
|
21
|
+
|
|
22
|
+
# @ftschopp/dynatable-core 1.0.0 (2026-01-10)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Features
|
|
26
|
+
|
|
27
|
+
* major initial release ([fc6e561](https://github.com/ftschopp/dynatable/commit/fc6e561a4b06507a7acd9ae6fb594936a65d7c4f))
|
|
28
|
+
|
|
29
|
+
# @ftschopp/dynatable-core 1.0.0 (2026-01-10)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
### Features
|
|
33
|
+
|
|
34
|
+
* major initial release ([fc6e561](https://github.com/ftschopp/dynatable/commit/fc6e561a4b06507a7acd9ae6fb594936a65d7c4f))
|
|
35
|
+
|
|
36
|
+
# @ftschopp/dynatable-core 1.0.0 (2026-01-10)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### Features
|
|
40
|
+
|
|
41
|
+
* major initial release ([fc6e561](https://github.com/ftschopp/dynatable/commit/fc6e561a4b06507a7acd9ae6fb594936a65d7c4f))
|
|
42
|
+
|
|
43
|
+
# @ftschopp/dynatable-core 1.0.0 (2026-01-10)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
### Features
|
|
47
|
+
|
|
48
|
+
* major initial release ([fc6e561](https://github.com/ftschopp/dynatable/commit/fc6e561a4b06507a7acd9ae6fb594936a65d7c4f))
|
|
49
|
+
|
|
50
|
+
# @ftschopp/dynatable-core 1.0.0 (2026-01-10)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
### Features
|
|
54
|
+
|
|
55
|
+
* major initial release ([fc6e561](https://github.com/ftschopp/dynatable/commit/fc6e561a4b06507a7acd9ae6fb594936a65d7c4f))
|
|
56
|
+
|
|
57
|
+
# Changelog
|
|
58
|
+
|
|
59
|
+
All notable changes to this project will be documented in this file.
|
|
60
|
+
|
|
61
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
62
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
package/README.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# @ftschopp/dynatable-core
|
|
2
|
+
|
|
3
|
+
A type-safe, functional programming library for AWS DynamoDB with Single Table Design support.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @ftschopp/dynatable-core
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Documentation
|
|
12
|
+
|
|
13
|
+
See the [main repository](https://github.com/ftschopp/dynatable) for full documentation and examples.
|
|
14
|
+
|
|
15
|
+
## License
|
|
16
|
+
|
|
17
|
+
MIT
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
|
|
2
|
+
import { BatchGetBuilder } from './types';
|
|
3
|
+
import { DynamoDBLogger } from '../../utils/dynamodb-logger';
|
|
4
|
+
/**
|
|
5
|
+
* Creates a BatchGetBuilder to retrieve multiple items by their keys.
|
|
6
|
+
*
|
|
7
|
+
* @param requestItems - An object where keys are table names and values are objects containing Keys array
|
|
8
|
+
* @param client - DynamoDB client instance
|
|
9
|
+
* @param options - Optional configuration (projection, consistentRead)
|
|
10
|
+
* @param logger - Optional logger instance
|
|
11
|
+
*/
|
|
12
|
+
export declare function createBatchGetBuilder<Model>(requestItems: Record<string, {
|
|
13
|
+
Keys: any[];
|
|
14
|
+
}>, client: DynamoDBClient, options?: {
|
|
15
|
+
projection?: (keyof Model)[];
|
|
16
|
+
consistentRead?: boolean;
|
|
17
|
+
}, logger?: DynamoDBLogger): BatchGetBuilder<Model>;
|
|
18
|
+
//# sourceMappingURL=create-batch-get-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-batch-get-builder.d.ts","sourceRoot":"","sources":["../../../src/builders/batch-get/create-batch-get-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAM1D,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EACzC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,GAAG,EAAE,CAAA;CAAE,CAAC,EAC7C,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,EACD,MAAM,CAAC,EAAE,cAAc,GACtB,eAAe,CAAC,KAAK,CAAC,CA+ExB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createBatchGetBuilder = createBatchGetBuilder;
|
|
4
|
+
const lib_dynamodb_1 = require("@aws-sdk/lib-dynamodb");
|
|
5
|
+
/**
|
|
6
|
+
* Creates a BatchGetBuilder to retrieve multiple items by their keys.
|
|
7
|
+
*
|
|
8
|
+
* @param requestItems - An object where keys are table names and values are objects containing Keys array
|
|
9
|
+
* @param client - DynamoDB client instance
|
|
10
|
+
* @param options - Optional configuration (projection, consistentRead)
|
|
11
|
+
* @param logger - Optional logger instance
|
|
12
|
+
*/
|
|
13
|
+
function createBatchGetBuilder(requestItems, client, options, logger) {
|
|
14
|
+
const projection = options?.projection ?? [];
|
|
15
|
+
const isConsistent = options?.consistentRead ?? false;
|
|
16
|
+
return {
|
|
17
|
+
/**
|
|
18
|
+
* Select only specific attributes to retrieve.
|
|
19
|
+
*/
|
|
20
|
+
select(attrs) {
|
|
21
|
+
return createBatchGetBuilder(requestItems, client, {
|
|
22
|
+
projection: attrs,
|
|
23
|
+
consistentRead: isConsistent,
|
|
24
|
+
}, logger);
|
|
25
|
+
},
|
|
26
|
+
/**
|
|
27
|
+
* Enable strongly consistent read.
|
|
28
|
+
*/
|
|
29
|
+
consistentRead() {
|
|
30
|
+
return createBatchGetBuilder(requestItems, client, {
|
|
31
|
+
projection,
|
|
32
|
+
consistentRead: true,
|
|
33
|
+
}, logger);
|
|
34
|
+
},
|
|
35
|
+
/**
|
|
36
|
+
* Build the underlying DynamoDB input parameters.
|
|
37
|
+
*/
|
|
38
|
+
dbParams() {
|
|
39
|
+
// Apply projection and consistentRead to all tables
|
|
40
|
+
const enhancedRequestItems = Object.entries(requestItems).reduce((acc, [tableName, tableRequest]) => {
|
|
41
|
+
acc[tableName] = {
|
|
42
|
+
Keys: tableRequest.Keys,
|
|
43
|
+
...(projection.length > 0 && {
|
|
44
|
+
ProjectionExpression: projection.join(', '),
|
|
45
|
+
}),
|
|
46
|
+
...(isConsistent && { ConsistentRead: true }),
|
|
47
|
+
};
|
|
48
|
+
return acc;
|
|
49
|
+
}, {});
|
|
50
|
+
return {
|
|
51
|
+
RequestItems: enhancedRequestItems,
|
|
52
|
+
};
|
|
53
|
+
},
|
|
54
|
+
/**
|
|
55
|
+
* Execute the BatchGetItem command and return the items.
|
|
56
|
+
*/
|
|
57
|
+
async execute() {
|
|
58
|
+
const params = this.dbParams();
|
|
59
|
+
const result = await client.send(new lib_dynamodb_1.BatchGetCommand(params));
|
|
60
|
+
logger?.log('BatchGetCommand', params, result);
|
|
61
|
+
// Transform the response into a more usable format
|
|
62
|
+
const responses = {};
|
|
63
|
+
if (result.Responses) {
|
|
64
|
+
for (const [tableName, items] of Object.entries(result.Responses)) {
|
|
65
|
+
responses[tableName] = items;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return responses;
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builders/batch-get/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./types"), exports);
|
|
18
|
+
__exportStar(require("./create-batch-get-builder"), exports);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { BatchGetItemCommandInput } from '@aws-sdk/client-dynamodb';
|
|
2
|
+
/**
|
|
3
|
+
* BatchGetBuilder allows you to retrieve multiple items from one or more tables
|
|
4
|
+
* in a single request.
|
|
5
|
+
*/
|
|
6
|
+
export type BatchGetBuilder<Model> = {
|
|
7
|
+
/**
|
|
8
|
+
* Select only specific attributes to retrieve for all items.
|
|
9
|
+
*/
|
|
10
|
+
select(attrs: (keyof Model)[]): BatchGetBuilder<Model>;
|
|
11
|
+
/**
|
|
12
|
+
* Enable strongly consistent read for all items.
|
|
13
|
+
*/
|
|
14
|
+
consistentRead(): BatchGetBuilder<Model>;
|
|
15
|
+
/**
|
|
16
|
+
* Build the underlying DynamoDB BatchGetItem input parameters.
|
|
17
|
+
*/
|
|
18
|
+
dbParams(): BatchGetItemCommandInput;
|
|
19
|
+
/**
|
|
20
|
+
* Execute the BatchGetItem command and return the items.
|
|
21
|
+
* Returns an object mapping table names to arrays of items.
|
|
22
|
+
*/
|
|
23
|
+
execute(): Promise<Record<string, Model[]>>;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/builders/batch-get/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,KAAK,IAAI;IACnC;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAEvD;;OAEG;IACH,cAAc,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;IAEzC;;OAEG;IACH,QAAQ,IAAI,wBAAwB,CAAC;IAErC;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;CAC7C,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
|
|
2
|
+
import { BatchWriteBuilder, WriteRequest } from './types';
|
|
3
|
+
import { DynamoDBLogger } from '../../utils/dynamodb-logger';
|
|
4
|
+
/**
|
|
5
|
+
* Creates a BatchWriteBuilder to put or delete multiple items.
|
|
6
|
+
*
|
|
7
|
+
* @param requestItems - An object where keys are table names and values are arrays of WriteRequest
|
|
8
|
+
* @param client - DynamoDB client instance
|
|
9
|
+
* @param logger - Optional logger instance
|
|
10
|
+
*/
|
|
11
|
+
export declare function createBatchWriteBuilder(requestItems: Record<string, WriteRequest[]>, client: DynamoDBClient, logger?: DynamoDBLogger): BatchWriteBuilder;
|
|
12
|
+
//# sourceMappingURL=create-batch-write-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-batch-write-builder.d.ts","sourceRoot":"","sources":["../../../src/builders/batch-write/create-batch-write-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAM1D,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAC5C,MAAM,EAAE,cAAc,EACtB,MAAM,CAAC,EAAE,cAAc,GACtB,iBAAiB,CA2BnB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createBatchWriteBuilder = createBatchWriteBuilder;
|
|
4
|
+
const lib_dynamodb_1 = require("@aws-sdk/lib-dynamodb");
|
|
5
|
+
/**
|
|
6
|
+
* Creates a BatchWriteBuilder to put or delete multiple items.
|
|
7
|
+
*
|
|
8
|
+
* @param requestItems - An object where keys are table names and values are arrays of WriteRequest
|
|
9
|
+
* @param client - DynamoDB client instance
|
|
10
|
+
* @param logger - Optional logger instance
|
|
11
|
+
*/
|
|
12
|
+
function createBatchWriteBuilder(requestItems, client, logger) {
|
|
13
|
+
return {
|
|
14
|
+
/**
|
|
15
|
+
* Build the underlying DynamoDB input parameters.
|
|
16
|
+
*/
|
|
17
|
+
dbParams() {
|
|
18
|
+
return {
|
|
19
|
+
RequestItems: requestItems,
|
|
20
|
+
};
|
|
21
|
+
},
|
|
22
|
+
/**
|
|
23
|
+
* Execute the BatchWriteItem command.
|
|
24
|
+
*/
|
|
25
|
+
async execute() {
|
|
26
|
+
const params = this.dbParams();
|
|
27
|
+
const result = await client.send(new lib_dynamodb_1.BatchWriteCommand(params));
|
|
28
|
+
logger?.log('BatchWriteCommand', params, result);
|
|
29
|
+
// Return unprocessed items if any
|
|
30
|
+
return {
|
|
31
|
+
unprocessedItems: result.UnprocessedItems,
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builders/batch-write/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./types"), exports);
|
|
18
|
+
__exportStar(require("./create-batch-write-builder"), exports);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { BatchWriteItemCommandInput } from '@aws-sdk/client-dynamodb';
|
|
2
|
+
/**
|
|
3
|
+
* A single write request that can be either a PutRequest or DeleteRequest
|
|
4
|
+
*/
|
|
5
|
+
export type WriteRequest = {
|
|
6
|
+
PutRequest?: {
|
|
7
|
+
Item: any;
|
|
8
|
+
};
|
|
9
|
+
DeleteRequest?: {
|
|
10
|
+
Key: any;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* BatchWriteBuilder allows you to put or delete multiple items from one or more tables
|
|
15
|
+
* in a single request.
|
|
16
|
+
*/
|
|
17
|
+
export type BatchWriteBuilder = {
|
|
18
|
+
/**
|
|
19
|
+
* Build the underlying DynamoDB BatchWriteItem input parameters.
|
|
20
|
+
*/
|
|
21
|
+
dbParams(): BatchWriteItemCommandInput;
|
|
22
|
+
/**
|
|
23
|
+
* Execute the BatchWriteItem command.
|
|
24
|
+
* Returns unprocessed items if any requests failed.
|
|
25
|
+
*/
|
|
26
|
+
execute(): Promise<{
|
|
27
|
+
unprocessedItems?: Record<string, WriteRequest[]>;
|
|
28
|
+
}>;
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/builders/batch-write/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,GAAG,CAAC;KACX,CAAC;IACF,aAAa,CAAC,EAAE;QACd,GAAG,EAAE,GAAG,CAAC;KACV,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,QAAQ,IAAI,0BAA0B,CAAC;IAEvC;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC;QACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;KACnD,CAAC,CAAC;CACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
|
|
2
|
+
import { Condition } from '../shared';
|
|
3
|
+
import { DeleteBuilder } from './types';
|
|
4
|
+
import { DynamoDBLogger } from '../../utils/dynamodb-logger';
|
|
5
|
+
/**
|
|
6
|
+
* Creates a DeleteBuilder for an item key and table.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createDeleteBuilder<Model>(tableName: string, key: Partial<Model>, client: DynamoDBClient, prevConditions?: Condition[], returnMode?: 'NONE' | 'ALL_OLD', logger?: DynamoDBLogger): DeleteBuilder<Model>;
|
|
9
|
+
//# sourceMappingURL=create-delete-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-delete-builder.d.ts","sourceRoot":"","sources":["../../../src/builders/delete/create-delete-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAgC,SAAS,EAAmB,MAAM,WAAW,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EACvC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,EACnB,MAAM,EAAE,cAAc,EACtB,cAAc,GAAE,SAAS,EAAO,EAChC,UAAU,GAAE,MAAM,GAAG,SAAkB,EACvC,MAAM,CAAC,EAAE,cAAc,GACtB,aAAa,CAAC,KAAK,CAAC,CAkFtB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createDeleteBuilder = createDeleteBuilder;
|
|
4
|
+
const lib_dynamodb_1 = require("@aws-sdk/lib-dynamodb");
|
|
5
|
+
const shared_1 = require("../shared");
|
|
6
|
+
/**
|
|
7
|
+
* Creates a DeleteBuilder for an item key and table.
|
|
8
|
+
*/
|
|
9
|
+
function createDeleteBuilder(tableName, key, client, prevConditions = [], returnMode = 'NONE', logger) {
|
|
10
|
+
const conditions = [...prevConditions];
|
|
11
|
+
const build = () => ({
|
|
12
|
+
where(fn) {
|
|
13
|
+
const attrs = new Proxy({}, {
|
|
14
|
+
get(_, prop) {
|
|
15
|
+
return { name: prop };
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
const opBuilder = (0, shared_1.createOpBuilder)();
|
|
19
|
+
const condition = fn(attrs, opBuilder);
|
|
20
|
+
return createDeleteBuilder(tableName, key, client, [...conditions, condition], returnMode, logger);
|
|
21
|
+
},
|
|
22
|
+
returning(mode) {
|
|
23
|
+
return createDeleteBuilder(tableName, key, client, conditions, mode, logger);
|
|
24
|
+
},
|
|
25
|
+
dbParams() {
|
|
26
|
+
// Build ConditionExpression from condition tree
|
|
27
|
+
let conditionExpression = '';
|
|
28
|
+
let expressionAttributeNames = {};
|
|
29
|
+
let expressionAttributeValues = {};
|
|
30
|
+
if (conditions.length > 0) {
|
|
31
|
+
const combinedCondition = conditions.length === 1 && conditions[0]
|
|
32
|
+
? conditions[0]
|
|
33
|
+
: {
|
|
34
|
+
expression: '',
|
|
35
|
+
operator: 'AND',
|
|
36
|
+
children: conditions,
|
|
37
|
+
};
|
|
38
|
+
const result = (0, shared_1.buildExpression)(combinedCondition);
|
|
39
|
+
conditionExpression = result.expression;
|
|
40
|
+
expressionAttributeNames = result.names;
|
|
41
|
+
expressionAttributeValues = result.values;
|
|
42
|
+
}
|
|
43
|
+
const extra = returnMode !== 'NONE' ? { ReturnValues: returnMode } : {};
|
|
44
|
+
return {
|
|
45
|
+
TableName: tableName,
|
|
46
|
+
Key: key,
|
|
47
|
+
...(conditionExpression && {
|
|
48
|
+
ConditionExpression: conditionExpression,
|
|
49
|
+
}),
|
|
50
|
+
...(Object.keys(expressionAttributeNames).length && {
|
|
51
|
+
ExpressionAttributeNames: expressionAttributeNames,
|
|
52
|
+
}),
|
|
53
|
+
...(Object.keys(expressionAttributeValues).length && {
|
|
54
|
+
ExpressionAttributeValues: expressionAttributeValues,
|
|
55
|
+
}),
|
|
56
|
+
...extra,
|
|
57
|
+
};
|
|
58
|
+
},
|
|
59
|
+
async execute() {
|
|
60
|
+
const params = build().dbParams();
|
|
61
|
+
const response = await client.send(new lib_dynamodb_1.DeleteCommand(params));
|
|
62
|
+
logger?.log('DeleteCommand', params, response);
|
|
63
|
+
// Return the deleted item if returnMode is ALL_OLD
|
|
64
|
+
if (returnMode === 'ALL_OLD' && response.Attributes) {
|
|
65
|
+
return response.Attributes;
|
|
66
|
+
}
|
|
67
|
+
// For NONE mode, return the key as a fallback
|
|
68
|
+
return key;
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
return build();
|
|
72
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builders/delete/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./types"), exports);
|
|
18
|
+
__exportStar(require("./create-delete-builder"), exports);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { OperationBuilder } from '../shared';
|
|
2
|
+
/**
|
|
3
|
+
* Builder interface for DynamoDB DeleteItem operations
|
|
4
|
+
*/
|
|
5
|
+
export interface DeleteBuilder<Model> extends OperationBuilder<Model> {
|
|
6
|
+
/**
|
|
7
|
+
* Configures what values should be returned after the delete operation
|
|
8
|
+
*/
|
|
9
|
+
returning(mode: 'NONE' | 'ALL_OLD'): DeleteBuilder<Model>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/builders/delete/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,KAAK,CAAE,SAAQ,gBAAgB,CAAC,KAAK,CAAC;IACnE;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;CAC3D"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
|
|
2
|
+
import { GetBuilder } from './types';
|
|
3
|
+
import { DynamoDBLogger } from '../../utils/dynamodb-logger';
|
|
4
|
+
/**
|
|
5
|
+
* Creates a GetBuilder to retrieve an item by its key.
|
|
6
|
+
*/
|
|
7
|
+
export declare function createGetBuilder<KeyInput, Model>(tableName: string, key: Record<string, any>, client: DynamoDBClient, options?: {
|
|
8
|
+
projection?: (keyof Model)[];
|
|
9
|
+
consistentRead?: boolean;
|
|
10
|
+
returnConsumedCapacity?: 'INDEXES' | 'TOTAL' | 'NONE';
|
|
11
|
+
}, logger?: DynamoDBLogger): GetBuilder<KeyInput, Model>;
|
|
12
|
+
//# sourceMappingURL=create-get-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-get-builder.d.ts","sourceRoot":"","sources":["../../../src/builders/get/create-get-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AA0B7D;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAC9C,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxB,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sBAAsB,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;CACvD,EACD,MAAM,CAAC,EAAE,cAAc,GACtB,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAgG7B"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createGetBuilder = createGetBuilder;
|
|
4
|
+
const lib_dynamodb_1 = require("@aws-sdk/lib-dynamodb");
|
|
5
|
+
/**
|
|
6
|
+
* Builds a ProjectionExpression with proper ExpressionAttributeNames
|
|
7
|
+
* to handle reserved words and special characters.
|
|
8
|
+
*/
|
|
9
|
+
function buildProjectionExpression(attrs) {
|
|
10
|
+
const names = {};
|
|
11
|
+
const projectionParts = [];
|
|
12
|
+
attrs.forEach((attr) => {
|
|
13
|
+
// Use a placeholder for the attribute name to avoid reserved word conflicts
|
|
14
|
+
const placeholder = `#${attr}`;
|
|
15
|
+
names[placeholder] = attr;
|
|
16
|
+
projectionParts.push(placeholder);
|
|
17
|
+
});
|
|
18
|
+
return {
|
|
19
|
+
ProjectionExpression: projectionParts.join(', '),
|
|
20
|
+
ExpressionAttributeNames: names,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Creates a GetBuilder to retrieve an item by its key.
|
|
25
|
+
*/
|
|
26
|
+
function createGetBuilder(tableName, key, client, options, logger) {
|
|
27
|
+
const projection = options?.projection ?? [];
|
|
28
|
+
const isConsistent = options?.consistentRead ?? false;
|
|
29
|
+
const consumedCapacity = options?.returnConsumedCapacity;
|
|
30
|
+
return {
|
|
31
|
+
/**
|
|
32
|
+
* Select only specific attributes to retrieve.
|
|
33
|
+
*/
|
|
34
|
+
select(attrs) {
|
|
35
|
+
return createGetBuilder(tableName, key, client, {
|
|
36
|
+
projection: attrs,
|
|
37
|
+
consistentRead: isConsistent,
|
|
38
|
+
returnConsumedCapacity: consumedCapacity,
|
|
39
|
+
}, logger);
|
|
40
|
+
},
|
|
41
|
+
/**
|
|
42
|
+
* Enable strongly consistent read.
|
|
43
|
+
*/
|
|
44
|
+
consistentRead() {
|
|
45
|
+
return createGetBuilder(tableName, key, client, {
|
|
46
|
+
projection,
|
|
47
|
+
consistentRead: true,
|
|
48
|
+
returnConsumedCapacity: consumedCapacity,
|
|
49
|
+
}, logger);
|
|
50
|
+
},
|
|
51
|
+
/**
|
|
52
|
+
* Configure ReturnConsumedCapacity parameter.
|
|
53
|
+
*/
|
|
54
|
+
returnConsumedCapacity(mode) {
|
|
55
|
+
return createGetBuilder(tableName, key, client, {
|
|
56
|
+
projection,
|
|
57
|
+
consistentRead: isConsistent,
|
|
58
|
+
returnConsumedCapacity: mode,
|
|
59
|
+
}, logger);
|
|
60
|
+
},
|
|
61
|
+
/**
|
|
62
|
+
* Build the underlying DynamoDB input parameters.
|
|
63
|
+
*/
|
|
64
|
+
dbParams() {
|
|
65
|
+
const params = {
|
|
66
|
+
TableName: tableName,
|
|
67
|
+
Key: key,
|
|
68
|
+
};
|
|
69
|
+
// Add projection with proper ExpressionAttributeNames
|
|
70
|
+
if (projection.length > 0) {
|
|
71
|
+
const projectionExpr = buildProjectionExpression(projection);
|
|
72
|
+
params.ProjectionExpression = projectionExpr.ProjectionExpression;
|
|
73
|
+
params.ExpressionAttributeNames = projectionExpr.ExpressionAttributeNames;
|
|
74
|
+
}
|
|
75
|
+
// Add consistent read if enabled
|
|
76
|
+
if (isConsistent) {
|
|
77
|
+
params.ConsistentRead = true;
|
|
78
|
+
}
|
|
79
|
+
// Add ReturnConsumedCapacity if specified
|
|
80
|
+
if (consumedCapacity) {
|
|
81
|
+
params.ReturnConsumedCapacity = consumedCapacity;
|
|
82
|
+
}
|
|
83
|
+
return params;
|
|
84
|
+
},
|
|
85
|
+
/**
|
|
86
|
+
* Execute the GetItem command and return the item if found.
|
|
87
|
+
*/
|
|
88
|
+
async execute() {
|
|
89
|
+
const params = this.dbParams();
|
|
90
|
+
const result = await client.send(new lib_dynamodb_1.GetCommand(params));
|
|
91
|
+
logger?.log('GetCommand', params, result);
|
|
92
|
+
return result.Item;
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builders/get/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./types"), exports);
|
|
18
|
+
__exportStar(require("./create-get-builder"), exports);
|