public async Task CacheContent() { try { var settings = await _lidarrSettings.GetSettingsAsync(); if (settings.Enabled) { try { var albums = await _lidarrApi.GetAllAlbums(settings.ApiKey, settings.FullUri); if (albums != null && albums.Any()) { // Let's remove the old cached data await _ctx.Database.ExecuteSqlCommandAsync("DELETE FROM LidarrAlbumCache"); var albumCache = new List <LidarrAlbumCache>(); foreach (var a in albums) { if (a.id > 0) { albumCache.Add(new LidarrAlbumCache { ArtistId = a.artistId, ForeignAlbumId = a.foreignAlbumId, ReleaseDate = a.releaseDate, TrackCount = a.currentRelease.trackCount, Monitored = a.monitored, Title = a.title, PercentOfTracks = a.statistics?.percentOfEpisodes ?? 0m, AddedAt = DateTime.Now, }); } } await _ctx.LidarrAlbumCache.AddRangeAsync(albumCache); await _ctx.SaveChangesAsync(); } } catch (System.Exception ex) { _logger.LogError(LoggingEvents.Cacher, ex, "Failed caching queued items from Lidarr Album"); } _job.Enqueue(() => _availability.Start()); } } catch (Exception) { _logger.LogInformation(LoggingEvents.LidarrArtistCache, "Lidarr is not setup, cannot cache Album"); } }
public async Task Execute(IJobExecutionContext ctx) { try { var settings = await _lidarrSettings.GetSettingsAsync(); if (settings.Enabled) { await _notification.Clients.Clients(NotificationHub.AdminConnectionIds) .SendAsync(NotificationHub.NotificationEvent, "Lidarr Album Sync Started"); try { var albums = await _lidarrApi.GetAllAlbums(settings.ApiKey, settings.FullUri); if (albums != null && albums.Any()) { var strat = _ctx.Database.CreateExecutionStrategy(); await strat.ExecuteAsync(async() => { // Let's remove the old cached data using (var tran = await _ctx.Database.BeginTransactionAsync()) { await _ctx.Database.ExecuteSqlRawAsync("DELETE FROM LidarrAlbumCache"); tran.Commit(); } }); var albumCache = new List <LidarrAlbumCache>(); foreach (var a in albums) { if (a.id > 0) { albumCache.Add(new LidarrAlbumCache { ArtistId = a.artistId, ForeignAlbumId = a.foreignAlbumId, ReleaseDate = a.releaseDate, TrackCount = a.currentRelease?.trackCount ?? 0, Monitored = a.monitored, Title = a.title, PercentOfTracks = a.statistics?.percentOfEpisodes ?? 0m, AddedAt = DateTime.Now, }); } } strat = _ctx.Database.CreateExecutionStrategy(); await strat.ExecuteAsync(async() => { using (var tran = await _ctx.Database.BeginTransactionAsync()) { await _ctx.LidarrAlbumCache.AddRangeAsync(albumCache); await _ctx.SaveChangesAsync(); tran.Commit(); } }); } } catch (System.Exception ex) { await _notification.Clients.Clients(NotificationHub.AdminConnectionIds) .SendAsync(NotificationHub.NotificationEvent, "Lidarr Album Sync Failed"); _logger.LogError(LoggingEvents.Cacher, ex, "Failed caching queued items from Lidarr Album"); } await _notification.Clients.Clients(NotificationHub.AdminConnectionIds) .SendAsync(NotificationHub.NotificationEvent, "Lidarr Album Sync Finished"); await OmbiQuartz.TriggerJob(nameof(ILidarrAvailabilityChecker), "DVR"); } } catch (Exception) { _logger.LogInformation(LoggingEvents.LidarrArtistCache, "Lidarr is not setup, cannot cache Album"); } }