diff --git a/packages/sdk/src/ts-schema-generator.ts b/packages/sdk/src/ts-schema-generator.ts index 3a7e33bf..7a62e757 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) { + 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 }); + }); +});