using System.Collections.Generic; using System.Linq; using Sony.Filtr.Contracts.Entities; using Sony.Filtr.PlaylistGeneration.Data; using System.Threading.Tasks; using Sony.Filtr.Contracts.Definitions; using Sony.Filtr.Contracts.Entities.Genre; namespace Sony.Filtr.PlaylistGeneration.Caching { public interface ICacheProvider { string GetCacheProviderName(); List FetchSimilarArtistsFromCache(string artistName); void CacheSimilarArtists(Artist artist, List similarArtists); void CacheArtist(Artist artist); Artist FetchArtistFromCache(string artistName); Task> FetchArtistsFromCacheAsync(List artistNames); //void CacheTopTracks(Track track, int order); //void CacheTopTracks(Artist artist, IEnumerable tracks); //List FetchTopTracksFromCache(Artist artist); void CacheGenreMatch(Application application, Artist artist, IEnumerable genres); List FetchGenreMatchFromCache(Application application, Artist artistName); void CacheArtistTags(string artist, List tags); Task> FetchArtistTagsFromCacheAsync(string artist); Task>> FetchArtistsTagsFromCacheAsync(List artists); void CacheGenreArtists(Genre genre, IEnumerable artists); List FetchGenreArtists(Genre genre); Task>> FetchTopTrackForTagAsync(string tag); Task CacheTopTrackForTagAsync(string tag, List> topTracks); //void CacheSearchTracks(string mood, string genre, List> tracks); //List> FetchSearchTracks(string mood, string genre); Task CacheTrackTagsAsync(Track track, List tags); Task> FetchTrackTagsFromCacheAsync(Track track); Task>> FetchExtendedTopTracksForArtistsAsync(List artists, ServiceType serviceType); Task> FetchExtendedTopTracksForArtistAsync(string artistName, ServiceType serviceType); Task CacheExtendedTopTracksForArtistAsync(string artistName, List tracks, ServiceType serviceType); //List> FetchArtistMood(string artistName); //void CacheArtistMood(string artistName, List> moods); void CacheExtendedTopTracksForTag(string tag, List groupedExtendedTracks); List FetchExtendedTopTracksForTag(string tag); } }