Skip to content

Commit 0a6676a

Browse files
jeffrey-baker-vgvgphoenixcamposKevenFuentes9ijemmy
authored
feat(idempotency): Add persistence layer and DynamoDB implementation (#1110)
* feat: initial idempotency classes * feat: refactor persistence layer classes into their own folder * feat: rename idempotency config to differentiate from idempotency options * feat: added type for a generic function * feat: remove idempotency configuration for this FR * feat: refactored type of function to accept any combo of parameters * feat: adding PersistenceLayer * feat: PersistenceLayer unit tests for saveInProgress * feat: added saveSuccess * feat: added getRecord * feat: added delete record * feat: branch coverage and cleaning up imports * feat: added more tests * feat: deleted unused methods * feat: added comments * feat: implement get command for dynamo persistence layer * feat: implement get command for dynamo persistence layer * feat: allow for data attr to be passed and return in persistence layer get * feat: added implementation for delete, update, put * feat: create condition on put for not in progress status * feat: use inprogress enum for status * feat: added error when unable to get record for idempotency key * feat: added error for conditional write of an existing record * feat: tests added for put record on dynamo persistence layer * feat: implemented the idempotency record functions for status, expiry, and json response * test: check if the status is expired * test: idempotency record is not expired and status maintained * feat: added tests for get record * feat: add aws-sdk-client-mock jest assertion library * feat: add unit tests for update record and delete record * feat: remove optional chaining from item made unnecessary with error branch * feat: remove unused block * feat: refactored mock child class to be shared amongst dynamo persistence layer tests * test: add path to get the response data from the data record * feat: added branch to handle conditional check failure * feat: add configuration option to dynamo client creation to remove undefined values * feat: change how time is measured to seconds * feat: change type of the response/result to a record * feat:updated imports * refactor: create constructor object for dynamo persistence layer * fix: remove temp eslint disable * fix: adjust verbiage on test blocks Co-authored-by: ijemmy <[email protected]> * style: put constructor parameters onto one line for readability * fix: update dynamo persistence layer tests to use new construtor options * fix: remove unneeded eslint ignore from persistence layer * style: put parameters for dynamo client command object onto one line for readability * fix: move lib-dynamo dep under the correct package * refactor: change idempotency record to use options object in contructor * feat: add consistent read to dynamo persistence layer * fix: revert changes to layer-publisher package-lock Co-authored-by: vgphoenixcampos <[email protected]> Co-authored-by: KevenFuentes9 <[email protected]> Co-authored-by: Phoenix Campos <[email protected]> Co-authored-by: ijemmy <[email protected]>
1 parent 8af1c17 commit 0a6676a

20 files changed

+4350
-64
lines changed

Diff for: package-lock.json

+4-12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,8 @@
4040
},
4141
"homepage": "https://github.com/awslabs/aws-lambda-powertools-typescript#readme",
4242
"devDependencies": {
43-
"@aws-cdk/cx-api": "^2.17.0",
4443
"@aws-cdk/cloudformation-diff": "^2.17.0",
45-
"aws-cdk-lib": "^2.17.0",
46-
"constructs": "^10.0.92",
44+
"@aws-cdk/cx-api": "^2.17.0",
4745
"@commitlint/cli": "^17.0.0",
4846
"@middy/core": "^2.5.6",
4947
"@types/aws-lambda": "^8.10.72",
@@ -54,8 +52,10 @@
5452
"@typescript-eslint/parser": "^5.12.1",
5553
"archiver": "^5.3.0",
5654
"aws-cdk": "^2.17.0",
55+
"aws-cdk-lib": "^2.17.0",
5756
"aws-sdk": "^2.1082.0",
5857
"cdk-assets": "^2.17.0",
58+
"constructs": "^10.0.92",
5959
"esbuild": "^0.14.23",
6060
"eslint": "^8.4.0",
6161
"eslint-import-resolver-node": "^0.3.6",
@@ -83,4 +83,4 @@
8383
"dependencies": {
8484
"hosted-git-info": "^5.0.0"
8585
}
86-
}
86+
}

Diff for: packages/idempotency/jest.config.js

-3
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,5 @@ module.exports = {
3838
'json-summary',
3939
'text',
4040
'lcov'
41-
],
42-
'setupFiles': [
43-
'<rootDir>/tests/helpers/populateEnvironmentVariables.ts'
4441
]
4542
};

0 commit comments

Comments
 (0)