Beispiel #1
0
        private AdvancedArtistStatsContract GetAdvancedStats(IDatabaseContext <Artist> ctx, Artist artist)
        {
            if (artist.ArtistType != ArtistType.Producer && artist.ArtistType != ArtistType.CoverArtist)
            {
                return(null);
            }

            var key = $"ArtistQueries.AdvancedArtistStatsContract.{artist.Id}";

            var cached = _cache.GetOrInsert(key, CachePolicy.AbsoluteExpiration(24), () =>
            {
                var topVocaloids = new ArtistRelationsQuery(ctx, LanguagePreference, _cache, _imageUrlFactory).GetTopVoicebanks(artist);

                return(new CachedAdvancedArtistStatsContract
                {
                    TopVocaloids = topVocaloids
                });
            });

            return(new AdvancedArtistStatsContract
            {
                TopVocaloids = cached.TopVocaloids.Select(v => new TopStatContract <ArtistContract>
                {
                    Data = new ArtistContract(v.Data, LanguagePreference),
                    Count = v.Count
                }).ToArray()
            });
        }
 public ArtistRelationsQueryTests()
 {
     artist    = repository.Save(CreateEntry.Artist(ArtistType.Producer));
     voicebank = repository.Save(CreateEntry.Artist(ArtistType.Vocaloid));
     song      = repository.Save(CreateEntry.Song());
     song2     = repository.Save(CreateEntry.Song());
     repository.Save(song.AddArtist(artist));
     repository.Save(song.AddArtist(voicebank));
     repository.Save(song2.AddArtist(artist));
     query = new ArtistRelationsQuery(repository.CreateContext(), Model.Domain.Globalization.ContentLanguagePreference.English, new FakeObjectCache());
 }