config

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 18, 2026 License: AGPL-3.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AlertConfig

type AlertConfig struct {
	WorkerCount      int    `mapstructure:"worker_count" validate:"gte=5"`
	OwnerEmail       string `mapstructure:"owner_email" validate:"required,email"`
	ResendAPIKey     string `mapstructure:"resend_api_key"`
	ResendKillSwitch bool   `mapstructure:"kill_switch"`
}

type AppConfig

type AppConfig struct {
	JobChannelSize    int `mapstructure:"job_channel_size" validate:"gte=100,lte=5000"`
	ResultChannelSize int `mapstructure:"result_channel_size" validate:"gte=100,lte=5000"`
	AlertChannelSize  int `mapstructure:"alert_channel_size" validate:"gte=100,lte=5000"`
}

type AuthConfig

type AuthConfig struct {
	Secret   string        `mapstructure:"secret" validate:"required"`
	TokenTTL time.Duration `mapstructure:"token_ttl" validate:"required"`
}

type Config

type Config struct {
	Env         string `mapstructure:"env" validate:"required,oneof=development staging production"`
	ServiceName string `mapstructure:"service_name"`
	Port        string `mapstructure:"port" validate:"gte=1,lte=65535"`

	Auth            AuthConfig            `mapstructure:"auth" validate:"required"`
	App             AppConfig             `mapstructure:"app" validate:"required"`
	Scheduler       SchedulerConfig       `mapstructure:"scheduler" validate:"required"`
	Executor        ExecutorConfig        `mapstructure:"executor" validate:"required"`
	Alert           AlertConfig           `mapstructure:"alert" validate:"required"`
	ResultProcessor ResultProcessorConfig `mapstructure:"result_processor" validate:"required"`
	Redis           RedisConfig           `mapstructure:"redis" validate:"required"`
	DB              DBConfig              `mapstructure:"db" validate:"required"`
}

func LoadConfig

func LoadConfig(path string) (*Config, error)

type DBConfig

type DBConfig struct {
	URL             string        `mapstructure:"url" validate:"required,url"`
	MaxOpenConns    int32         `mapstructure:"max_open_conns" validate:"gt=0"`
	MinIdleConns    int32         `mapstructure:"min_idle_conns" validate:"gt=0"`
	ConnMaxLifetime time.Duration `mapstructure:"conn_max_lifetime" validate:"gt=0"`
	ConnMaxIdleTime time.Duration `mapstructure:"conn_max_idle_time" validate:"gt=0"`
	HealthTimeout   time.Duration `mapstructure:"health_timeout" validate:"gt=0"`
}

type ExecutorConfig

type ExecutorConfig struct {
	WorkerCount  int `mapstructure:"worker_count" validate:"gte=5,lte=200"`
	HTTPSemCount int `mapstructure:"http_semaphore_count" validate:"gte=5,lte=6000"`
}

type RedisConfig

type RedisConfig struct {
	URL             string        `mapstructure:"url" validate:"required,url"`
	DialTimeout     time.Duration `mapstructure:"dial_timeout" validate:"gt=0"`
	ReadTimeout     time.Duration `mapstructure:"read_timeout" validate:"gt=0"`
	WriteTimeout    time.Duration `mapstructure:"write_timeout" validate:"gt=0"`
	PoolSize        int           `mapstructure:"pool_size" validate:"gte=1,lte=1000"`
	MinIdleConns    int           `mapstructure:"min_idle_conns" validate:"gt=0"`
	ConnMaxLifetime time.Duration `mapstructure:"conn_max_lifetime" validate:"gt=0"`
	ConnMaxIdleTime time.Duration `mapstructure:"conn_max_idle_time" validate:"gt=0"`
}

type ResultProcessorConfig

type ResultProcessorConfig struct {
	SuccessWorkerCount int `mapstructure:"success_worker_count" validate:"gte=5"`
	SuccessChannelSize int `mapstructure:"success_channel_size" validate:"gte=5"`
	FailureWorkerCount int `mapstructure:"failure_worker_count" validate:"gte=5"`
	FailureChannelSize int `mapstructure:"failure_channel_size" validate:"gte=5"`
}

type SchedulerConfig

type SchedulerConfig struct {
	Interval  time.Duration `mapstructure:"interval" validate:"gte=5"`
	BatchSize int           `mapstructure:"batch_size" validate:"gt=0"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL