From e7a517d525c5105519cef3dcf4ec2ba0b3415527 Mon Sep 17 00:00:00 2001 From: Sebastien Guillemot Date: Tue, 29 Apr 2025 18:05:39 +0900 Subject: [PATCH] import node:buffer --- packages/cli/src/generator.test.ts | 67 ++++++++++++++++++++++++++++++ packages/cli/src/types.ts | 2 +- 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/generator.test.ts b/packages/cli/src/generator.test.ts index 769af11e..0156ab25 100644 --- a/packages/cli/src/generator.test.ts +++ b/packages/cli/src/generator.test.ts @@ -799,6 +799,73 @@ export interface IGetNotificationsResult { export interface IGetNotificationsQuery { params: IGetNotificationsParams; result: IGetNotificationsResult; +}\n\n`; + expect(result).toEqual(expected); + }); + + test(`Columns with Buffer type`, async () => { + const queryStringSQL = ` + /* @name GetFiles */ + SELECT file_data FROM uploads WHERE id = :id; + `; + const queryStringTS = ` + const GetFiles = sql\`SELECT file_data FROM uploads WHERE id = $id\`; + `; + const queryString = + mode === ProcessingMode.SQL ? queryStringSQL : queryStringTS; + const mockTypes: IQueryTypes = { + returnTypes: [ + { + returnName: 'file_data', + columnName: 'file_data', + type: 'bytea', + nullable: false, + }, + ], + paramMetadata: { + params: ['uuid'], + mapping: [ + { + name: 'id', + type: ParameterTransform.Scalar, + required: false, + assignedIndex: 1, + }, + ], + }, + }; + const typeSource = async (_: any) => mockTypes; + const types = new TypeAllocator(TypeMapping()); + // Test out imports + types.use( + { name: 'PreparedQuery', from: '@pgtyped/runtime' }, + TypeScope.Return, + ); + const result = await queryToTypeDeclarations( + parsedQuery(mode, queryString), + typeSource, + types, + partialConfig, + ); + const expectedTypes = `import { PreparedQuery } from '@pgtyped/runtime'; + +import type { Buffer } from 'node:buffer';\n`; + + expect(types.declaration('file.ts')).toEqual(expectedTypes); + const expected = `/** 'GetFiles' parameters type */ +export interface IGetFilesParams { + id?: string | null | void; +} + +/** 'GetFiles' return type */ +export interface IGetFilesResult { + file_data: Buffer; +} + +/** 'GetFiles' query type */ +export interface IGetFilesQuery { + params: IGetFilesParams; + result: IGetFilesResult; }\n\n`; expect(result).toEqual(expected); }); diff --git a/packages/cli/src/types.ts b/packages/cli/src/types.ts index 4e61f43e..3c798989 100644 --- a/packages/cli/src/types.ts +++ b/packages/cli/src/types.ts @@ -24,7 +24,7 @@ const DateOrString: Type = { name: 'DateOrString', definition: 'Date | string', }; -const Bytes: Type = { name: 'Buffer' }; +const Bytes: Type = { name: 'Buffer', from: 'node:buffer' }; const Void: Type = { name: 'undefined' }; const Json: Type = { name: 'Json',