在 SQLDelight 中,我是否必须为使用 AS Int 等常见类型的每个列添加 EntityAdapter()?

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

我有一个大型数据库需要从旧版本的 sqldelight 迁移。它是 Kotlin 多平台应用程序的一部分。我已经完成了大部分工作,但似乎在较新的 2.0.2 版本中,我必须为每个具有“AS Int”的表和列手动添加适配器:

例如

fun getDatabase(
    driverFactory: DriverFactory,
    dbName: String,
    encryptionKey: String
): Database {
    val driver = driverFactory.createDriver(dbName, encryptionKey)
    return Database(
        driver = driver,
        FirstEntityAdapter = FirstEntity.Adapter(
aAdapter = IntColumnAdapter,
bAdapter = IntColumnAdapter,
cAdapter = IntColumnAdapter,
eAdapter = IntColumnAdapter,
fAdapter = IntColumnAdapter,
gAdapter = IntColumnAdapter,
hAdapter = IntColumnAdapter,
iAdapter = IntColumnAdapter,
jAdapter = IntColumnAdapter,
kAdapter = IntColumnAdapter,
lAdapter = IntColumnAdapter).... LOTS more adapters each with lots of IntColumnAdapters.

这将意味着大量的样板。我想知道我是否遗漏了一些东西。这看起来像是可以很容易地与 SQLDelight 生成的代码的其余部分一起生成的东西?

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

我在迁移指南中找到了问题的答案:

https://cashapp.github.io/sqldelight/2.0.2/upgrading-2.0/

“一些以前支持的类型现在需要适配器。原始类型的适配器可在 app.cash.sqldelight:primitive-adapters:2.0.2 工件中使用。例如,用于执行 INTEGER As kotlin.Int 转换的 IntColumnAdapter。”

这将意味着为我需要迁移的应用程序添加大量样板,或者我需要在代码中执行此操作:-(

希望这可以添加到未来的版本中以处理常见类型;整型、浮点型等...

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