Added song/artist and album/artist synchronization

This commit is contained in:
CappielloAntonio 2021-04-18 17:08:07 +02:00
parent b577ce7e2e
commit ef1deea33a
13 changed files with 476 additions and 20 deletions

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.AlbumArtistCross;
import com.cappielloantonio.play.model.SongGenreCross;
import java.util.List;
@Dao
public interface AlbumArtistCrossDao {
@Query("SELECT * FROM album_artist_cross")
LiveData<List<AlbumArtistCross>> getAll();
@Query("SELECT EXISTS(SELECT * FROM album_artist_cross WHERE id = :id)")
boolean exist(String id);
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insert(AlbumArtistCross albumArtistCross);
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertAll(List<AlbumArtistCross> albumArtistCrosses);
@Delete
void delete(AlbumArtistCross albumArtistCross);
@Update
void update(AlbumArtistCross albumArtistCross);
@Query("DELETE FROM album_artist_cross")
void deleteAll();
}

View file

@ -16,7 +16,8 @@ public interface AlbumDao {
@Query("SELECT * FROM album")
LiveData<List<Album>> getAll();
@Query("SELECT * FROM album WHERE artistId = :artistId;")
// @Query("SELECT * FROM album WHERE artistId = :artistId;")
@Query("SELECT album.* FROM album INNER JOIN album_artist_cross ON album.id = album_artist_cross.album_id AND album_artist_cross.artist_id = :artistId")
LiveData<List<Album>> getArtistAlbums(String artistId);
@Query("SELECT * FROM album ORDER BY RANDOM() LIMIT :number;")

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.AlbumArtistCross;
import com.cappielloantonio.play.model.SongArtistCross;
import java.util.List;
@Dao
public interface SongArtistCrossDao {
@Query("SELECT * FROM song_artist_cross")
LiveData<List<SongArtistCross>> getAll();
@Query("SELECT EXISTS(SELECT * FROM song_artist_cross WHERE id = :id)")
boolean exist(String id);
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insert(SongArtistCross songArtistCross);
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertAll(List<SongArtistCross> songArtistCross);
@Delete
void delete(SongArtistCross songArtistCross);
@Update
void update(SongArtistCross songArtistCross);
@Query("DELETE FROM song_artist_cross")
void deleteAll();
}

View file

@ -36,13 +36,16 @@ public interface SongDao {
@Query("SELECT * FROM song WHERE play_count != 0 ORDER BY play_count DESC LIMIT :number")
LiveData<List<Song>> getMostPlayedSample(int number);
@Query("SELECT * FROM song WHERE artistId = :artistID ORDER BY play_count DESC LIMIT :number")
// @Query("SELECT * FROM song WHERE artistId = :artistID ORDER BY play_count DESC LIMIT :number")
@Query("SELECT song.* FROM song INNER JOIN song_artist_cross ON song.id = song_artist_cross.song_id AND song_artist_cross.artist_id = :artistID ORDER BY play_count DESC LIMIT :number")
LiveData<List<Song>> getArtistTopSongsSample(String artistID, int number);
@Query("SELECT * FROM song WHERE artistId = :artistID ORDER BY play_count DESC")
// @Query("SELECT * FROM song WHERE artistId = :artistID ORDER BY play_count DESC")
@Query("SELECT song.* FROM song INNER JOIN song_artist_cross ON song.id = song_artist_cross.song_id AND song_artist_cross.artist_id = :artistID ORDER BY play_count DESC")
LiveData<List<Song>> getArtistTopSongs(String artistID);
@Query("SELECT * FROM song WHERE artistId = :artistID ORDER BY RANDOM() LIMIT :number")
// @Query("SELECT * FROM song WHERE artistId = :artistID ORDER BY RANDOM() LIMIT :number")
@Query("SELECT song.* FROM song INNER JOIN song_artist_cross ON song.id = song_artist_cross.song_id AND song_artist_cross.artist_id = :artistID ORDER BY RANDOM() LIMIT :number")
List<Song> getArtistRandomSongs(String artistID, int number);
@Query("SELECT * FROM song WHERE albumId = :albumID ORDER BY trackNumber ASC")