If anyone is interested, I implemented `SELECT * ...
# exposed
k
If anyone is interested, I implemented
SELECT * FROM some WHERE id in (SELECT id2 FROM other)
as follows
Copy code
kotlin

infix fun<T> ExpressionWithColumnType<T>.inSub(query: Query): Op<Boolean> = InSubOrNotInSubOp(this, query, isInSub = true)
infix fun<T> ExpressionWithColumnType<T>.notInSub(query: Query): Op<Boolean> = InSubOrNotInSubOp(this, query, isInSub = false)

class InSubOrNotInSubOp<T>(val expr: ExpressionWithColumnType<T>, val query: Query, val isInSub: Boolean = true): Op<Boolean>() {

    override fun toSQL(queryBuilder: QueryBuilder): String = buildString {
        append(expr.toSQL(queryBuilder))
        when {
            isInSub -> append(" IN (")
            else -> append(" NOT IN (")
        }
        append(query.prepareSQL(queryBuilder))
        append(")")
    }
}