Alexander
08/12/2024, 10:00 AMChantal Loncle
08/12/2024, 5:52 PMinsert()
overloads, but it is possible. You would just need to extend the existing InsertSelectStatement
class and provide a custom extension function, something like:
class ReplaceSelectStatement(
columns: List<Column<*>>,
selectQuery: AbstractQuery<*>
) : InsertSelectStatement(columns, selectQuery) {
override fun prepareSQL(transaction: Transaction, prepared: Boolean): String {
val querySql = selectQuery.prepareSQL(transaction, prepared)
return transaction.db.dialect.functionProvider.replace(targets.single(), columns, querySql, transaction)
}
}
fun <T : Table> T.replace(
selectQuery: AbstractQuery<*>,
columns: List<Column<*>> = this.columns.filter { !it.columnType.isAutoInc || it.autoIncColumnType?.nextValExpression != null }
): Int? = ReplaceSelectStatement(columns, selectQuery).execute(TransactionManager.current())
Seems like a small enough addition on our end, so I'll look into trying to get it in.Alexander
08/13/2024, 7:31 AM