From 22a23d652b3c281fc3d8020341723e64082fd704 Mon Sep 17 00:00:00 2001 From: tidusjar Date: Fri, 3 Nov 2017 22:04:08 +0000 Subject: [PATCH] Added caching to the settings --- .../Repository/ISettingsRepository.cs | 7 --- .../Repository/SettingsJsonRepository.cs | 44 +++++++++---------- 2 files changed, 22 insertions(+), 29 deletions(-) diff --git a/src/Ombi.Store/Repository/ISettingsRepository.cs b/src/Ombi.Store/Repository/ISettingsRepository.cs index 2ed8e7fa0..3b24ded5e 100644 --- a/src/Ombi.Store/Repository/ISettingsRepository.cs +++ b/src/Ombi.Store/Repository/ISettingsRepository.cs @@ -13,13 +13,6 @@ namespace Ombi.Store.Repository GlobalSettings Insert(GlobalSettings entity); Task InsertAsync(GlobalSettings entity); - /// - /// Gets all. - /// - /// - IEnumerable GetAll(); - Task> GetAllAsync(); - /// /// Gets the specified identifier. /// diff --git a/src/Ombi.Store/Repository/SettingsJsonRepository.cs b/src/Ombi.Store/Repository/SettingsJsonRepository.cs index a5aa94474..161c731f3 100644 --- a/src/Ombi.Store/Repository/SettingsJsonRepository.cs +++ b/src/Ombi.Store/Repository/SettingsJsonRepository.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Caching.Memory; using Ombi.Store.Context; using Ombi.Store.Entities; @@ -10,77 +11,76 @@ namespace Ombi.Store.Repository { public class SettingsJsonRepository : ISettingsRepository { - public SettingsJsonRepository(IOmbiContext ctx) + public SettingsJsonRepository(IOmbiContext ctx, IMemoryCache mem) { Db = ctx; + _cache = mem; } private IOmbiContext Db { get; } + private readonly IMemoryCache _cache; public GlobalSettings Insert(GlobalSettings entity) { - + _cache.Remove(entity.SettingsName); var settings = Db.Settings.Add(entity); Db.SaveChanges(); return settings.Entity; - } public async Task InsertAsync(GlobalSettings entity) { - + _cache.Remove(entity.SettingsName); var settings = await Db.Settings.AddAsync(entity).ConfigureAwait(false); await Db.SaveChangesAsync().ConfigureAwait(false); return settings.Entity; } - public IEnumerable GetAll() - { - - var page = Db.Settings.AsNoTracking().ToList(); - return page; - - } - - public async Task> GetAllAsync() - { - var page = await Db.Settings.AsNoTracking().ToListAsync(); - return page; - } public GlobalSettings Get(string pageName) { - var entity = Db.Settings.AsNoTracking().FirstOrDefault(x => x.SettingsName == pageName); - return entity; + return _cache.GetOrCreate(pageName, entry => + { + entry.AbsoluteExpiration = DateTimeOffset.Now.AddHours(1); + var entity = Db.Settings.AsNoTracking().FirstOrDefault(x => x.SettingsName == pageName); + return entity; + }); } public async Task GetAsync(string settingsName) { - - var obj = await Db.Settings.AsNoTracking().FirstOrDefaultAsync(x => x.SettingsName == settingsName); - return obj; + return await _cache.GetOrCreateAsync(settingsName, async entry => + { + entry.AbsoluteExpiration = DateTimeOffset.Now.AddHours(1); + var obj = await Db.Settings.AsNoTracking().FirstOrDefaultAsync(x => x.SettingsName == settingsName); + return obj; + }); } public async Task DeleteAsync(GlobalSettings entity) { + _cache.Remove(entity.SettingsName); Db.Settings.Remove(entity); await Db.SaveChangesAsync(); } public async Task UpdateAsync(GlobalSettings entity) { + _cache.Remove(entity.SettingsName); Db.Update(entity); await Db.SaveChangesAsync(); } public void Delete(GlobalSettings entity) { + _cache.Remove(entity.SettingsName); Db.Settings.Remove(entity); Db.SaveChanges(); } public void Update(GlobalSettings entity) { + _cache.Remove(entity.SettingsName); Db.SaveChanges(); } }