dave08
11/30/2023, 10:26 AMinline fun <reified T : Any> groupConcat(vararg columns: ColumnExpression<T, String>) : ColumnExpression<T, String> {
val operands = columns.map { Operand.Column(it) }
return columnExpression(T::class, String::class, { this as T }, "group_concat", operands.toList()) {
append("GROUP_CONCAT(")
operands.dropLast(1).forEach { visit(it); append(", ") }
visit(operands.last())
append(")")
}
}
dave08
11/30/2023, 11:38 AMToshihiro Nakamura
11/30/2023, 11:45 AMfun <T: Any> groupConcat(vararg columns: ColumnExpression<T, String>) : ColumnExpression<T, String> {
if (columns.isEmpty()) error("empty columns")
val operands = columns.map { Operand.Column(it) }
return columnExpression(columns.first(), "group_concat", operands.toList()) {
append("GROUP_CONCAT(")
operands.dropLast(1).forEach { visit(it); append(", ") }
visit(operands.last())
append(")")
}
}
dave08
11/30/2023, 12:06 PMType mismatch.
Required:
ColumnExpression<TypeVariable(T), String>
Found:
PropertyMetamodel<SomeEntity, SomeId, Int>
dave08
11/30/2023, 12:07 PMdave08
11/30/2023, 12:13 PMfun <E: Any, I: Any> groupConcat(vararg columns: ColumnExpression<E, I>) : ColumnExpression<E, I> {
if (columns.isEmpty()) error("empty columns")
val operands = columns.map { Operand.Column(it) }
return columnExpression(columns.first(), "group_concat", operands.toList()) {
append("GROUP_CONCAT(")
operands.dropLast(1).forEach { visit(it); append(", ") }
visit(operands.last())
append(")")
}
}
dave08
11/30/2023, 12:15 PMToshihiro Nakamura
11/30/2023, 12:32 PMfun groupConcat(vararg columns: ColumnExpression<*, *>) : ColumnExpression<String, String> {
if (columns.isEmpty()) error("empty columns")
val operands = columns.map { Operand.Column(it) }
return columnExpression(String::class, String::class, {it}, "group_concat", operands.toList()) {
append("GROUP_CONCAT(")
operands.dropLast(1).forEach { visit(it); append(", ") }
visit(operands.last())
append(")")
}
}
dave08
11/30/2023, 1:35 PM