 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
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 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 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 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 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 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 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