temp
This commit is contained in:
90
Server/common/db/mysql/mysql.go
Normal file
90
Server/common/db/mysql/mysql.go
Normal file
@@ -0,0 +1,90 @@
|
||||
package mysql
|
||||
|
||||
import (
|
||||
commonConfig "common/config"
|
||||
"common/log"
|
||||
"common/query"
|
||||
|
||||
"fmt"
|
||||
"gorm.io/driver/mysql"
|
||||
"gorm.io/gorm"
|
||||
"time"
|
||||
)
|
||||
|
||||
const (
|
||||
DBNameEcosmos = "ecosmos"
|
||||
DBNameEcosmosShop = "ecosmos_shop"
|
||||
)
|
||||
|
||||
var dbs = make(map[string]*gorm.DB)
|
||||
var queryS = make(map[string]*query.Query)
|
||||
|
||||
func Init(cfg *commonConfig.MysqlConfig) error {
|
||||
db, err := initOneDB(cfg, DBNameEcosmosShop)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
queryS[DBNameEcosmosShop] = query.Use(db)
|
||||
|
||||
db, err = initOneDB(cfg, DBNameEcosmos)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
query.SetDefault(db)
|
||||
queryS[DBNameEcosmos] = query.Q
|
||||
return nil
|
||||
}
|
||||
|
||||
func initOneDB(cfg *commonConfig.MysqlConfig, dbName string) (*gorm.DB, error) {
|
||||
dialect := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", cfg.User, cfg.Password, cfg.Host, cfg.Port, dbName)
|
||||
db, err := gorm.Open(
|
||||
mysql.New(
|
||||
mysql.Config{
|
||||
DSN: dialect,
|
||||
},
|
||||
),
|
||||
&gorm.Config{
|
||||
TranslateError: true,
|
||||
},
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
sqlDb, err := db.DB()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
sqlDb.SetMaxOpenConns(50)
|
||||
sqlDb.SetMaxIdleConns(5)
|
||||
sqlDb.SetConnMaxLifetime(time.Second * 10)
|
||||
if err = sqlDb.Ping(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
dbs[dbName] = db
|
||||
return db.Debug(), nil
|
||||
}
|
||||
|
||||
func DBQuery(dbName string) *query.Query {
|
||||
if q, ok := queryS[dbName]; ok {
|
||||
return q
|
||||
}
|
||||
|
||||
log.Errorf("mysql db not init: %v", dbName)
|
||||
return nil
|
||||
}
|
||||
|
||||
func Close() error {
|
||||
fmt.Println("close mysql connect")
|
||||
for _, db := range dbs {
|
||||
sqlDb, err := db.DB()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = sqlDb.Close()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user