From 93a52c58144c12e3de0c5913b896da356d1f41e3 Mon Sep 17 00:00:00 2001 From: Jens Reinemann Date: Mon, 18 May 2026 18:58:34 +0200 Subject: [PATCH] fix(sync): patchItemPartial upserts new items instead of returning 404 --- .../server/repository/InventoryRepository.kt | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/server/src/main/kotlin/de/bollwerk/server/repository/InventoryRepository.kt b/server/src/main/kotlin/de/bollwerk/server/repository/InventoryRepository.kt index 7fd08b5..00abeec 100644 --- a/server/src/main/kotlin/de/bollwerk/server/repository/InventoryRepository.kt +++ b/server/src/main/kotlin/de/bollwerk/server/repository/InventoryRepository.kt @@ -272,7 +272,25 @@ internal class InventoryRepository { val exists = Items.selectAll() .where { (Items.id eq itemId) and (Items.inventoryId eq inventoryId) } .count() > 0 - if (!exists) return@transaction false + + if (!exists) { + // Neues Item: INSERT mit allen gelieferten Feldern, Defaults für fehlende + Items.insert { + it[Items.id] = itemId + it[Items.inventoryId] = inventoryId + it[name] = EncryptionService.encrypt(fields["name"]?.jsonPrimitive?.content ?: "") + it[categoryId] = fields["categoryId"]?.jsonPrimitive?.intOrNull ?: 0 + it[quantity] = fields["quantity"]?.jsonPrimitive?.doubleOrNull ?: 0.0 + it[unit] = fields["unit"]?.jsonPrimitive?.content ?: "" + it[unitPrice] = fields["unitPrice"]?.jsonPrimitive?.doubleOrNull ?: 0.0 + it[kcalPerUnit] = fields["kcalPerUnit"]?.jsonPrimitive?.intOrNull + it[expiryDate] = fields["expiryDate"]?.jsonPrimitive?.contentOrNull + it[locationId] = fields["locationId"]?.jsonPrimitive?.intOrNull ?: 0 + it[notes] = EncryptionService.encrypt(fields["notes"]?.jsonPrimitive?.content ?: "") + it[lastUpdated] = fields["lastUpdated"]?.jsonPrimitive?.longOrNull ?: System.currentTimeMillis() + } + return@transaction true + } val hasUpdatableFields = fields.keys.any { it in updatableKeys } if (!hasUpdatableFields) return@transaction true