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