diff --git a/src/queryBuilders/getItemQueryBuilder.ts b/src/queryBuilders/getItemQueryBuilder.ts index 580c1b0..5b36ab3 100644 --- a/src/queryBuilders/getItemQueryBuilder.ts +++ b/src/queryBuilders/getItemQueryBuilder.ts @@ -2,12 +2,11 @@ import { DynamoDBDocumentClient } from "@aws-sdk/lib-dynamodb"; import { GetNode } from "../nodes/getNode"; import { QueryCompiler } from "../queryCompiler"; import { - DeepPartial, + ExecuteOutput, ObjectFullPaths, PickPk, PickSkRequired, SelectAttributes, - StripKeys, } from "../typeHelpers"; import { preventAwait } from "../util/preventAwait"; @@ -22,7 +21,7 @@ export interface GetQueryBuilderInterface { attributes: A ): GetQueryBuilderInterface>; - execute(): Promise> | undefined>; + execute(): Promise | undefined>; } export class GetQueryBuilder @@ -77,10 +76,10 @@ export class GetQueryBuilder }) as any; } - execute = async (): Promise> | undefined> => { + execute = async (): Promise | undefined> => { const command = this.#props.queryCompiler.compile(this.#props.node); const item = await this.#props.ddbClient.send(command); - return (item.Item as StripKeys>) ?? undefined; + return (item.Item as ExecuteOutput) ?? undefined; }; } diff --git a/src/queryBuilders/queryQueryBuilder.integration.test.ts b/src/queryBuilders/queryQueryBuilder.integration.test.ts index 007f04b..9bd395b 100644 --- a/src/queryBuilders/queryQueryBuilder.integration.test.ts +++ b/src/queryBuilders/queryQueryBuilder.integration.test.ts @@ -136,7 +136,7 @@ describe("QueryQueryBuilder", () => { }); it("handles a FilterExpression that uses attribute_exists and attribute_not_exists", async () => { - let data = await tsynamoClient + const data = await tsynamoClient .query("myTable") .keyCondition("userId", "=", "123") .filterExpression("nested.nestedString", "attribute_exists") @@ -144,14 +144,14 @@ describe("QueryQueryBuilder", () => { expect(data).toMatchSnapshot(); - data = await tsynamoClient + const data2 = await tsynamoClient .query("myTable") .keyCondition("userId", "=", "123") .filterExpression("nested.nestedString", "attribute_not_exists") .attributes(["userId", "nested"]) .execute(); - expect(data).toMatchSnapshot(); + expect(data2).toMatchSnapshot(); }); it("handles a FilterExpression that uses begins_with", async () => { diff --git a/src/queryBuilders/queryQueryBuilder.ts b/src/queryBuilders/queryQueryBuilder.ts index 8d8b320..186cee9 100644 --- a/src/queryBuilders/queryQueryBuilder.ts +++ b/src/queryBuilders/queryQueryBuilder.ts @@ -15,7 +15,7 @@ import { import { QueryNode } from "../nodes/queryNode"; import { QueryCompiler } from "../queryCompiler"; import { - DeepPartial, + ExecuteOutput, GetFromPath, ObjectFullPaths, ObjectKeyPaths, @@ -28,7 +28,7 @@ import { import { preventAwait } from "../util/preventAwait"; export interface QueryQueryBuilderInterface { - execute(): Promise>[] | undefined>; + execute(): Promise[] | undefined>; /** * keyCondition methods @@ -694,10 +694,10 @@ export class QueryQueryBuilder< }) as any; } - execute = async (): Promise>[] | undefined> => { + execute = async (): Promise[] | undefined> => { const command = this.#props.queryCompiler.compile(this.#props.node); const result = await this.#props.ddbClient.send(command); - return (result.Items as StripKeys>[]) ?? undefined; + return (result.Items as ExecuteOutput[]) ?? undefined; }; } diff --git a/src/typeHelpers.ts b/src/typeHelpers.ts index e57356d..8bb6fc8 100644 --- a/src/typeHelpers.ts +++ b/src/typeHelpers.ts @@ -100,7 +100,9 @@ export type DeepPartial = { : T[P]; }; -export type ExecuteOutput = StripKeys & DeepPartial>; +export type ExecuteOutput = StripKeys< + PickPk & PickSkRequired & DeepPartial +>; type IntersectionToSingleObject = T extends infer U ? { [K in keyof U]: U[K] }