Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 63 additions & 63 deletions app/src/main/java/com/theveloper/pixelplay/data/database/MusicDao.kt
Original file line number Diff line number Diff line change
Expand Up @@ -595,7 +595,7 @@ interface MusicDao {
SELECT """ + SONG_LIST_PROJECTION + """
FROM songs
WHERE (:applyDirectoryFilter = 0 OR id < 0 OR parent_directory_path IN (:allowedParentDirs))
ORDER BY title COLLATE NOCASE ASC, artist_name COLLATE NOCASE ASC, id ASC
ORDER BY title COLLATE LOCALIZED ASC, artist_name COLLATE LOCALIZED ASC, id ASC
LIMIT 1
""")
suspend fun getFirstPlayableSong(
Expand Down Expand Up @@ -623,7 +623,7 @@ interface MusicDao {
AND (:applyDirectoryFilter = 0 OR id < 0 OR parent_directory_path IN (:allowedParentDirs))
GROUP BY album_art_uri_string
)
ORDER BY title COLLATE NOCASE ASC, artist_name COLLATE NOCASE ASC, id ASC
ORDER BY title COLLATE LOCALIZED ASC, artist_name COLLATE LOCALIZED ASC, id ASC
""")
fun getDistinctAlbumArtSongs(
allowedParentDirs: List<String>,
Expand Down Expand Up @@ -681,17 +681,17 @@ interface MusicDao {
)
ORDER BY
CASE WHEN :sortOrder = 'song_default_order' THEN track_number END ASC,
CASE WHEN :sortOrder = 'song_title_az' THEN title END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'song_title_za' THEN title END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'song_artist' THEN artist_name END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'song_artist_desc' THEN artist_name END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'song_album' THEN album_name END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'song_album_desc' THEN album_name END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'song_title_az' THEN title END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'song_title_za' THEN title END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'song_artist' THEN artist_name END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'song_artist_desc' THEN artist_name END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'song_album' THEN album_name END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'song_album_desc' THEN album_name END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'song_date_added' THEN date_added END DESC,
CASE WHEN :sortOrder = 'song_date_added_asc' THEN date_added END ASC,
CASE WHEN :sortOrder = 'song_duration' THEN duration END DESC,
CASE WHEN :sortOrder = 'song_duration_asc' THEN duration END ASC,
title COLLATE NOCASE ASC,
title COLLATE LOCALIZED ASC,
id ASC
""")
suspend fun getSongIdsSorted(
Expand All @@ -717,15 +717,15 @@ interface MusicDao {
)
)
ORDER BY
CASE WHEN :sortOrder = 'liked_title_az' THEN songs.title END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'liked_title_za' THEN songs.title END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'liked_artist' THEN songs.artist_name END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'liked_artist_desc' THEN songs.artist_name END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'liked_album' THEN songs.album_name END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'liked_album_desc' THEN songs.album_name END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'liked_title_az' THEN songs.title END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'liked_title_za' THEN songs.title END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'liked_artist' THEN songs.artist_name END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'liked_artist_desc' THEN songs.artist_name END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'liked_album' THEN songs.album_name END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'liked_album_desc' THEN songs.album_name END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'liked_date_liked' THEN favorites.timestamp END DESC,
CASE WHEN :sortOrder = 'liked_date_liked_asc' THEN favorites.timestamp END ASC,
songs.title COLLATE NOCASE ASC,
songs.title COLLATE LOCALIZED ASC,
songs.id ASC
""")
suspend fun getFavoriteSongIdsSorted(
Expand Down Expand Up @@ -756,19 +756,19 @@ interface MusicDao {
)
ORDER BY
CASE WHEN :sortOrder = 'song_default_order' THEN track_number END ASC,
CASE WHEN :sortOrder = 'song_title_az' THEN title END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'song_title_za' THEN title END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'song_artist' THEN artist_name END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'song_artist_desc' THEN artist_name END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'song_album' THEN album_name END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'song_album_desc' THEN album_name END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'song_title_az' THEN title END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'song_title_za' THEN title END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'song_artist' THEN artist_name END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'song_artist_desc' THEN artist_name END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'song_album' THEN album_name END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'song_album_desc' THEN album_name END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'song_date_added' THEN date_added END DESC,
CASE WHEN :sortOrder = 'song_date_added_asc' THEN date_added END ASC,
CASE WHEN :sortOrder = 'song_duration' THEN duration END DESC,
CASE WHEN :sortOrder = 'song_duration_asc' THEN duration END ASC,

-- Secondary sort falls back to title for consistency (case-insensitive)
title COLLATE NOCASE ASC,
title COLLATE LOCALIZED ASC,
id ASC
""")
fun getSongsPaginated(
Expand All @@ -795,17 +795,17 @@ interface MusicDao {
)
ORDER BY
CASE WHEN :sortOrder = 'song_default_order' THEN track_number END ASC,
CASE WHEN :sortOrder = 'song_title_az' THEN title END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'song_title_za' THEN title END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'song_artist' THEN artist_name END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'song_artist_desc' THEN artist_name END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'song_album' THEN album_name END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'song_album_desc' THEN album_name END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'song_title_az' THEN title END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'song_title_za' THEN title END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'song_artist' THEN artist_name END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'song_artist_desc' THEN artist_name END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'song_album' THEN album_name END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'song_album_desc' THEN album_name END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'song_date_added' THEN date_added END DESC,
CASE WHEN :sortOrder = 'song_date_added_asc' THEN date_added END ASC,
CASE WHEN :sortOrder = 'song_duration' THEN duration END DESC,
CASE WHEN :sortOrder = 'song_duration_asc' THEN duration END ASC,
title COLLATE NOCASE ASC,
title COLLATE LOCALIZED ASC,
id ASC
LIMIT :limit OFFSET :offset
""")
Expand Down Expand Up @@ -839,15 +839,15 @@ interface MusicDao {
)
)
ORDER BY
CASE WHEN :sortOrder = 'liked_title_az' THEN songs.title END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'liked_title_za' THEN songs.title END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'liked_artist' THEN songs.artist_name END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'liked_artist_desc' THEN songs.artist_name END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'liked_album' THEN songs.album_name END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'liked_album_desc' THEN songs.album_name END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'liked_title_az' THEN songs.title END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'liked_title_za' THEN songs.title END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'liked_artist' THEN songs.artist_name END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'liked_artist_desc' THEN songs.artist_name END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'liked_album' THEN songs.album_name END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'liked_album_desc' THEN songs.album_name END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'liked_date_liked' THEN favorites.timestamp END DESC,
CASE WHEN :sortOrder = 'liked_date_liked_asc' THEN favorites.timestamp END ASC,
songs.title COLLATE NOCASE ASC,
songs.title COLLATE LOCALIZED ASC,
songs.id ASC
""")
fun getFavoriteSongsPaginated(
Expand Down Expand Up @@ -875,7 +875,7 @@ interface MusicDao {
AND songs.source_type != 0
)
)
ORDER BY songs.title COLLATE NOCASE ASC
ORDER BY songs.title COLLATE LOCALIZED ASC
""")
suspend fun getFavoriteSongsList(
allowedParentDirs: List<String>,
Expand All @@ -900,15 +900,15 @@ interface MusicDao {
)
)
ORDER BY
CASE WHEN :sortOrder = 'liked_title_az' THEN songs.title END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'liked_title_za' THEN songs.title END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'liked_artist' THEN songs.artist_name END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'liked_artist_desc' THEN songs.artist_name END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'liked_album' THEN songs.album_name END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'liked_album_desc' THEN songs.album_name END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'liked_title_az' THEN songs.title END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'liked_title_za' THEN songs.title END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'liked_artist' THEN songs.artist_name END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'liked_artist_desc' THEN songs.artist_name END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'liked_album' THEN songs.album_name END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'liked_album_desc' THEN songs.album_name END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'liked_date_liked' THEN favorites.timestamp END DESC,
CASE WHEN :sortOrder = 'liked_date_liked_asc' THEN favorites.timestamp END ASC,
songs.title COLLATE NOCASE ASC,
songs.title COLLATE LOCALIZED ASC,
songs.id ASC
LIMIT :limit OFFSET :offset
""")
Expand Down Expand Up @@ -1158,17 +1158,17 @@ interface MusicDao {
albums.year
HAVING COUNT(songs.id) >= :minTracks
ORDER BY
CASE WHEN :sortOrder = 'album_title_az' THEN albums.title END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'album_title_za' THEN albums.title END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'album_artist' THEN COALESCE(NULLIF(TRIM(albums.album_artist), ''), albums.artist_name) END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'album_artist_desc' THEN COALESCE(NULLIF(TRIM(albums.album_artist), ''), albums.artist_name) END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'album_title_az' THEN albums.title END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'album_title_za' THEN albums.title END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'album_artist' THEN COALESCE(NULLIF(TRIM(albums.album_artist), ''), albums.artist_name) END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'album_artist_desc' THEN COALESCE(NULLIF(TRIM(albums.album_artist), ''), albums.artist_name) END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'album_release_year' THEN albums.year END DESC,
CASE WHEN :sortOrder = 'album_release_year_asc' THEN albums.year END ASC,
CASE WHEN :sortOrder = 'album_date_added' THEN albums.date_added END DESC,
CASE WHEN :sortOrder = 'album_size_asc' THEN song_count END ASC,
CASE WHEN :sortOrder = 'album_size_desc' THEN song_count END DESC,
albums.title COLLATE NOCASE ASC,
albums.artist_name COLLATE NOCASE ASC,
albums.title COLLATE LOCALIZED ASC,
albums.artist_name COLLATE LOCALIZED ASC,
albums.id ASC
""")
fun getAlbumsPaginated(
Expand Down Expand Up @@ -1215,17 +1215,17 @@ interface MusicDao {
albums.year
HAVING COUNT(songs.id) >= :minTracks
ORDER BY
CASE WHEN :sortOrder = 'album_title_az' THEN albums.title END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'album_title_za' THEN albums.title END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'album_artist' THEN COALESCE(NULLIF(TRIM(albums.album_artist), ''), albums.artist_name) END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'album_artist_desc' THEN COALESCE(NULLIF(TRIM(albums.album_artist), ''), albums.artist_name) END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'album_title_az' THEN albums.title END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'album_title_za' THEN albums.title END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'album_artist' THEN COALESCE(NULLIF(TRIM(albums.album_artist), ''), albums.artist_name) END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'album_artist_desc' THEN COALESCE(NULLIF(TRIM(albums.album_artist), ''), albums.artist_name) END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'album_release_year' THEN albums.year END DESC,
CASE WHEN :sortOrder = 'album_release_year_asc' THEN albums.year END ASC,
CASE WHEN :sortOrder = 'album_date_added' THEN albums.date_added END DESC,
CASE WHEN :sortOrder = 'album_size_asc' THEN song_count END ASC,
CASE WHEN :sortOrder = 'album_size_desc' THEN song_count END DESC,
albums.title COLLATE NOCASE ASC,
albums.artist_name COLLATE NOCASE ASC,
albums.title COLLATE LOCALIZED ASC,
albums.artist_name COLLATE LOCALIZED ASC,
albums.id ASC
LIMIT :limit OFFSET :offset
""")
Expand Down Expand Up @@ -1411,11 +1411,11 @@ interface MusicDao {
)
GROUP BY artists.id
ORDER BY
CASE WHEN :sortOrder = 'artist_name_az' THEN artists.name END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'artist_name_za' THEN artists.name END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'artist_name_az' THEN artists.name END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'artist_name_za' THEN artists.name END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'artist_num_songs_desc' THEN track_count END DESC,
CASE WHEN :sortOrder = 'artist_num_songs_asc' THEN track_count END ASC,
artists.name COLLATE NOCASE ASC,
artists.name COLLATE LOCALIZED ASC,
artists.id ASC
""")
fun getArtistsPaginated(
Expand Down Expand Up @@ -1445,11 +1445,11 @@ interface MusicDao {
)
GROUP BY artists.id
ORDER BY
CASE WHEN :sortOrder = 'artist_name_az' THEN artists.name END COLLATE NOCASE ASC,
CASE WHEN :sortOrder = 'artist_name_za' THEN artists.name END COLLATE NOCASE DESC,
CASE WHEN :sortOrder = 'artist_name_az' THEN artists.name END COLLATE LOCALIZED ASC,
CASE WHEN :sortOrder = 'artist_name_za' THEN artists.name END COLLATE LOCALIZED DESC,
CASE WHEN :sortOrder = 'artist_num_songs_desc' THEN track_count END DESC,
CASE WHEN :sortOrder = 'artist_num_songs_asc' THEN track_count END ASC,
artists.name COLLATE NOCASE ASC,
artists.name COLLATE LOCALIZED ASC,
artists.id ASC
LIMIT :limit OFFSET :offset
""")
Expand Down
Loading