furniture-dal/src/Furniture.DAL/DependencyInjection/FurnitureDalServiceCollectionExtensions.cs
2026-02-22 18:27:50 -06:00

41 lines
1.7 KiB
C#

using Core.Blueprint.Common.DependencyInjection;
using Furniture.DAL.Adapters;
using Furniture.DAL.Caching;
using Furniture.DAL.Health;
using Furniture.DAL.Providers;
using Furniture.DAL.Providers.InMemory;
using Furniture.DAL.Repositories;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace Furniture.DAL.DependencyInjection;
/// <summary>
/// Registers furniture DAL runtime provider, repository, and adapter implementations.
/// </summary>
public static class FurnitureDalServiceCollectionExtensions
{
/// <summary>
/// Adds furniture 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 AddFurnitureDalRuntime(this IServiceCollection services)
{
services.AddBlueprintRuntimeCore();
services.TryAddSingleton<IFurnitureDataProvider, InMemoryFurnitureDataProvider>();
services.TryAddSingleton<ICatalogDataProvider, InMemoryCatalogDataProvider>();
services.TryAddSingleton<ICacheInvalidationPolicy, FurnitureCacheInvalidationPolicy>();
services.TryAddSingleton<IFurnitureRepository, FurnitureRepository>();
services.TryAddSingleton<ICatalogRepository, CatalogRepository>();
services.TryAddSingleton<ICatalogProjectionContractAdapter, CatalogProjectionContractAdapter>();
services.TryAddSingleton<IFurnitureDalGrpcContractAdapter, FurnitureDalGrpcContractAdapter>();
services.TryAddSingleton<IDalDependencyHealthCheck, DalDependencyHealthCheck>();
return services;
}
}