using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using TakeoutSaaS.Application.App.Stores.Services; using TakeoutSaaS.Domain.Billings.Repositories; using TakeoutSaaS.Domain.Deliveries.Repositories; using TakeoutSaaS.Domain.Inventory.Repositories; using TakeoutSaaS.Domain.Merchants.Repositories; using TakeoutSaaS.Domain.Merchants.Services; using TakeoutSaaS.Domain.Orders.Repositories; using TakeoutSaaS.Domain.Payments.Repositories; using TakeoutSaaS.Domain.Products.Repositories; using TakeoutSaaS.Domain.Stores.Repositories; using TakeoutSaaS.Domain.Tenants.Repositories; using TakeoutSaaS.Infrastructure.App.Options; using TakeoutSaaS.Infrastructure.App.Persistence; using TakeoutSaaS.Infrastructure.Logs.Persistence; using TakeoutSaaS.Infrastructure.Logs.Repositories; using TakeoutSaaS.Infrastructure.App.Repositories; using TakeoutSaaS.Infrastructure.App.Services; using TakeoutSaaS.Infrastructure.Common.Extensions; using TakeoutSaaS.Shared.Abstractions.Constants; namespace TakeoutSaaS.Infrastructure.App.Extensions; /// /// 业务主库基础设施注册扩展。 /// public static class AppServiceCollectionExtensions { /// /// 注册业务主库 DbContext 与仓储。 /// /// 服务集合。 /// 配置源。 /// 服务集合。 public static IServiceCollection AddAppInfrastructure(this IServiceCollection services, IConfiguration configuration) { services.AddDatabaseInfrastructure(configuration); services.AddPostgresDbContext(DatabaseConstants.AppDataSource); services.AddPostgresDbContext(DatabaseConstants.LogsDataSource); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); // 1. 商户导出服务 services.AddScoped(); // 2. (空行后) 门店配置服务 services.AddScoped(); services.AddScoped(); services.AddScoped(); services.AddScoped(); // 3. (空行后) 初始化配置与种子 services.AddOptions() .Bind(configuration.GetSection(AppSeedOptions.SectionName)) .ValidateDataAnnotations(); services.AddHostedService(); return services; } }