package com.marverenic.music.data.store;
import com.marverenic.music.model.Album;
import com.marverenic.music.model.Artist;
import com.marverenic.music.model.Genre;
import com.marverenic.music.model.Song;
import java.util.List;
import rx.Observable;
public interface MusicStore {
void loadAll();
Observable<Boolean> refresh();
Observable<Boolean> isLoading();
Observable<List<Song>> getSongs();
Observable<List<Album>> getAlbums();
Observable<List<Artist>> getArtists();
Observable<List<Genre>> getGenres();
Observable<List<Song>> getSongs(Artist artist);
Observable<List<Song>> getSongs(Album album);
Observable<List<Song>> getSongs(Genre genre);
Observable<List<Album>> getAlbums(Artist artist);
Observable<Artist> findArtistById(long artistId);
Observable<Album> findAlbumById(long albumId);
Observable<Artist> findArtistByName(String artistName);
Observable<List<Song>> searchForSongs(String query);
Observable<List<Artist>> searchForArtists(String query);
Observable<List<Album>> searchForAlbums(String query);
Observable<List<Genre>> searchForGenres(String query);
}