using Microsoft.Extensions.DependencyInjection; using ZB.MOM.WW.ScadaBridge.TemplateEngine.Flattening; using ZB.MOM.WW.ScadaBridge.TemplateEngine.Services; using ZB.MOM.WW.ScadaBridge.TemplateEngine.Validation; namespace ZB.MOM.WW.ScadaBridge.TemplateEngine; public static class ServiceCollectionExtensions { /// /// Registers all template engine services (template, flattening, validation, and domain services). /// /// The service collection to register into. /// The same instance for chaining. public static IServiceCollection AddTemplateEngine(this IServiceCollection services) { services.AddScoped(); services.AddScoped(); // Flattening services (stateless utilities) services.AddTransient(); services.AddTransient(); services.AddTransient(); // Validation services (stateless utilities) services.AddTransient(); services.AddTransient(); services.AddTransient(); // Domain services (depend on scoped DbContext / repositories) services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); // Note: CycleDetector, CollisionDetector, LockEnforcer, and TemplateResolver // are static utility classes and do not require DI registration. return services; } /// /// Registers Akka.NET actors for the template engine (placeholder for future actor registration). /// /// The service collection to register into. /// The same instance for chaining. public static IServiceCollection AddTemplateEngineActors(this IServiceCollection services) { // Phase 0: placeholder for Akka actor registration return services; } }