问题标签 [sqldelight]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
298 浏览

kotlin - 如果 SQLDelight 多平台位于单独的模块中,则不生成架构

我已经模块化了我的共享代码,所以目前我有一个shared模块(kmp),在这个模块里面我有shared:coreshared:database(也是多平台的)。
如果我在共享模块中设置数据库,它可以工作:我将 AppDatabase.sq 放在共享的 commonMain 文件夹中,在 sqldelight/com/example/kmmbase/database/ 中,并且模式已正确生成。
另一方面,如果我尝试将它移动到shared:database模块中,它不会生成模式,驱动程序也不会编译。我将 AppDatabase.sq 文件添加到相同的路径,但现在位于shared:database模块的 commonMain 中,并将 sqldelight 插件和 gradle 配置从sharedgradle 文件移动到shared:databasegradle 文件。
我拥有的gradle配置如下:

我为 .sq 文件尝试了不同的位置,并且在每个位置上我都匹配 gradle config 的 packageName:

  • sqldelight/com/example/kmmbase/shared/
  • sqldelight/com/example/kmmbase/database/
  • sqldelight/com/example/数据库/
  • sqldelight/com/example/数据库/数据库/
  • sqldelight/数据库/
  • ...

知道我可能做错了什么吗?

编辑:这是一个带有代码的仓库。

0 投票
0 回答
77 浏览

sqldelight - 如何在后台线程中执行查询?

我目前正在寻找一个由 SQLdelight 支持的 KMM 应用程序,用于所有与域相关的操作。

SQLdelight 似乎提供了非常好的接口,但是似乎所有的写调用(插入/更新/删除)都是使用阻塞调用实现的,所以我担心它会通过阻塞主线程来损害应用程序的响应能力很多.

是否有推荐的方法来执行此类操作而不阻塞主线程?

该应用程序也必须在 iOS 上运行,所以我不能承受太多的冻结。

0 投票
1 回答
145 浏览

sqldelight - 用于时间戳的 Sqldelight 和 Postgres 列适配器

使用这个

编译但适配器永远不会在 postgres 中从 localdatetime 转换为 TIMESTAMP。相反,我收到

我认为这是一个错误,但我先在这里询问是否有人有任何想法,然后再在 github 上提交错误报告。谢谢。

0 投票
1 回答
232 浏览

android - 我可以使用 SqlDelight 创建一个内存数据库以在 Android 中运行吗?

我有一个运行良好的 SqlDelight 数据库。我这样创建它:

对于单元测试,我创建了一个这样的内存数据库:

我想对在模拟器或物理设备上运行的 androidTests 做同样的事情,但是 JdbcSqliteDriver 在 Android 中不起作用,大概是因为 Android 默认没有安装该包。

如何在 AndroidTest(或生产环境)中运行内存数据库?

0 投票
2 回答
709 浏览

android - 从 ViewModel 中的 SqlDelight 收集流时出现 java.lang.IllegalStateException

我正在尝试在我的应用程序中使用 SqlDelight 数据库。

在我的 DAO 中,我有一个名为 getRecipeById 的函数来查询数据库并返回域模型(Recipe)流。下面是函数的实现:(注意:RecipeTable 是表的名称,或者我想我应该叫它RecipeEntity)

然后我的存储库像这样调用这个函数:(注意:recipeLocalDatabase 是我的 DAO)

然后我的用例层从存储库调用函数并传递流程:

现在在 ViewModel 中,我正在收集 RecipeDTO 的流程,如下所示:

然后,我的视图层将观察 Mu​​tableState 对象。现在,我每隔一段时间就会收到这个错误

我认为是流量收集导致了错误,或者可能是因为我使用的是 MutableState?谷歌搜索错误没有多大帮助......有谁知道这个问题的原因是什么?谢谢!对不起,很长的帖子。

0 投票
1 回答
160 浏览

android - 如何使用 Sqldelight 中的复合主键从表中删除行列表?

我想删除给定列表as_counter,t_ms和值的表中的行as_countert_ms并存在于列表中。

数据库

我尝试过的方法是在 deleteEventListByKey 中。但是我收到了错误'(', ')', '.', <binary like operator real>, BETWEEN or IN expected, got ','。我不确定为什么会收到此错误。

我试图通过的测试用例

有谁知道如何为 SQLdelight(SQLLite) 编写查询,在给定列表输入的情况下,如果数据库中存在并且表中的条目将被as_counter删除t_ms

0 投票
1 回答
103 浏览

kotlin-multiplatform - 在 KMM (prod) 中使用 SQLDelight 有什么限制

SQLDelight 在这里仍然被标记为 maven 存储库上的实验库,尽管第一个版本似乎在 2018 年 10 月发布。

我在 KMM 中制作了一个示例应用程序,我可以在其中插入/删除行,到目前为止,它似乎对我们的用例运行良好。但是,有人可以帮助我了解它的哪些方面在产品中使用不安全。有任何性能问题吗?还是有可能在产品中随机崩溃?或者,我们是否知道是否有应用程序成功地将 Prod 中的 SqlDelight 用于其 KMM 应用程序?

谢谢!

0 投票
0 回答
34 浏览

android - android应用程序在哪里存储照片

我想在我的 android 应用程序中访问相机并选择拍照。存储照片的最佳方式在哪里?

  1. 在图书馆的设备上?并保存他们的路径
  2. 在 blob 列的本地数据库中?(SqlDelight)
  3. 另一种方式?非常感谢。
0 投票
1 回答
587 浏览

android - SQLDelight 关系

我想用SQLDelight建模关系,尤其是一对多关系。

我有 2 张桌子:recipeingredient. 为简单起见,它们看起来像这样:

所以我有一个食谱列表,每个食谱可以包含 0-n 个成分。

我有两个目标:

  • 写一个包含所有成分的食谱
  • 阅读包含所有成分的食谱

我很确定第一个只能手动完成,例如插入配方然后手动插入相关成分。

对于后者,我尝试使用以下语句加入表:

SQLDelight 为我生成了一个 1:1 的关系文件:

有没有什么好的方法可以用一个生成的函数来检索数据(配方 + 成分列表)?类似于房间 @Embedded@Relation注释的东西。

0 投票
0 回答
113 浏览

kotlin - 前端内部错误:无法分析 SQLDelight 表的声明

我试图./gradlew build在我的 kotlin 多平台项目上运行,但是构建失败并出现此错误。似乎无法生成 SQLDelight Event 数据库。

完整的日志文件可以在 https://gist.github.com/ExtremelySunnyYK/5d237b6e2ef387837cd3dbc40bddf50d查看

在我集成 kmp(kotlin 多平台)项目的 ios 部分之前,kmp 的 android 部分构建良好,并且生成了事件数据库。

但是在我将 ios 部分与id("com.chromaticnoise.multiplatform-swiftpackage") version "2.0.3"https://johnoreilly.dev/posts/kotlinmultiplatform-swift-package/ 集成后 ,构建现在失败并出现错误org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException.invalidWireType(InvalidProtocolBufferException.java:99)

这是我的依赖版本

  • 摇篮版本:7.1
  • Kotlin Gradle 插件:1.5.0
  • Android 构建 Gradle:4.2
  • SQL喜悦:1.5.0
  • Android Studio 4.2 Build #AI-202.7660.26.42.7322048,构建于 2021 年 4 月 29 日,macOS 10.15.7

我曾尝试降级我的 android studio 版本,将 gradle 版本降级到 6.8,但我收到了同样的错误。