Implemented playlist

This commit is contained in:
CappielloAntonio 2021-04-18 19:06:07 +02:00
parent d72b37725c
commit 3addc3b561
14 changed files with 255 additions and 5 deletions

View file

@ -11,6 +11,7 @@ import com.cappielloantonio.play.database.dao.AlbumDao;
import com.cappielloantonio.play.database.dao.ArtistDao;
import com.cappielloantonio.play.database.dao.GenreDao;
import com.cappielloantonio.play.database.dao.PlaylistDao;
import com.cappielloantonio.play.database.dao.PlaylistSongCrossDao;
import com.cappielloantonio.play.database.dao.QueueDao;
import com.cappielloantonio.play.database.dao.RecentSearchDao;
import com.cappielloantonio.play.database.dao.SongArtistCrossDao;
@ -21,13 +22,14 @@ import com.cappielloantonio.play.model.AlbumArtistCross;
import com.cappielloantonio.play.model.Artist;
import com.cappielloantonio.play.model.Genre;
import com.cappielloantonio.play.model.Playlist;
import com.cappielloantonio.play.model.PlaylistSongCross;
import com.cappielloantonio.play.model.Queue;
import com.cappielloantonio.play.model.RecentSearch;
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.model.SongArtistCross;
import com.cappielloantonio.play.model.SongGenreCross;
@Database(entities = {Album.class, Artist.class, Genre.class, Playlist.class, Song.class, RecentSearch.class, SongGenreCross.class, Queue.class, AlbumArtistCross.class, SongArtistCross.class}, version = 10, exportSchema = false)
@Database(entities = {Album.class, Artist.class, Genre.class, Playlist.class, Song.class, RecentSearch.class, SongGenreCross.class, Queue.class, AlbumArtistCross.class, SongArtistCross.class, PlaylistSongCross.class}, version = 10, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
private static final String TAG = "AppDatabase";
@ -62,5 +64,7 @@ public abstract class AppDatabase extends RoomDatabase {
public abstract SongArtistCrossDao songArtistCrossDao();
public abstract PlaylistSongCrossDao playlistSongCrossDao();
public abstract QueueDao queueDao();
}

View file

@ -0,0 +1,38 @@
package com.cappielloantonio.play.database.dao;
import androidx.lifecycle.LiveData;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import androidx.room.Update;
import com.cappielloantonio.play.model.PlaylistSongCross;
import com.cappielloantonio.play.model.SongArtistCross;
import java.util.List;
@Dao
public interface PlaylistSongCrossDao {
@Query("SELECT * FROM playlist_song_cross")
LiveData<List<PlaylistSongCross>> getAll();
@Query("SELECT EXISTS(SELECT * FROM playlist_song_cross WHERE id = :id)")
boolean exist(String id);
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insert(PlaylistSongCross playlistSongCross);
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertAll(List<PlaylistSongCross> playlistSongCrosses);
@Delete
void delete(PlaylistSongCross playlistSongCross);
@Update
void update(PlaylistSongCross playlistSongCross);
@Query("DELETE FROM playlist_song_cross")
void deleteAll();
}

View file

@ -51,6 +51,10 @@ public interface SongDao {
@Query("SELECT * FROM song WHERE albumId = :albumID ORDER BY trackNumber ASC")
LiveData<List<Song>> getLiveAlbumSong(String albumID);
// @Query("SELECT * FROM song WHERE albumId = :albumID ORDER BY trackNumber ASC")
@Query("SELECT song.* FROM song INNER JOIN playlist_song_cross ON song.id = playlist_song_cross.song_id AND playlist_song_cross.playlist_id = :playlistID")
LiveData<List<Song>> getLivePlaylistSong(String playlistID);
@Query("SELECT * FROM song WHERE albumId = :albumID ORDER BY trackNumber ASC")
List<Song> getAlbumSong(String albumID);