mirror of
https://github.com/pawelorzech/Swoosh.git
synced 2026-03-31 20:15:41 +00:00
fix: bump Room DB to version 3 with safe migrations from v1 and v2
This commit is contained in:
parent
48127bffbe
commit
aaebc61156
1 changed files with 22 additions and 10 deletions
|
|
@ -9,7 +9,7 @@ import androidx.room.migration.Migration
|
|||
import androidx.sqlite.db.SupportSQLiteDatabase
|
||||
import com.swoosh.microblog.data.model.LocalPost
|
||||
|
||||
@Database(entities = [LocalPost::class], version = 2, exportSchema = false)
|
||||
@Database(entities = [LocalPost::class], version = 3, exportSchema = false)
|
||||
@TypeConverters(Converters::class)
|
||||
abstract class AppDatabase : RoomDatabase() {
|
||||
|
||||
|
|
@ -19,17 +19,29 @@ abstract class AppDatabase : RoomDatabase() {
|
|||
@Volatile
|
||||
private var INSTANCE: AppDatabase? = null
|
||||
|
||||
val MIGRATION_1_2 = object : Migration(1, 2) {
|
||||
override fun migrate(db: SupportSQLiteDatabase) {
|
||||
db.execSQL("ALTER TABLE local_posts ADD COLUMN imageAlt TEXT DEFAULT NULL")
|
||||
db.execSQL("ALTER TABLE local_posts ADD COLUMN featured INTEGER NOT NULL DEFAULT 0")
|
||||
db.execSQL("ALTER TABLE local_posts ADD COLUMN tags TEXT NOT NULL DEFAULT '[]'")
|
||||
db.execSQL("ALTER TABLE local_posts ADD COLUMN imageUris TEXT DEFAULT NULL")
|
||||
db.execSQL("ALTER TABLE local_posts ADD COLUMN uploadedImageUrls TEXT DEFAULT NULL")
|
||||
db.execSQL("ALTER TABLE local_posts ADD COLUMN accountId TEXT NOT NULL DEFAULT ''")
|
||||
private fun addColumnsIfMissing(db: SupportSQLiteDatabase) {
|
||||
// Safely add columns - ignore if they already exist
|
||||
val columns = listOf(
|
||||
"ALTER TABLE local_posts ADD COLUMN imageAlt TEXT DEFAULT NULL",
|
||||
"ALTER TABLE local_posts ADD COLUMN featured INTEGER NOT NULL DEFAULT 0",
|
||||
"ALTER TABLE local_posts ADD COLUMN tags TEXT NOT NULL DEFAULT '[]'",
|
||||
"ALTER TABLE local_posts ADD COLUMN imageUris TEXT DEFAULT NULL",
|
||||
"ALTER TABLE local_posts ADD COLUMN uploadedImageUrls TEXT DEFAULT NULL",
|
||||
"ALTER TABLE local_posts ADD COLUMN accountId TEXT NOT NULL DEFAULT ''"
|
||||
)
|
||||
for (sql in columns) {
|
||||
try { db.execSQL(sql) } catch (_: Exception) { /* column already exists */ }
|
||||
}
|
||||
}
|
||||
|
||||
val MIGRATION_1_3 = object : Migration(1, 3) {
|
||||
override fun migrate(db: SupportSQLiteDatabase) = addColumnsIfMissing(db)
|
||||
}
|
||||
|
||||
val MIGRATION_2_3 = object : Migration(2, 3) {
|
||||
override fun migrate(db: SupportSQLiteDatabase) = addColumnsIfMissing(db)
|
||||
}
|
||||
|
||||
fun getInstance(context: Context): AppDatabase {
|
||||
return INSTANCE ?: synchronized(this) {
|
||||
val instance = Room.databaseBuilder(
|
||||
|
|
@ -37,7 +49,7 @@ abstract class AppDatabase : RoomDatabase() {
|
|||
AppDatabase::class.java,
|
||||
"swoosh_database"
|
||||
)
|
||||
.addMigrations(MIGRATION_1_2)
|
||||
.addMigrations(MIGRATION_1_3, MIGRATION_2_3)
|
||||
.fallbackToDestructiveMigration()
|
||||
.build()
|
||||
INSTANCE = instance
|
||||
|
|
|
|||
Loading…
Reference in a new issue