diff --git a/jOOQ-kotlin/src/main/kotlin/org/jooq/kotlin/Extensions.kt b/jOOQ-kotlin/src/main/kotlin/org/jooq/kotlin/Extensions.kt index 8fbb2ec8fe..c9485957c6 100644 --- a/jOOQ-kotlin/src/main/kotlin/org/jooq/kotlin/Extensions.kt +++ b/jOOQ-kotlin/src/main/kotlin/org/jooq/kotlin/Extensions.kt @@ -2,6 +2,43 @@ package org.jooq.kotlin import org.jooq.* import org.jooq.impl.DSL.* +import java.util.stream.Collector + +// ---------------------------------------------------------------------------- +// Extensions to collect Field> into other types +// ---------------------------------------------------------------------------- + +fun Field>.collecting(collector: Collector): Field = convertFrom { it.collect(collector) } + +inline fun Field>>.intoArray(): Field> = collecting(Records.intoArray(E::class.java)) + +inline fun Field>.intoArray(noinline mapper: (R) -> E): Field> = collecting(Records.intoArray(E::class.java, mapper)) + +fun > Field>.intoGroups(): Field>> = collecting(Records.intoGroups()) + +fun Field>.intoGroups(keyMapper: (R) -> K): Field>> = collecting(Records.intoGroups(keyMapper)) + +fun Field>.intoGroups(keyMapper: (R) -> K, valueMapper: (R) -> V): Field>> = collecting(Records.intoGroups(keyMapper, valueMapper)) + +fun > Field>.intoList(): Field> = collecting(Records.intoList()) + +fun Field>.intoList(mapper: (R) -> E): Field> = collecting(Records.intoList(mapper)) + +fun Field>>.intoMap(): Field> = collecting(Records.intoMap()) + +fun Field>.intoMap(keyMapper: (R) -> K): Field> = collecting(Records.intoMap(keyMapper)) + +fun Field>.intoMap(keyMapper: (R) -> K, valueMapper: (R) -> V): Field> = collecting(Records.intoMap(keyMapper, valueMapper)) + +fun Field>.intoResultGroups(keyMapper: (R) -> K): Field>> = collecting(Records.intoResultGroups(keyMapper)) + +fun Field>.intoResultGroups(keyMapper: (R) -> K, valueMapper: (R) -> V): Field>> = collecting(Records.intoResultGroups(keyMapper, valueMapper)) + +fun > Field>.intoSet(): Field> = collecting(Records.intoSet()) + +fun Field>.intoSet(mapper: (R) -> E): Field> = collecting(Records.intoSet(mapper)) + + // ---------------------------------------------------------------------------- // Extensions to map Field> to more convenient Field>