package com.simplecity.amp_library.sql.databases;
import android.content.ContentValues;
import com.annimon.stream.Stream;
import com.simplecity.amp_library.model.BlacklistedSong;
import com.simplecity.amp_library.model.Song;
import com.simplecity.amp_library.utils.DataManager;
import com.squareup.sqlbrite.BriteDatabase;
import java.util.List;
import rx.Observable;
public class BlacklistHelper {
private BlacklistHelper() {
}
public static void addToBlacklist(Song song) {
ContentValues values = new ContentValues();
values.put(BlacklistDbOpenHelper.COLUMN_SONG_ID, song.id);
DataManager.getInstance().getBlacklistDatabase().insert(BlacklistDbOpenHelper.TABLE_SONGS, values);
}
public static void addToBlacklist(List<Song> songs) {
BriteDatabase db = DataManager.getInstance().getBlacklistDatabase();
BriteDatabase.Transaction transaction = db.newTransaction();
try {
Stream.of(songs).map(song -> {
ContentValues contentValues = new ContentValues();
contentValues.put(BlacklistDbOpenHelper.COLUMN_SONG_ID, song.id);
return contentValues;
}).forEach(contentValues -> db.insert(BlacklistDbOpenHelper.TABLE_SONGS, contentValues));
transaction.markSuccessful();
} finally {
transaction.end();
}
}
public static Observable<List<BlacklistedSong>> getBlacklistSongsObservable() {
return DataManager.getInstance().getBlacklistDatabase()
.createQuery(BlacklistDbOpenHelper.TABLE_SONGS, "SELECT * FROM " + BlacklistDbOpenHelper.TABLE_SONGS)
.mapToList(BlacklistedSong::new);
}
public static void deleteSong(long songId) {
DataManager.getInstance().getBlacklistDatabase().delete(BlacklistDbOpenHelper.TABLE_SONGS, BlacklistDbOpenHelper.COLUMN_SONG_ID + " = " + songId);
}
public static void deleteAllSongs() {
DataManager.getInstance().getBlacklistDatabase().delete(BlacklistDbOpenHelper.TABLE_SONGS, null);
}
}