From d7086cafd0948b93d3e17d3ede69edf3c66759a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Fri, 26 Mar 2021 14:28:01 +0100 Subject: [PATCH] [Editor] Add support updating data from Query Result view --- .../editor/database/model/data/DataRecord.kt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/data/DataRecord.kt b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/data/DataRecord.kt index f115b585..394b2873 100644 --- a/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/data/DataRecord.kt +++ b/editor/src/main/kotlin/com/bartlomiejpluta/base/editor/database/model/data/DataRecord.kt @@ -31,6 +31,24 @@ class DataRecord( statement } + Operation.UPDATE -> { + val fieldsNumber = fields.size + val pk = schema.columns.filtered { it.primary } + val filterClause = pk.joinToString(" AND ") { "`${it.name}` = ?" } + val parametersClause = fields.map { (column, _) -> "`$column` = ?" }.joinToString(", ") + val sql = "UPDATE `${schema.name}` SET $parametersClause WHERE $filterClause" + val statement = connection.prepareStatement(sql) + fields.values.forEachIndexed { index, field -> statement.setObject(index + 1, field.value) } + pk.forEachIndexed { index, column -> + statement.setObject( + index + 1 + fieldsNumber, + fields[column.name]!!.value + ) + } + + statement + } + Operation.DELETE -> { val pk = schema.columns.filtered { it.primary } val filterClause = pk.joinToString(" AND ") { "`${it.name}` = ?" }