package allin.ext import org.ktorm.database.Database import org.ktorm.expression.FunctionExpression import org.ktorm.schema.ColumnDeclaring import org.ktorm.schema.IntSqlType import org.ktorm.schema.VarcharSqlType import java.sql.ResultSet fun Database.executeWithResult(request: String): ResultSet? { try { if (request.isNotEmpty()) { return this.useTransaction { transaction -> val connection = transaction.connection val resultSet = connection.prepareStatement(request).executeQuery() resultSet } } } catch (e: Exception) { println(e.message) return null } return null } fun Database.execute(request: String) { if (request.isNotEmpty()) this.useTransaction { val connection = it.connection connection.prepareStatement(request).execute() connection.commit() } } fun ColumnDeclaring.toLowerCase(): FunctionExpression { return FunctionExpression( functionName = "LOWER", arguments = listOf(this.asExpression()), sqlType = VarcharSqlType ) } fun ColumnDeclaring.toUpperCase(): FunctionExpression { return FunctionExpression( functionName = "UPPER", arguments = listOf(this.asExpression()), sqlType = VarcharSqlType ) } fun ColumnDeclaring.levenshtein(target: ColumnDeclaring): FunctionExpression { return FunctionExpression( functionName = "levenshtein", arguments = listOf(this.asExpression(), target.asExpression()), sqlType = IntSqlType ) } fun ColumnDeclaring.levenshtein(target: String): FunctionExpression = levenshtein(wrapArgument(target))