using System; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using TakeoutSaaS.Application.Dictionary.Abstractions; using TakeoutSaaS.Domain.Dictionary.Repositories; using TakeoutSaaS.Infrastructure.Common.Extensions; using TakeoutSaaS.Infrastructure.Common.Options; using TakeoutSaaS.Infrastructure.Dictionary.Options; using TakeoutSaaS.Infrastructure.Dictionary.Persistence; using TakeoutSaaS.Infrastructure.Dictionary.Repositories; using TakeoutSaaS.Infrastructure.Dictionary.Services; using TakeoutSaaS.Shared.Abstractions.Constants; namespace TakeoutSaaS.Infrastructure.Dictionary.Extensions; /// /// 字典基础设施注册扩展。 /// public static class DictionaryServiceCollectionExtensions { /// /// 注册字典模块基础设施。 /// /// 服务集合。 /// 配置源。 /// 服务集合。 /// 缺少数据库配置时抛出。 public static IServiceCollection AddDictionaryInfrastructure(this IServiceCollection services, IConfiguration configuration) { services.AddDatabaseInfrastructure(configuration); services.AddPostgresDbContext(DatabaseConstants.AppDataSource); services.AddScoped(); services.AddScoped(); services.AddOptions() .Bind(configuration.GetSection("Dictionary:Cache")) .ValidateDataAnnotations(); return services; } /// /// 确保数据库连接已配置(Database 节或 ConnectionStrings)。 /// /// 配置源。 /// 数据源名称。 /// 未配置时抛出。 private static void EnsureDatabaseConnectionConfigured(IConfiguration configuration, string dataSourceName) { // 保留兼容接口,当前逻辑在 DatabaseConnectionFactory 中兜底并记录日志。 } }