From b34f4a4db2874ce02c36a04678e30a0ceefdcda5 Mon Sep 17 00:00:00 2001 From: Andrew Dassonville Date: Mon, 20 Jun 2022 12:01:07 -0700 Subject: [PATCH 1/2] Fix return type of ItemSaveSettings --- packages/dynamoose/lib/Item.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dynamoose/lib/Item.ts b/packages/dynamoose/lib/Item.ts index bbaccb33b..60e671527 100644 --- a/packages/dynamoose/lib/Item.ts +++ b/packages/dynamoose/lib/Item.ts @@ -22,7 +22,7 @@ import CustomError from "./Error"; export interface ItemSaveSettings { overwrite?: boolean; - return?: "request" | "Item"; + return?: "request" | "item"; condition?: Condition; } export interface ItemSettings { From 9d03a05a9192f13ec9f70ccf1d22f453788bc226 Mon Sep 17 00:00:00 2001 From: Andrew Dassonville Date: Sat, 25 Jun 2022 09:24:23 -0700 Subject: [PATCH 2/2] Add TypeScript tests for return settings --- packages/dynamoose/test/types/Item.ts | 13 +++++++++++++ packages/dynamoose/test/types/Model.ts | 5 +++++ 2 files changed, 18 insertions(+) create mode 100644 packages/dynamoose/test/types/Item.ts diff --git a/packages/dynamoose/test/types/Item.ts b/packages/dynamoose/test/types/Item.ts new file mode 100644 index 000000000..ec1953abb --- /dev/null +++ b/packages/dynamoose/test/types/Item.ts @@ -0,0 +1,13 @@ +import {User, UserTypedModel} from "./Model"; + +const user = new User(UserTypedModel, {"id": "1", "name": "Jane", "age": 30}); + +const shouldPassSave = user.save(); +const shouldPassSaveWithReturnRequest = user.save({"return": "request"}); +const shouldPassSaveWithReturnItem = user.save({"return": "item"}); +const shouldPassSaveCallback = user.save(() => {}); +const shouldPassSaveWithReturnRequestCallback = user.save({"return": "request"}, () => {}); +const shouldPassSaveWithReturnItemCallback = user.save({"return": "item"}, () => {}); + +// @ts-expect-error +const shouldFailWithInvalidReturnType = user.save({"return": "invalid-return-type"}); diff --git a/packages/dynamoose/test/types/Model.ts b/packages/dynamoose/test/types/Model.ts index 57cb3d6eb..d7fdc83f3 100644 --- a/packages/dynamoose/test/types/Model.ts +++ b/packages/dynamoose/test/types/Model.ts @@ -22,6 +22,8 @@ const model = dynamoose.model("User", {"id": Number}); const shouldPassTableCreateRequest = model.table.create.request(); const shouldPassCreateWithNoReturnSetting = model.create({"id": 1}, {"overwrite": true}); +const shouldPassCreateWithReturnRequest = model.create({"id": 1}, {"return": "request"}); +const shouldPassCreateWithReturnItem = model.create({"id": 1}, {"return": "item"}); const shouldPassGetWithNoReturnSetting = model.get({"id": 1}, {"attributes": ["something"]}); const shouldPassDeleteWithNoReturnSetting = model.delete({"id": 1}, {"condition": new dynamoose.Condition("name").eq("Charlie")}); const shouldPassUpdateWithNoReturnSetting = model.update({"id": 1}, {"name": "Charlie"}, {"condition": new dynamoose.Condition("name").eq("Bob")}); @@ -45,6 +47,9 @@ const shouldPassGetWithNumberAsKey = model.get(1); const shouldPassUpdateWithStringAsKey = model.update("id", {"value": "hello world"}); const shouldPassUpdateWithNumberAsKey = model.update(1, {"value": "hello world"}); +// @ts-expect-error +const shouldFailWithInvalidReturnType = model.create({"id": 1}, {"return": "invalid-return-type"}); + // @ts-expect-error const shouldFailWithInvalidTransaction = model.transaction.notValid();