显然,有SqlDelight的Kotlin协程扩展功能,但是由于找不到文档,我不知道如何实现它们。
我有一个看起来像这样的普通查询:
val allItems
get() = itemQueries.selectAll().mapToList()
我可以将其转换为暂停功能吗?
最佳答案
当前(v1.2.1)不支持SqlDelight查询的挂起函数,但是您可以使用Coroutines Flow对象,甚至更好。为此,您需要在应用程序gradle中添加协程扩展库:
dependencies {
implementation "com.squareup.sqldelight:coroutines-extensions:1.2.1"
}
然后将您的查询变成这样:
val allItems: Flow<List<Item>> =
itemQueries.selectAll()
.asFlow()
.mapToList()
该流将发出查询结果,并且每次数据库针对该查询进行更改时都会发出新结果。
然后,您可以在协程范围内
.collect{}
结果。