Fix pg set null (#7159)

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
This commit is contained in:
Denis Bykhov
2024-11-12 12:36:58 +05:00
committed by GitHub
parent b1c50bb8c2
commit 8bec20e0c5
4 changed files with 9 additions and 5 deletions
+1 -1
View File
@@ -233,7 +233,7 @@ export type ArrayMoveDescriptor<T extends object> = {
* @public
*/
export type NumberProperties<T extends object> = {
[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
}
/**
@@ -177,9 +177,13 @@ describe('postgres operations', () => {
})
const doc = (await client.findAll<Task>(taskPlugin.class.Task, {}))[0]
await operations.updateDoc(doc._class, doc.space, doc._id, { rate: null })
let tasks = await client.findAll<Task>(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<Task>(taskPlugin.class.Task, {})
tasks = await client.findAll<Task>(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++) {
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
}