From ae44c2d776d17a3dfa57f656961780c91e7a417d Mon Sep 17 00:00:00 2001 From: Benjamin Tan Date: Sun, 5 Nov 2023 18:40:25 +0800 Subject: [PATCH] feat: query parser: add types for `count` Closes #447, #479. --- src/select-query-parser.ts | 2 ++ test/index.test-d.ts | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/src/select-query-parser.ts b/src/select-query-parser.ts index 2e798e29..155b3247 100644 --- a/src/select-query-parser.ts +++ b/src/select-query-parser.ts @@ -267,6 +267,8 @@ type ConstructFieldDefinition< : Field extends { name: string; original: string } ? Field['original'] extends keyof Row ? { [K in Field['name']]: Row[Field['original']] } + : Field['original'] extends 'count' + ? { count: number } : SelectQueryError<`Referencing missing column \`${Field['original']}\``> : Record diff --git a/test/index.test-d.ts b/test/index.test-d.ts index 3bd61e23..a3194bf3 100644 --- a/test/index.test-d.ts +++ b/test/index.test-d.ts @@ -88,6 +88,15 @@ const postgrest = new PostgrestClient(REST_URL) expectType<{ message: string | null }>(data) } +// `count` in embedded resource +{ + const { data, error } = await postgrest.from('messages').select('message, users(count)').single() + if (error) { + throw new Error(error.message) + } + expectType<{ message: string | null; users: { count: number } | null }>(data) +} + // json accessor in select query { const { data, error } = await postgrest