You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.9 KiB
94 lines
2.9 KiB
package system
|
|
|
|
import (
|
|
"fmt"
|
|
"path/filepath"
|
|
|
|
"github.com/flipped-aurora/gin-vue-admin/server/config"
|
|
"github.com/flipped-aurora/gin-vue-admin/server/global"
|
|
model "github.com/flipped-aurora/gin-vue-admin/server/model/system"
|
|
"github.com/flipped-aurora/gin-vue-admin/server/model/system/request"
|
|
"github.com/flipped-aurora/gin-vue-admin/server/source/example"
|
|
"github.com/flipped-aurora/gin-vue-admin/server/source/system"
|
|
"github.com/flipped-aurora/gin-vue-admin/server/utils"
|
|
uuid "github.com/satori/go.uuid"
|
|
"gorm.io/driver/mysql"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// writeMysqlConfig mysql回写配置
|
|
// Author [SliverHorn](https://github.com/SliverHorn)
|
|
// Author [songzhibin97](https://github.com/songzhibin97)
|
|
func (initDBService *InitDBService) writeMysqlConfig(mysql config.Mysql) error {
|
|
global.GVA_CONFIG.Mysql = mysql
|
|
cs := utils.StructToMap(global.GVA_CONFIG)
|
|
for k, v := range cs {
|
|
global.GVA_VP.Set(k, v)
|
|
}
|
|
global.GVA_VP.Set("jwt.signing-key", uuid.NewV4().String())
|
|
return global.GVA_VP.WriteConfig()
|
|
}
|
|
|
|
// initMsqlDB 创建数据库并初始化 mysql
|
|
// Author [piexlmax](https://github.com/piexlmax)
|
|
// Author [SliverHorn](https://github.com/SliverHorn)
|
|
// Author: [songzhibin97](https://github.com/songzhibin97)
|
|
func (initDBService *InitDBService) initMsqlDB(conf request.InitDB) error {
|
|
dsn := conf.MysqlEmptyDsn()
|
|
createSql := fmt.Sprintf("CREATE DATABASE IF NOT EXISTS `%s` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;", conf.DBName)
|
|
if err := initDBService.createDatabase(dsn, "mysql", createSql); err != nil {
|
|
return err
|
|
} // 创建数据库
|
|
|
|
mysqlConfig := conf.ToMysqlConfig()
|
|
if mysqlConfig.Dbname == "" {
|
|
return nil
|
|
} // 如果没有数据库名, 则跳出初始化数据
|
|
|
|
if db, err := gorm.Open(mysql.New(mysql.Config{
|
|
DSN: mysqlConfig.Dsn(), // DSN data source name
|
|
DefaultStringSize: 191, // string 类型字段的默认长度
|
|
SkipInitializeWithVersion: true, // 根据版本自动配置
|
|
}), &gorm.Config{DisableForeignKeyConstraintWhenMigrating: true}); err != nil {
|
|
return nil
|
|
} else {
|
|
global.GVA_DB = db
|
|
}
|
|
|
|
if err := initDBService.initTables(); err != nil {
|
|
global.GVA_DB = nil
|
|
return err
|
|
}
|
|
|
|
if err := initDBService.initMysqlData(); err != nil {
|
|
global.GVA_DB = nil
|
|
return err
|
|
}
|
|
|
|
if err := initDBService.writeMysqlConfig(mysqlConfig); err != nil {
|
|
return err
|
|
}
|
|
|
|
global.GVA_CONFIG.AutoCode.Root, _ = filepath.Abs("..")
|
|
return nil
|
|
}
|
|
|
|
// initData mysql 初始化数据
|
|
// Author [SliverHorn](https://github.com/SliverHorn)
|
|
// Author: [songzhibin97](https://github.com/songzhibin97)
|
|
func (initDBService *InitDBService) initMysqlData() error {
|
|
return model.MysqlDataInitialize(
|
|
system.Api,
|
|
system.User,
|
|
system.Casbin,
|
|
system.BaseMenu,
|
|
system.Authority,
|
|
system.Dictionary,
|
|
system.UserAuthority,
|
|
system.DataAuthorities,
|
|
system.AuthoritiesMenus,
|
|
system.DictionaryDetail,
|
|
system.ViewAuthorityMenuMysql,
|
|
example.FileMysql,
|
|
)
|
|
}
|