Banksia/shared/src/commonMain/kotlin/moe/lava/banksia/room/Database.kt

64 lines
2.2 KiB
Kotlin
Raw Normal View History

package moe.lava.banksia.room
2025-08-12 22:43:33 +10:00
import androidx.room.AutoMigration
2026-03-05 00:00:18 +11:00
import androidx.room.ConstructedBy
import androidx.room.RoomDatabase
2026-03-05 00:00:18 +11:00
import androidx.room.RoomDatabaseConstructor
import androidx.room.TypeConverters
import androidx.sqlite.driver.bundled.BundledSQLiteDriver
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.IO
2025-08-12 22:43:33 +10:00
import moe.lava.banksia.room.converter.RouteTypeConverter
import moe.lava.banksia.room.dao.VersionMetadataDao
import moe.lava.banksia.room.dao.RouteDao
import moe.lava.banksia.room.dao.ShapeDao
2025-08-12 22:43:33 +10:00
import moe.lava.banksia.room.dao.StopDao
import moe.lava.banksia.room.dao.StopTimeDao
import moe.lava.banksia.room.dao.TripDao
import moe.lava.banksia.room.entity.RouteEntity
import moe.lava.banksia.room.entity.ShapeEntity
import moe.lava.banksia.room.entity.StopEntity
import moe.lava.banksia.room.entity.StopTimeEntity
import moe.lava.banksia.room.entity.TripEntity
import moe.lava.banksia.room.entity.VersionMetadataEntity
import androidx.room.Database as DatabaseAnnotation
2025-08-12 22:43:33 +10:00
@DatabaseAnnotation(
version = 3,
2025-08-12 22:43:33 +10:00
entities = [
RouteEntity::class,
ShapeEntity::class,
StopEntity::class,
StopTimeEntity::class,
TripEntity::class,
VersionMetadataEntity::class,
2025-08-12 22:43:33 +10:00
],
autoMigrations = [
AutoMigration(from = 1, to = 2),
AutoMigration(from = 2, to = 3),
2025-08-12 22:43:33 +10:00
]
)
@TypeConverters(RouteTypeConverter::class)
2026-03-05 00:00:18 +11:00
@ConstructedBy(DatabaseConstructor::class)
abstract class Database : RoomDatabase() {
abstract val versionMetadataDao: VersionMetadataDao
2025-08-12 22:43:33 +10:00
abstract val routeDao: RouteDao
abstract val shapeDao: ShapeDao
abstract val stopDao: StopDao
abstract val stopTimeDao: StopTimeDao
abstract val tripDao: TripDao
companion object {
fun build(base: Builder<Database>) =
2025-08-12 22:43:33 +10:00
base.fallbackToDestructiveMigration(true)
.setDriver(BundledSQLiteDriver())
.setQueryCoroutineContext(Dispatchers.IO)
2025-08-12 22:43:33 +10:00
// .fallbackToDestructiveMigration(true)
.build()
}
}
2026-03-05 00:00:18 +11:00
@Suppress("KotlinNoActualForExpect")
expect object DatabaseConstructor : RoomDatabaseConstructor<Database> {
override fun initialize(): Database
}