config.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package services
  2. import (
  3. "flag"
  4. "github.com/pkg/errors"
  5. )
  6. type DbConfig struct {
  7. Host string `json:"host,omitempty" yaml:"host,omitempty"`
  8. Port int `json:"port,omitempty" yaml:"port,omitempty"`
  9. Schema string `json:"schema,omitempty" yaml:"schema,omitempty"`
  10. User string `json:"user,omitempty" yaml:"user,omitempty"`
  11. Pwd string `json:"pwd,omitempty" yaml:"pwd,omitempty"`
  12. }
  13. var (
  14. dbConfigFlag *DbConfig
  15. cfgFilePathFlag string
  16. )
  17. func init() {
  18. dbConfigFlag = &DbConfig{}
  19. flag.StringVar(&dbConfigFlag.Host, "h", "", "database host")
  20. flag.IntVar(&dbConfigFlag.Port, "p", 0, "database port")
  21. flag.StringVar(&dbConfigFlag.Schema, "s", "", "database schema")
  22. flag.StringVar(&dbConfigFlag.User, "u", "", "database user")
  23. flag.StringVar(&dbConfigFlag.Pwd, "P", "", "database password")
  24. flag.StringVar(&cfgFilePathFlag, "c", "", "database config file path")
  25. }
  26. func (cfg *DbConfig) IsZero() bool {
  27. if cfg == nil {
  28. return true
  29. }
  30. if cfg.Host != "" ||
  31. cfg.Port != 0 ||
  32. cfg.Schema != "" ||
  33. cfg.User != "" ||
  34. cfg.Pwd != "" {
  35. return false
  36. }
  37. return true
  38. }
  39. func (cfg *DbConfig) FixDefaultValues() error {
  40. if cfg == nil {
  41. return errors.New("can not fix values of nil object")
  42. }
  43. if cfg.Schema == "" {
  44. return errors.New("can not fix default values with empty database schema")
  45. }
  46. if cfg.Pwd == "" {
  47. return errors.New("can not fix default values with empty database password")
  48. }
  49. if cfg.Host == "" {
  50. cfg.Host = "localhost"
  51. }
  52. if cfg.Port == 0 {
  53. cfg.Port = 3306
  54. } else if cfg.Port < 1 || cfg.Port > 65535 {
  55. return errors.Errorf("invalid database port %d", cfg.Port)
  56. }
  57. if cfg.User == "" {
  58. cfg.User = "root"
  59. }
  60. return nil
  61. }