225 lines
5.8 KiB
Go
225 lines
5.8 KiB
Go
// internal/config/config.go
|
|
package config
|
|
|
|
import (
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
// Config almacena la configuración de la aplicación
|
|
type Config struct {
|
|
// Database settings
|
|
DBHost string
|
|
DBPort string
|
|
DBUser string
|
|
DBPassword string
|
|
DBName string
|
|
|
|
// Kafka settings
|
|
KafkaBrokers []string
|
|
KafkaConsumerGroupID string
|
|
KafkaInputTopic string
|
|
KafkaTopicEstado string
|
|
KafkaTopicAnular string
|
|
KafkaResultTopic string
|
|
KafkaDLQTopic string
|
|
|
|
// SOAP settings
|
|
SoapServiceURL string
|
|
|
|
// Email settings
|
|
SMTPHost string
|
|
SMTPPort string
|
|
SMTPUser string
|
|
SMTPPass string
|
|
NotifyEmail string
|
|
|
|
// Logging settings
|
|
LogDir string
|
|
LogFilename string
|
|
LogMaxSize int
|
|
LogMaxBackups int
|
|
LogMaxAge int
|
|
LogCompress bool
|
|
|
|
// App settings
|
|
ServerPort string
|
|
MaxRetries int
|
|
WorkerCount int
|
|
}
|
|
|
|
// LoadConfig carga la configuración desde variables de entorno o archivo .env
|
|
func LoadConfig() (*Config, error) {
|
|
// Intentar cargar .env si existe
|
|
godotenv.Load()
|
|
|
|
return &Config{
|
|
// Database settings
|
|
DBHost: getEnv("DB_HOST", "localhost"),
|
|
DBPort: getEnv("DB_PORT", "5432"),
|
|
DBUser: getEnv("DB_USER", "postgres"),
|
|
DBPassword: getEnv("DB_PASSWORD", "postgres"),
|
|
DBName: getEnv("DB_NAME", "facturacion"),
|
|
|
|
// Kafka settings
|
|
KafkaBrokers: strings.Split(getEnv("KAFKA_BOOTSTRAP_SERVERS", "localhost:9092"), ","),
|
|
KafkaConsumerGroupID: getEnv("KAFKA_CONSUMER_GROUP_ID", "facturacion-consumer"),
|
|
KafkaInputTopic: getEnv("KAFKA_INPUT_TOPIC", "FACTURACION"),
|
|
KafkaTopicEstado: getEnv("KAFKA_TOPIC_ESTADO", "FACTURACION_ESTADO"),
|
|
KafkaTopicAnular: getEnv("KAFKA_TOPIC_ANULAR", "FACTURACION_ANULAR"),
|
|
KafkaResultTopic: getEnv("KAFKA_RESULT_TOPIC", "FACTURACION_RESULTADOS"),
|
|
KafkaDLQTopic: getEnv("KAFKA_DLQ_TOPIC", "FACTURACION_DLQ"),
|
|
|
|
// SOAP settings
|
|
SoapServiceURL: getEnv("SOAP_SERVICE_URL", "http://siat.servicio.gob.bo/facturacion-service"),
|
|
|
|
// Email settings
|
|
SMTPHost: getEnv("SMTP_HOST", ""),
|
|
SMTPPort: getEnv("SMTP_PORT", ""),
|
|
SMTPUser: getEnv("SMTP_USER", ""),
|
|
SMTPPass: getEnv("SMTP_PASS", ""),
|
|
NotifyEmail: getEnv("NOTIFY_EMAIL", ""),
|
|
|
|
// Logging settings
|
|
LogDir: getEnv("LOG_DIR", "./logs"),
|
|
LogFilename: getEnv("LOG_FILENAME", "consumer.log"),
|
|
LogMaxSize: 10, // MB
|
|
LogMaxBackups: 5,
|
|
LogMaxAge: 30, // días
|
|
LogCompress: true,
|
|
|
|
// App settings
|
|
ServerPort: getEnv("SERVER_PORT", "7778"),
|
|
MaxRetries: 3,
|
|
WorkerCount: 10,
|
|
}, nil
|
|
}
|
|
|
|
// getEnv obtiene valor de variable de entorno con valor por defecto
|
|
func getEnv(key, defaultValue string) string {
|
|
value := os.Getenv(key)
|
|
if value == "" {
|
|
return defaultValue
|
|
}
|
|
return value
|
|
}
|
|
|
|
//package config
|
|
//
|
|
//import (
|
|
// "context"
|
|
// "encoding/json"
|
|
// "encoding/xml"
|
|
// "errors"
|
|
// "fmt"
|
|
// "os"
|
|
// "path/filepath"
|
|
// "strconv"
|
|
// "strings"
|
|
// "sync"
|
|
// "sync/atomic"
|
|
// "time"
|
|
//
|
|
// "github.com/joho/godotenv"
|
|
//)
|
|
//
|
|
//// Config almacena la configuración de la aplicación
|
|
//type Config struct {
|
|
// // Database settings
|
|
// DBHost string
|
|
// DBPort string
|
|
// DBUser string
|
|
// DBPassword string
|
|
// DBName string
|
|
//
|
|
// // Kafka settings
|
|
// KafkaBrokers []string
|
|
// KafkaConsumerGroupID string
|
|
// KafkaInputTopic string
|
|
// KafkaTopicEstado string
|
|
// KafkaTopicAnular string
|
|
// KafkaResultTopic string
|
|
// KafkaDLQTopic string
|
|
//
|
|
// // SOAP settings
|
|
// SoapServiceURL string
|
|
//
|
|
// // Email settings
|
|
// SMTPHost string
|
|
// SMTPPort string
|
|
// SMTPUser string
|
|
// SMTPPass string
|
|
// NotifyEmail string
|
|
//
|
|
// // Logging settings
|
|
// LogDir string
|
|
// LogFilename string
|
|
// LogMaxSize int
|
|
// LogMaxBackups int
|
|
// LogMaxAge int
|
|
// LogCompress bool
|
|
//
|
|
// // App settings
|
|
// ServerPort string
|
|
// MaxRetries int
|
|
// WorkerCount int
|
|
//}
|
|
//
|
|
//// LoadConfig carga la configuración desde variables de entorno o archivo .env
|
|
//func LoadConfig() (*Config, error) {
|
|
// // Intentar cargar .env si existe
|
|
// godotenv.Load()
|
|
//
|
|
// return &Config{
|
|
// // Database settings
|
|
// DBHost: getEnv("DB_HOST", "localhost"),
|
|
// DBPort: getEnv("DB_PORT", "5432"),
|
|
// DBUser: getEnv("DB_USER", "postgres"),
|
|
// DBPassword: getEnv("DB_PASSWORD", "postgres"),
|
|
// DBName: getEnv("DB_NAME", "facturacion"),
|
|
//
|
|
// // Kafka settings
|
|
// KafkaBrokers: strings.Split(getEnv("KAFKA_BOOTSTRAP_SERVERS", "localhost:9092"), ","),
|
|
// KafkaConsumerGroupID: getEnv("KAFKA_CONSUMER_GROUP_ID", "facturacion-consumer"),
|
|
// KafkaInputTopic: getEnv("KAFKA_INPUT_TOPIC", "FACTURACION"),
|
|
// KafkaTopicEstado: getEnv("KAFKA_TOPIC_ESTADO", "FACTURACION_ESTADO"),
|
|
// KafkaTopicAnular: getEnv("KAFKA_TOPIC_ANULAR", "FACTURACION_ANULAR"),
|
|
// KafkaResultTopic: getEnv("KAFKA_RESULT_TOPIC", "FACTURACION_RESULTADOS"),
|
|
// KafkaDLQTopic: getEnv("KAFKA_DLQ_TOPIC", "FACTURACION_DLQ"),
|
|
//
|
|
// // SOAP settings
|
|
// SoapServiceURL: getEnv("SOAP_SERVICE_URL", "http://siat.servicio.gob.bo/facturacion-service"),
|
|
//
|
|
// // Email settings
|
|
// SMTPHost: getEnv("SMTP_HOST", ""),
|
|
// SMTPPort: getEnv("SMTP_PORT", ""),
|
|
// SMTPUser: getEnv("SMTP_USER", ""),
|
|
// SMTPPass: getEnv("SMTP_PASS", ""),
|
|
// NotifyEmail: getEnv("NOTIFY_EMAIL", ""),
|
|
//
|
|
// // Logging settings
|
|
// LogDir: getEnv("LOG_DIR", "./logs"),
|
|
// LogFilename: getEnv("LOG_FILENAME", "consumer.log"),
|
|
// LogMaxSize: 1, // MB
|
|
// LogMaxBackups: 5,
|
|
// LogMaxAge: 30, // días
|
|
// LogCompress: true,
|
|
//
|
|
// // App settings
|
|
// ServerPort: getEnv("SERVER_PORT", "7778"),
|
|
// MaxRetries: 3,
|
|
// WorkerCount: 10,
|
|
// }, nil
|
|
//}
|
|
//
|
|
//// getEnv obtiene valor de variable de entorno con valor por defecto
|
|
//func getEnv(key, defaultValue string) string {
|
|
// value := os.Getenv(key)
|
|
// if value == "" {
|
|
// return defaultValue
|
|
// }
|
|
// return value
|
|
//}
|