显然,有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{}结果。

08-05 18:07