Skip to content

Commit 8d90131

Browse files
committed
refactor: more queries
1 parent 86ccef8 commit 8d90131

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+949
-1064
lines changed

app/src/main/java/io/github/zyrouge/symphony/services/Settings.kt

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import android.content.Context
44
import android.net.Uri
55
import androidx.core.content.edit
66
import io.github.zyrouge.symphony.Symphony
7-
import io.github.zyrouge.symphony.services.groove.repositories.AlbumArtistRepository
87
import io.github.zyrouge.symphony.services.groove.repositories.AlbumRepository
98
import io.github.zyrouge.symphony.services.groove.repositories.ArtistRepository
109
import io.github.zyrouge.symphony.services.groove.repositories.GenreRepository
10+
import io.github.zyrouge.symphony.services.groove.repositories.MediaTreeRepository
1111
import io.github.zyrouge.symphony.services.groove.repositories.PlaylistRepository
1212
import io.github.zyrouge.symphony.services.groove.repositories.SongRepository
1313
import io.github.zyrouge.symphony.services.radio.RadioQueue
@@ -145,8 +145,8 @@ class Settings(private val symphony: Symphony) {
145145
)
146146
val lastUsedAlbumArtistsSortBy = EnumEntry(
147147
"last_used_album_artists_sort_by",
148-
enumEntries<AlbumArtistRepository.SortBy>(),
149-
AlbumArtistRepository.SortBy.ARTIST_NAME,
148+
enumEntries<ArtistRepository.SortBy>(),
149+
ArtistRepository.SortBy.ARTIST_NAME,
150150
)
151151
val lastUsedAlbumArtistsSortReverse =
152152
BooleanEntry("last_used_album_artists_sort_reverse", false)
@@ -199,6 +199,12 @@ class Settings(private val symphony: Symphony) {
199199
PlaylistRepository.SortBy.CUSTOM,
200200
)
201201
val lastUsedPlaylistsSortReverse = BooleanEntry("last_used_playlists_sort_reverse", false)
202+
val lastUsedFoldersSortBy = EnumEntry(
203+
"last_used_folders_sort_by",
204+
enumEntries<MediaTreeRepository.SortBy>(),
205+
MediaTreeRepository.SortBy.TITLE,
206+
)
207+
val lastUsedFoldersSortReverse = BooleanEntry("last_used_folders_sort_reverse", false)
202208
val lastUsedPlaylistsHorizontalGridColumns = IntEntry(
203209
"last_used_playlists_horizontal_grid_columns",
204210
ResponsiveGridColumns.DEFAULT_HORIZONTAL_COLUMNS,
@@ -220,18 +226,18 @@ class Settings(private val symphony: Symphony) {
220226
SongRepository.SortBy.TRACK_NUMBER,
221227
)
222228
val lastUsedAlbumSongsSortReverse = BooleanEntry("last_used_album_songs_sort_reverse", false)
229+
val lastUsedArtistSongsSortBy = EnumEntry(
230+
"last_used_artist_songs_sort_by",
231+
enumEntries<SongRepository.SortBy>(),
232+
SongRepository.SortBy.YEAR,
233+
)
234+
val lastUsedArtistSongsSortReverse = BooleanEntry("last_used_artist_songs_sort_reverse", false)
223235
val lastUsedTreePathSortBy = EnumEntry(
224236
"last_used_tree_path_sort_by",
225237
enumEntries<StringListUtils.SortBy>(),
226238
StringListUtils.SortBy.NAME,
227239
)
228240
val lastUsedTreePathSortReverse = BooleanEntry("last_used_tree_path_sort_reverse", false)
229-
val lastUsedFoldersSortBy = EnumEntry(
230-
"last_used_folders_sort_by",
231-
enumEntries<StringListUtils.SortBy>(),
232-
StringListUtils.SortBy.NAME,
233-
)
234-
val lastUsedFoldersSortReverse = BooleanEntry("last_used_folders_sort_reverse", false)
235241
val lastUsedFoldersHorizontalGridColumns = IntEntry(
236242
"last_used_folders_horizontal_grid_columns",
237243
ResponsiveGridColumns.DEFAULT_HORIZONTAL_COLUMNS,

app/src/main/java/io/github/zyrouge/symphony/services/database/store/AlbumArtistMappingStore.kt

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,42 +3,10 @@ package io.github.zyrouge.symphony.services.database.store
33
import androidx.room.Dao
44
import androidx.room.Insert
55
import androidx.room.OnConflictStrategy
6-
import androidx.room.RawQuery
7-
import androidx.sqlite.db.SimpleSQLiteQuery
8-
import androidx.sqlite.db.SupportSQLiteQuery
96
import io.github.zyrouge.symphony.services.groove.entities.AlbumArtistMapping
10-
import io.github.zyrouge.symphony.services.groove.entities.Artist
11-
import io.github.zyrouge.symphony.services.groove.entities.ArtistSongMapping
12-
import io.github.zyrouge.symphony.services.groove.repositories.AlbumArtistRepository
13-
import kotlinx.coroutines.flow.Flow
147

158
@Dao
169
interface AlbumArtistMappingStore {
1710
@Insert(onConflict = OnConflictStrategy.REPLACE)
1811
suspend fun upsert(vararg entities: AlbumArtistMapping)
19-
20-
@RawQuery(observedEntities = [AlbumArtistMapping::class, Artist::class, ArtistSongMapping::class])
21-
fun valuesAsFlowRaw(query: SupportSQLiteQuery): Flow<List<Artist.AlongAttributes>>
22-
}
23-
24-
fun AlbumArtistMappingStore.valuesAsFlow(
25-
sortBy: AlbumArtistRepository.SortBy,
26-
sortReverse: Boolean,
27-
): Flow<List<Artist.AlongAttributes>> {
28-
val orderBy = when (sortBy) {
29-
AlbumArtistRepository.SortBy.CUSTOM -> "${Artist.TABLE}.${Artist.COLUMN_ID}"
30-
AlbumArtistRepository.SortBy.ARTIST_NAME -> "${Artist.TABLE}.${Artist.COLUMN_NAME}"
31-
AlbumArtistRepository.SortBy.TRACKS_COUNT -> Artist.AlongAttributes.EMBEDDED_TRACKS_COUNT
32-
AlbumArtistRepository.SortBy.ALBUMS_COUNT -> Artist.AlongAttributes.EMBEDDED_ALBUMS_COUNT
33-
}
34-
val orderDirection = if (sortReverse) "DESC" else "ASC"
35-
val query = "SELECT ${Artist.TABLE}.*, " +
36-
"COUNT(${ArtistSongMapping.TABLE}.${ArtistSongMapping.COLUMN_SONG_ID}) as ${Artist.AlongAttributes.EMBEDDED_TRACKS_COUNT}, " +
37-
"COUNT(${AlbumArtistMapping.TABLE}.${AlbumArtistMapping.COLUMN_ALBUM_ID}) as ${Artist.AlongAttributes.EMBEDDED_ALBUMS_COUNT} " +
38-
"FROM ${Artist.TABLE} " +
39-
"LEFT JOIN ${ArtistSongMapping.TABLE} ON ${ArtistSongMapping.TABLE}.${ArtistSongMapping.COLUMN_ARTIST_ID} = ${Artist.TABLE}.${Artist.COLUMN_ID} " +
40-
"LEFT JOIN ${AlbumArtistMapping.TABLE} ON ${AlbumArtistMapping.TABLE}.${AlbumArtistMapping.COLUMN_ARTIST_ID} = ${Artist.TABLE}.${Artist.COLUMN_ID} " +
41-
"WHERE ${AlbumArtistMapping.COLUMN_IS_ALBUM_ARTIST} = 1 " +
42-
"ORDER BY $orderBy $orderDirection"
43-
return valuesAsFlowRaw(SimpleSQLiteQuery(query))
4412
}

app/src/main/java/io/github/zyrouge/symphony/services/database/store/AlbumStore.kt

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,30 @@ interface AlbumStore {
2525
@Query("SELECT * FROM ${Album.TABLE} WHERE ${Album.COLUMN_NAME} = :name LIMIT 1")
2626
fun findByName(name: String): Album?
2727

28-
@Query("SELECT * FROM ${Album.TABLE} WHERE ${Album.COLUMN_ID} = :id LIMIT 1")
29-
fun findByIdAsFlow(id: String): Flow<Album?>
28+
@RawQuery(observedEntities = [Album::class, AlbumArtistMapping::class, AlbumSongMapping::class])
29+
fun findByIdAsFlowRaw(query: SupportSQLiteQuery): Flow<Album.AlongAttributes?>
3030

3131
@RawQuery(observedEntities = [Album::class, AlbumArtistMapping::class, AlbumSongMapping::class])
3232
fun valuesAsFlowRaw(query: SupportSQLiteQuery): Flow<List<Album.AlongAttributes>>
3333
}
3434

35+
fun AlbumStore.findByIdAsFlow(id: String): Flow<Album.AlongAttributes?> {
36+
val query = "SELECT ${Album.TABLE}.*, " +
37+
"COUNT(${AlbumSongMapping.TABLE}.${AlbumSongMapping.COLUMN_SONG_ID}) as ${Album.AlongAttributes.EMBEDDED_TRACKS_COUNT}, " +
38+
"COUNT(${AlbumArtistMapping.TABLE}.${AlbumArtistMapping.COLUMN_ARTIST_ID}) as ${Album.AlongAttributes.EMBEDDED_ARTISTS_COUNT} " +
39+
"FROM ${Album.TABLE} " +
40+
"LEFT JOIN ${AlbumSongMapping.TABLE} ON ${AlbumSongMapping.TABLE}.${AlbumSongMapping.COLUMN_ALBUM_ID} = ${Album.TABLE}.${Album.COLUMN_ID} " +
41+
"LEFT JOIN ${AlbumArtistMapping.TABLE} ON ${AlbumArtistMapping.TABLE}.${AlbumArtistMapping.COLUMN_ALBUM_ID} = ${Album.TABLE}.${Album.COLUMN_ID} " +
42+
"WHERE ${Album.COLUMN_ID} = ? " +
43+
"LIMIT 1"
44+
val args = arrayOf(id)
45+
return findByIdAsFlowRaw(SimpleSQLiteQuery(query, args))
46+
}
47+
3548
fun AlbumStore.valuesAsFlow(
3649
sortBy: AlbumRepository.SortBy,
3750
sortReverse: Boolean,
51+
artistId: String? = null,
3852
): Flow<List<Album.AlongAttributes>> {
3953
val aliasFirstArtist = "firstArtist"
4054
val embeddedArtistName = "firstArtistName"
@@ -52,14 +66,17 @@ fun AlbumStore.valuesAsFlow(
5266
"FROM ${AlbumArtistMapping.TABLE} " +
5367
"WHERE ${AlbumArtistMapping.TABLE}.${AlbumArtistMapping.COLUMN_ALBUM_ID} = ${Album.COLUMN_ID} " +
5468
"ORDER BY ${AlbumArtistMapping.COLUMN_IS_ALBUM_ARTIST} DESC"
69+
val albumArtistMappingJoin = "" +
70+
(if (artistId != null) "${AlbumArtistMapping.TABLE}.${AlbumArtistMapping.TABLE}.${AlbumArtistMapping.COLUMN_ARTIST_ID} = ? " else "") +
71+
"${AlbumArtistMapping.TABLE}.${AlbumArtistMapping.COLUMN_ALBUM_ID} = ${Album.TABLE}.${Album.COLUMN_ID}"
5572
val query = "SELECT ${Album.TABLE}.*, " +
5673
"COUNT(${AlbumSongMapping.TABLE}.${AlbumSongMapping.COLUMN_SONG_ID}) as ${Album.AlongAttributes.EMBEDDED_TRACKS_COUNT}, " +
5774
"COUNT(${AlbumArtistMapping.TABLE}.${AlbumArtistMapping.COLUMN_ARTIST_ID}) as ${Album.AlongAttributes.EMBEDDED_ARTISTS_COUNT}, " +
5875
"$aliasFirstArtist.${Artist.COLUMN_NAME} as $embeddedArtistName" +
5976
"FROM ${Album.TABLE} " +
6077
"LEFT JOIN ${AlbumSongMapping.TABLE} ON ${AlbumSongMapping.TABLE}.${AlbumSongMapping.COLUMN_ALBUM_ID} = ${Album.TABLE}.${Album.COLUMN_ID} " +
61-
"LEFT JOIN ${AlbumArtistMapping.TABLE} ON ${AlbumArtistMapping.TABLE}.${AlbumArtistMapping.COLUMN_ALBUM_ID} = ${Album.TABLE}.${Album.COLUMN_ID} " +
62-
"LEFT JOIN ${Artist.TABLE} $aliasFirstArtist ON ${Artist.TABLE}.${Artist.COLUMN_ID} = ($artistQuery)" +
78+
"LEFT JOIN ${AlbumArtistMapping.TABLE} ON $albumArtistMappingJoin " +
79+
"LEFT JOIN ${Artist.TABLE} $aliasFirstArtist ON ${Artist.TABLE}.${Artist.COLUMN_ID} = ($artistQuery) " +
6380
"ORDER BY $orderBy $orderDirection"
6481
return valuesAsFlowRaw(SimpleSQLiteQuery(query))
6582
}

app/src/main/java/io/github/zyrouge/symphony/services/database/store/ArtistStore.kt

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import androidx.room.Update
99
import androidx.sqlite.db.SimpleSQLiteQuery
1010
import androidx.sqlite.db.SupportSQLiteQuery
1111
import io.github.zyrouge.symphony.services.groove.entities.AlbumArtistMapping
12+
import io.github.zyrouge.symphony.services.groove.entities.AlbumSongMapping
1213
import io.github.zyrouge.symphony.services.groove.entities.Artist
1314
import io.github.zyrouge.symphony.services.groove.entities.ArtistSongMapping
1415
import io.github.zyrouge.symphony.services.groove.repositories.ArtistRepository
@@ -22,6 +23,9 @@ interface ArtistStore {
2223
@Update
2324
suspend fun update(vararg entities: Artist): Int
2425

26+
@RawQuery(observedEntities = [Artist::class, ArtistSongMapping::class, AlbumArtistMapping::class])
27+
fun findByIdAsFlowRaw(query: SupportSQLiteQuery): Flow<Artist.AlongAttributes?>
28+
2529
@RawQuery(observedEntities = [Artist::class, ArtistSongMapping::class, AlbumArtistMapping::class])
2630
fun valuesAsFlowRaw(query: SupportSQLiteQuery): Flow<List<Artist.AlongAttributes>>
2731

@@ -31,9 +35,24 @@ interface ArtistStore {
3135
@MapColumn(Artist.COLUMN_ID) String>
3236
}
3337

38+
fun ArtistStore.findByIdAsFlow(id: String): Flow<Artist.AlongAttributes?> {
39+
val query = "SELECT ${Artist.TABLE}.*, " +
40+
"COUNT(${ArtistSongMapping.TABLE}.${ArtistSongMapping.COLUMN_SONG_ID}) as ${Artist.AlongAttributes.EMBEDDED_TRACKS_COUNT}, " +
41+
"COUNT(${AlbumArtistMapping.TABLE}.${AlbumArtistMapping.COLUMN_ALBUM_ID}) as ${Artist.AlongAttributes.EMBEDDED_ALBUMS_COUNT} " +
42+
"FROM ${Artist.TABLE} " +
43+
"LEFT JOIN ${AlbumSongMapping.TABLE} ON ${AlbumSongMapping.TABLE}.${AlbumSongMapping.COLUMN_ALBUM_ID} = ${Artist.TABLE}.${Artist.COLUMN_ID} " +
44+
"LEFT JOIN ${AlbumArtistMapping.TABLE} ON ${AlbumArtistMapping.TABLE}.${AlbumArtistMapping.COLUMN_ALBUM_ID} = ${Artist.TABLE}.${Artist.COLUMN_ID} " +
45+
"WHERE ${Artist.COLUMN_ID} = ? " +
46+
"LIMIT 1"
47+
val args = arrayOf(id)
48+
return findByIdAsFlowRaw(SimpleSQLiteQuery(query, args))
49+
}
50+
3451
fun ArtistStore.valuesAsFlow(
3552
sortBy: ArtistRepository.SortBy,
3653
sortReverse: Boolean,
54+
albumId: String? = null,
55+
onlyAlbumArtists: Boolean = false,
3756
): Flow<List<Artist.AlongAttributes>> {
3857
val orderBy = when (sortBy) {
3958
ArtistRepository.SortBy.CUSTOM -> "${Artist.TABLE}.${Artist.COLUMN_ID}"
@@ -42,12 +61,20 @@ fun ArtistStore.valuesAsFlow(
4261
ArtistRepository.SortBy.ALBUMS_COUNT -> Artist.AlongAttributes.EMBEDDED_ALBUMS_COUNT
4362
}
4463
val orderDirection = if (sortReverse) "DESC" else "ASC"
64+
val albumArtistMappingJoin = "" +
65+
(if (albumId != null) "${AlbumArtistMapping.TABLE}.${AlbumArtistMapping.TABLE}.${AlbumArtistMapping.COLUMN_ALBUM_ID} = ? " else "") +
66+
(if (onlyAlbumArtists) "${AlbumArtistMapping.TABLE}.${AlbumArtistMapping.TABLE}.${AlbumArtistMapping.COLUMN_IS_ALBUM_ARTIST} = 1 " else "") +
67+
"${AlbumArtistMapping.TABLE}.${AlbumArtistMapping.COLUMN_ARTIST_ID} = ${Artist.TABLE}.${Artist.COLUMN_ID}"
4568
val query = "SELECT ${Artist.TABLE}.*, " +
4669
"COUNT(${ArtistSongMapping.TABLE}.${ArtistSongMapping.COLUMN_SONG_ID}) as ${Artist.AlongAttributes.EMBEDDED_TRACKS_COUNT}, " +
4770
"COUNT(${AlbumArtistMapping.TABLE}.${AlbumArtistMapping.COLUMN_ALBUM_ID}) as ${Artist.AlongAttributes.EMBEDDED_ALBUMS_COUNT} " +
4871
"FROM ${Artist.TABLE} " +
49-
"LEFT JOIN ${ArtistSongMapping.TABLE} ON ${ArtistSongMapping.TABLE}.${ArtistSongMapping.COLUMN_ARTIST_ID} = ${Artist.TABLE}.${Artist.COLUMN_ID} " +
50-
"LEFT JOIN ${AlbumArtistMapping.TABLE} ON ${AlbumArtistMapping.TABLE}.${AlbumArtistMapping.COLUMN_ARTIST_ID} = ${Artist.TABLE}.${Artist.COLUMN_ID}" +
72+
"LEFT JOIN ${ArtistSongMapping.TABLE} ON ${ArtistSongMapping.TABLE}.${ArtistSongMapping.TABLE}.${ArtistSongMapping.COLUMN_ARTIST_ID} = ${Artist.TABLE}.${Artist.COLUMN_ID} " +
73+
"LEFT JOIN ${AlbumArtistMapping.TABLE} ON $albumArtistMappingJoin " +
5174
"ORDER BY $orderBy $orderDirection"
52-
return valuesAsFlowRaw(SimpleSQLiteQuery(query))
75+
val args = mutableListOf<Any>()
76+
if (albumId != null) {
77+
args.add(albumId)
78+
}
79+
return valuesAsFlowRaw(SimpleSQLiteQuery(query, args.toTypedArray()))
5380
}

app/src/main/java/io/github/zyrouge/symphony/services/database/store/GenreStore.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ interface GenreStore {
1717
@Insert
1818
suspend fun insert(vararg entities: Genre): List<String>
1919

20+
@RawQuery(observedEntities = [Genre::class, GenreSongMapping::class])
21+
fun findByIdAsFlowRaw(query: SupportSQLiteQuery): Flow<Genre.AlongAttributes?>
22+
2023
@RawQuery(observedEntities = [Genre::class, GenreSongMapping::class])
2124
fun valuesAsFlowRaw(query: SupportSQLiteQuery): Flow<List<Genre.AlongAttributes>>
2225

@@ -26,6 +29,18 @@ interface GenreStore {
2629
@MapColumn(Genre.COLUMN_ID) String>
2730
}
2831

32+
fun GenreStore.findByIdAsFlow(id: String): Flow<Genre.AlongAttributes?> {
33+
val query = "SELECT ${Genre.TABLE}.*, " +
34+
"COUNT(${GenreSongMapping.TABLE}.${GenreSongMapping.COLUMN_SONG_ID}) as ${Genre.AlongAttributes.EMBEDDED_TRACKS_COUNT} " +
35+
"FROM ${Genre.TABLE} " +
36+
"LEFT JOIN ${GenreSongMapping.TABLE} ON ${GenreSongMapping.TABLE}.${GenreSongMapping.COLUMN_GENRE_ID} = ${Genre.TABLE}.${Genre.COLUMN_ID} " +
37+
"LEFT JOIN ${GenreSongMapping.TABLE} ON ${GenreSongMapping.TABLE}.${GenreSongMapping.COLUMN_GENRE_ID} = ${Genre.TABLE}.${Genre.COLUMN_ID} " +
38+
"WHERE ${Genre.COLUMN_ID} = ? " +
39+
"LIMIT 1"
40+
val args = arrayOf(id)
41+
return findByIdAsFlowRaw(SimpleSQLiteQuery(query, args))
42+
}
43+
2944
fun GenreStore.valuesAsFlow(
3045
sortBy: GenreRepository.SortBy,
3146
sortReverse: Boolean,

app/src/main/java/io/github/zyrouge/symphony/services/database/store/MediaTreeFolderStore.kt

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,21 @@ import androidx.room.Dao
44
import androidx.room.Insert
55
import androidx.room.MapColumn
66
import androidx.room.Query
7+
import androidx.room.RawQuery
78
import androidx.room.Update
9+
import androidx.sqlite.db.SimpleSQLiteQuery
10+
import androidx.sqlite.db.SupportSQLiteQuery
811
import io.github.zyrouge.symphony.services.groove.entities.MediaTreeFolder
12+
import io.github.zyrouge.symphony.services.groove.entities.MediaTreeSongFile
13+
import io.github.zyrouge.symphony.services.groove.repositories.MediaTreeRepository
14+
import kotlinx.coroutines.flow.Flow
915

1016
@Dao
1117
interface MediaTreeFolderStore {
12-
@Insert()
18+
@Insert
1319
suspend fun insert(vararg entities: MediaTreeFolder): List<String>
1420

15-
@Update()
21+
@Update
1622
suspend fun update(vararg entities: MediaTreeFolder): Int
1723

1824
@Query("SELECT id FROM ${MediaTreeFolder.TABLE} WHERE ${MediaTreeFolder.COLUMN_PARENT_ID} = :parentId")
@@ -26,4 +32,26 @@ interface MediaTreeFolderStore {
2632

2733
@Query("SELECT * FROM ${MediaTreeFolder.TABLE} WHERE ${MediaTreeFolder.COLUMN_PARENT_ID} = :parentId")
2834
fun entriesNameMapped(parentId: String): Map<@MapColumn(MediaTreeFolder.COLUMN_NAME) String, MediaTreeFolder>
35+
36+
@RawQuery(observedEntities = [MediaTreeFolder::class, MediaTreeSongFile::class])
37+
fun valuesAsFlowRaw(query: SupportSQLiteQuery): Flow<List<MediaTreeFolder.AlongAttributes>>
38+
}
39+
40+
fun MediaTreeFolderStore.valuesAsFlow(
41+
sortBy: MediaTreeRepository.SortBy,
42+
sortReverse: Boolean,
43+
): Flow<List<MediaTreeFolder.AlongAttributes>> {
44+
val orderBy = when (sortBy) {
45+
MediaTreeRepository.SortBy.CUSTOM -> "${MediaTreeFolder.TABLE}.${MediaTreeFolder.COLUMN_ID}"
46+
MediaTreeRepository.SortBy.TITLE -> "${MediaTreeFolder.TABLE}.${MediaTreeFolder.COLUMN_NAME}"
47+
MediaTreeRepository.SortBy.TRACKS_COUNT -> MediaTreeFolder.AlongAttributes.EMBEDDED_TRACKS_COUNT
48+
}
49+
val orderDirection = if (sortReverse) "DESC" else "ASC"
50+
val query = "SELECT ${MediaTreeFolder.TABLE}.*, " +
51+
"COUNT(${MediaTreeSongFile.TABLE}.${MediaTreeSongFile.COLUMN_ID}) as ${MediaTreeFolder.AlongAttributes.EMBEDDED_TRACKS_COUNT} " +
52+
"FROM ${MediaTreeFolder.TABLE} " +
53+
"LEFT JOIN ${MediaTreeSongFile.TABLE} ON ${MediaTreeSongFile.TABLE}.${MediaTreeSongFile.COLUMN_PARENT_ID} = ${MediaTreeFolder.TABLE}.${MediaTreeFolder.COLUMN_ID} " +
54+
"WHERE ${MediaTreeFolder.AlongAttributes.EMBEDDED_TRACKS_COUNT} > 0 " +
55+
"ORDER BY $orderBy $orderDirection"
56+
return valuesAsFlowRaw(SimpleSQLiteQuery(query))
2957
}

app/src/main/java/io/github/zyrouge/symphony/services/database/store/MediaTreeLyricFileStore.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ import io.github.zyrouge.symphony.services.groove.entities.MediaTreeLyricFile
99

1010
@Dao
1111
interface MediaTreeLyricFileStore {
12-
@Insert()
12+
@Insert
1313
suspend fun insert(vararg entities: MediaTreeLyricFile): List<String>
1414

15-
@Update()
15+
@Update
1616
suspend fun update(vararg entities: MediaTreeLyricFile): Int
1717

1818
@Query("SELECT id FROM ${MediaTreeLyricFile.TABLE} WHERE ${MediaTreeLyricFile.COLUMN_PARENT_ID} = :parentId")

0 commit comments

Comments
 (0)