#if NET using DigitalData.Core.Infrastructure; using EnvelopeGenerator.Domain.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Memory; using EnvelopeGenerator.Domain.Constants; using EnvelopeGenerator.Application.Common.Interfaces.Repositories; namespace EnvelopeGenerator.Infrastructure.Repositories; [Obsolete("Use TempRepo")] public class EmailTemplateRepository : CRUDRepository, IEmailTemplateRepository { private readonly IMemoryCache _cache; public EmailTemplateRepository(EGDbContext dbContext, IMemoryCache cache) : base(dbContext, dbContext.EmailTemplate) { _cache = cache; } private readonly Guid key_guid = Guid.NewGuid(); /// /// Retrieves an email template based on its name. /// Utilizes in-memory caching to improve performance for the limited number of email templates available. /// If the template is not found in the cache, it queries the database and stores the result in the cache. /// /// The type of the email template, which corresponds to its name. /// /// A task that represents the asynchronous operation. The task result contains the email template /// if found, otherwise null. /// public async Task ReadByNameAsync(EmailTemplateType type) => await _cache.GetOrCreateAsync($"{type}{key_guid}", async _ => await _dbSet.Where(t => t.Name == type.ToString()).FirstOrDefaultAsync()); } #endif