thalos-service/src/Thalos.Service.Application/DependencyInjection/ThalosServiceRuntimeServiceCollectionExtensions.cs
2026-02-24 05:26:54 -06:00

40 lines
1.7 KiB
C#

using Core.Blueprint.Common.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Thalos.Domain.Decisions;
using Thalos.DAL.DependencyInjection;
using Thalos.Service.Application.Adapters;
using Thalos.Service.Application.Ports;
using Thalos.Service.Application.UseCases;
namespace Thalos.Service.Application.DependencyInjection;
/// <summary>
/// Registers thalos-service runtime orchestration and DAL adapters.
/// </summary>
public static class ThalosServiceRuntimeServiceCollectionExtensions
{
/// <summary>
/// Adds thalos-service runtime wiring aligned with blueprint runtime and thalos-dal runtime.
/// </summary>
/// <param name="services">Service collection.</param>
/// <returns>Service collection for fluent chaining.</returns>
public static IServiceCollection AddThalosServiceRuntime(this IServiceCollection services)
{
services.AddBlueprintRuntimeCore();
services.AddThalosDalRuntime();
services.TryAddSingleton<IIdentityPolicyDecisionService, IdentityPolicyDecisionService>();
services.TryAddSingleton<IIdentityTokenDecisionService, IdentityTokenDecisionService>();
services.TryAddSingleton<IIdentityPolicyGrpcContractAdapter, IdentityPolicyGrpcContractAdapter>();
services.TryAddSingleton<IIdentityTokenReadPort, IdentityTokenReadPortDalAdapter>();
services.TryAddSingleton<IIdentityPolicyContextReadPort, IdentityPolicyContextReadPortDalAdapter>();
services.TryAddSingleton<IIssueIdentityTokenUseCase, IssueIdentityTokenUseCase>();
services.TryAddSingleton<IEvaluateIdentityPolicyUseCase, EvaluateIdentityPolicyUseCase>();
return services;
}
}