@gravity-platform/aws-dynamodb 1.1.1
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/README.md +97 -0
- package/dist/DynamoDB/node/executor.d.ts +12 -0
- package/dist/DynamoDB/node/executor.d.ts.map +1 -0
- package/dist/DynamoDB/node/executor.js +62 -0
- package/dist/DynamoDB/node/executor.js.map +1 -0
- package/dist/DynamoDB/node/index.d.ts +10 -0
- package/dist/DynamoDB/node/index.d.ts.map +1 -0
- package/dist/DynamoDB/node/index.js +90 -0
- package/dist/DynamoDB/node/index.js.map +1 -0
- package/dist/DynamoDB/service/putRecord.d.ts +10 -0
- package/dist/DynamoDB/service/putRecord.d.ts.map +1 -0
- package/dist/DynamoDB/service/putRecord.js +18 -0
- package/dist/DynamoDB/service/putRecord.js.map +1 -0
- package/dist/DynamoDB/util/types.d.ts +17 -0
- package/dist/DynamoDB/util/types.d.ts.map +1 -0
- package/dist/DynamoDB/util/types.js +6 -0
- package/dist/DynamoDB/util/types.js.map +1 -0
- package/dist/DynamoDBFetch/node/executor.d.ts +12 -0
- package/dist/DynamoDBFetch/node/executor.d.ts.map +1 -0
- package/dist/DynamoDBFetch/node/executor.js +54 -0
- package/dist/DynamoDBFetch/node/executor.js.map +1 -0
- package/dist/DynamoDBFetch/node/index.d.ts +10 -0
- package/dist/DynamoDBFetch/node/index.d.ts.map +1 -0
- package/dist/DynamoDBFetch/node/index.js +77 -0
- package/dist/DynamoDBFetch/node/index.js.map +1 -0
- package/dist/DynamoDBFetch/service/fetchRecord.d.ts +11 -0
- package/dist/DynamoDBFetch/service/fetchRecord.d.ts.map +1 -0
- package/dist/DynamoDBFetch/service/fetchRecord.js +28 -0
- package/dist/DynamoDBFetch/service/fetchRecord.js.map +1 -0
- package/dist/DynamoDBFetch/util/types.d.ts +15 -0
- package/dist/DynamoDBFetch/util/types.d.ts.map +1 -0
- package/dist/DynamoDBFetch/util/types.js +6 -0
- package/dist/DynamoDBFetch/util/types.js.map +1 -0
- package/dist/DynamoDBService/node/executor.d.ts +12 -0
- package/dist/DynamoDBService/node/executor.d.ts.map +1 -0
- package/dist/DynamoDBService/node/executor.js +52 -0
- package/dist/DynamoDBService/node/executor.js.map +1 -0
- package/dist/DynamoDBService/node/index.d.ts +10 -0
- package/dist/DynamoDBService/node/index.d.ts.map +1 -0
- package/dist/DynamoDBService/node/index.js +66 -0
- package/dist/DynamoDBService/node/index.js.map +1 -0
- package/dist/DynamoDBService/util/types.d.ts +11 -0
- package/dist/DynamoDBService/util/types.d.ts.map +1 -0
- package/dist/DynamoDBService/util/types.js +6 -0
- package/dist/DynamoDBService/util/types.js.map +1 -0
- package/dist/credentials/index.d.ts +7 -0
- package/dist/credentials/index.d.ts.map +1 -0
- package/dist/credentials/index.js +11 -0
- package/dist/credentials/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +64 -0
- package/dist/index.js.map +1 -0
- package/dist/shared/client.d.ts +7 -0
- package/dist/shared/client.d.ts.map +1 -0
- package/dist/shared/client.js +61 -0
- package/dist/shared/client.js.map +1 -0
- package/dist/shared/operations.d.ts +25 -0
- package/dist/shared/operations.d.ts.map +1 -0
- package/dist/shared/operations.js +121 -0
- package/dist/shared/operations.js.map +1 -0
- package/dist/shared/platform.d.ts +11 -0
- package/dist/shared/platform.d.ts.map +1 -0
- package/dist/shared/platform.js +21 -0
- package/dist/shared/platform.js.map +1 -0
- package/dist/shared/types.d.ts +40 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +6 -0
- package/dist/shared/types.js.map +1 -0
- package/package.json +46 -0
package/README.md
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# @gravityai-dev/aws-dynamodb
|
|
2
|
+
|
|
3
|
+
AWS DynamoDB integration plugin for the Gravity workflow system. Provides nodes for database operations including put, fetch, and service operations.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **DynamoDB**: Put records to DynamoDB tables with conditional expressions
|
|
8
|
+
- **DynamoDBFetch**: Fetch records by primary/sort key with null handling
|
|
9
|
+
- **DynamoDBService**: Service node providing NoSQL operations for other nodes
|
|
10
|
+
- Full AWS SDK v3 integration with document client
|
|
11
|
+
- Client caching for performance optimization
|
|
12
|
+
- Comprehensive error handling and logging
|
|
13
|
+
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install @gravityai-dev/aws-dynamodb
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Nodes
|
|
21
|
+
|
|
22
|
+
### DynamoDB
|
|
23
|
+
|
|
24
|
+
Uploads a record to an AWS DynamoDB table with optional conditional expressions.
|
|
25
|
+
|
|
26
|
+
**Inputs:**
|
|
27
|
+
- `signal`: Record data to upload (can override config record)
|
|
28
|
+
|
|
29
|
+
**Outputs:**
|
|
30
|
+
- `success`: Whether the upload was successful
|
|
31
|
+
- `itemId`: ID of the uploaded item (if available)
|
|
32
|
+
|
|
33
|
+
**Configuration:**
|
|
34
|
+
- `tableName`: Name of the DynamoDB table
|
|
35
|
+
- `record`: JS Code to transform data
|
|
36
|
+
- `conditionExpression`: Optional condition for the put operation
|
|
37
|
+
- `expressionAttributeNames`: Substitution tokens for attribute names
|
|
38
|
+
- `expressionAttributeValues`: Values for expression substitution
|
|
39
|
+
|
|
40
|
+
### DynamoDBFetch
|
|
41
|
+
|
|
42
|
+
Fetches a record from AWS DynamoDB table by key, returns null if not found.
|
|
43
|
+
|
|
44
|
+
**Inputs:**
|
|
45
|
+
- `signal`: Input object containing key values
|
|
46
|
+
|
|
47
|
+
**Outputs:**
|
|
48
|
+
- `output`: The fetched record or null if not found
|
|
49
|
+
- `found`: Whether the record was found
|
|
50
|
+
|
|
51
|
+
**Configuration:**
|
|
52
|
+
- `tableName`: The name of the DynamoDB table
|
|
53
|
+
- `primaryKey`: The field name for the primary key (partition key)
|
|
54
|
+
- `sortKey`: The field name for the sort key (optional)
|
|
55
|
+
|
|
56
|
+
### DynamoDBService
|
|
57
|
+
|
|
58
|
+
Provides DynamoDB operations as a service for other nodes. Marked as a service node.
|
|
59
|
+
|
|
60
|
+
**Service Connectors:**
|
|
61
|
+
- `nosqlService`: Provides NoSQL database operations
|
|
62
|
+
- Methods: put, get, query, update, delete, batchGet, batchWrite
|
|
63
|
+
|
|
64
|
+
**Configuration:**
|
|
65
|
+
- `region`: AWS region for DynamoDB
|
|
66
|
+
- `defaultTable`: Default table name (can be overridden per operation)
|
|
67
|
+
|
|
68
|
+
## Credentials
|
|
69
|
+
|
|
70
|
+
Requires AWS credentials with the following fields:
|
|
71
|
+
- `accessKeyId`: Your AWS access key ID
|
|
72
|
+
- `secretAccessKey`: Your AWS secret access key
|
|
73
|
+
- `region`: AWS region (e.g., us-east-1)
|
|
74
|
+
|
|
75
|
+
## Usage Example
|
|
76
|
+
|
|
77
|
+
1. Add DynamoDB node to put records to a table
|
|
78
|
+
2. Use DynamoDBFetch to retrieve records by key
|
|
79
|
+
3. Connect DynamoDBService for advanced operations
|
|
80
|
+
4. Configure conditional expressions for data integrity
|
|
81
|
+
|
|
82
|
+
## Development
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Install dependencies
|
|
86
|
+
npm install
|
|
87
|
+
|
|
88
|
+
# Build the package
|
|
89
|
+
npm run build
|
|
90
|
+
|
|
91
|
+
# Run tests
|
|
92
|
+
npm test
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## License
|
|
96
|
+
|
|
97
|
+
MIT
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type NodeExecutionContext } from "@gravity-platform/plugin-base";
|
|
2
|
+
import { DynamoDBConfig, DynamoDBOutput } from "../util/types";
|
|
3
|
+
import { PromiseNode } from "../../shared/platform";
|
|
4
|
+
export declare class DynamoDBExecutor extends PromiseNode<DynamoDBConfig> {
|
|
5
|
+
constructor();
|
|
6
|
+
protected executeNode(inputs: Record<string, any>, config: DynamoDBConfig, context: NodeExecutionContext): Promise<DynamoDBOutput>;
|
|
7
|
+
/**
|
|
8
|
+
* Build credential context from execution context
|
|
9
|
+
*/
|
|
10
|
+
private buildCredentialContext;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/DynamoDB/node/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAgB,MAAM,uBAAuB,CAAC;AAIlE,qBAAa,gBAAiB,SAAQ,WAAW,CAAC,cAAc,CAAC;;cAK/C,WAAW,CACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC;IA6C1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAW/B"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DynamoDBExecutor = void 0;
|
|
4
|
+
const putRecord_1 = require("../service/putRecord");
|
|
5
|
+
const platform_1 = require("../../shared/platform");
|
|
6
|
+
const NODE_TYPE = "DynamoDB";
|
|
7
|
+
class DynamoDBExecutor extends platform_1.PromiseNode {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(NODE_TYPE);
|
|
10
|
+
}
|
|
11
|
+
async executeNode(inputs, config, context) {
|
|
12
|
+
const logger = (0, platform_1.createLogger)("DynamoDB");
|
|
13
|
+
// Build credential context for service
|
|
14
|
+
const credentialContext = this.buildCredentialContext(context);
|
|
15
|
+
try {
|
|
16
|
+
// Allow input signal to override config record
|
|
17
|
+
const record = inputs.signal || config.record;
|
|
18
|
+
if (!record) {
|
|
19
|
+
throw new Error("No record data provided in config or input signal");
|
|
20
|
+
}
|
|
21
|
+
const result = await (0, putRecord_1.putDynamoDBRecordService)({
|
|
22
|
+
...config,
|
|
23
|
+
record,
|
|
24
|
+
}, credentialContext.credentials?.awsCredential, logger);
|
|
25
|
+
logger.info("DynamoDB execution completed", {
|
|
26
|
+
tableName: config.tableName,
|
|
27
|
+
success: result.success,
|
|
28
|
+
itemId: result.itemId
|
|
29
|
+
});
|
|
30
|
+
return {
|
|
31
|
+
__outputs: {
|
|
32
|
+
success: result.success,
|
|
33
|
+
itemId: result.itemId
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
logger.error("DynamoDB execution failed", {
|
|
39
|
+
error: error.message,
|
|
40
|
+
code: error.code,
|
|
41
|
+
stack: error.stack,
|
|
42
|
+
});
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Build credential context from execution context
|
|
48
|
+
*/
|
|
49
|
+
buildCredentialContext(context) {
|
|
50
|
+
return {
|
|
51
|
+
credentials: {
|
|
52
|
+
awsCredential: context.credentials?.awsCredential || {},
|
|
53
|
+
},
|
|
54
|
+
nodeType: NODE_TYPE,
|
|
55
|
+
workflowId: context.workflow?.id || "",
|
|
56
|
+
executionId: context.executionId || "",
|
|
57
|
+
nodeId: context.nodeId || "",
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.DynamoDBExecutor = DynamoDBExecutor;
|
|
62
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/DynamoDB/node/executor.ts"],"names":[],"mappings":";;;AAEA,oDAAgE;AAChE,oDAAkE;AAElE,MAAM,SAAS,GAAG,UAAU,CAAC;AAE7B,MAAa,gBAAiB,SAAQ,sBAA2B;IAC/D;QACE,KAAK,CAAC,SAAS,CAAC,CAAC;IACnB,CAAC;IAES,KAAK,CAAC,WAAW,CACzB,MAA2B,EAC3B,MAAsB,EACtB,OAA6B;QAE7B,MAAM,MAAM,GAAG,IAAA,uBAAY,EAAC,UAAU,CAAC,CAAC;QAExC,uCAAuC;QACvC,MAAM,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAE/D,IAAI,CAAC;YACH,+CAA+C;YAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;YAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAA,oCAAwB,EAC3C;gBACE,GAAG,MAAM;gBACT,MAAM;aACP,EACD,iBAAiB,CAAC,WAAW,EAAE,aAAa,EAC5C,MAAM,CACP,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;gBAC1C,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;YAEH,OAAO;gBACL,SAAS,EAAE;oBACT,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE;gBACxC,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,OAA6B;QAC1D,OAAO;YACL,WAAW,EAAE;gBACX,aAAa,EAAE,OAAO,CAAC,WAAW,EAAE,aAAa,IAAI,EAAE;aACxD;YACD,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE;YACtC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;YACtC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;SAC7B,CAAC;IACJ,CAAC;CACF;AApED,4CAoEC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type EnhancedNodeDefinition } from "@gravity-platform/plugin-base";
|
|
2
|
+
import { DynamoDBExecutor } from "./executor";
|
|
3
|
+
export declare const NODE_TYPE = "DynamoDB";
|
|
4
|
+
declare function createNodeDefinition(): EnhancedNodeDefinition;
|
|
5
|
+
export declare const DynamoDBNode: {
|
|
6
|
+
definition: any;
|
|
7
|
+
executor: typeof DynamoDBExecutor;
|
|
8
|
+
};
|
|
9
|
+
export { createNodeDefinition };
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/DynamoDB/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACrG,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,eAAO,MAAM,SAAS,aAAa,CAAC;AAEpC,iBAAS,oBAAoB,IAAI,sBAAsB,CAiFtD;AAID,eAAO,MAAM,YAAY;;;CAGxB,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DynamoDBNode = exports.NODE_TYPE = void 0;
|
|
4
|
+
exports.createNodeDefinition = createNodeDefinition;
|
|
5
|
+
const plugin_base_1 = require("@gravity-platform/plugin-base");
|
|
6
|
+
const executor_1 = require("./executor");
|
|
7
|
+
exports.NODE_TYPE = "DynamoDB";
|
|
8
|
+
function createNodeDefinition() {
|
|
9
|
+
const { NodeInputType } = (0, plugin_base_1.getPlatformDependencies)();
|
|
10
|
+
return {
|
|
11
|
+
packageVersion: "1.1.0",
|
|
12
|
+
type: exports.NODE_TYPE,
|
|
13
|
+
name: "DynamoDB",
|
|
14
|
+
description: "Upload a record to an AWS DynamoDB table",
|
|
15
|
+
category: "storage",
|
|
16
|
+
logoUrl: "https://res.cloudinary.com/sonik/image/upload/v1751473913/gravity/icons/DynamoDB.png",
|
|
17
|
+
color: "#4B61D1", // AWS DynamoDB Blue
|
|
18
|
+
inputs: [
|
|
19
|
+
{
|
|
20
|
+
name: "signal",
|
|
21
|
+
type: NodeInputType.OBJECT,
|
|
22
|
+
description: "Record data to upload (can override config record)",
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
outputs: [
|
|
26
|
+
{
|
|
27
|
+
name: "success",
|
|
28
|
+
type: NodeInputType.BOOLEAN,
|
|
29
|
+
description: "Whether the upload was successful",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: "itemId",
|
|
33
|
+
type: NodeInputType.STRING,
|
|
34
|
+
description: "ID of the uploaded item (if available)",
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
configSchema: {
|
|
38
|
+
type: "object",
|
|
39
|
+
required: ["tableName", "record"],
|
|
40
|
+
properties: {
|
|
41
|
+
tableName: {
|
|
42
|
+
type: "string",
|
|
43
|
+
title: "Table Name",
|
|
44
|
+
description: "Name of the DynamoDB table",
|
|
45
|
+
},
|
|
46
|
+
record: {
|
|
47
|
+
type: "object",
|
|
48
|
+
title: "Code",
|
|
49
|
+
description: "JS Code to transform data",
|
|
50
|
+
default: "",
|
|
51
|
+
"ui:field": "template",
|
|
52
|
+
},
|
|
53
|
+
conditionExpression: {
|
|
54
|
+
type: "string",
|
|
55
|
+
title: "Condition Expression",
|
|
56
|
+
description: "Optional condition that must be satisfied for the put to succeed",
|
|
57
|
+
default: "",
|
|
58
|
+
},
|
|
59
|
+
expressionAttributeNames: {
|
|
60
|
+
type: "object",
|
|
61
|
+
title: "Expression Attribute Names",
|
|
62
|
+
description: "Substitution tokens for attribute names in expressions (optional)",
|
|
63
|
+
default: {},
|
|
64
|
+
"ui:field": "JSON",
|
|
65
|
+
},
|
|
66
|
+
expressionAttributeValues: {
|
|
67
|
+
type: "object",
|
|
68
|
+
title: "Expression Attribute Values",
|
|
69
|
+
description: "Values that can be substituted in expressions (optional)",
|
|
70
|
+
default: {},
|
|
71
|
+
"ui:field": "JSON",
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
credentials: [
|
|
76
|
+
{
|
|
77
|
+
name: "awsCredential",
|
|
78
|
+
required: true,
|
|
79
|
+
displayName: "AWS",
|
|
80
|
+
description: "AWS credentials for DynamoDB access",
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
const definition = createNodeDefinition();
|
|
86
|
+
exports.DynamoDBNode = {
|
|
87
|
+
definition,
|
|
88
|
+
executor: executor_1.DynamoDBExecutor,
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/DynamoDB/node/index.ts"],"names":[],"mappings":";;;AA+FS,oDAAoB;AA/F7B,+DAAqG;AACrG,yCAA8C;AAEjC,QAAA,SAAS,GAAG,UAAU,CAAC;AAEpC,SAAS,oBAAoB;IAC3B,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,qCAAuB,GAAE,CAAC;IAEpD,OAAO;QACL,cAAc,EAAE,OAAO;QACvB,IAAI,EAAE,iBAAS;QACf,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,0CAA0C;QACvD,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,sFAAsF;QAC/F,KAAK,EAAE,SAAS,EAAE,oBAAoB;QAEtC,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,aAAa,CAAC,MAAM;gBAC1B,WAAW,EAAE,oDAAoD;aAClE;SACF;QAED,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,aAAa,CAAC,OAAO;gBAC3B,WAAW,EAAE,mCAAmC;aACjD;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,aAAa,CAAC,MAAM;gBAC1B,WAAW,EAAE,wCAAwC;aACtD;SACF;QAED,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;YACjC,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,YAAY;oBACnB,WAAW,EAAE,4BAA4B;iBAC1C;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,MAAM;oBACb,WAAW,EAAE,2BAA2B;oBACxC,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,UAAU;iBACvB;gBACD,mBAAmB,EAAE;oBACnB,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,sBAAsB;oBAC7B,WAAW,EAAE,kEAAkE;oBAC/E,OAAO,EAAE,EAAE;iBACZ;gBACD,wBAAwB,EAAE;oBACxB,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,4BAA4B;oBACnC,WAAW,EAAE,mEAAmE;oBAChF,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,MAAM;iBACnB;gBACD,yBAAyB,EAAE;oBACzB,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,6BAA6B;oBACpC,WAAW,EAAE,0DAA0D;oBACvE,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,MAAM;iBACnB;aACF;SACF;QAED,WAAW,EAAE;YACX;gBACE,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,KAAK;gBAClB,WAAW,EAAE,qCAAqC;aACnD;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,oBAAoB,EAAE,CAAC;AAE7B,QAAA,YAAY,GAAG;IAC1B,UAAU;IACV,QAAQ,EAAE,2BAAgB;CAC3B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DynamoDB put record service
|
|
3
|
+
*/
|
|
4
|
+
import { DynamoDBConfig } from "../util/types";
|
|
5
|
+
import { AWSCredentials } from "../../shared/types";
|
|
6
|
+
export declare function putDynamoDBRecordService(config: DynamoDBConfig, credentials: AWSCredentials, logger: any): Promise<{
|
|
7
|
+
success: boolean;
|
|
8
|
+
itemId?: string;
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=putRecord.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"putRecord.d.ts","sourceRoot":"","sources":["../../../src/DynamoDB/service/putRecord.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,cAAc,EAC3B,MAAM,EAAE,GAAG,GACV,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAWhD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DynamoDB put record service
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.putDynamoDBRecordService = putDynamoDBRecordService;
|
|
7
|
+
const operations_1 = require("../../shared/operations");
|
|
8
|
+
async function putDynamoDBRecordService(config, credentials, logger) {
|
|
9
|
+
const putConfig = {
|
|
10
|
+
tableName: config.tableName,
|
|
11
|
+
record: config.record,
|
|
12
|
+
conditionExpression: config.conditionExpression,
|
|
13
|
+
expressionAttributeNames: config.expressionAttributeNames,
|
|
14
|
+
expressionAttributeValues: config.expressionAttributeValues,
|
|
15
|
+
};
|
|
16
|
+
return await (0, operations_1.putDynamoDBRecord)(putConfig, credentials, logger);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=putRecord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"putRecord.js","sourceRoot":"","sources":["../../../src/DynamoDB/service/putRecord.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAMH,4DAeC;AAlBD,wDAA4D;AAGrD,KAAK,UAAU,wBAAwB,CAC5C,MAAsB,EACtB,WAA2B,EAC3B,MAAW;IAGX,MAAM,SAAS,GAAG;QAChB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;QAC/C,wBAAwB,EAAE,MAAM,CAAC,wBAAwB;QACzD,yBAAyB,EAAE,MAAM,CAAC,yBAAyB;KAC5D,CAAC;IAEF,OAAO,MAAM,IAAA,8BAAiB,EAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for DynamoDB node
|
|
3
|
+
*/
|
|
4
|
+
export interface DynamoDBConfig {
|
|
5
|
+
tableName: string;
|
|
6
|
+
record: any;
|
|
7
|
+
conditionExpression?: string;
|
|
8
|
+
expressionAttributeNames?: Record<string, string>;
|
|
9
|
+
expressionAttributeValues?: Record<string, any>;
|
|
10
|
+
}
|
|
11
|
+
export interface DynamoDBOutput {
|
|
12
|
+
__outputs: {
|
|
13
|
+
success: boolean;
|
|
14
|
+
itemId?: string;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/DynamoDB/util/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,GAAG,CAAC;IACZ,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,yBAAyB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/DynamoDB/util/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type NodeExecutionContext } from "@gravity-platform/plugin-base";
|
|
2
|
+
import { DynamoDBFetchConfig, DynamoDBFetchOutput } from "../util/types";
|
|
3
|
+
import { PromiseNode } from "../../shared/platform";
|
|
4
|
+
export declare class DynamoDBFetchExecutor extends PromiseNode<DynamoDBFetchConfig> {
|
|
5
|
+
constructor();
|
|
6
|
+
protected executeNode(inputs: Record<string, any>, config: DynamoDBFetchConfig, context: NodeExecutionContext): Promise<DynamoDBFetchOutput>;
|
|
7
|
+
/**
|
|
8
|
+
* Build credential context from execution context
|
|
9
|
+
*/
|
|
10
|
+
private buildCredentialContext;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/DynamoDBFetch/node/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzE,OAAO,EAAE,WAAW,EAAgB,MAAM,uBAAuB,CAAC;AAIlE,qBAAa,qBAAsB,SAAQ,WAAW,CAAC,mBAAmB,CAAC;;cAKzD,WAAW,CACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC;IAoC/B;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAW/B"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DynamoDBFetchExecutor = void 0;
|
|
4
|
+
const fetchRecord_1 = require("../service/fetchRecord");
|
|
5
|
+
const platform_1 = require("../../shared/platform");
|
|
6
|
+
const NODE_TYPE = "DynamoDBFetch";
|
|
7
|
+
class DynamoDBFetchExecutor extends platform_1.PromiseNode {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(NODE_TYPE);
|
|
10
|
+
}
|
|
11
|
+
async executeNode(inputs, config, context) {
|
|
12
|
+
const logger = (0, platform_1.createLogger)("DynamoDBFetch");
|
|
13
|
+
// Build credential context for service
|
|
14
|
+
const credentialContext = this.buildCredentialContext(context);
|
|
15
|
+
try {
|
|
16
|
+
const result = await (0, fetchRecord_1.fetchDynamoDBRecordService)(config, inputs, credentialContext.credentials?.awsCredential, logger);
|
|
17
|
+
logger.info("DynamoDBFetch execution completed", {
|
|
18
|
+
tableName: config.tableName,
|
|
19
|
+
found: result.found,
|
|
20
|
+
primaryKey: config.primaryKey
|
|
21
|
+
});
|
|
22
|
+
return {
|
|
23
|
+
__outputs: {
|
|
24
|
+
output: result.document || null,
|
|
25
|
+
found: result.found
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
logger.error("DynamoDBFetch execution failed", {
|
|
31
|
+
error: error.message,
|
|
32
|
+
code: error.code,
|
|
33
|
+
stack: error.stack,
|
|
34
|
+
});
|
|
35
|
+
throw error;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Build credential context from execution context
|
|
40
|
+
*/
|
|
41
|
+
buildCredentialContext(context) {
|
|
42
|
+
return {
|
|
43
|
+
credentials: {
|
|
44
|
+
awsCredential: context.credentials?.awsCredential || {},
|
|
45
|
+
},
|
|
46
|
+
nodeType: NODE_TYPE,
|
|
47
|
+
workflowId: context.workflow?.id || "",
|
|
48
|
+
executionId: context.executionId || "",
|
|
49
|
+
nodeId: context.nodeId || "",
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.DynamoDBFetchExecutor = DynamoDBFetchExecutor;
|
|
54
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/DynamoDBFetch/node/executor.ts"],"names":[],"mappings":";;;AAEA,wDAAoE;AACpE,oDAAkE;AAElE,MAAM,SAAS,GAAG,eAAe,CAAC;AAElC,MAAa,qBAAsB,SAAQ,sBAAgC;IACzE;QACE,KAAK,CAAC,SAAS,CAAC,CAAC;IACnB,CAAC;IAES,KAAK,CAAC,WAAW,CACzB,MAA2B,EAC3B,MAA2B,EAC3B,OAA6B;QAE7B,MAAM,MAAM,GAAG,IAAA,uBAAY,EAAC,eAAe,CAAC,CAAC;QAE7C,uCAAuC;QACvC,MAAM,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAE/D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,wCAA0B,EAC7C,MAAM,EACN,MAAM,EACN,iBAAiB,CAAC,WAAW,EAAE,aAAa,EAC5C,MAAM,CACP,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE;gBAC/C,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC;YAEH,OAAO;gBACL,SAAS,EAAE;oBACT,MAAM,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;oBAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;iBACpB;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE;gBAC7C,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,OAA6B;QAC1D,OAAO;YACL,WAAW,EAAE;gBACX,aAAa,EAAE,OAAO,CAAC,WAAW,EAAE,aAAa,IAAI,EAAE;aACxD;YACD,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE;YACtC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;YACtC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;SAC7B,CAAC;IACJ,CAAC;CACF;AA3DD,sDA2DC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type EnhancedNodeDefinition } from "@gravity-platform/plugin-base";
|
|
2
|
+
import { DynamoDBFetchExecutor } from "./executor";
|
|
3
|
+
export declare const NODE_TYPE = "DynamoDBFetch";
|
|
4
|
+
declare function createNodeDefinition(): EnhancedNodeDefinition;
|
|
5
|
+
export declare const DynamoDBFetchNode: {
|
|
6
|
+
definition: any;
|
|
7
|
+
executor: typeof DynamoDBFetchExecutor;
|
|
8
|
+
};
|
|
9
|
+
export { createNodeDefinition };
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/DynamoDBFetch/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACrG,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,eAAO,MAAM,SAAS,kBAAkB,CAAC;AAEzC,iBAAS,oBAAoB,IAAI,sBAAsB,CAoEtD;AAID,eAAO,MAAM,iBAAiB;;;CAG7B,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DynamoDBFetchNode = exports.NODE_TYPE = void 0;
|
|
4
|
+
exports.createNodeDefinition = createNodeDefinition;
|
|
5
|
+
const plugin_base_1 = require("@gravity-platform/plugin-base");
|
|
6
|
+
const executor_1 = require("./executor");
|
|
7
|
+
exports.NODE_TYPE = "DynamoDBFetch";
|
|
8
|
+
function createNodeDefinition() {
|
|
9
|
+
const { NodeInputType } = (0, plugin_base_1.getPlatformDependencies)();
|
|
10
|
+
return {
|
|
11
|
+
packageVersion: "1.1.0",
|
|
12
|
+
type: exports.NODE_TYPE,
|
|
13
|
+
name: "DynamoDB Fetch",
|
|
14
|
+
description: "Fetch a record from AWS DynamoDB table by key",
|
|
15
|
+
category: "storage",
|
|
16
|
+
logoUrl: "https://res.cloudinary.com/sonik/image/upload/v1751473913/gravity/icons/DynamoDB.png",
|
|
17
|
+
color: "#4B61D1", // AWS DynamoDB Blue
|
|
18
|
+
inputs: [
|
|
19
|
+
{
|
|
20
|
+
name: "signal",
|
|
21
|
+
type: NodeInputType.OBJECT,
|
|
22
|
+
description: "Input Object",
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
outputs: [
|
|
26
|
+
{
|
|
27
|
+
name: "output",
|
|
28
|
+
type: NodeInputType.OBJECT,
|
|
29
|
+
description: "The fetched record or null if not found",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: "found",
|
|
33
|
+
type: NodeInputType.BOOLEAN,
|
|
34
|
+
description: "Whether the record was found",
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
configSchema: {
|
|
38
|
+
type: "object",
|
|
39
|
+
properties: {
|
|
40
|
+
tableName: {
|
|
41
|
+
type: "string",
|
|
42
|
+
title: "Table Name",
|
|
43
|
+
description: "The name of the DynamoDB table",
|
|
44
|
+
},
|
|
45
|
+
primaryKey: {
|
|
46
|
+
type: "string",
|
|
47
|
+
title: "Primary Key Field",
|
|
48
|
+
description: "The field name for the primary key (partition key)",
|
|
49
|
+
default: "universalId",
|
|
50
|
+
"ui:field": "template",
|
|
51
|
+
},
|
|
52
|
+
sortKey: {
|
|
53
|
+
type: "string",
|
|
54
|
+
title: "Sort Key Field",
|
|
55
|
+
description: "The field name for the sort key (optional)",
|
|
56
|
+
default: "",
|
|
57
|
+
"ui:field": "template",
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
required: ["tableName", "primaryKey"],
|
|
61
|
+
},
|
|
62
|
+
credentials: [
|
|
63
|
+
{
|
|
64
|
+
name: "awsCredential",
|
|
65
|
+
required: true,
|
|
66
|
+
displayName: "AWS",
|
|
67
|
+
description: "AWS credentials for DynamoDB access",
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const definition = createNodeDefinition();
|
|
73
|
+
exports.DynamoDBFetchNode = {
|
|
74
|
+
definition,
|
|
75
|
+
executor: executor_1.DynamoDBFetchExecutor,
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/DynamoDBFetch/node/index.ts"],"names":[],"mappings":";;;AAkFS,oDAAoB;AAlF7B,+DAAqG;AACrG,yCAAmD;AAEtC,QAAA,SAAS,GAAG,eAAe,CAAC;AAEzC,SAAS,oBAAoB;IAC3B,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,qCAAuB,GAAE,CAAC;IAEpD,OAAO;QACL,cAAc,EAAE,OAAO;QACvB,IAAI,EAAE,iBAAS;QACf,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,+CAA+C;QAC5D,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,sFAAsF;QAC/F,KAAK,EAAE,SAAS,EAAE,oBAAoB;QAEtC,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,aAAa,CAAC,MAAM;gBAC1B,WAAW,EAAE,cAAc;aAC5B;SACF;QAED,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,aAAa,CAAC,MAAM;gBAC1B,WAAW,EAAE,yCAAyC;aACvD;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,aAAa,CAAC,OAAO;gBAC3B,WAAW,EAAE,8BAA8B;aAC5C;SACF;QAED,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,YAAY;oBACnB,WAAW,EAAE,gCAAgC;iBAC9C;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,mBAAmB;oBAC1B,WAAW,EAAE,oDAAoD;oBACjE,OAAO,EAAE,aAAa;oBACtB,UAAU,EAAE,UAAU;iBACvB;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,gBAAgB;oBACvB,WAAW,EAAE,4CAA4C;oBACzD,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,UAAU;iBACvB;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;SACtC;QAED,WAAW,EAAE;YACX;gBACE,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,KAAK;gBAClB,WAAW,EAAE,qCAAqC;aACnD;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,oBAAoB,EAAE,CAAC;AAE7B,QAAA,iBAAiB,GAAG;IAC/B,UAAU;IACV,QAAQ,EAAE,gCAAqB;CAChC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DynamoDB fetch record service
|
|
3
|
+
*/
|
|
4
|
+
import { DynamoDBFetchConfig } from "../util/types";
|
|
5
|
+
import { AWSCredentials } from "../../shared/types";
|
|
6
|
+
export declare function fetchDynamoDBRecordService(config: DynamoDBFetchConfig, inputs: Record<string, any>, credentials: AWSCredentials, logger: any): Promise<{
|
|
7
|
+
success: boolean;
|
|
8
|
+
found: boolean;
|
|
9
|
+
document?: any;
|
|
10
|
+
}>;
|
|
11
|
+
//# sourceMappingURL=fetchRecord.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchRecord.d.ts","sourceRoot":"","sources":["../../../src/DynamoDBFetch/service/fetchRecord.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,WAAW,EAAE,cAAc,EAC3B,MAAM,EAAE,GAAG,GACV,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC,CAyB/D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DynamoDB fetch record service
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.fetchDynamoDBRecordService = fetchDynamoDBRecordService;
|
|
7
|
+
const operations_1 = require("../../shared/operations");
|
|
8
|
+
async function fetchDynamoDBRecordService(config, inputs, credentials, logger) {
|
|
9
|
+
// Build the key from inputs and config
|
|
10
|
+
const key = {};
|
|
11
|
+
// Get primary key value from inputs
|
|
12
|
+
if (config.primaryKey && inputs[config.primaryKey]) {
|
|
13
|
+
key[config.primaryKey] = inputs[config.primaryKey];
|
|
14
|
+
}
|
|
15
|
+
// Get sort key value from inputs if specified
|
|
16
|
+
if (config.sortKey && inputs[config.sortKey]) {
|
|
17
|
+
key[config.sortKey] = inputs[config.sortKey];
|
|
18
|
+
}
|
|
19
|
+
if (Object.keys(key).length === 0) {
|
|
20
|
+
throw new Error('No key values found in inputs for DynamoDB fetch');
|
|
21
|
+
}
|
|
22
|
+
const getConfig = {
|
|
23
|
+
tableName: config.tableName,
|
|
24
|
+
key,
|
|
25
|
+
};
|
|
26
|
+
return await (0, operations_1.getDynamoDBDocument)(getConfig, credentials, logger);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=fetchRecord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchRecord.js","sourceRoot":"","sources":["../../../src/DynamoDBFetch/service/fetchRecord.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAMH,gEA8BC;AAjCD,wDAA8D;AAGvD,KAAK,UAAU,0BAA0B,CAC9C,MAA2B,EAC3B,MAA2B,EAC3B,WAA2B,EAC3B,MAAW;IAGX,uCAAuC;IACvC,MAAM,GAAG,GAAwB,EAAE,CAAC;IAEpC,oCAAoC;IACpC,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC;IAED,8CAA8C;IAC9C,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,SAAS,GAAG;QAChB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,GAAG;KACJ,CAAC;IAEF,OAAO,MAAM,IAAA,gCAAmB,EAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for DynamoDBFetch node
|
|
3
|
+
*/
|
|
4
|
+
export interface DynamoDBFetchConfig {
|
|
5
|
+
tableName: string;
|
|
6
|
+
primaryKey: string;
|
|
7
|
+
sortKey?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface DynamoDBFetchOutput {
|
|
10
|
+
__outputs: {
|
|
11
|
+
output: any;
|
|
12
|
+
found: boolean;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/DynamoDBFetch/util/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE;QACT,MAAM,EAAE,GAAG,CAAC;QACZ,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/DynamoDBFetch/util/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type NodeExecutionContext } from "@gravity-platform/plugin-base";
|
|
2
|
+
import { DynamoDBServiceConfig, DynamoDBServiceOutput } from "../util/types";
|
|
3
|
+
import { PromiseNode } from "../../shared/platform";
|
|
4
|
+
export declare class DynamoDBServiceExecutor extends PromiseNode<DynamoDBServiceConfig> {
|
|
5
|
+
constructor();
|
|
6
|
+
protected executeNode(inputs: Record<string, any>, config: DynamoDBServiceConfig, context: NodeExecutionContext): Promise<DynamoDBServiceOutput>;
|
|
7
|
+
/**
|
|
8
|
+
* Build credential context from execution context
|
|
9
|
+
*/
|
|
10
|
+
private buildCredentialContext;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/DynamoDBService/node/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAgB,MAAM,uBAAuB,CAAC;AAKlE,qBAAa,uBAAwB,SAAQ,WAAW,CAAC,qBAAqB,CAAC;;cAK7D,WAAW,CACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,MAAM,EAAE,qBAAqB,EAC7B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAgCjC;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAW/B"}
|