@@ -0,0 +1,58 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// ServiceConfig holds configuration shared across all microservices.
|
||||
type ServiceConfig struct {
|
||||
Name string // 服务名称,如 auth-service
|
||||
Port string // 监听端口
|
||||
|
||||
// 基础设施连接(骨架阶段仅定义,暂不使用)
|
||||
PostgresDSN string
|
||||
RedisAddr string
|
||||
MinIOAddr string
|
||||
RabbitMQURL string
|
||||
|
||||
// 运行环境: debug / release
|
||||
GinMode string
|
||||
}
|
||||
|
||||
// Load 从环境变量加载配置,fallback 到默认值。
|
||||
// serviceName 和 defaultPort 用于在没有设置环境变量时提供默认值。
|
||||
func Load(serviceName, defaultPort string) *ServiceConfig {
|
||||
cfg := &ServiceConfig{
|
||||
Name: serviceName,
|
||||
Port: envOr("SERVICE_PORT", defaultPort),
|
||||
PostgresDSN: envOr("POSTGRES_DSN", "postgres://mrcc:mrcc_dev_2026@localhost:5432/mrcc?sslmode=disable"),
|
||||
RedisAddr: envOr("REDIS_ADDR", "localhost:6379"),
|
||||
MinIOAddr: envOr("MINIO_ADDR", "localhost:9000"),
|
||||
RabbitMQURL: envOr("RABBITMQ_URL", "amqp://mrcc:mrcc_dev_2026@localhost:5672/"),
|
||||
GinMode: envOr("GIN_MODE", "debug"),
|
||||
}
|
||||
return cfg
|
||||
}
|
||||
|
||||
// Address 返回 :port 格式的监听地址
|
||||
func (c *ServiceConfig) Address() string {
|
||||
return fmt.Sprintf(":%s", c.Port)
|
||||
}
|
||||
|
||||
func envOr(key, fallback string) string {
|
||||
if v := os.Getenv(key); v != "" {
|
||||
return v
|
||||
}
|
||||
return fallback
|
||||
}
|
||||
|
||||
func envIntOr(key string, fallback int) int {
|
||||
if v := os.Getenv(key); v != "" {
|
||||
if n, err := strconv.Atoi(v); err == nil {
|
||||
return n
|
||||
}
|
||||
}
|
||||
return fallback
|
||||
}
|
||||
Reference in New Issue
Block a user