mirror of
https://github.com/veops/oneterm.git
synced 2025-10-08 00:30:12 +08:00
53 lines
1.3 KiB
Go
53 lines
1.3 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.DefaultAccount, model.DefaultAsset, model.DefaultAuthorization, model.DefaultCommand,
|
|
model.DefaultConfig, model.DefaultFileHistory, model.DefaultGateway, model.DefaultHistory,
|
|
model.DefaultNode, model.DefaultPublicKey, model.DefaultSession, model.DefaultSessionCmd,
|
|
model.DefaultShare,
|
|
)
|
|
if err != nil {
|
|
logger.L().Fatal("auto migrate mysql failed", zap.Error(err))
|
|
}
|
|
|
|
dropIndexs := map[string]any{
|
|
"asset_account_id_del": &model.Authorization{},
|
|
}
|
|
for k, v := range dropIndexs {
|
|
if !DB.Migrator().HasIndex(v, k) {
|
|
continue
|
|
}
|
|
if err = DB.Migrator().DropIndex(v, k); err != nil && !strings.Contains(err.Error(), "1091") {
|
|
logger.L().Fatal("drop index failed", zap.Error(err))
|
|
}
|
|
}
|
|
}
|