config.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. Tables []string `json:"tables,omitempty" yaml:"tables,omitempty"`
  13. }
  14. var (
  15. dbConfigFlag *DbConfig
  16. cfgFilePathFlag string
  17. createCfgFileFlag bool
  18. )
  19. func init() {
  20. dbConfigFlag = &DbConfig{}
  21. flag.StringVar(&dbConfigFlag.Host, "h", "", "database host")
  22. flag.IntVar(&dbConfigFlag.Port, "p", 0, "database port")
  23. flag.StringVar(&dbConfigFlag.Schema, "s", "", "database schema")
  24. flag.StringVar(&dbConfigFlag.User, "u", "", "database user")
  25. flag.StringVar(&dbConfigFlag.Pwd, "P", "", "database password")
  26. flag.StringVar(&cfgFilePathFlag, "c", "", "database config file path")
  27. flag.BoolVar(&createCfgFileFlag, "g", false, "create default config file")
  28. }
  29. func (cfg *DbConfig) IsZero() bool {
  30. if cfg == nil {
  31. return true
  32. }
  33. if cfg.Host != "" ||
  34. cfg.Port != 0 ||
  35. cfg.Schema != "" ||
  36. cfg.User != "" ||
  37. cfg.Pwd != "" {
  38. return false
  39. }
  40. return true
  41. }
  42. func (cfg *DbConfig) FixDefaultValues() error {
  43. if cfg == nil {
  44. return errors.New("can not fix values of nil object")
  45. }
  46. if cfg.Schema == "" {
  47. return errors.New("can not fix default values with empty database schema")
  48. }
  49. if cfg.Pwd == "" {
  50. return errors.New("can not fix default values with empty database password")
  51. }
  52. if cfg.Host == "" {
  53. cfg.Host = "localhost"
  54. }
  55. if cfg.Port == 0 {
  56. cfg.Port = 3306
  57. } else if cfg.Port < 1 || cfg.Port > 65535 {
  58. return errors.Errorf("invalid database port %d", cfg.Port)
  59. }
  60. if cfg.User == "" {
  61. cfg.User = "root"
  62. }
  63. return nil
  64. }