madipo2611 0d4b8b203e v0.0.2
2025-05-01 12:17:42 +03:00

45 lines
1.2 KiB
Go

package config
import (
"github.com/caarlos0/env/v8"
"time"
)
type Config struct {
Server struct {
Host string `env:"SERVER_HOST" env-default:"localhost"`
Port string `env:"SERVER_PORT" env-default:"8080"`
}
Database struct {
DSN string `env:"DB_DSN,required"`
}
Auth struct {
AccessTokenSecret string `env:"ACCESS_TOKEN_SECRET,required"`
RefreshTokenSecret string `env:"REFRESH_TOKEN_SECRET,required"`
AccessTokenExpiry time.Duration `env:"ACCESS_TOKEN_EXPIRY" env-default:"15m"`
RefreshTokenExpiry time.Duration `env:"REFRESH_TOKEN_EXPIRY" env-default:"168h"` // 7 дней
}
SMTP struct {
Host string `env:"SMTP_HOST,required"`
Port int `env:"SMTP_PORT,required"`
Username string `env:"SMTP_USERNAME,required"`
Password string `env:"SMTP_PASSWORD,required"`
From string `env:"SMTP_FROM,required"`
}
App struct {
URL string `env:"APP_URL,required"`
}
Vault struct {
Address string `env:"VAULT_ADDR,required"`
Token string `env:"VAULT_TOKEN,required"`
} `envPrefix:"VAULT_"`
}
func Load() (*Config, error) {
cfg := &Config{}
if err := env.Parse(cfg); err != nil {
return nil, err
}
return cfg, nil
}