< Summary

Information
Class: Services.CacheServices.Cache.UserCacheService.UserCacheService
Assembly: Services
File(s): /home/runner/work/Studio2Prod/Studio2Prod/AppRepository/CacheServices/Cache/UserCacheService/UserCacheService.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 15
Coverable lines: 15
Total lines: 47
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 6
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
GetCachedUserAsync()0%4260%
InvalidateUserCache(...)100%210%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/AppRepository/CacheServices/Cache/UserCacheService/UserCacheService.cs

#LineLine coverage
 1using Microsoft.AspNetCore.Identity;
 2using Microsoft.Extensions.Caching.Memory;
 3using OzonRepositories.Context.Identity;
 4using System.Security.Claims;
 5
 6
 7namespace Services.CacheServices.Cache.UserCacheService
 8{
 9    public class UserCacheService : IUserCacheService
 10    {
 11        private readonly IMemoryCache _memoryCache;
 12        private readonly UserManager<CustomIdentityUser> _userManager;
 13
 014        public UserCacheService(IMemoryCache memoryCache, UserManager<CustomIdentityUser> userManager)
 15        {
 016            _memoryCache = memoryCache;
 017            _userManager = userManager;
 018        }
 19
 20        public async Task<CustomIdentityUser?> GetCachedUserAsync(ClaimsPrincipal user)
 21        {
 022            var userId = _userManager.GetUserId(user);
 023            if (string.IsNullOrEmpty(userId))
 24            {
 025                return null;
 26            }
 27
 028            if (!_memoryCache.TryGetValue(userId, out CustomIdentityUser? cachedUser))
 29            {
 030                cachedUser = await _userManager.GetUserAsync(user);
 31
 032                if (cachedUser != null)
 33                {
 034                    _memoryCache.Set(userId, cachedUser, TimeSpan.FromMinutes(10));
 35                }
 36            }
 37
 038            return cachedUser;
 039        }
 40
 41        public void InvalidateUserCache(string userId)
 42        {
 043            _memoryCache.Remove(userId);
 044        }
 45    }
 46
 47}