✨ init
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user