@@ -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