Skip to content
Snippets Groups Projects
config.go 1.03 KiB
Newer Older
  • Learn to ignore specific revisions
  • package config
    
    import "time"
    
    type Config struct {
    
    	HTTP  httpConfig
    	Redis redisConfig
    
    	Nats  natsConfig
    
    
    	LogLevel string `envconfig:"LOG_LEVEL" default:"INFO"`
    }
    
    type httpConfig struct {
    	Host         string        `envconfig:"HTTP_HOST"`
    	Port         string        `envconfig:"HTTP_PORT" default:"8080"`
    	IdleTimeout  time.Duration `envconfig:"HTTP_IDLE_TIMEOUT" default:"120s"`
    	ReadTimeout  time.Duration `envconfig:"HTTP_READ_TIMEOUT" default:"10s"`
    	WriteTimeout time.Duration `envconfig:"HTTP_WRITE_TIMEOUT" default:"10s"`
    }
    
    
    type redisConfig struct {
    	Addr string        `envconfig:"REDIS_ADDR" required:"true"`
    	User string        `envconfig:"REDIS_USER" required:"true"`
    	Pass string        `envconfig:"REDIS_PASS" required:"true"`
    	DB   int           `envconfig:"REDIS_DB" default:"0"`
    	TTL  time.Duration `envconfig:"REDIS_EXPIRATION"` //  no default expiration, keys are set to live forever
    }
    
    
    type natsConfig struct {
    	Addr    string `envconfig:"NATS_ADDR" required:"true"`
    	Subject string `envconfig:"NATS_SUBJECT" default:"external"`
    }