using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using TakeoutSaaS.Shared.Abstractions.Tenancy;
namespace TakeoutSaaS.Module.Tenancy.Extensions;
///
/// 多租户服务注册及中间件扩展。
///
public static class TenantServiceCollectionExtensions
{
///
/// 注册租户上下文、解析中间件及默认租户提供者。
///
public static IServiceCollection AddTenantResolution(this IServiceCollection services, IConfiguration configuration)
{
services.TryAddSingleton();
services.TryAddScoped();
services.TryAddScoped();
services.AddOptions()
.Bind(configuration.GetSection("Tenancy"))
.ValidateDataAnnotations();
return services;
}
///
/// 使用多租户解析中间件。
///
public static IApplicationBuilder UseTenantResolution(this IApplicationBuilder app)
=> app.UseMiddleware();
}