我有一个大型数据库需要从旧版本的 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 生成的代码的其余部分一起生成的东西?
我在迁移指南中找到了问题的答案:
https://cashapp.github.io/sqldelight/2.0.2/upgrading-2.0/
“一些以前支持的类型现在需要适配器。原始类型的适配器可在 app.cash.sqldelight:primitive-adapters:2.0.2 工件中使用。例如,用于执行 INTEGER As kotlin.Int 转换的 IntColumnAdapter。”
这将意味着为我需要迁移的应用程序添加大量样板,或者我需要在代码中执行此操作:-(
希望这可以添加到未来的版本中以处理常见类型;整型、浮点型等...