app.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package config
  2. import (
  3. "gitee.com/xuyiping_admin/pkg/di"
  4. "os"
  5. "strings"
  6. "sync"
  7. )
  8. var (
  9. Module = di.Provide(Options)
  10. options *AppConfig
  11. appEnv string
  12. initOnce sync.Once
  13. )
  14. // AppConfig store all configuration options
  15. type AppConfig struct {
  16. Broker string `yaml:"broker"`
  17. Port int64 `yaml:"port"`
  18. UserName string `yaml:"user_name"`
  19. Password string `yaml:"password"`
  20. SubTopName string `yaml:"sub_top_name"`
  21. WorkNumber int64 `yaml:"work_number"`
  22. // 数据库配置 额外加载文件部分 database.yaml
  23. StoreSetting StoreSetting `json:"storeSetting" yaml:"store"`
  24. }
  25. // StoreSetting 数据库配置
  26. type StoreSetting struct {
  27. // 开启 SyDb SQL 记录
  28. DriverName string `yaml:"driver_name" json:"driver_name"`
  29. ShowSQL bool `yaml:"show_sql" json:"show_sql"`
  30. KptRW string `yaml:"kpt_rw" json:"kpt_rw"`
  31. KptMigr string `yaml:"kpt_migr" json:"kpt_migr"`
  32. }
  33. func Options() *AppConfig {
  34. return options
  35. }
  36. func init() {
  37. appEnv = strings.ToLower(os.Getenv("APP_ENVIRONMENT"))
  38. cfg := &AppConfig{}
  39. var err error
  40. initOnce.Do(func() {
  41. switch appEnv {
  42. case "test":
  43. err = Initialize("app.test.yaml", cfg)
  44. case "production":
  45. err = Initialize("app.production.yaml", cfg)
  46. default:
  47. err = Initialize("app.develop.yaml", cfg)
  48. }
  49. if err != nil {
  50. panic(err)
  51. }
  52. options = cfg
  53. })
  54. }