From 76b1a2f91f94d4a57d01ce1df837336354fe97b2 Mon Sep 17 00:00:00 2001 From: Gulfaraz Rahman Date: Mon, 23 Oct 2023 23:25:14 +0530 Subject: [PATCH 1/3] fix: use base/composite/enum type for fn columns --- src/server/templates/typescript.ts | 16 ++++++++-------- test/db/00-init.sql | 15 +++++++++++++++ test/server/typegen.ts | 21 +++++++++++++++++++++ 3 files changed, 44 insertions(+), 8 deletions(-) diff --git a/src/server/templates/typescript.ts b/src/server/templates/typescript.ts index 90c3cddd..0b9fd33e 100644 --- a/src/server/templates/typescript.ts +++ b/src/server/templates/typescript.ts @@ -99,14 +99,14 @@ export interface Database { ), ...schemaFunctions .filter((fn) => fn.argument_types === table.name) - .map( - (fn) => - `${JSON.stringify(fn.name)}: ${pgTypeToTsType( - fn.return_type, - types, - schemas - )} | null` - ), + .map((fn) => { + const type = types.find(({ id }) => id === fn.return_type_id) + let tsType = 'unknown' + if (type) { + tsType = pgTypeToTsType(type.name, types, schemas) + } + return `${JSON.stringify(fn.name)}: ${tsType} | null` + }), ]} } Insert: { diff --git a/test/db/00-init.sql b/test/db/00-init.sql index f4fc17a9..9f2e60ec 100644 --- a/test/db/00-init.sql +++ b/test/db/00-init.sql @@ -61,6 +61,21 @@ $$ select substring($1.details, 1, 3); $$ language sql stable; +create function public.blurb_varchar(public.todos) returns character varying as +$$ +select substring($1.details, 1, 3); +$$ language sql stable; + +create function public.details_length(public.todos) returns integer as +$$ +select length($1.details); +$$ language sql stable; + +create function public.details_is_long(public.todos) returns boolean as +$$ +select $1.details_length > 20; +$$ language sql stable; + create extension postgres_fdw; create server foreign_server foreign data wrapper postgres_fdw options (host 'localhost', port '5432', dbname 'postgres'); create user mapping for postgres server foreign_server options (user 'postgres', password 'postgres'); diff --git a/test/server/typegen.ts b/test/server/typegen.ts index a798a222..0adddb9e 100644 --- a/test/server/typegen.ts +++ b/test/server/typegen.ts @@ -72,6 +72,9 @@ test('typegen', async () => { id: number "user-id": number blurb: string | null + blurb_varchar: string | null + details_is_long: boolean | null + details_length: number | null } Insert: { details?: string | null @@ -217,6 +220,24 @@ test('typegen', async () => { } Returns: string } + blurb_varchar: { + Args: { + "": unknown + } + Returns: string + } + details_is_long: { + Args: { + "": unknown + } + Returns: boolean + } + details_length: { + Args: { + "": unknown + } + Returns: number + } function_returning_row: { Args: Record Returns: { From 003cc76e5084c5865f42e4ad0db5b2c16557de02 Mon Sep 17 00:00:00 2001 From: Gulfaraz Rahman Date: Fri, 3 Nov 2023 21:13:19 +0530 Subject: [PATCH 2/3] test(typegen): update test snapshot after update with master --- test/server/typegen.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/test/server/typegen.ts b/test/server/typegen.ts index 8f55fb11..793f7450 100644 --- a/test/server/typegen.ts +++ b/test/server/typegen.ts @@ -69,6 +69,9 @@ test('typegen', async () => { id: number "user-id": number blurb: string | null + blurb_varchar: string | null + details_is_long: boolean | null + details_length: number | null } Insert: { details?: string | null @@ -278,6 +281,24 @@ test('typegen', async () => { } Returns: string } + blurb_varchar: { + Args: { + "": unknown + } + Returns: string + } + details_is_long: { + Args: { + "": unknown + } + Returns: boolean + } + details_length: { + Args: { + "": unknown + } + Returns: number + } function_returning_row: { Args: Record Returns: { From a10d206d336a329bef3b5a48ded2b5a5ebffa582 Mon Sep 17 00:00:00 2001 From: Bobbie Soedirgo Date: Thu, 9 Nov 2023 14:14:49 +0800 Subject: [PATCH 3/3] Revert "fix: add integer to the list of numeric types (#642)" This reverts commit 07a1e4c77c70bd05cd84b1b6b72364d5dd5ca417. The issue the above commit is meant to fix is probably fixed by #624. --- src/server/templates/typescript.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/templates/typescript.ts b/src/server/templates/typescript.ts index 7e006c23..96a30fe4 100644 --- a/src/server/templates/typescript.ts +++ b/src/server/templates/typescript.ts @@ -428,7 +428,7 @@ const pgTypeToTsType = ( ): string => { if (pgType === 'bool') { return 'boolean' - } else if (['int2', 'int4', 'int8', 'float4', 'float8', 'numeric', 'integer'].includes(pgType)) { + } else if (['int2', 'int4', 'int8', 'float4', 'float8', 'numeric'].includes(pgType)) { return 'number' } else if ( [