Skip to content
This repository was archived by the owner on Jun 10, 2026. It is now read-only.

Commit cdf2a36

Browse files
Fix: bump Room DB version 27→28, add migration for upstream v4.2.2 schema changes
1 parent 3a6a38d commit cdf2a36

1 file changed

Lines changed: 31 additions & 2 deletions

File tree

app/src/main/kotlin/iad1tya/echo/music/db/MusicDatabase.kt

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ class MusicDatabase(
9393
SortedSongAlbumMap::class,
9494
PlaylistSongMapPreview::class,
9595
],
96-
version = 27,
96+
version = 28,
9797
exportSchema = false,
9898
)
9999
@TypeConverters(Converters::class)
@@ -109,7 +109,7 @@ abstract class InternalDatabase : RoomDatabase() {
109109
delegate =
110110
Room
111111
.databaseBuilder(context, InternalDatabase::class.java, DB_NAME)
112-
.addMigrations(MIGRATION_1_2, MIGRATION_2_26, MIGRATION_25_26, MIGRATION_26_27)
112+
.addMigrations(MIGRATION_1_2, MIGRATION_2_26, MIGRATION_25_26, MIGRATION_26_27, MIGRATION_27_28)
113113
// Safety net: any version gap not covered by explicit migrations falls
114114
// back to a fresh database instead of crashing the app.
115115
.fallbackToDestructiveMigration(dropAllTables = true)
@@ -552,6 +552,35 @@ val MIGRATION_26_27 =
552552
}
553553
}
554554

555+
val MIGRATION_27_28 =
556+
object : Migration(27, 28) {
557+
override fun migrate(db: SupportSQLiteDatabase) {
558+
// New song columns added in upstream v4.2.2
559+
db.execSQL("ALTER TABLE song ADD COLUMN libraryAddToken TEXT DEFAULT NULL")
560+
db.execSQL("ALTER TABLE song ADD COLUMN libraryRemoveToken TEXT DEFAULT NULL")
561+
db.execSQL("ALTER TABLE song ADD COLUMN romanizeLyrics INTEGER NOT NULL DEFAULT 1")
562+
db.execSQL("ALTER TABLE song ADD COLUMN isDownloaded INTEGER NOT NULL DEFAULT 0")
563+
db.execSQL("ALTER TABLE song ADD COLUMN isUploaded INTEGER NOT NULL DEFAULT 0")
564+
// New account table for multi-account support
565+
db.execSQL("""
566+
CREATE TABLE IF NOT EXISTS `account` (
567+
`id` TEXT NOT NULL,
568+
`name` TEXT NOT NULL,
569+
`email` TEXT NOT NULL,
570+
`channelHandle` TEXT NOT NULL,
571+
`thumbnailUrl` TEXT,
572+
`innerTubeCookie` TEXT NOT NULL,
573+
`visitorData` TEXT NOT NULL,
574+
`dataSyncId` TEXT NOT NULL,
575+
`isActive` INTEGER NOT NULL DEFAULT 0,
576+
`createdAt` INTEGER NOT NULL,
577+
`lastUsedAt` INTEGER NOT NULL,
578+
PRIMARY KEY(`id`)
579+
)
580+
""".trimIndent())
581+
}
582+
}
583+
555584
@DeleteColumn.Entries(
556585
DeleteColumn(tableName = "song", columnName = "isTrash"),
557586
DeleteColumn(tableName = "playlist", columnName = "author"),

0 commit comments

Comments
 (0)