Documentation
¶
Overview ¶
Package config - Hot Reload Configuration System Migrado de ClubPulse a gopherkit con mejoras significativas
Index ¶
- func ValidateConfig(config *BaseConfig) error
- type BaseConfig
- type CORSConfig
- type CacheConfig
- type CacheConfigDynamic
- type CircuitBreakerConfig
- type DatabaseConfig
- type DefaultLogger
- type DynamicConfig
- type ExternalConfig
- type FallbackConfigDynamic
- type HotReloadMetrics
- type HotReloader
- func (hr *HotReloader) GetConfig() *DynamicConfig
- func (hr *HotReloader) GetLastReloadTime() time.Time
- func (hr *HotReloader) GetMetrics() *HotReloadMetrics
- func (hr *HotReloader) GetWatchedFiles() []string
- func (hr *HotReloader) IsFeatureEnabled(featureName string) bool
- func (hr *HotReloader) IsRunning() bool
- func (hr *HotReloader) RegisterCallback(name string, callback ReloadCallback)
- func (hr *HotReloader) SaveConfig() error
- func (hr *HotReloader) Start() error
- func (hr *HotReloader) Stop() error
- func (hr *HotReloader) UpdateConfig(updates map[string]interface{}) error
- type JWTConfig
- type Logger
- type MonitoringConfigDynamic
- type ObservabilityConfig
- type RateLimitConfig
- type ReloadCallback
- type ReloadEvent
- type SecurityConfig
- type SecurityConfigDynamic
- type ServerConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ValidateConfig ¶
func ValidateConfig(config *BaseConfig) error
ValidateConfig validates the configuration using struct tags
Types ¶
type BaseConfig ¶
type BaseConfig struct { Server ServerConfig `json:"server" validate:"required"` Database DatabaseConfig `json:"database" validate:"required"` Observability ObservabilityConfig `json:"observability"` Security SecurityConfig `json:"security"` Cache CacheConfig `json:"cache"` External ExternalConfig `json:"external"` }
BaseConfig holds common configuration for all services
func LoadBaseConfig ¶
func LoadBaseConfig(serviceName string) (*BaseConfig, error)
LoadBaseConfig loads base configuration from environment variables
func (*BaseConfig) IsDevelopment ¶
func (c *BaseConfig) IsDevelopment() bool
IsDevelopment returns true if the environment is development
func (*BaseConfig) IsProduction ¶
func (c *BaseConfig) IsProduction() bool
IsProduction returns true if the environment is production
func (*BaseConfig) IsStaging ¶
func (c *BaseConfig) IsStaging() bool
IsStaging returns true if the environment is staging
type CORSConfig ¶
type CORSConfig struct { AllowedOrigins []string `json:"allowed_origins"` AllowedMethods []string `json:"allowed_methods"` AllowedHeaders []string `json:"allowed_headers"` ExposedHeaders []string `json:"exposed_headers"` AllowCredentials bool `json:"allow_credentials"` MaxAge int `json:"max_age"` }
CORSConfig holds CORS configuration
type CacheConfig ¶
type CacheConfig struct { Enabled bool `json:"enabled"` Host string `json:"host"` Port string `json:"port"` Password string `json:"password"` DB int `json:"db"` Prefix string `json:"prefix"` TTL time.Duration `json:"ttl"` }
CacheConfig holds cache-related configuration
type CacheConfigDynamic ¶ added in v1.0.2
type CacheConfigDynamic struct { Enabled bool `json:"enabled"` TTL time.Duration `json:"ttl"` Namespace string `json:"namespace"` MaxSize int64 `json:"max_size"` EvictionPolicy string `json:"eviction_policy"` CompressionEnabled bool `json:"compression_enabled"` PrefetchEnabled bool `json:"prefetch_enabled"` CacheWarmupEnabled bool `json:"cache_warmup_enabled"` }
CacheConfigDynamic configuración de cache que puede cambiar dinámicamente
type CircuitBreakerConfig ¶
type CircuitBreakerConfig struct { Enabled bool `json:"enabled"` MaxRequests uint32 `json:"max_requests"` Interval time.Duration `json:"interval"` Timeout time.Duration `json:"timeout"` ReadyToTripRequests uint32 `json:"ready_to_trip_requests"` ReadyToTripRatio float64 `json:"ready_to_trip_ratio"` }
CircuitBreakerConfig holds circuit breaker configuration
type DatabaseConfig ¶
type DatabaseConfig struct { URL string `json:"url"` Host string `json:"host"` Port string `json:"port"` Database string `json:"database"` User string `json:"user"` Password string `json:"password"` SSLMode string `json:"ssl_mode"` MaxOpenConns int `json:"max_open_conns"` MaxIdleConns int `json:"max_idle_conns"` ConnMaxLifetime time.Duration `json:"conn_max_lifetime"` ConnMaxIdleTime time.Duration `json:"conn_max_idle_time"` }
DatabaseConfig holds database-related configuration
func (*DatabaseConfig) GetDSN ¶
func (c *DatabaseConfig) GetDSN() string
GetDSN returns the database connection string
type DefaultLogger ¶ added in v1.0.2
type DefaultLogger struct{}
DefaultLogger implementación simple de logger
func (*DefaultLogger) Debugf ¶ added in v1.0.2
func (dl *DefaultLogger) Debugf(format string, args ...interface{})
func (*DefaultLogger) Error ¶ added in v1.0.2
func (dl *DefaultLogger) Error(msg string)
func (*DefaultLogger) Info ¶ added in v1.0.2
func (dl *DefaultLogger) Info(msg string)
func (*DefaultLogger) Warn ¶ added in v1.0.2
func (dl *DefaultLogger) Warn(msg string)
func (*DefaultLogger) WithField ¶ added in v1.0.2
func (dl *DefaultLogger) WithField(key string, value interface{}) Logger
type DynamicConfig ¶ added in v1.0.2
type DynamicConfig struct { // Configuración de base de datos DatabaseMode string `json:"database_mode"` DatabaseURL string `json:"database_url"` DatabaseSchema string `json:"database_schema"` // Configuraciones específicas CacheConfig CacheConfigDynamic `json:"cache"` FallbackConfig FallbackConfigDynamic `json:"fallback"` SecurityConfig SecurityConfigDynamic `json:"security"` MonitoringConfig MonitoringConfigDynamic `json:"monitoring"` // Configuraciones adicionales FeatureFlags map[string]bool `json:"feature_flags"` CustomSettings map[string]string `json:"custom_settings"` // Metadatos LastUpdated time.Time `json:"last_updated"` Version int `json:"version"` LoadedFrom string `json:"loaded_from"` Environment string `json:"environment"` }
DynamicConfig configuración que puede recargarse en caliente mejorada
type ExternalConfig ¶
type ExternalConfig struct { AuthAPIURL string `json:"auth_api_url"` UserAPIURL string `json:"user_api_url"` NotificationURL string `json:"notification_url"` CalendarAPIURL string `json:"calendar_api_url"` ChampionshipAPIURL string `json:"championship_api_url"` Timeout time.Duration `json:"timeout"` RetryAttempts int `json:"retry_attempts"` RetryDelay time.Duration `json:"retry_delay"` }
ExternalConfig holds external service configuration
type FallbackConfigDynamic ¶ added in v1.0.2
type FallbackConfigDynamic struct { Enabled bool `json:"enabled"` HealthCheckInterval time.Duration `json:"health_check_interval"` FailureThreshold int `json:"failure_threshold"` RecoveryCheckInterval time.Duration `json:"recovery_check_interval"` AlertWebhookURL string `json:"alert_webhook_url"` MaxRetryAttempts int `json:"max_retry_attempts"` AutoRecoveryEnabled bool `json:"auto_recovery_enabled"` NotificationsEnabled bool `json:"notifications_enabled"` }
FallbackConfigDynamic configuración de fallback que puede cambiar dinámicamente
type HotReloadMetrics ¶ added in v1.0.2
type HotReloadMetrics struct { TotalReloads int64 `json:"total_reloads"` SuccessfulReloads int64 `json:"successful_reloads"` FailedReloads int64 `json:"failed_reloads"` CallbackExecutions int64 `json:"callback_executions"` WatchedFilesCount int `json:"watched_files_count"` AverageReloadTime time.Duration `json:"average_reload_time"` LastReloadTime time.Time `json:"last_reload_time"` ReloadHistory []ReloadEvent `json:"reload_history"` FileChangeEvents map[string]int64 `json:"file_change_events"` CallbackErrors map[string]int64 `json:"callback_errors"` // contains filtered or unexported fields }
HotReloadMetrics métricas del sistema de hot reload
type HotReloader ¶ added in v1.0.2
type HotReloader struct {
// contains filtered or unexported fields
}
HotReloader gestiona la recarga en caliente de configuraciones mejorado
func NewHotReloader ¶ added in v1.0.2
func NewHotReloader(configFile string, baseConfig *BaseConfig, logger Logger) (*HotReloader, error)
NewHotReloader crea un nuevo sistema de hot-reload mejorado
func (*HotReloader) GetConfig ¶ added in v1.0.2
func (hr *HotReloader) GetConfig() *DynamicConfig
GetConfig obtiene la configuración actual de forma thread-safe
func (*HotReloader) GetLastReloadTime ¶ added in v1.0.2
func (hr *HotReloader) GetLastReloadTime() time.Time
GetLastReloadTime obtiene el tiempo de la última recarga
func (*HotReloader) GetMetrics ¶ added in v1.0.2
func (hr *HotReloader) GetMetrics() *HotReloadMetrics
GetMetrics retorna las métricas del hot reloader
func (*HotReloader) GetWatchedFiles ¶ added in v1.0.2
func (hr *HotReloader) GetWatchedFiles() []string
GetWatchedFiles obtiene la lista de archivos observados
func (*HotReloader) IsFeatureEnabled ¶ added in v1.0.2
func (hr *HotReloader) IsFeatureEnabled(featureName string) bool
IsFeatureEnabled verifica si una feature flag está habilitada
func (*HotReloader) IsRunning ¶ added in v1.0.2
func (hr *HotReloader) IsRunning() bool
IsRunning verifica si el sistema está corriendo
func (*HotReloader) RegisterCallback ¶ added in v1.0.2
func (hr *HotReloader) RegisterCallback(name string, callback ReloadCallback)
RegisterCallback registra un callback para cambios de configuración
func (*HotReloader) SaveConfig ¶ added in v1.0.2
func (hr *HotReloader) SaveConfig() error
SaveConfig guarda la configuración actual al archivo
func (*HotReloader) Start ¶ added in v1.0.2
func (hr *HotReloader) Start() error
Start inicia el sistema de hot-reload mejorado
func (*HotReloader) Stop ¶ added in v1.0.2
func (hr *HotReloader) Stop() error
Stop detiene el sistema de hot-reload con limpieza mejorada
func (*HotReloader) UpdateConfig ¶ added in v1.0.2
func (hr *HotReloader) UpdateConfig(updates map[string]interface{}) error
UpdateConfig actualiza la configuración programáticamente mejorado
type JWTConfig ¶
type JWTConfig struct { Secret string `json:"secret" validate:"required,min=32"` RefreshSecret string `json:"refresh_secret"` AccessDuration time.Duration `json:"access_duration"` RefreshDuration time.Duration `json:"refresh_duration"` Issuer string `json:"issuer"` }
JWTConfig holds JWT-related configuration
type Logger ¶ added in v1.0.2
type Logger interface { Info(msg string) Warn(msg string) Error(msg string) Debugf(format string, args ...interface{}) WithField(key string, value interface{}) Logger }
Logger interface para logging
type MonitoringConfigDynamic ¶ added in v1.0.2
type MonitoringConfigDynamic struct { Enabled bool `json:"enabled"` MetricsEnabled bool `json:"metrics_enabled"` MetricsPort int `json:"metrics_port"` HealthCheckPort int `json:"health_check_port"` LogLevel string `json:"log_level"` SamplingRate float64 `json:"sampling_rate"` AlertsEnabled bool `json:"alerts_enabled"` DashboardEnabled bool `json:"dashboard_enabled"` TracingEnabled bool `json:"tracing_enabled"` ProfilerEnabled bool `json:"profiler_enabled"` }
MonitoringConfigDynamic configuración de monitoreo que puede cambiar dinámicamente
type ObservabilityConfig ¶
type ObservabilityConfig struct { TracingEnabled bool `json:"tracing_enabled"` MetricsEnabled bool `json:"metrics_enabled"` LogLevel string `json:"log_level" validate:"oneof=debug info warn error"` ServiceName string `json:"service_name" validate:"required"` ServiceVersion string `json:"service_version"` JaegerEndpoint string `json:"jaeger_endpoint"` OTLPEndpoint string `json:"otlp_endpoint"` }
ObservabilityConfig holds observability-related configuration
type RateLimitConfig ¶
type RateLimitConfig struct { Enabled bool `json:"enabled"` RequestsPerMinute int `json:"requests_per_minute"` BurstSize int `json:"burst_size"` WindowSize time.Duration `json:"window_size"` RedisEnabled bool `json:"redis_enabled"` }
RateLimitConfig holds rate limiting configuration
type ReloadCallback ¶ added in v1.0.2
type ReloadCallback func(oldConfig, newConfig *DynamicConfig) error
ReloadCallback función que se ejecuta cuando cambia la configuración
type ReloadEvent ¶ added in v1.0.2
type ReloadEvent struct { File string `json:"file"` Type string `json:"type"` Timestamp time.Time `json:"timestamp"` Success bool `json:"success"` Error string `json:"error,omitempty"` Duration time.Duration `json:"duration"` OldVersion int `json:"old_version"` NewVersion int `json:"new_version"` ChangedKeys []string `json:"changed_keys,omitempty"` }
ReloadEvent evento de recarga mejorado
type SecurityConfig ¶
type SecurityConfig struct { RateLimit RateLimitConfig `json:"rate_limit"` CircuitBreaker CircuitBreakerConfig `json:"circuit_breaker"` CORS CORSConfig `json:"cors"` JWT JWTConfig `json:"jwt"` }
SecurityConfig holds security-related configuration
type SecurityConfigDynamic ¶ added in v1.0.2
type SecurityConfigDynamic struct { RLSEnabled bool `json:"rls_enabled"` JWTSecret string `json:"jwt_secret"` TokenTTL time.Duration `json:"token_ttl"` RateLimitEnabled bool `json:"rate_limit_enabled"` RateLimitRPS int `json:"rate_limit_rps"` CORSOrigins []string `json:"cors_origins"` SecurityHeaders bool `json:"security_headers"` EncryptionEnabled bool `json:"encryption_enabled"` AuditLogEnabled bool `json:"audit_log_enabled"` }
SecurityConfigDynamic configuración de seguridad que puede cambiar dinámicamente
type ServerConfig ¶
type ServerConfig struct { Port string `json:"port" validate:"required,min=4,max=5"` Environment string `json:"environment" validate:"required,oneof=development staging production"` MetricsPort string `json:"metrics_port" validate:"required,min=4,max=5"` ReadTimeout time.Duration `json:"read_timeout"` WriteTimeout time.Duration `json:"write_timeout"` IdleTimeout time.Duration `json:"idle_timeout"` ShutdownTimeout time.Duration `json:"shutdown_timeout"` MaxRequestSize int64 `json:"max_request_size"` }
ServerConfig holds server-related configuration