2025-05-17 11:36:26 -04:00

128 lines
3.1 KiB
Go

package config
import (
"os"
"gopkg.in/yaml.v2"
)
// Config estructura la configuración completa del demonio.
type Config struct {
Database struct {
Host string `yaml:"host"`
Port int `yaml:"port"`
User string `yaml:"user"`
Password string `yaml:"password"`
DBName string `yaml:"dbname"`
SSLMode string `yaml:"sslmode"`
} `yaml:"database"`
SOAP struct {
APIKey string `yaml:"apikey"`
FACTURA_SINCRONIZACION struct {
Endpoint string `yaml:"endpoint"`
Timeout int `yaml:"timeout"`
Retries int `yaml:"retries"`
}
FACTURA_CODIGO struct {
Endpoint string `yaml:"endpoint"`
Timeout int `yaml:"timeout"`
Retries int `yaml:"retries"`
}
} `yaml:"soap"`
Schedule struct {
FACTURA_SINCRONIZACION struct {
Cron string `yaml:"cron"`
}
FACTURA_CODIGO struct {
Cron string `yaml:"cron"`
}
} `yaml:"schedule"`
API struct {
Port int `yaml:"port"`
} `yaml:"api"`
Notifications struct {
Enabled bool `yaml:"enabled"`
Method string `yaml:"method"` // "email", "webhook", "slack", etc.
Config map[string]string `yaml:"config"`
} `yaml:"notifications"`
Services []struct {
Name string `yaml:"name"`
Enabled bool `yaml:"enabled"`
Concurrency int `yaml:"concurrency"`
} `yaml:"services"`
}
// LoadConfig carga la configuración desde el archivo YAML.
func LoadConfig(path string) (*Config, error) {
f, err := os.Open(path)
if err != nil {
return nil, err
}
defer f.Close()
var cfg Config
decoder := yaml.NewDecoder(f)
if err := decoder.Decode(&cfg); err != nil {
return nil, err
}
return &cfg, nil
}
// package config
// import (
// "os"
// "gopkg.in/yaml.v2"
// )
// // Config estructura global de configuración.
// type Config struct {
// Database struct {
// Host string `yaml:"host"`
// Port int `yaml:"port"`
// User string `yaml:"user"`
// Password string `yaml:"password"`
// DBName string `yaml:"dbname"`
// SSLMode string `yaml:"sslmode"`
// } `yaml:"database"`
// SOAP struct {
// Endpoint string `yaml:"endpoint"`
// Timeout int `yaml:"timeout"`
// Retries int `yaml:"retries"`
// } `yaml:"soap"`
// Schedule struct {
// Cron string `yaml:"cron"`
// } `yaml:"schedule"`
// API struct {
// Port int `yaml:"port"`
// } `yaml:"api"`
// Notifications struct {
// Enabled bool `yaml:"enabled"`
// Method string `yaml:"method"` // "email", "webhook", "slack", etc.
// Config map[string]string `yaml:"config"`
// } `yaml:"notifications"`
// Services []struct {
// Name string `yaml:"name"`
// Enabled bool `yaml:"enabled"`
// Concurrency int `yaml:"concurrency"`
// } `yaml:"services"`
// }
// // Load carga la configuración a partir de un archivo YAML.
// func Load(configFile string) (*Config, error) {
// f, err := os.Open(configFile)
// if err != nil {
// return nil, err
// }
// defer f.Close()
// var cfg Config
// decoder := yaml.NewDecoder(f)
// if err := decoder.Decode(&cfg); err != nil {
// return nil, err
// }
// return &cfg, nil
// }