Files
oneterm/backend/db/mysql.go
2024-09-19 18:51:33 +08:00

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))
}
}