IvrCacheManager.cs 664 B

1234567891011121314151617181920212223
  1. using Hotline.Caches;
  2. using Hotline.CallCenter.Ivrs;
  3. using XF.Domain.Cache;
  4. using XF.Domain.Dependency;
  5. namespace Hotline.CacheManager;
  6. public class IvrCacheManager : IIvrCacheManager, IScopeDependency
  7. {
  8. private readonly ITypedCache<IReadOnlyList<Ivr>> _ivrCache;
  9. private readonly IIvrRepository _ivrRepository;
  10. public IvrCacheManager(ITypedCache<IReadOnlyList<Ivr>> ivrCache, IIvrRepository ivrRepository)
  11. {
  12. _ivrCache = ivrCache;
  13. _ivrRepository = ivrRepository;
  14. }
  15. public IReadOnlyList<Ivr> GetIvrs()
  16. {
  17. return _ivrCache.GetOrAdd(Ivr.Key, x => _ivrRepository.QueryAsync().GetAwaiter().GetResult());
  18. }
  19. }