Filip de Waard
10/22/2020, 12:26 PMdb.execute { ... }.asType<Foo>().fetch().flow()
Now we want to return a Map. Two ways of doing that are:
db.execute { ... }.asType<Foo>().fetch().flow().fold(mapOf()) { acc, it -> acc + (transform(it.bar) to it.baz) }
or:
db.execute { ... }.asType<Foo>().fetch().flow().map(transform(it.bar) to it.baz).toList().toMap()
Which is better and why?Javier
10/22/2020, 12:35 PMFilip de Waard
10/22/2020, 12:36 PMtoList
?ephemient
10/22/2020, 12:54 PMFilip de Waard
10/22/2020, 12:59 PMephemient
10/22/2020, 1:00 PMsuspend fun <T, K, V> Flow<T>.associate(transform: (T) -> Pair<K, V>): Map<K, V> = buildMap {
collect {
val (key, value) = transform(it)
set(key, value)
}
}
db.execute { ... }.asType<Foo>().fetch().flow().associate { transform(it.bar) to it.baz }
Filip de Waard
10/22/2020, 1:03 PMephemient
10/22/2020, 1:05 PMFilip de Waard
10/22/2020, 1:22 PM