config.go 832 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package config
  2. import (
  3. "log"
  4. "time"
  5. "github.com/joeshaw/envdecode"
  6. )
  7. type Conf struct {
  8. Debug bool `env:"DEBUG,required"`
  9. Server ServerConf
  10. Db DBConf
  11. }
  12. type ServerConf struct {
  13. Port int `env:"SERVER_PORT,required"`
  14. TimeoutRead time.Duration `env:"SERVER_TIMEOUT_READ,required"`
  15. TimeoutWrite time.Duration `env:"SERVER_TIMEOUT_WRITE,required"`
  16. TimeoutIdle time.Duration `env:"SERVER_TIMEOUT_IDLE,required"`
  17. }
  18. type DBConf struct {
  19. Host string `env:"DB_HOST,required"`
  20. Port int `env:"DB_PORT,required"`
  21. Username string `env:"DB_USER,required"`
  22. Password string `env:"DB_PASS,required"`
  23. DbName string `env:"DB_NAME,required"`
  24. }
  25. func AppConfig() *Conf {
  26. var c Conf
  27. if err := envdecode.StrictDecode(&c); err != nil {
  28. log.Fatalf("Failed to decode: %s", err)
  29. }
  30. return &c
  31. }