Vinicius Araujo
01/04/2020, 8:21 PMWHERE (updated_at, id) <= ('2020-01-04 15:51:38.862000', '79a4f222-69ea-439c-90ba-348d025166ef')
Timur Atakishiev
01/05/2020, 5:16 PMVinicius Araujo
01/05/2020, 9:41 PMTimur Atakishiev
01/06/2020, 3:06 AMVinicius Araujo
01/06/2020, 12:15 PMandWhere
suposed to add a AND clause?Vinicius Araujo
01/07/2020, 12:14 PMVinicius Araujo
01/07/2020, 12:15 PM/**
* Expression to aggregate the [first] with the [second] columns of the composition
*/
class AnonymousCompositeExpression<L, R>(val first: Column<L>, val second: Column<R>) : Expression<Pair<L, R>>() {
override fun toQueryBuilder(queryBuilder: QueryBuilder) = queryBuilder {
append("(${first.name}, ${second.name})")
}
}
/**
* Function to check if [this] composition is less or equal than the given [pair]
*/
infix fun <L, R> AnonymousCompositeExpression<L, R>.lessEq(pair: Pair<L, R>): Op<Boolean> = CompositeLessEqOP(this, pair, CompositeLessEqOP.Operation.LESS_EQ)
/**
* Aggregate [this] column to [another] column creating an anonymous composite type
*/
infix fun <L, R> Column<L>.to(another: Column<R>) = AnonymousCompositeExpression(this, another)
/**
* Creates a less or equals clause for [expr] columns against the given [pair]
*/
class CompositeLessEqOP<L, R>(val expr: AnonymousCompositeExpression<L, R>, val pair: Pair<L, R>, val operation: Operation) : Op<Boolean>() {
enum class Operation(val symbol: String) {
LESS_EQ("<="),
GREATER_EQ(">=")
}
override fun toQueryBuilder(queryBuilder: QueryBuilder) = queryBuilder {
append("$expr ${operation.symbol} (")
registerArgument(expr.first.columnType, pair.first)
append(", ")
registerArgument(expr.second.columnType, pair.second)
append(")")
}
}