This commit is contained in:
2023-03-01 23:53:06 +08:00
commit 1aaefefac1
20 changed files with 1295 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
package config
import (
"github.com/spf13/viper"
"log"
)
type MysqlConfig struct {
Host string
Port int
Db string
User string
Password string
Timeout string `default:"10s"`
}
type JwtConfig struct {
Key string
AccessAge int
RefreshAge int
}
type Config struct {
Port string
BaseUrl string
MySql MysqlConfig
Jwt JwtConfig
}
var config *Config
// LoadConfig 加载配置
func LoadConfig(path string) error {
viper.AddConfigPath(path)
viper.SetConfigName("app")
viper.SetConfigType("yaml")
viper.AutomaticEnv()
if err := viper.ReadInConfig(); err != nil {
return err
}
if err := viper.Unmarshal(&config); err != nil {
return err
}
return nil
}
// GetConfig 获取配置
func GetConfig() *Config {
return config
}
// InitConfig 初始化配置
func InitConfig(path string) {
if err := LoadConfig(path); err != nil {
log.Fatal("加载配置失败: ", err)
}
}
+42
View File
@@ -0,0 +1,42 @@
package config
import (
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"log"
"sync"
)
var _db *gorm.DB
var once sync.Once
func InitDb() (*gorm.DB, error) {
config := GetConfig()
mysqlConf := config.MySql
dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local&timeout=%s",
mysqlConf.User, mysqlConf.Password, mysqlConf.Host, mysqlConf.Port, mysqlConf.Db, mysqlConf.Timeout)
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
return nil, err
}
sqlDb, err := db.DB()
if err != nil {
return nil, err
}
sqlDb.SetMaxOpenConns(100) // 设置数据库连接池最大连接数
sqlDb.SetMaxIdleConns(20) // 连接池最大允许的空闲连接数,如果没有sql任务需要执行的连接数大于20,超过的连接会被连接池关闭。
return db, nil
}
func GetDb() *gorm.DB {
once.Do(func() {
db, err := InitDb()
if err != nil {
log.Fatal("连接数据库失败, error: ", err)
}
_db = db
})
return _db
}