package config import ( "os" "strconv" "time" ) type Config struct { DatabaseURL string Port string Env string OpenFIGIKey string CoinGeckoKey string PriceFetchInterval time.Duration PriceCleanInterval time.Duration SnapshotHorizonDays int // nombre de jours dans le futur couverts par les snapshots } func Load() *Config { fetchInterval, err := time.ParseDuration(getenv("PRICE_FETCH_INTERVAL", "1h")) if err != nil { fetchInterval = time.Hour } horizonDays, err := strconv.Atoi(getenv("SNAPSHOT_HORIZON_DAYS", "30")) if err != nil || horizonDays < 0 { horizonDays = 30 } return &Config{ DatabaseURL: getenv("DATABASE_URL", "postgres://account:account@localhost:5432/account?sslmode=disable"), Port: getenv("PORT", "8080"), Env: getenv("ENV", "development"), OpenFIGIKey: os.Getenv("OPENFIGI_API_KEY"), CoinGeckoKey: os.Getenv("COINGECKO_API_KEY"), PriceFetchInterval: fetchInterval, PriceCleanInterval: 24 * time.Hour, SnapshotHorizonDays: horizonDays, } } func getenv(key, fallback string) string { if v := os.Getenv(key); v != "" { return v } return fallback }