From 14a0577d51f0736f56904aac1d038e2e379ee511 Mon Sep 17 00:00:00 2001 From: vfsfitvnm Date: Tue, 30 Aug 2022 10:54:33 +0200 Subject: [PATCH] Update room version --- .../kotlin/it/vfsfitvnm/vimusic/Database.kt | 38 ++++++++----------- .../vimusic/ui/screens/AlbumScreen.kt | 17 ++++----- settings.gradle.kts | 2 +- 3 files changed, 23 insertions(+), 34 deletions(-) diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/Database.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/Database.kt index 2def87e..6abbf1c 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/Database.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/Database.kt @@ -23,6 +23,7 @@ import androidx.room.Transaction import androidx.room.TypeConverter import androidx.room.TypeConverters import androidx.room.Update +import androidx.room.Upsert import androidx.room.migration.AutoMigrationSpec import androidx.room.migration.Migration import androidx.sqlite.db.SimpleSQLiteQuery @@ -310,6 +311,15 @@ interface Database { @Update fun update(playlist: Playlist) + @Upsert + fun upsert(album: Album, songAlbumMaps: List) + + @Upsert + fun upsert(songAlbumMap: SongAlbumMap) + + @Upsert + fun upsert(artist: Artist) + @Delete fun delete(searchQuery: SearchQuery) @@ -321,24 +331,6 @@ interface Database { @Delete fun delete(songPlaylistMap: SongPlaylistMap) - - fun upsert(songAlbumMap: SongAlbumMap) { - if (insert(songAlbumMap) == -1L) { - update(songAlbumMap) - } - } - - fun upsert(artist: Artist) { - if (insert(artist) == -1L) { - update(artist) - } - } - - fun upsert(album: Album) { - if (insert(album) == -1L) { - update(album) - } - } } @androidx.room.Database( @@ -540,19 +532,19 @@ object Converters { val Database.internal: RoomDatabase get() = DatabaseInitializer.Instance -fun query(block: () -> Unit) = DatabaseInitializer.Instance.getQueryExecutor().execute(block) +fun query(block: () -> Unit) = DatabaseInitializer.Instance.queryExecutor.execute(block) fun transaction(block: () -> Unit) = with(DatabaseInitializer.Instance) { - getTransactionExecutor().execute { + transactionExecutor.execute { runInTransaction(block) } } -val RoomDatabase.path: String - get() = getOpenHelper().writableDatabase.path +val RoomDatabase.path: String? + get() = openHelper.writableDatabase.path fun RoomDatabase.checkpoint() { - getOpenHelper().writableDatabase.run { + openHelper.writableDatabase.run { query("PRAGMA journal_mode").use { cursor -> if (cursor.moveToFirst()) { when (cursor.getString(0).lowercase()) { diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/AlbumScreen.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/AlbumScreen.kt index cb6859a..b36df80 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/AlbumScreen.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/AlbumScreen.kt @@ -98,21 +98,18 @@ fun AlbumScreen(browseId: String) { authorsText = youtubeAlbum.authors?.joinToString("") { it.name }, shareUrl = youtubeAlbum.url, timestamp = System.currentTimeMillis() - ) - ) - - youtubeAlbum.items?.forEachIndexed { position, albumItem -> - albumItem.toMediaItem(browseId, youtubeAlbum)?.let { mediaItem -> - Database.insert(mediaItem) - Database.upsert( + ), + youtubeAlbum.items?.mapIndexedNotNull { position, albumItem -> + albumItem.toMediaItem(browseId, youtubeAlbum)?.let { mediaItem -> + Database.insert(mediaItem) SongAlbumMap( songId = mediaItem.mediaId, albumId = browseId, position = position ) - ) - } - } + } + } ?: emptyList() + ) null } diff --git a/settings.gradle.kts b/settings.gradle.kts index 217b015..5cedd68 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -29,7 +29,7 @@ dependencyResolutionManagement { library("compose-coil", "io.coil-kt", "coil-compose").version("2.2.0") - version("room", "2.5.0-alpha02") + version("room", "2.5.0-alpha03") library("room", "androidx.room", "room-ktx").versionRef("room") library("room-compiler", "androidx.room", "room-compiler").versionRef("room")