using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Volo.Abp.Data;
using Volo.Abp.Domain;
using Volo.Abp.Modularity;
using Volo.Abp.MultiTenancy;
using Volo.Abp.TenantManagement;

namespace NPin.Framework.TenantManagement.Domain;

[DependsOn(
    typeof(AbpDddDomainModule),
    typeof(AbpTenantManagementDomainSharedModule)
)]
public class NPinFrameworkTenantManagementDomainModule : AbpModule
{
    public override void ConfigureServices(ServiceConfigurationContext context)
    {
        var services = context.Services;

        // 替换原有服务
        services.Replace(new ServiceDescriptor(typeof(ITenantStore), typeof(SqlSugarTenantStore), ServiceLifetime.Transient));
        services.Replace(new ServiceDescriptor(typeof(IConnectionStringResolver),
            typeof(NPinMultiTenantConnectionStringResolver), ServiceLifetime.Transient));
    }
}