using Microsoft.EntityFrameworkCore; using Nuuru.Server.Models; namespace Nuuru.Server.Data { public static class AvatarLookupExtensions { public static Func CreateAvatarLookup(this ApplicationDbContext context) { var cache = new Dictionary(StringComparer.OrdinalIgnoreCase); return userName => { if (cache.TryGetValue(userName, out var cached)) return cached; var user = context.Users .AsNoTracking() .Where(u => u.UserName == userName) .Select(u => new { u.UserName, u.AvatarStorageIdentifier }) .FirstOrDefault(); var url = user != null ? ApplicationUser.GetAvatarUrl(user.UserName, user.AvatarStorageIdentifier) : null; cache[userName] = url; return url; }; } } }