Example #1
0
        private async Task UpdateDatabaseMetadataAsync(FileMetadata fileMetadata, bool updateAlbumArtwork)
        {
            // Get the track from the database
            Track track = await this.trackRepository.GetTrackAsync(fileMetadata.SafePath);

            if (track == null)
            {
                return;
            }

            // Update track fields
            await Task.Run(() => MetadataUtils.FillTrackBase(fileMetadata, ref track));

            // Update the Track in the database
            await this.trackRepository.UpdateTrackAsync(track);

            if (updateAlbumArtwork)
            {
                // Cache the new artwork
                string artworkID = await this.cacheService.CacheArtworkAsync(fileMetadata.ArtworkData.Value);

                // Add or update AlbumArtwork in the database
                await this.albumArtworkRepository.UpdateAlbumArtworkAsync(track.AlbumKey, artworkID);
            }
        }