diff --git a/packages/core/src/tx.ts b/packages/core/src/tx.ts index ae36c4e936..51202c0fa9 100644 --- a/packages/core/src/tx.ts +++ b/packages/core/src/tx.ts @@ -233,7 +233,7 @@ export type ArrayMoveDescriptor = { * @public */ export type NumberProperties = { - [P in keyof T]: T[P] extends number | undefined ? T[P] : never + [P in keyof T]: T[P] extends number | undefined | null ? T[P] : never } /** diff --git a/server/postgres/src/__tests__/storage.test.ts b/server/postgres/src/__tests__/storage.test.ts index 6890fae194..75ec50b7d1 100644 --- a/server/postgres/src/__tests__/storage.test.ts +++ b/server/postgres/src/__tests__/storage.test.ts @@ -177,9 +177,13 @@ describe('postgres operations', () => { }) const doc = (await client.findAll(taskPlugin.class.Task, {}))[0] + await operations.updateDoc(doc._class, doc.space, doc._id, { rate: null }) + let tasks = await client.findAll(taskPlugin.class.Task, {}) + expect(tasks.length).toEqual(1) + expect(tasks[0].rate).toBeNull() await operations.updateDoc(doc._class, doc.space, doc._id, { rate: 30 }) - let tasks = await client.findAll(taskPlugin.class.Task, {}) + tasks = await client.findAll(taskPlugin.class.Task, {}) expect(tasks.length).toEqual(1) expect(tasks[0].rate).toEqual(30) @@ -205,7 +209,7 @@ describe('postgres operations', () => { expect(tasks[0].arr?.length).toEqual(2) expect(tasks[0].arr?.[0]).toEqual(1) expect(tasks[0].arr?.[1]).toEqual(3) - }) + }, 1000000) it('check remove', async () => { for (let i = 0; i < 10; i++) { diff --git a/server/postgres/src/__tests__/tasks.ts b/server/postgres/src/__tests__/tasks.ts index aee8a9db3f..e9cb722374 100644 --- a/server/postgres/src/__tests__/tasks.ts +++ b/server/postgres/src/__tests__/tasks.ts @@ -34,7 +34,7 @@ export enum TaskReproduce { export interface Task extends Doc { name: string description: string - rate?: number + rate?: number | null status?: TaskStatus reproduce?: TaskReproduce eta?: TaskEstimate | null diff --git a/server/postgres/src/storage.ts b/server/postgres/src/storage.ts index 7722977156..d6d419f188 100644 --- a/server/postgres/src/storage.ts +++ b/server/postgres/src/storage.ts @@ -1492,7 +1492,7 @@ class PostgresAdapter extends PostgresAdapterBase { for (const key in remainingData) { if (ops[key] === undefined) continue const val = (remainingData as any)[key] - from = `jsonb_set(${from}, '{${key}}', to_jsonb($${paramsIndex++}${inferType(val)}) , true)` + from = `jsonb_set(${from}, '{${key}}', coalesce(to_jsonb($${paramsIndex++}${inferType(val)}), 'null') , true)` params.push(val) dataUpdated = true }