40 lines
1.0 KiB
Go
40 lines
1.0 KiB
Go
package initialize
|
|
|
|
import (
|
|
"gitea.pena/PenaSide/common/mongo"
|
|
"github.com/caarlos0/env/v8"
|
|
"github.com/joho/godotenv"
|
|
"log"
|
|
)
|
|
|
|
type Config struct {
|
|
IsProd bool `env:"IS_PROD"`
|
|
S3Endpoint string `env:"S3_ENDPOINT"`
|
|
S3AccessKey string `env:"S3_ACCESS_KEY"`
|
|
S3SecretKey string `env:"S3_SECRET_KEY"`
|
|
S3Token string `env:"S3_TOKEN"`
|
|
RedisHost string `env:"REDIS_HOST"`
|
|
RedisPassword string `env:"REDIS_PASSWORD"`
|
|
RedisDB int `env:"REDIS_DB"`
|
|
ClientHttpUrl string `env:"CLIENT_HTTP_URL"`
|
|
AdminHttpUrl string `env:"ADMIN_HTTP_URL"`
|
|
TelegramToken string `env:"TELEGRAM_TOKEN"`
|
|
TelegramChannelID int64 `env:"TELEGRAM_CHANNEL_ID"`
|
|
ExternalCfg ExternalCfg
|
|
}
|
|
|
|
type ExternalCfg struct {
|
|
Database mongo.Configuration
|
|
}
|
|
|
|
func LoadConfig() (*Config, error) {
|
|
if err := godotenv.Load(); err != nil {
|
|
log.Print("No .env file found")
|
|
}
|
|
var config Config
|
|
if err := env.Parse(&config); err != nil {
|
|
return nil, err
|
|
}
|
|
return &config, nil
|
|
}
|