Skip to content

Commit a034b1c

Browse files
authored
fix(cli): error generating TS schema when default value is negative number (#417)
* fix(cli): error generating TS schema when default value is negative number fixes #393 * update
1 parent c27e25d commit a034b1c

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

packages/sdk/src/ts-schema-generator.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1074,14 +1074,20 @@ export class TsSchemaGenerator {
10741074
: typeof arg === 'string'
10751075
? ts.factory.createStringLiteral(arg)
10761076
: typeof arg === 'number'
1077-
? ts.factory.createNumericLiteral(arg)
1077+
? this.createNumberLiteral(arg)
10781078
: arg === true
10791079
? ts.factory.createTrue()
10801080
: arg === false
10811081
? ts.factory.createFalse()
10821082
: undefined;
10831083
}
10841084

1085+
private createNumberLiteral(arg: number) {
1086+
return arg < 0
1087+
? ts.factory.createPrefixUnaryExpression(ts.SyntaxKind.MinusToken, ts.factory.createNumericLiteral(-arg))
1088+
: ts.factory.createNumericLiteral(arg);
1089+
}
1090+
10851091
private createProceduresObject(procedures: Procedure[]) {
10861092
return ts.factory.createObjectLiteralExpression(
10871093
procedures.map((proc) => ts.factory.createPropertyAssignment(proc.name, this.createProcedureObject(proc))),
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { createTestClient } from '@zenstackhq/testtools';
2+
import { describe, expect, it } from 'vitest';
3+
4+
describe('Regression for issue #393', () => {
5+
it('verifies issue 393', async () => {
6+
const db = await createTestClient(
7+
`
8+
model users {
9+
id String @id() @default(cuid())
10+
tz Int @default(-6) @db.SmallInt()
11+
}`,
12+
);
13+
await expect(db.users.create({ data: {} })).resolves.toMatchObject({ tz: -6 });
14+
});
15+
});

0 commit comments

Comments
 (0)