mirror of
https://github.com/veops/oneterm.git
synced 2025-10-07 16:20:52 +08:00
44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
package mysql
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"go.uber.org/zap"
|
|
"gorm.io/driver/mysql"
|
|
"gorm.io/gorm"
|
|
|
|
"github.com/veops/oneterm/conf"
|
|
"github.com/veops/oneterm/logger"
|
|
"github.com/veops/oneterm/model"
|
|
)
|
|
|
|
var (
|
|
DB *gorm.DB
|
|
)
|
|
|
|
func init() {
|
|
var err error
|
|
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/oneterm?charset=utf8mb4&parseTime=True&loc=Local",
|
|
conf.Cfg.Mysql.User, conf.Cfg.Mysql.Password, conf.Cfg.Mysql.Host, conf.Cfg.Mysql.Port)
|
|
DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
|
|
DisableForeignKeyConstraintWhenMigrating: true,
|
|
})
|
|
if err != nil {
|
|
logger.L().Fatal("init mysql failed", zap.Error(err))
|
|
}
|
|
|
|
err = DB.AutoMigrate(
|
|
&model.Account{}, &model.Asset{}, &model.Authorization{}, &model.Command{},
|
|
&model.Config{}, &model.FileHistory{}, &model.Gateway{}, &model.History{},
|
|
&model.Node{}, &model.PublicKey{}, &model.Session{}, &model.Share{},
|
|
)
|
|
if err != nil {
|
|
logger.L().Fatal("auto migrate mysql failed", zap.Error(err))
|
|
}
|
|
|
|
if err = DB.Migrator().DropIndex(&model.Authorization{}, "asset_account_id_del"); err != nil && !strings.Contains(err.Error(), "1091") {
|
|
logger.L().Fatal("drop index failed", zap.Error(err))
|
|
}
|
|
}
|