public async Task Execute(IJobExecutionContext job) { try { var settings = await _lidarrSettings.GetSettingsAsync(); if (settings.Enabled) { try { var artists = await _lidarrApi.GetArtists(settings.ApiKey, settings.FullUri); if (artists != null && artists.Any()) { // Let's remove the old cached data using (var tran = await _ctx.Database.BeginTransactionAsync()) { await _ctx.Database.ExecuteSqlCommandAsync("DELETE FROM LidarrArtistCache"); tran.Commit(); } var artistCache = new List <LidarrArtistCache>(); foreach (var a in artists) { if (a.id > 0) { artistCache.Add(new LidarrArtistCache { ArtistId = a.id, ArtistName = a.artistName, ForeignArtistId = a.foreignArtistId, Monitored = a.monitored }); } } using (var tran = await _ctx.Database.BeginTransactionAsync()) { await _ctx.LidarrArtistCache.AddRangeAsync(artistCache); await _ctx.SaveChangesAsync(); tran.Commit(); } } } catch (Exception ex) { _logger.LogError(LoggingEvents.Cacher, ex, "Failed caching queued items from Lidarr"); } await _albumSync.CacheContent(); } } catch (Exception) { _logger.LogInformation(LoggingEvents.LidarrArtistCache, "Lidarr is not setup, cannot cache Artist"); } }
public async Task Execute(IJobExecutionContext job) { try { var settings = await _lidarrSettings.GetSettingsAsync(); if (settings.Enabled) { await _notification.Clients.Clients(NotificationHub.AdminConnectionIds) .SendAsync(NotificationHub.NotificationEvent, "Lidarr Artist Sync Started"); try { var artists = await _lidarrApi.GetArtists(settings.ApiKey, settings.FullUri); if (artists != null && artists.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 LidarrArtistCache"); tran.Commit(); } }); var artistCache = new List <LidarrArtistCache>(); foreach (var a in artists) { if (a.id > 0) { artistCache.Add(new LidarrArtistCache { ArtistId = a.id, ArtistName = a.artistName, ForeignArtistId = a.foreignArtistId, Monitored = a.monitored }); } } strat = _ctx.Database.CreateExecutionStrategy(); await strat.ExecuteAsync(async() => { using (var tran = await _ctx.Database.BeginTransactionAsync()) { await _ctx.LidarrArtistCache.AddRangeAsync(artistCache); await _ctx.SaveChangesAsync(); tran.Commit(); } }); } } catch (Exception ex) { await _notification.Clients.Clients(NotificationHub.AdminConnectionIds) .SendAsync(NotificationHub.NotificationEvent, "Lidarr Artist Sync Failed"); _logger.LogError(LoggingEvents.Cacher, ex, "Failed caching queued items from Lidarr"); } await _notification.Clients.Clients(NotificationHub.AdminConnectionIds) .SendAsync(NotificationHub.NotificationEvent, "Lidarr Artist Sync Finished"); await OmbiQuartz.TriggerJob(nameof(ILidarrAlbumSync), "DVR"); } } catch (Exception) { _logger.LogInformation(LoggingEvents.LidarrArtistCache, "Lidarr is not setup, cannot cache Artist"); } }