using Microsoft.Extensions.Caching.Memory; namespace ApplianceRepair.Components.Pages { public partial class Home(IMemoryCache cache, HomePageReader homePageReader, ContentCardReader contentCardReader, BusinessConfigReader businessConfigReader) { private HomePageModel? Model; protected override async Task OnInitializedAsync() { if (!cache.TryGetValue(nameof(HomePageModel), out Model)) { var businessConfig = await businessConfigReader.ReadLatestRecord() ?? Defaults.DefaultBusinessConfig; var latestHomeRecord = await homePageReader.ReadLatestRecord() ?? Defaults.DefaultHomePageContent; var servicesList = await contentCardReader.ReadAllByPageAndGroup(HomePageModel.PageName, nameof(HomePageModel.ContentCardTypes.Services)) ?? []; var trustList = await contentCardReader.ReadAllByPageAndGroup(HomePageModel.PageName, nameof(HomePageModel.ContentCardTypes.Trust)) ?? []; Model = new HomePageModel(latestHomeRecord, businessConfig, servicesList, trustList); var cacheOptions = new MemoryCacheEntryOptions() .SetAbsoluteExpiration(TimeSpan.FromHours(24)) .SetSlidingExpiration(TimeSpan.FromHours(2)); cache.Set(nameof(HomePageModel), Model, cacheOptions); } } } }