using RazorLight;
namespace Marechai.Email;
///
/// implementation backed by RazorLight, with templates loaded as
/// embedded resources from this assembly. Caches a single for the lifetime of
/// the process.
///
public sealed class RazorLightEmailTemplateRenderer : IEmailTemplateRenderer
{
readonly RazorLightEngine _engine;
public RazorLightEmailTemplateRenderer() =>
_engine = new RazorLightEngineBuilder()
.UseEmbeddedResourcesProject(typeof(RazorLightEmailTemplateRenderer).Assembly, "Marechai.Email.Templates")
.UseMemoryCachingProvider()
.Build();
public Task RenderAsync(string templateKey, TModel model) =>
_engine.CompileRenderAsync(templateKey, model);
}