diff options
Diffstat (limited to 'src/main/kotlin/io/dico/parcels2/storage/exposed/ExposedExtensions.kt')
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/storage/exposed/ExposedExtensions.kt | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/main/kotlin/io/dico/parcels2/storage/exposed/ExposedExtensions.kt b/src/main/kotlin/io/dico/parcels2/storage/exposed/ExposedExtensions.kt index ce66644..6ebac6d 100644 --- a/src/main/kotlin/io/dico/parcels2/storage/exposed/ExposedExtensions.kt +++ b/src/main/kotlin/io/dico/parcels2/storage/exposed/ExposedExtensions.kt @@ -1,12 +1,9 @@ package io.dico.parcels2.storage.exposed -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.* +import org.jetbrains.exposed.sql.Function import org.jetbrains.exposed.sql.statements.InsertStatement import org.jetbrains.exposed.sql.transactions.TransactionManager -import org.jetbrains.exposed.sql.transactions.transaction class UpsertStatement<Key : Any>(table: Table, conflictColumn: Column<*>? = null, conflictIndex: Index? = null) : InsertStatement<Key>(table, false) { @@ -63,3 +60,15 @@ fun Table.indexR(customIndexName: String? = null, isUnique: Boolean = false, var fun Table.uniqueIndexR(customIndexName: String? = null, vararg columns: Column<*>): Index = indexR(customIndexName, true, *columns) +fun <T : Int?> ExpressionWithColumnType<T>.abs(): Function<T> = Abs(this) + +class Abs<T : Int?>(val expr: Expression<T>) : Function<T>(IntegerColumnType()) { + override fun toSQL(queryBuilder: QueryBuilder): String = "ABS(${expr.toSQL(queryBuilder)})" +} + +fun <T : Comparable<T>> SqlExpressionBuilder.greater(col1: ExpressionWithColumnType<T>, col2: ExpressionWithColumnType<T>): Expression<T> { + return case(col1) + .When(col1.greater(col2), col1) + .Else(col2) +} + |