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); }
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)); }