package config import ( "gitee.com/xuyiping_admin/pkg/di" "os" "strings" "sync" ) var ( Module = di.Provide(Options) options *AppConfig appEnv string initOnce sync.Once ) // AppConfig store all configuration options type AppConfig struct { Broker string `yaml:"broker"` Port int64 `yaml:"port"` UserName string `yaml:"user_name"` Password string `yaml:"password"` SubTopName string `yaml:"sub_top_name"` WorkNumber int64 `yaml:"work_number"` // 数据库配置 额外加载文件部分 database.yaml StoreSetting StoreSetting `json:"storeSetting" yaml:"store"` } // StoreSetting 数据库配置 type StoreSetting struct { // 开启 SyDb SQL 记录 DriverName string `yaml:"driver_name" json:"driver_name"` ShowSQL bool `yaml:"show_sql" json:"show_sql"` KptRW string `yaml:"kpt_rw" json:"kpt_rw"` KptMigr string `yaml:"kpt_migr" json:"kpt_migr"` } func Options() *AppConfig { return options } func init() { appEnv = strings.ToLower(os.Getenv("APP_ENVIRONMENT")) cfg := &AppConfig{} var err error initOnce.Do(func() { switch appEnv { case "test": err = Initialize("app.test.yaml", cfg) case "production": err = Initialize("app.production.yaml", cfg) default: err = Initialize("app.develop.yaml", cfg) } if err != nil { panic(err) } options = cfg }) }