namespace SharpAbp.Infrastructure.Api.Configuration { public static class ConfigurationHelper { public static string GetString(string key, string defaultValue = null) { var envValue = Environment.GetEnvironmentVariable(key); if (!string.IsNullOrEmpty(envValue)) { return envValue; } return defaultValue; } public static int GetInt(string key, int defaultValue = 0) { var envValue = Environment.GetEnvironmentVariable(key); if (int.TryParse(envValue, out var result)) { return result; } return defaultValue; } public static bool GetBool(string key, bool defaultValue = false) { var envValue = Environment.GetEnvironmentVariable(key); if (bool.TryParse(envValue, out var result)) { return result; } return defaultValue; } public static string GetConnectionString(string type) { return type.ToLower() switch { "mongodb" => GetMongoDBConnectionString(), "redis" => GetRedisConnectionString(), "rabbitmq" => GetRabbitMQConnectionString(), "mysql" => GetMySQLConnectionString(), _ => throw new ArgumentException($"Unknown connection type: {type}") }; } private static string GetMongoDBConnectionString() { var host = GetString("MONGODB_HOST", "localhost"); var port = GetString("MONGODB_PORT", "27017"); var user = GetString("MONGODB_USER", ""); var password = GetString("MONGODB_PASSWORD", ""); var database = GetString("MONGODB_DATABASE", "data_0524"); if (!string.IsNullOrEmpty(user) && !string.IsNullOrEmpty(password)) { return $"mongodb://{user}:{password}@{host}:{port}/{database}"; } return $"mongodb://{host}:{port}/{database}"; } private static string GetRedisConnectionString() { var host = GetString("REDIS_HOST", "localhost"); var port = GetString("REDIS_PORT", "6379"); var password = GetString("REDIS_PASSWORD", ""); var database = GetString("REDIS_DB", "0"); var connectionString = $"{host}:{port}"; if (!string.IsNullOrEmpty(password)) { connectionString += $",password={password}"; } connectionString += $",defaultDatabase={database}"; return connectionString; } private static string GetRabbitMQConnectionString() { var host = GetString("RABBITMQ_HOST", "localhost"); var port = GetString("RABBITMQ_PORT", "5672"); var user = GetString("RABBITMQ_USER", "guest"); var password = GetString("RABBITMQ_PASSWORD", "guest"); return $"amqp://{user}:{password}@{host}:{port}"; } private static string GetMySQLConnectionString() { var host = GetString("MYSQL_HOST", "localhost"); var port = GetString("MYSQL_PORT", "3306"); var user = GetString("MYSQL_USER", "root"); var password = GetString("MYSQL_PASSWORD", ""); var database = GetString("MYSQL_DATABASE", "data_0524"); return $"Server={host};Port={port};Database={database};User={user};Password={password};"; } } }