beginner

union

union joins the result of selecting different queries into a single result.

union over List

import arrow.aql.instances.list.select.*
import arrow.aql.instances.list.union.union
import arrow.aql.instances.listk.select.selectAll

data class Student(val name: String, val age: Int)

val john = Student("John", 30)
val jane = Student("Jane", 32)
val jack = Student("Jack", 32)
val chris = Student("Chris", 40)

fun main(args: Array<String>) {
//sampleStart
val queryA = listOf("customer" to john, "customer" to jane).query { selectAll() }
val queryB = listOf("sales" to jack, "sales" to chris).query { selectAll() }
val result = queryA.union(queryB).value()
//sampleEnd
println(result)
}

intermediate

Union works with any data type that provides an instance of Foldable<F> where F is the higher kinded representation of the data type. For example ForOption when targeting the Option<A> data type or ForListK when targeting the List<A> data type

Learn more about the AQL combinators

Supported Data types

Module Data types
arrow.core Either, Option, Try
arrow.data ListK, NonEmptyList, SequenceK

advanced

Adapt AQL to your own custom data types