leds-spark-lib
Version:
Biblioteca de geração de código
47 lines (45 loc) • 1.89 kB
JavaScript
import { expandToString, isLocalEntity, isModule } from "../../../../models/model.js";
import fs from "fs";
import path from "path";
export function generate(model, target_folder) {
fs.writeFileSync(path.join(target_folder, "ServiceExtensions.cs"), generateServiceExtensions(model));
}
function generateAdd(model) {
const modules = model.abstractElements.filter(isModule);
let adds = "";
for (const mod of modules) {
const mod_classes = mod.elements.filter(isLocalEntity);
for (const cls of mod_classes) {
adds += `services.AddScoped<I${cls.name}Service, ${cls.name}Service>();\n`;
}
}
return adds;
}
function generateServiceExtensions(model) {
return expandToString `
using FluentValidation;
using MediatR;
using Microsoft.Extensions.DependencyInjection;
using ${model.configuration?.name}.Application.Interfaces.Entities;
using ${model.configuration?.name}.Application.Services.Entities;
using ${model.configuration?.name}.Application.Security.Interfaces;
using ${model.configuration?.name}.Application.Security.Services;
using ${model.configuration?.name}.Application.Shared.Behavior;
using System.Reflection;
namespace ${model.configuration?.name}.Application.Services
{
public static class ServiceExtensions
{
public static void ConfigureApplicationApp(this IServiceCollection services)
{
services.AddAutoMapper(Assembly.GetExecutingAssembly());
services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(Assembly.GetExecutingAssembly()));
services.AddValidatorsFromAssembly(Assembly.GetExecutingAssembly());
services.AddTransient(typeof(IPipelineBehavior<,>), typeof(ValidationBehavior<,>));
services.AddTransient<IService, EmailService>();
${generateAdd(model)}
}
}
}`;
}
//# sourceMappingURL=generate.js.map