// Package config loads bulker runtime config from env. package config import ( "fmt" "time" "github.com/caarlos0/env/v11" ) type Config struct { HTTPAddr string `env:"BULKER_HTTP_ADDR" envDefault:":3042"` LogLevel string `env:"BULKER_LOG_LEVEL" envDefault:"info"` KafkaGroup string `env:"BULKER_KAFKA_GROUP" envDefault:"bulker"` BatchSize int `env:"BULKER_BATCH_SIZE" envDefault:"1000"` BatchInterval time.Duration `env:"BULKER_BATCH_INTERVAL_SECONDS" envDefault:"5s"` ShutdownTimeout time.Duration `env:"BULKER_SHUTDOWN_TIMEOUT_SECONDS" envDefault:"60s"` KafkaBrokers []string `env:"KAFKA_BROKERS" envSeparator:"," envDefault:"localhost:9092"` KafkaTopicIngest string `env:"KAFKA_TOPIC_INGEST" envDefault:"events.ingest"` KafkaTopicDLQ string `env:"KAFKA_TOPIC_DLQ" envDefault:"events.dlq"` ClickHouseAddr string `env:"CLICKHOUSE_ADDR" envDefault:"localhost:9000"` ClickHouseDB string `env:"CLICKHOUSE_DB" envDefault:"cdp"` ClickHouseUser string `env:"CLICKHOUSE_USER" envDefault:"default"` ClickHousePassword string `env:"CLICKHOUSE_PASSWORD" envDefault:""` } func Load() (*Config, error) { cfg := &Config{} if err := env.Parse(cfg); err != nil { return nil, fmt.Errorf("config load: %w", err) } return cfg, nil }