From d288d47c2ce415f4a29b140dfb8e5670615c3ecd Mon Sep 17 00:00:00 2001 From: sanny-io Date: Tue, 11 Aug 2026 22:54:47 +0000 Subject: [PATCH 1/4] fix: allow setting `null` on optional `Decimal` fields when using `sqlite` provider --- packages/orm/src/client/crud/dialects/sqlite.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/orm/src/client/crud/dialects/sqlite.ts b/packages/orm/src/client/crud/dialects/sqlite.ts index 00927f510..a7ceac7b2 100644 --- a/packages/orm/src/client/crud/dialects/sqlite.ts +++ b/packages/orm/src/client/crud/dialects/sqlite.ts @@ -99,7 +99,7 @@ export class SqliteCrudDialect extends BaseCrudDialect ? new Date(value).toISOString() : value; case 'Decimal': - return (value as Decimal).toString(); + return value !== null ? value.toString() : value; case 'Bytes': return Buffer.from(value as Uint8Array); default: From 5438853ffde6ce622d13181856e0783309bad5c5 Mon Sep 17 00:00:00 2001 From: sanny-io Date: Tue, 11 Aug 2026 22:54:55 +0000 Subject: [PATCH 2/4] chore: add test --- tests/e2e/orm/client-api/sqlite-null.test.ts | 27 ++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 tests/e2e/orm/client-api/sqlite-null.test.ts diff --git a/tests/e2e/orm/client-api/sqlite-null.test.ts b/tests/e2e/orm/client-api/sqlite-null.test.ts new file mode 100644 index 000000000..12796d90b --- /dev/null +++ b/tests/e2e/orm/client-api/sqlite-null.test.ts @@ -0,0 +1,27 @@ +import { createTestClient, getTestDbProvider } from '@zenstackhq/testtools'; +import { describe, expect, it } from 'vitest'; + +const provider = getTestDbProvider(); + +describe.skipIf(provider !== 'sqlite')('sqlite null tests', () => { + it('allows writing null to a optional Decimal fields', async () => { + const db = await createTestClient( + ` +model User { + id Int @id @default(autoincrement()) + balance Decimal? +} +`, + ); + + await expect( + db.user.create({ + data: { + balance: null, + }, + }), + ).resolves.toMatchObject({ + balance: null, + }); + }); +}); From 5ce57de469f6385d698138022fcbb8dcaa19ade4 Mon Sep 17 00:00:00 2001 From: sanny-io Date: Tue, 11 Aug 2026 22:55:23 +0000 Subject: [PATCH 3/4] chore: fix spelling --- tests/e2e/orm/client-api/sqlite-null.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/orm/client-api/sqlite-null.test.ts b/tests/e2e/orm/client-api/sqlite-null.test.ts index 12796d90b..9f7b8fdff 100644 --- a/tests/e2e/orm/client-api/sqlite-null.test.ts +++ b/tests/e2e/orm/client-api/sqlite-null.test.ts @@ -4,7 +4,7 @@ import { describe, expect, it } from 'vitest'; const provider = getTestDbProvider(); describe.skipIf(provider !== 'sqlite')('sqlite null tests', () => { - it('allows writing null to a optional Decimal fields', async () => { + it('allows writing null to optional Decimal fields', async () => { const db = await createTestClient( ` model User { From 0c34a4d27a49ed646a9e51e3bbc4c76329e49209 Mon Sep 17 00:00:00 2001 From: sanny-io Date: Tue, 11 Aug 2026 23:05:43 +0000 Subject: [PATCH 4/4] chore: add update path --- tests/e2e/orm/client-api/sqlite-null.test.ts | 27 +++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/tests/e2e/orm/client-api/sqlite-null.test.ts b/tests/e2e/orm/client-api/sqlite-null.test.ts index 9f7b8fdff..912788d04 100644 --- a/tests/e2e/orm/client-api/sqlite-null.test.ts +++ b/tests/e2e/orm/client-api/sqlite-null.test.ts @@ -1,5 +1,6 @@ import { createTestClient, getTestDbProvider } from '@zenstackhq/testtools'; import { describe, expect, it } from 'vitest'; +import Decimal from 'decimal.js'; const provider = getTestDbProvider(); @@ -14,11 +15,35 @@ model User { `, ); + const user = await db.user.create({ + data: { + balance: null, + }, + }); + + expect(user).toMatchObject({ + balance: null, + }); + + await db.user.update({ + data: { + balance: Decimal(1), + }, + + where: { + id: user.id, + }, + }); + await expect( - db.user.create({ + db.user.update({ data: { balance: null, }, + + where: { + id: user.id, + }, }), ).resolves.toMatchObject({ balance: null,