diff --git a/server/go.mod b/server/go.mod index 143a7a352514f927dd2accea920c4bcd463aafc9..fb1311edfe0ef419e86991c11d40a7ca435f5830 100644 --- a/server/go.mod +++ b/server/go.mod @@ -41,6 +41,7 @@ require ( github.com/tebeka/strftime v0.1.3 // indirect github.com/unrolled/secure v1.0.7 go.uber.org/zap v1.10.0 + golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e // indirect golang.org/x/sys v0.0.0-20200610111108-226ff32320da // indirect golang.org/x/tools v0.0.0-20200324003944-a576cf524670 // indirect google.golang.org/protobuf v1.24.0 // indirect @@ -50,5 +51,5 @@ require ( gorm.io/driver/postgres v0.2.6 gorm.io/driver/sqlite v1.1.1 gorm.io/driver/sqlserver v0.2.4 - gorm.io/gorm v0.2.35 + gorm.io/gorm v1.20.0 ) diff --git a/server/initialize/db_table.go b/server/initialize/db_table.go deleted file mode 100644 index f694c216e40bdfc225a4f7d47338160593bc8f51..0000000000000000000000000000000000000000 --- a/server/initialize/db_table.go +++ /dev/null @@ -1,36 +0,0 @@ -package initialize - -import ( - "gin-vue-admin/global" - "gin-vue-admin/model" - "go.uber.org/zap" - "os" -) - -// 注册数据库表专用 -func DBTables() { - db := global.GVA_DB - err := db.AutoMigrate( - model.SysUser{}, - model.SysAuthority{}, - model.SysApi{}, - model.SysBaseMenu{}, - model.SysBaseMenuParameter{}, - model.JwtBlacklist{}, - model.SysWorkflow{}, - model.SysWorkflowStepInfo{}, - model.SysDictionary{}, - model.SysDictionaryDetail{}, - model.ExaFileUploadAndDownload{}, - model.ExaFile{}, - model.ExaFileChunk{}, - model.ExaSimpleUploader{}, - model.ExaCustomer{}, - model.SysOperationRecord{}, - ) - if err != nil { - global.GVA_LOG.Error("register table failed", zap.Any("err", err)) - os.Exit(0) - } - global.GVA_LOG.Debug("register table success") -} diff --git a/server/initialize/gorm.go b/server/initialize/gorm.go index 7dce551aa50f0393360059e5852f476730784d99..eb356a48664feb682197138443ac54a1676b0607 100644 --- a/server/initialize/gorm.go +++ b/server/initialize/gorm.go @@ -2,16 +2,18 @@ package initialize import ( "gin-vue-admin/global" + "gin-vue-admin/model" "go.uber.org/zap" "gorm.io/driver/mysql" "gorm.io/driver/postgres" - "gorm.io/driver/sqlite" "gorm.io/driver/sqlserver" "gorm.io/gorm" "gorm.io/gorm/logger" "os" ) +var err error + // Gorm 初始化数据库并产生数据库全局变量 func Gorm() { switch global.GVA_CONFIG.System.DbType { @@ -19,17 +21,44 @@ func Gorm() { GormMysql() case "postgresql": GormPostgreSql() - case "sqlite": - GormSqlite() + //case "sqlite": // sqlite需要gcc支持 windows用户需要自行安装gcc 如需使用打开注释即可 + // GormSqlite() case "sqlserver": GormSqlServer() } } +// GormDBTables 注册数据库表专用 +func GormDBTables(db *gorm.DB) { + err := db.AutoMigrate( + model.SysUser{}, + model.SysAuthority{}, + model.SysApi{}, + model.SysBaseMenu{}, + model.SysBaseMenuParameter{}, + model.JwtBlacklist{}, + model.SysWorkflow{}, + model.SysWorkflowStepInfo{}, + model.SysDictionary{}, + model.SysDictionaryDetail{}, + model.ExaFileUploadAndDownload{}, + model.ExaFile{}, + model.ExaFileChunk{}, + model.ExaSimpleUploader{}, + model.ExaCustomer{}, + model.SysOperationRecord{}, + ) + if err != nil { + global.GVA_LOG.Error("register table failed", zap.Any("err", err)) + os.Exit(0) + } + global.GVA_LOG.Debug("register table success") +} + // GormMysql 初始化Mysql数据库 func GormMysql() { m := global.GVA_CONFIG.Mysql - dsn := m.Username + ":" + m.Password + "@(" + m.Path + ")/" + m.Dbname + "?" + m.Config + dsn := m.Username + ":" + m.Password + "@tcp(" + m.Path + ")/" + m.Dbname + "?" + m.Config mysqlConfig := mysql.Config{ DSN: dsn, // DSN data source name DefaultStringSize: 191, // string 类型字段的默认长度 @@ -39,12 +68,12 @@ func GormMysql() { SkipInitializeWithVersion: false, // 根据版本自动配置 } gormConfig := config(m.LogMode) - if db, err := gorm.Open(mysql.New(mysqlConfig), gormConfig); err != nil { + if global.GVA_DB, err = gorm.Open(mysql.New(mysqlConfig), gormConfig); err != nil { global.GVA_LOG.Error("MySQL启动异常", zap.Any("err", err)) os.Exit(0) } else { - global.GVA_DB = db - sqlDB, _ := db.DB() + GormDBTables(global.GVA_DB) + sqlDB, _ := global.GVA_DB.DB() sqlDB.SetMaxIdleConns(m.MaxIdleConns) sqlDB.SetMaxOpenConns(m.MaxOpenConns) } @@ -59,42 +88,42 @@ func GormPostgreSql() { PreferSimpleProtocol: p.PreferSimpleProtocol, // 禁用隐式 prepared statement } gormConfig := config(p.Logger) - if db, err := gorm.Open(postgres.New(postgresConfig), gormConfig); err != nil { + if global.GVA_DB, err = gorm.Open(postgres.New(postgresConfig), gormConfig); err != nil { global.GVA_LOG.Error("PostgreSql启动异常", zap.Any("err", err)) os.Exit(0) } else { - global.GVA_DB = db - sqlDB, _ := db.DB() + GormDBTables(global.GVA_DB) + sqlDB, _ := global.GVA_DB.DB() sqlDB.SetMaxIdleConns(p.MaxIdleConns) sqlDB.SetMaxOpenConns(p.MaxOpenConns) } } -// GormSqlite 初始化Sqlite数据库 -func GormSqlite() { - s := global.GVA_CONFIG.Sqlite - gormConfig := config(s.Logger) - if db, err := gorm.Open(sqlite.Open(s.Path), gormConfig); err != nil { - global.GVA_LOG.Error("Sqlite启动异常", zap.Any("err", err)) - os.Exit(0) - } else { - global.GVA_DB = db - sqlDB, _ := db.DB() - sqlDB.SetMaxIdleConns(s.MaxIdleConns) - sqlDB.SetMaxOpenConns(s.MaxOpenConns) - } -} +// GormSqlite 初始化Sqlite数据库 sqlite需要gcc支持 windows用户需要自行安装gcc 如需使用打开注释即可 +//func GormSqlite() { +// s := global.GVA_CONFIG.Sqlite +// gormConfig := config(s.Logger) +// if global.GVA_DB, err = gorm.Open(sqlite.Open(s.Path), gormConfig); err != nil { +// global.GVA_LOG.Error("Sqlite启动异常", zap.Any("err", err)) +// os.Exit(0) +// } else { +// GormDBTables(global.GVA_DB) +// sqlDB, _ := global.GVA_DB.DB() +// sqlDB.SetMaxIdleConns(s.MaxIdleConns) +// sqlDB.SetMaxOpenConns(s.MaxOpenConns) +// } +//} // GormSqlite 初始化Sqlite数据库 func GormSqlServer() { ss := global.GVA_CONFIG.Sqlserver dsn := "sqlserver://" + ss.Username + ":" + ss.Password + "@" + ss.Path + "?database=gorm" - if db, err := gorm.Open(sqlserver.Open(dsn), &gorm.Config{}); err != nil { + if global.GVA_DB, err = gorm.Open(sqlserver.Open(dsn), &gorm.Config{}); err != nil { global.GVA_LOG.Error("SqlServer启动异常", zap.Any("err", err)) os.Exit(0) } else { - global.GVA_DB = db - sqlDB, _ := db.DB() + GormDBTables(global.GVA_DB) + sqlDB, _ := global.GVA_DB.DB() sqlDB.SetMaxIdleConns(ss.MaxIdleConns) sqlDB.SetMaxOpenConns(ss.MaxOpenConns) } diff --git a/server/initialize/mysql.go b/server/initialize/mysql.go deleted file mode 100644 index 83f52a10b9c9cc0c1fbbd9383614b211bb1ca4f2..0000000000000000000000000000000000000000 --- a/server/initialize/mysql.go +++ /dev/null @@ -1,45 +0,0 @@ -package initialize - -import ( - "gin-vue-admin/global" - "go.uber.org/zap" - "gorm.io/driver/mysql" - "gorm.io/gorm" - "gorm.io/gorm/logger" - "os" -) - -// 初始化数据库并产生数据库全局变量 -func Mysql() { - admin := global.GVA_CONFIG.Mysql - mysqlConfig := mysql.Config{ - DSN: admin.Username + ":" + admin.Password + "@(" + admin.Path + ")/" + admin.Dbname + "?" + admin.Config, // DSN data source name - DefaultStringSize: 191, // string 类型字段的默认长度 - DisableDatetimePrecision: true, // 禁用 datetime 精度,MySQL 5.6 之前的数据库不支持 - DontSupportRenameIndex: true, // 重命名索引时采用删除并新建的方式,MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引 - DontSupportRenameColumn: true, // 用 `change` 重命名列,MySQL 8 之前的数据库和 MariaDB 不支持重命名列 - SkipInitializeWithVersion: false, // 根据版本自动配置 - } - var gormConfig *gorm.Config - if admin.LogMode { //根据配置决定是否开启日志 - gormConfig = &gorm.Config{ - Logger: logger.Default.LogMode(logger.Info), - DisableForeignKeyConstraintWhenMigrating: true, - } - } else { - gormConfig = &gorm.Config{ - Logger: logger.Default.LogMode(logger.Silent), - DisableForeignKeyConstraintWhenMigrating: true, - } - } - - if db, err := gorm.Open(mysql.New(mysqlConfig), gormConfig); err != nil { - global.GVA_LOG.Error("MySQL启动异常", zap.Any("err", err)) - os.Exit(0) - } else { - global.GVA_DB = db - sqlDB, _ := db.DB() - sqlDB.SetMaxIdleConns(admin.MaxIdleConns) - sqlDB.SetMaxOpenConns(admin.MaxOpenConns) - } -} diff --git a/server/initialize/sqlite.go b/server/initialize/sqlite.go deleted file mode 100644 index 3879da6fa3e7761340803b862e252c4995769278..0000000000000000000000000000000000000000 --- a/server/initialize/sqlite.go +++ /dev/null @@ -1,23 +0,0 @@ -package initialize - -// sqlite需要gcc支持 windows用户需要自行安装gcc 如需使用打开注释即可 - -// 感谢 sqlitet提供者 [rikugun] 作者github: https://github.com/rikugun - -// import ( -// "fmt" -// "gin-vue-admin/global" -// "gorm.io/gorm" -// _ "github.com/jinzhu/gorm/dialects/sqlite" -// ) -// -// // 初始化数据库并产生数据库全局变量 -// func Sqlite() { -// admin := global.GVA_CONFIG.Sqlite -// if db, err := gorm.Open("sqlite3", fmt.Sprintf("%s?%s", admin.Path,admin.Config)); err != nil { -// global.GVA_LOG.Error("DEFAULTDB数据库启动异常", err) -// } else { -// global.GVA_DB = db -// global.GVA_DB.LogMode(admin.LogMode) -// } -// } diff --git a/server/main.go b/server/main.go index e3d1d9dc4cce4059b7eca933c169c84bcdd1773a..ce88bebddbbd6a970f8311221603d541f6963da8 100644 --- a/server/main.go +++ b/server/main.go @@ -16,7 +16,6 @@ import ( // @BasePath / func main() { initialize.Gorm() - initialize.DBTables() if global.GVA_CONFIG.System.NeedInitData { init_data.InitData() // 通过配置文件初始化数据 默认为 false 首次运行需要将 ./config.yaml中 system下的 need-init-data 修改为true }