notifier/internal/initialize/config.go

43 lines
1.1 KiB
Go
Raw Normal View History

2024-03-31 18:23:50 +00:00
package initialize
2024-03-31 20:04:15 +00:00
import (
2024-11-29 07:38:24 +00:00
"gitea.pena/PenaSide/common/mongo"
2024-03-31 20:04:15 +00:00
"github.com/caarlos0/env/v8"
2024-12-16 11:17:25 +00:00
"github.com/gofiber/fiber/v2"
2024-03-31 20:04:15 +00:00
"github.com/joho/godotenv"
2024-12-16 11:17:25 +00:00
"go.uber.org/zap"
2024-03-31 20:04:15 +00:00
"log"
)
type Config struct {
2024-12-16 11:17:25 +00:00
KafkaBrokers string `env:"KAFKA_BROKERS,required"`
KafkaTopicMailNotifier string `env:"KAFKA_TOPIC_MAIL_NOTIFIER,required"`
CustomerMicroserviceGRPC string `env:"CUSTOMER_MICROSERVICE_GRPC_URL,required"`
QuizCoreMicroserviceGRPC string `env:"QUIZ_CORE_MICROSERVICE_GRPC_URL,required"`
External External
}
type External struct {
MailClientCfg MailClientCfg
Database mongo.Configuration
}
type MailClientCfg struct {
ApiURL string `env:"API_URL,required"`
ApiKey string `env:"MAIL_API_KEY,required"`
Sender string `env:"MAIL_SENDER,required"`
FiberClient *fiber.Client
Logger *zap.Logger
2024-03-31 20:04:15 +00:00
}
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
}