thalos-dal/src/Thalos.DAL/DependencyInjection/ThalosDalServiceCollectionExtensions.cs
2026-02-25 13:13:56 -06:00

47 lines
2.0 KiB
C#

using Core.Blueprint.Common.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Thalos.DAL.Adapters;
using Thalos.DAL.Health;
using Thalos.DAL.Providers;
using Thalos.DAL.Providers.InMemory;
using Thalos.DAL.Repositories;
namespace Thalos.DAL.DependencyInjection;
/// <summary>
/// Registers thalos dal runtime provider, repository, and adapter implementations.
/// </summary>
public static class ThalosDalServiceCollectionExtensions
{
/// <summary>
/// Adds thalos dal runtime implementations aligned with blueprint runtime core.
/// </summary>
/// <param name="services">Service collection.</param>
/// <returns>Service collection for fluent chaining.</returns>
public static IServiceCollection AddThalosDalRuntime(this IServiceCollection services)
{
services.AddBlueprintRuntimeCore();
services.TryAddSingleton<InternalJwtUserDataProvider>();
services.TryAddSingleton<AzureAdUserDataProvider>();
services.TryAddSingleton<GoogleUserDataProvider>();
services.TryAddSingleton<IUserDataProvider, RoutedUserDataProvider>();
services.TryAddSingleton<InternalJwtPermissionDataProvider>();
services.TryAddSingleton<AzureAdPermissionDataProvider>();
services.TryAddSingleton<GooglePermissionDataProvider>();
services.TryAddSingleton<IPermissionDataProvider, RoutedPermissionDataProvider>();
services.TryAddSingleton<IRoleDataProvider, InMemoryRoleDataProvider>();
services.TryAddSingleton<IModuleDataProvider, InMemoryModuleDataProvider>();
services.TryAddSingleton<ITenantDataProvider, InMemoryTenantDataProvider>();
services.TryAddSingleton<IIdentityRepository, IdentityRepository>();
services.TryAddSingleton<IIdentityDalGrpcContractAdapter, IdentityDalGrpcContractAdapter>();
services.TryAddSingleton<IDalDependencyHealthCheck, DalDependencyHealthCheck>();
return services;
}
}