Пример #1
0
        private async Task <Artist> GetArtistForTag(IAudioFileMetadata tag)
        {
            if (string.IsNullOrWhiteSpace(tag.Artist))
            {
                return(null);
            }

            await _dbContextMutex.WaitAsync();

            var existingArtist = OrderedArtists.FirstOrDefault(a => a.Name.Equals(tag.Artist, StringComparison.CurrentCulture));

            if (existingArtist != null)
            {
                _dbContextMutex.Release();

                logger.WarnFormat("Not adding artist with name '{0}' as an artist with the same name already exists in the database", tag.Artist);
                return(existingArtist);
            }

            var newArtist = new Artist()
            {
                Name = tag.Artist
            };

            logger.DebugFormat("New artist: {0}", newArtist.Name);

            _dukeboxData.Artists.Add(newArtist);
            _allArtistsCache.Add(newArtist);
            _dbContextMutex.Release();

            return(newArtist);
        }
Пример #2
0
        public List <ITrack> GetTracksForArtist(long artistId)
        {
            var artist = OrderedArtists.FirstOrDefault(a => a.Id == artistId);

            if (artist == null)
            {
                throw new Exception(string.Format("Artist with ID {0} cannot be found in the database", artistId));
            }

            return(GetTracksForArtist(artist));
        }