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, 15 insertions, 4 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 9f7f599..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,9 +1,7 @@ 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 @@ -61,3 +59,16 @@ 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) +} + |