summaryrefslogtreecommitdiff
path: root/src/main/kotlin/io/dico/parcels2/storage/ExposedExtensions.kt
diff options
context:
space:
mode:
authorDico <Dico200@users.noreply.github.com>2018-07-30 17:24:32 +0100
committerGitHub <noreply@github.com>2018-07-30 17:24:32 +0100
commit5d5b6550996a5e322ff153c2accee1532fbdde32 (patch)
treece5b62641ae751a4292efda46b473485553a0b85 /src/main/kotlin/io/dico/parcels2/storage/ExposedExtensions.kt
parent72482a3547ef641e79f9aa3bdec49ada860716c3 (diff)
parent14b67119484985fa64efc910e2e1c583100ea280 (diff)
Merge pull request #1 from Dico200/master
Update with outstanding commits from Dico200/Parcels2
Diffstat (limited to 'src/main/kotlin/io/dico/parcels2/storage/ExposedExtensions.kt')
-rw-r--r--src/main/kotlin/io/dico/parcels2/storage/ExposedExtensions.kt27
1 files changed, 20 insertions, 7 deletions
diff --git a/src/main/kotlin/io/dico/parcels2/storage/ExposedExtensions.kt b/src/main/kotlin/io/dico/parcels2/storage/ExposedExtensions.kt
index 7533586..816ff97 100644
--- a/src/main/kotlin/io/dico/parcels2/storage/ExposedExtensions.kt
+++ b/src/main/kotlin/io/dico/parcels2/storage/ExposedExtensions.kt
@@ -1,8 +1,10 @@
package io.dico.parcels2.storage
-import org.jetbrains.exposed.sql.*
+import org.jetbrains.exposed.sql.Column
+import org.jetbrains.exposed.sql.Index
+import org.jetbrains.exposed.sql.Table
+import org.jetbrains.exposed.sql.Transaction
import org.jetbrains.exposed.sql.statements.InsertStatement
-import org.jetbrains.exposed.sql.statements.UpdateStatement
import org.jetbrains.exposed.sql.transactions.TransactionManager
class UpsertStatement<Key : Any>(table: Table, conflictColumn: Column<*>? = null, conflictIndex: Index? = null)
@@ -26,12 +28,23 @@ class UpsertStatement<Key : Any>(table: Table, conflictColumn: Column<*>? = null
override fun prepareSQL(transaction: Transaction) = buildString {
append(super.prepareSQL(transaction))
- append(" ON CONFLICT(")
- append(indexName)
- append(") DO UPDATE SET ")
- values.keys.filter { it !in indexColumns}.joinTo(this) { "${transaction.identity(it)}=EXCLUDED.${transaction.identity(it)}" }
- }.also { println(it) }
+ val dialect = transaction.db.vendor
+ if (dialect == "postgresql") {
+
+ append(" ON CONFLICT(")
+ append(indexName)
+ append(") DO UPDATE SET ")
+
+ values.keys.filter { it !in indexColumns }.joinTo(this) { "${transaction.identity(it)}=EXCLUDED.${transaction.identity(it)}" }
+
+ } else {
+
+ append (" ON DUPLICATE KEY UPDATE ")
+ values.keys.filter { it !in indexColumns }.joinTo(this) { "${transaction.identity(it)}=VALUES(${transaction.identity(it)})" }
+
+ }
+ }
}