diff --git a/src/Ombi.Api.Plex/Models/Mediacontainer.cs b/src/Ombi.Api.Plex/Models/Mediacontainer.cs index b409c2d76..c9f417a9c 100644 --- a/src/Ombi.Api.Plex/Models/Mediacontainer.cs +++ b/src/Ombi.Api.Plex/Models/Mediacontainer.cs @@ -5,6 +5,7 @@ namespace Ombi.Api.Plex.Models public class Mediacontainer { public int size { get; set; } + public int totalSize { get; set; } public bool allowSync { get; set; } public string identifier { get; set; } public string mediaTagPrefix { get; set; } diff --git a/src/Ombi.DependencyInjection/IocExtensions.cs b/src/Ombi.DependencyInjection/IocExtensions.cs index b15d37700..05e33be05 100644 --- a/src/Ombi.DependencyInjection/IocExtensions.cs +++ b/src/Ombi.DependencyInjection/IocExtensions.cs @@ -90,17 +90,17 @@ namespace Ombi.DependencyInjection services.AddEntityFrameworkSqlite().AddDbContext(); services.AddScoped(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(typeof(ISettingsService<>), typeof(SettingsService<>)); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(typeof(ISettingsService<>), typeof(SettingsService<>)); } public static void RegisterServices(this IServiceCollection services) { diff --git a/src/Ombi.Schedule/Jobs/Plex/PlexEpisodeCacher.cs b/src/Ombi.Schedule/Jobs/Plex/PlexEpisodeCacher.cs index dd243de6b..57e3a0ae6 100644 --- a/src/Ombi.Schedule/Jobs/Plex/PlexEpisodeCacher.cs +++ b/src/Ombi.Schedule/Jobs/Plex/PlexEpisodeCacher.cs @@ -83,10 +83,10 @@ namespace Ombi.Schedule.Jobs.Plex continue; } } - - // Get the episodes - await GetEpisodes(settings, section); } + + // Get the episodes + await GetEpisodes(settings, section); } } @@ -99,17 +99,17 @@ namespace Ombi.Schedule.Jobs.Plex var ResultCount = 50; var episodes = await _api.GetAllEpisodes(settings.PlexAuthToken, settings.FullUri, section.key, currentPosition, ResultCount); - _log.LogInformation(LoggingEvents.PlexEpisodeCacher, $"Total Epsiodes found for {episodes.MediaContainer.librarySectionTitle} = {episodes.MediaContainer.size}"); + _log.LogInformation(LoggingEvents.PlexEpisodeCacher, $"Total Epsiodes found for {episodes.MediaContainer.librarySectionTitle} = {episodes.MediaContainer.totalSize}"); await ProcessEpsiodes(episodes); currentPosition += ResultCount; - while (currentPosition < episodes.MediaContainer.size) + while (currentPosition < episodes.MediaContainer.totalSize) { var ep = await _api.GetAllEpisodes(settings.PlexAuthToken, settings.FullUri, section.key, currentPosition, ResultCount); await ProcessEpsiodes(ep); - _log.LogInformation(LoggingEvents.PlexEpisodeCacher, $"Processed {ResultCount} more episodes. Total Remaining {currentPosition - episodes.MediaContainer.size}"); + _log.LogInformation(LoggingEvents.PlexEpisodeCacher, $"Processed {ResultCount} more episodes. Total Remaining {currentPosition - episodes.MediaContainer.totalSize}"); currentPosition += ResultCount; } @@ -128,9 +128,9 @@ namespace Ombi.Schedule.Jobs.Plex { EpisodeNumber = episode.index, SeasonNumber = episode.parentIndex, - GrandparentKey = episode.grandparentKey, - ParentKey = episode.parentKey, - Key = episode.key, + GrandparentKey = episode.grandparentRatingKey, + ParentKey = episode.parentRatingKey, + Key = episode.ratingKey, Title = episode.title }); } diff --git a/src/Ombi.Settings/Settings/SettingsService.cs b/src/Ombi.Settings/Settings/SettingsService.cs index 18201f287..5bcf1a835 100644 --- a/src/Ombi.Settings/Settings/SettingsService.cs +++ b/src/Ombi.Settings/Settings/SettingsService.cs @@ -46,7 +46,11 @@ namespace Ombi.Settings.Settings return new T(); } result.Content = DecryptSettings(result); - return string.IsNullOrEmpty(result.Content) ? null : JsonConvert.DeserializeObject(result.Content, SerializerSettings.Settings); + var obj = string.IsNullOrEmpty(result.Content) ? null : JsonConvert.DeserializeObject(result.Content, SerializerSettings.Settings); + + var model = obj; + + return model; } public bool SaveSettings(T model) @@ -67,10 +71,10 @@ namespace Ombi.Settings.Settings var modified = model; modified.Id = entity.Id; + entity.Content = JsonConvert.SerializeObject(modified, SerializerSettings.Settings); - var globalSettings = new GlobalSettings { SettingsName = EntityName, Content = JsonConvert.SerializeObject(modified, SerializerSettings.Settings), Id = entity.Id }; - globalSettings.Content = EncryptSettings(globalSettings); - Repo.Update(globalSettings); + entity.Content = EncryptSettings(entity); + Repo.Update(entity); return true; } @@ -85,7 +89,7 @@ namespace Ombi.Settings.Settings var settings = new GlobalSettings { SettingsName = EntityName, Content = JsonConvert.SerializeObject(newEntity, SerializerSettings.Settings) }; settings.Content = EncryptSettings(settings); - var insertResult = await Repo.InsertAsync(settings).ConfigureAwait(false); + var insertResult = await Repo.InsertAsync(settings); return insertResult != null; } @@ -93,9 +97,10 @@ namespace Ombi.Settings.Settings var modified = model; modified.Id = entity.Id; - var globalSettings = new GlobalSettings { SettingsName = EntityName, Content = JsonConvert.SerializeObject(modified, SerializerSettings.Settings), Id = entity.Id }; - globalSettings.Content = EncryptSettings(globalSettings); - await Repo.UpdateAsync(globalSettings).ConfigureAwait(false); + entity.Content = JsonConvert.SerializeObject(modified, SerializerSettings.Settings); + + entity.Content = EncryptSettings(entity); + await Repo.UpdateAsync(entity); return true; } diff --git a/src/Ombi.Store/Repository/SettingsJsonRepository.cs b/src/Ombi.Store/Repository/SettingsJsonRepository.cs index 5b7c750ca..a5aa94474 100644 --- a/src/Ombi.Store/Repository/SettingsJsonRepository.cs +++ b/src/Ombi.Store/Repository/SettingsJsonRepository.cs @@ -37,33 +37,27 @@ namespace Ombi.Store.Repository public IEnumerable GetAll() { - var page = Db.Settings.ToList(); + var page = Db.Settings.AsNoTracking().ToList(); return page; } public async Task> GetAllAsync() { - var page = await Db.Settings.ToListAsync(); + var page = await Db.Settings.AsNoTracking().ToListAsync(); return page; } public GlobalSettings Get(string pageName) { - var entity = Db.Settings.FirstOrDefault(x => x.SettingsName == pageName); - if (entity == null) - { - throw new ArgumentNullException($"The setting {pageName} does not exist"); - } - Db.Entry(entity).Reload(); + var entity = Db.Settings.AsNoTracking().FirstOrDefault(x => x.SettingsName == pageName); return entity; } public async Task GetAsync(string settingsName) { - var obj = await Db.Settings.FirstOrDefaultAsync(x => x.SettingsName == settingsName); - if (obj != null) Db.Entry(obj).Reload(); + var obj = await Db.Settings.AsNoTracking().FirstOrDefaultAsync(x => x.SettingsName == settingsName); return obj; } @@ -75,6 +69,7 @@ namespace Ombi.Store.Repository public async Task UpdateAsync(GlobalSettings entity) { + Db.Update(entity); await Db.SaveChangesAsync(); }