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;
}
}