admin db403171da
All checks were successful
continuous-integration/drone/push Build is passing
v0.0.25 Добавлен gRPC сервис подписок/пидписчиков
2025-08-26 09:48:50 +03:00

49 lines
1.4 KiB
Go

package config
import (
"time"
"github.com/caarlos0/env/v8"
"github.com/joho/godotenv"
)
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"`
URL string `env:"AppURL,required"`
}
GRPC struct {
MessageServiceAddress string `env:"MESSAGE_SERVICE_ADDRESS"`
SubscribeServiceAddress string `env:"SUBSCRIBE_SERVICE_ADDRESS"`
}
}
func Load() (*Config, error) {
// Пытаемся загрузить .env файл (если он есть)
// Игнорируем ошибку, если файла нет
_ = godotenv.Load()
cfg := &Config{}
if err := env.Parse(cfg); err != nil {
return nil, err
}
return cfg, nil
}