Documentation
¶
Index ¶
- type CORSConfig
- type CacheConfig
- type Config
- type DBConnectionConfig
- type DBManagerConfig
- type ErrorTrackingConfig
- type EventBrokerConfig
- type EventBrokerDatabaseConfig
- type EventBrokerNATSConfig
- type EventBrokerRedisConfig
- type EventBrokerRetryPolicyConfig
- type LoggerConfig
- type Manager
- func (m *Manager) Get(key string) interface{}
- func (m *Manager) GetBool(key string) bool
- func (m *Manager) GetConfig() (*Config, error)
- func (m *Manager) GetInt(key string) int
- func (m *Manager) GetString(key string) string
- func (m *Manager) Load() error
- func (m *Manager) SaveConfig(path string) error
- func (m *Manager) Set(key string, value interface{})
- func (m *Manager) SetConfig(cfg *Config) error
- type MemcacheConfig
- type MiddlewareConfig
- type Option
- type RedisConfig
- type ServerConfig
- type TracingConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CORSConfig ¶
type CORSConfig struct {
AllowedOrigins []string `mapstructure:"allowed_origins"`
AllowedMethods []string `mapstructure:"allowed_methods"`
AllowedHeaders []string `mapstructure:"allowed_headers"`
MaxAge int `mapstructure:"max_age"`
}
CORSConfig holds CORS configuration
type CacheConfig ¶
type CacheConfig struct {
Provider string `mapstructure:"provider"` // memory, redis, memcache
Redis RedisConfig `mapstructure:"redis"`
Memcache MemcacheConfig `mapstructure:"memcache"`
}
CacheConfig holds cache provider configuration
type Config ¶
type Config struct {
Server ServerConfig `mapstructure:"server"`
Tracing TracingConfig `mapstructure:"tracing"`
Cache CacheConfig `mapstructure:"cache"`
Logger LoggerConfig `mapstructure:"logger"`
ErrorTracking ErrorTrackingConfig `mapstructure:"error_tracking"`
Middleware MiddlewareConfig `mapstructure:"middleware"`
CORS CORSConfig `mapstructure:"cors"`
EventBroker EventBrokerConfig `mapstructure:"event_broker"`
DBManager DBManagerConfig `mapstructure:"dbmanager"`
}
Config represents the complete application configuration
type DBConnectionConfig ¶ added in v1.0.6
type DBConnectionConfig struct {
// Name is the unique name of this connection
Name string `mapstructure:"name"`
// Type is the database type (postgres, sqlite, mssql, mongodb)
Type string `mapstructure:"type"`
// DSN is the complete Data Source Name / connection string
// If provided, this takes precedence over individual connection parameters
DSN string `mapstructure:"dsn"`
// Connection parameters (used if DSN is not provided)
Host string `mapstructure:"host"`
Port int `mapstructure:"port"`
User string `mapstructure:"user"`
Password string `mapstructure:"password"`
Database string `mapstructure:"database"`
// PostgreSQL/MSSQL specific
SSLMode string `mapstructure:"sslmode"` // disable, require, verify-ca, verify-full
Schema string `mapstructure:"schema"` // Default schema
// SQLite specific
FilePath string `mapstructure:"filepath"`
// MongoDB specific
AuthSource string `mapstructure:"auth_source"`
ReplicaSet string `mapstructure:"replica_set"`
ReadPreference string `mapstructure:"read_preference"` // primary, secondary, etc.
// Connection pool settings (overrides global defaults)
MaxOpenConns *int `mapstructure:"max_open_conns"`
MaxIdleConns *int `mapstructure:"max_idle_conns"`
ConnMaxLifetime *time.Duration `mapstructure:"conn_max_lifetime"`
ConnMaxIdleTime *time.Duration `mapstructure:"conn_max_idle_time"`
// Timeouts
ConnectTimeout time.Duration `mapstructure:"connect_timeout"`
QueryTimeout time.Duration `mapstructure:"query_timeout"`
// Features
EnableTracing bool `mapstructure:"enable_tracing"`
EnableMetrics bool `mapstructure:"enable_metrics"`
EnableLogging bool `mapstructure:"enable_logging"`
// DefaultORM specifies which ORM to use for the Database() method
// Options: "bun", "gorm", "native"
DefaultORM string `mapstructure:"default_orm"`
// Tags for organization and filtering
Tags map[string]string `mapstructure:"tags"`
}
DBConnectionConfig defines configuration for a single database connection
func (*DBConnectionConfig) PopulateFromDSN ¶ added in v1.0.10
func (cc *DBConnectionConfig) PopulateFromDSN() error
PopulateFromDSN parses a DSN and populates the connection fields
type DBManagerConfig ¶ added in v1.0.6
type DBManagerConfig struct {
// DefaultConnection is the name of the default connection to use
DefaultConnection string `mapstructure:"default_connection"`
// Connections is a map of connection name to connection configuration
Connections map[string]DBConnectionConfig `mapstructure:"connections"`
// Global connection pool defaults
MaxOpenConns int `mapstructure:"max_open_conns"`
MaxIdleConns int `mapstructure:"max_idle_conns"`
ConnMaxLifetime time.Duration `mapstructure:"conn_max_lifetime"`
ConnMaxIdleTime time.Duration `mapstructure:"conn_max_idle_time"`
// Retry policy
RetryAttempts int `mapstructure:"retry_attempts"`
RetryDelay time.Duration `mapstructure:"retry_delay"`
RetryMaxDelay time.Duration `mapstructure:"retry_max_delay"`
// Health checks
HealthCheckInterval time.Duration `mapstructure:"health_check_interval"`
EnableAutoReconnect bool `mapstructure:"enable_auto_reconnect"`
}
DBManagerConfig contains configuration for the database connection manager
func (*DBManagerConfig) ToManagerConfig ¶ added in v1.0.6
func (c *DBManagerConfig) ToManagerConfig() interface{}
ToManagerConfig converts config.DBManagerConfig to dbmanager.ManagerConfig This is used to avoid circular dependencies
func (*DBManagerConfig) Validate ¶ added in v1.0.6
func (c *DBManagerConfig) Validate() error
Validate validates the DBManager configuration
type ErrorTrackingConfig ¶ added in v0.0.98
type ErrorTrackingConfig struct {
Enabled bool `mapstructure:"enabled"`
Provider string `mapstructure:"provider"` // sentry, noop
DSN string `mapstructure:"dsn"` // Sentry DSN
Environment string `mapstructure:"environment"` // e.g., production, staging, development
Release string `mapstructure:"release"` // Application version/release
Debug bool `mapstructure:"debug"` // Enable debug mode
SampleRate float64 `mapstructure:"sample_rate"` // Error sample rate (0.0-1.0)
TracesSampleRate float64 `mapstructure:"traces_sample_rate"` // Traces sample rate (0.0-1.0)
}
ErrorTrackingConfig holds error tracking configuration
type EventBrokerConfig ¶ added in v0.0.107
type EventBrokerConfig struct {
Enabled bool `mapstructure:"enabled"`
Provider string `mapstructure:"provider"` // memory, redis, nats, database
Mode string `mapstructure:"mode"` // sync, async
WorkerCount int `mapstructure:"worker_count"`
BufferSize int `mapstructure:"buffer_size"`
InstanceID string `mapstructure:"instance_id"`
Redis EventBrokerRedisConfig `mapstructure:"redis"`
NATS EventBrokerNATSConfig `mapstructure:"nats"`
Database EventBrokerDatabaseConfig `mapstructure:"database"`
RetryPolicy EventBrokerRetryPolicyConfig `mapstructure:"retry_policy"`
}
EventBrokerConfig contains configuration for the event broker
type EventBrokerDatabaseConfig ¶ added in v0.0.107
type EventBrokerDatabaseConfig struct {
TableName string `mapstructure:"table_name"`
Channel string `mapstructure:"channel"` // PostgreSQL NOTIFY channel name
PollInterval time.Duration `mapstructure:"poll_interval"`
}
EventBrokerDatabaseConfig contains database provider configuration
type EventBrokerNATSConfig ¶ added in v0.0.107
type EventBrokerNATSConfig struct {
URL string `mapstructure:"url"`
StreamName string `mapstructure:"stream_name"`
Subjects []string `mapstructure:"subjects"`
Storage string `mapstructure:"storage"` // file, memory
MaxAge time.Duration `mapstructure:"max_age"`
}
EventBrokerNATSConfig contains NATS-specific configuration
type EventBrokerRedisConfig ¶ added in v0.0.107
type EventBrokerRedisConfig struct {
StreamName string `mapstructure:"stream_name"`
ConsumerGroup string `mapstructure:"consumer_group"`
MaxLen int64 `mapstructure:"max_len"`
Host string `mapstructure:"host"`
Port int `mapstructure:"port"`
Password string `mapstructure:"password"`
DB int `mapstructure:"db"`
}
EventBrokerRedisConfig contains Redis-specific configuration
type EventBrokerRetryPolicyConfig ¶ added in v0.0.107
type EventBrokerRetryPolicyConfig struct {
MaxRetries int `mapstructure:"max_retries"`
InitialDelay time.Duration `mapstructure:"initial_delay"`
MaxDelay time.Duration `mapstructure:"max_delay"`
BackoffFactor float64 `mapstructure:"backoff_factor"`
}
EventBrokerRetryPolicyConfig contains retry policy configuration
type LoggerConfig ¶
LoggerConfig holds logger configuration
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager handles configuration loading from multiple sources
func NewManager ¶
func NewManager() *Manager
NewManager creates a new configuration manager with defaults
func NewManagerWithOptions ¶
NewManagerWithOptions creates a new configuration manager with custom options
func (*Manager) SaveConfig ¶ added in v1.0.8
SaveConfig writes the current configuration to the specified path
type MemcacheConfig ¶
type MemcacheConfig struct {
Servers []string `mapstructure:"servers"`
MaxIdleConns int `mapstructure:"max_idle_conns"`
Timeout time.Duration `mapstructure:"timeout"`
}
MemcacheConfig holds Memcache-specific configuration
type MiddlewareConfig ¶
type MiddlewareConfig struct {
RateLimitRPS float64 `mapstructure:"rate_limit_rps"`
RateLimitBurst int `mapstructure:"rate_limit_burst"`
MaxRequestSize int64 `mapstructure:"max_request_size"`
}
MiddlewareConfig holds middleware configuration
type Option ¶
type Option func(*Manager)
Option is a functional option for configuring the Manager
func WithConfigFile ¶
WithConfigFile sets a specific config file path
func WithConfigName ¶
WithConfigName sets the config file name (without extension)
func WithConfigPath ¶
WithConfigPath adds a path to search for config files
func WithEnvPrefix ¶
WithEnvPrefix sets the environment variable prefix
type RedisConfig ¶
type RedisConfig struct {
Host string `mapstructure:"host"`
Port int `mapstructure:"port"`
Password string `mapstructure:"password"`
DB int `mapstructure:"db"`
}
RedisConfig holds Redis-specific configuration
type ServerConfig ¶
type ServerConfig struct {
Addr string `mapstructure:"addr"`
ShutdownTimeout time.Duration `mapstructure:"shutdown_timeout"`
DrainTimeout time.Duration `mapstructure:"drain_timeout"`
ReadTimeout time.Duration `mapstructure:"read_timeout"`
WriteTimeout time.Duration `mapstructure:"write_timeout"`
IdleTimeout time.Duration `mapstructure:"idle_timeout"`
}
ServerConfig holds server-related configuration