86 lines
1.4 KiB
Go
86 lines
1.4 KiB
Go
package configs
|
|
|
|
import (
|
|
"bytes"
|
|
_ "embed"
|
|
"io"
|
|
|
|
"mini-chat/internal/pkg/env"
|
|
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
var config = new(Config)
|
|
|
|
type Config struct {
|
|
MySQL struct {
|
|
Read struct {
|
|
Addr string `toml:"addr"`
|
|
User string `toml:"user"`
|
|
Pass string `toml:"pass"`
|
|
Name string `toml:"name"`
|
|
} `toml:"read"`
|
|
Write struct {
|
|
Addr string `toml:"addr"`
|
|
User string `toml:"user"`
|
|
Pass string `toml:"pass"`
|
|
Name string `toml:"name"`
|
|
} `toml:"write"`
|
|
} `toml:"mysql"`
|
|
|
|
JWT struct {
|
|
AdminSecret string `toml:"admin_secret"`
|
|
PatientSecret string `toml:"patient_secret"`
|
|
DoctorSecret string `toml:"doctor_secret"`
|
|
} `toml:"jwt"`
|
|
|
|
Language struct {
|
|
Local string `toml:"local"`
|
|
} `toml:"language"`
|
|
}
|
|
|
|
var (
|
|
//go:embed dev_configs.toml
|
|
devConfigs []byte
|
|
|
|
//go:embed fat_configs.toml
|
|
fatConfigs []byte
|
|
|
|
//go:embed uat_configs.toml
|
|
uatConfigs []byte
|
|
|
|
//go:embed pro_configs.toml
|
|
proConfigs []byte
|
|
)
|
|
|
|
func init() {
|
|
var r io.Reader
|
|
|
|
switch env.Active().Value() {
|
|
case "dev":
|
|
r = bytes.NewReader(devConfigs)
|
|
case "fat":
|
|
r = bytes.NewReader(fatConfigs)
|
|
case "uat":
|
|
r = bytes.NewReader(uatConfigs)
|
|
case "pro":
|
|
r = bytes.NewReader(proConfigs)
|
|
default:
|
|
r = bytes.NewReader(fatConfigs)
|
|
}
|
|
|
|
viper.SetConfigType("toml")
|
|
|
|
if err := viper.ReadConfig(r); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
if err := viper.Unmarshal(config); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
func Get() Config {
|
|
return *config
|
|
}
|