如何在Kotlin协同程序中使用Sqldelight

问题描述 投票:0回答:1

显然有SqlDelight的Kotlin协程扩展功能,但是由于找不到文档,我不知道如何实现它们。

我有一个普通的查询,看起来像这样:

val allItems
  get() = itemQueries.selectAll().mapToList()

我可以将其转换为暂停功能吗?

android kotlin kotlin-coroutines sqldelight
1个回答
0
投票

当前(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{}结果。

© www.soinside.com 2019 - 2024. All rights reserved.