package initialize import ( "gitea.pena/PenaSide/common/mongo" "github.com/caarlos0/env/v8" "github.com/gofiber/fiber/v2" "github.com/joho/godotenv" "log" ) type Config struct { AppName string `env:"APP_NAME" envDefault:"codeword"` ClientHttpURL string `env:"CLIENT_HTTP_URL,required" envDefault:"localhost:3000"` AdminHttpURL string `env:"ADMIN_HTTP_URL,required" envDefault:"localhost:3001"` GrpcURL string `env:"GRPC_URL,required" envDefault:"localhost:9000"` RedisHost string `env:"REDIS_HOST,required" envDefault:"localhost:6379"` RedisPassword string `env:"REDIS_PASSWORD,required" envDefault:"admin"` RedisDB int `env:"REDIS_DB,required" envDefault:"2"` KafkaTopicTariff string `env:"KAFKA_TOPIC_TARIFF,required"` KafkaBrokers []string `env:"KAFKA_BROKERS,required"` AuthMicroserviceURL string `env:"AUTH_MICROSERVICE_URL,required"` DiscountMicroserviceGRPC string `env:"DISCOUNT_MICROSERVICE_GRPC_URL,required"` TrashLogHost string `env:"TRASH_LOG_HOST,required" envDefault:"localhost:7113"` MailRecoveryURL string `env:"MAIL_RECOVERY_URL,required"` EncryptPublicKey string `env:"ENCRYPT_PUBLIC_KEY,required"` EncryptPrivateKey string `env:"ENCRYPT_PRIVATE_KEY,required"` EncryptSignSecret string `env:"ENCRYPT_SIGN_SECRET,required"` DefaultRedirectionURL string `env:"DEFAULT_REDIRECTION_URL,required"` ExternalCfg ExternalCfg } type ExternalCfg struct { MailClientCfg MailClientCfg Database mongo.Configuration JwtCfg JWTConfiguration } type MailClientCfg struct { ApiURL string `env:"API_URL,required"` Sender string `env:"MAIL_SENDER,required"` ApiKey string `env:"MAIL_API_KEY,required"` FiberClient *fiber.Client } type JWTConfiguration struct { PrivateKey string `env:"JWT_PRIVATE_KEY"` PublicKey string `env:"JWT_PUBLIC_KEY,required"` Issuer string `env:"JWT_ISSUER,required"` Audience string `env:"JWT_AUDIENCE,required"` } 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 } const ModuleLogger = "codeword"