package main import ( "errors" "gitea.pena/PenaSide/common/validate" "gitea.pena/PenaSide/notifier/internal/initialize" "github.com/caarlos0/env/v8" "log" ) func main() { cfg, err := loadConfig() if err != nil { log.Fatalf("Error loading config: %v", err) } if err = validateNotEmpty([]string{ cfg.CustomerMicroserviceGRPC, cfg.QuizCoreMicroserviceGRPC, }); err != nil { log.Fatalf("Error validating not empty values: %v", err) } if err = validateSMTP(cfg.External.MailClientCfg); err != nil { log.Fatalf("Error validating SMTP: %v", err) } if err = validate.ValidateMongo(cfg.External.Database); err != nil { log.Fatalf("Error validating Mongo: %v", err) } if err = validate.ValidateKafka([]string{cfg.KafkaBrokers}, cfg.KafkaTopicMailNotifier); err != nil { log.Fatalf("Error validating Kafka: %v", err) } } func loadConfig() (*initialize.Config, error) { var cfg initialize.Config if err := env.Parse(&cfg); err != nil { return nil, err } return &cfg, nil } func validateNotEmpty(values []string) error { for _, value := range values { if value == "" { return errors.New("important cfg value is empty") } } return nil } func validateSMTP(cfg initialize.MailClientCfg) error { if cfg.Sender == "" { return errors.New("smtp sender is empty") } if cfg.ApiURL == "" { return errors.New("smtp api url is empty") } if cfg.ApiKey == "" { return errors.New("smtp api key is empty") } err := validate.ValidateSmtp(cfg.ApiKey) if err != nil { return err } return nil }