From 9b7b85e157c92c3efea25711ae99d7b4aeb1ceb5 Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Mon, 17 Nov 2025 18:22:41 -0800 Subject: [PATCH 1/2] fix(cli): error generating TS schema when default value is negative number fixes #393 --- packages/sdk/src/ts-schema-generator.ts | 8 +++++++- tests/regression/test/issue-393.test.ts | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 tests/regression/test/issue-393.test.ts diff --git a/packages/sdk/src/ts-schema-generator.ts b/packages/sdk/src/ts-schema-generator.ts index 3a7e33bf..b5cbd572 100644 --- a/packages/sdk/src/ts-schema-generator.ts +++ b/packages/sdk/src/ts-schema-generator.ts @@ -1074,7 +1074,7 @@ export class TsSchemaGenerator { : typeof arg === 'string' ? ts.factory.createStringLiteral(arg) : typeof arg === 'number' - ? ts.factory.createNumericLiteral(arg) + ? this.createNumberLiteral(arg) : arg === true ? ts.factory.createTrue() : arg === false @@ -1082,6 +1082,12 @@ export class TsSchemaGenerator { : undefined; } + private createNumberLiteral(arg: number): any { + return arg < 0 + ? ts.factory.createPrefixUnaryExpression(ts.SyntaxKind.MinusToken, ts.factory.createNumericLiteral(-arg)) + : ts.factory.createNumericLiteral(arg); + } + private createProceduresObject(procedures: Procedure[]) { return ts.factory.createObjectLiteralExpression( procedures.map((proc) => ts.factory.createPropertyAssignment(proc.name, this.createProcedureObject(proc))), diff --git a/tests/regression/test/issue-393.test.ts b/tests/regression/test/issue-393.test.ts new file mode 100644 index 00000000..89d8c0b9 --- /dev/null +++ b/tests/regression/test/issue-393.test.ts @@ -0,0 +1,15 @@ +import { createTestClient } from '@zenstackhq/testtools'; +import { describe, expect, it } from 'vitest'; + +describe('Regression for issue #393', () => { + it('verifies issue 393', async () => { + const db = await createTestClient( + ` +model users { + id String @id() @default(cuid()) + tz Int @default(-6) @db.SmallInt() +}`, + ); + await expect(db.users.create({ data: {} })).resolves.toMatchObject({ tz: -6 }); + }); +}); From 80a328a7ffcba9f461b3366dccf228a5e9eed418 Mon Sep 17 00:00:00 2001 From: ymc9 <104139426+ymc9@users.noreply.github.com> Date: Mon, 17 Nov 2025 18:34:46 -0800 Subject: [PATCH 2/2] update --- packages/sdk/src/ts-schema-generator.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sdk/src/ts-schema-generator.ts b/packages/sdk/src/ts-schema-generator.ts index b5cbd572..7a62e757 100644 --- a/packages/sdk/src/ts-schema-generator.ts +++ b/packages/sdk/src/ts-schema-generator.ts @@ -1082,7 +1082,7 @@ export class TsSchemaGenerator { : undefined; } - private createNumberLiteral(arg: number): any { + private createNumberLiteral(arg: number) { return arg < 0 ? ts.factory.createPrefixUnaryExpression(ts.SyntaxKind.MinusToken, ts.factory.createNumericLiteral(-arg)) : ts.factory.createNumericLiteral(arg);