@@ -2,34 +2,63 @@ package initialize
22
33import (
44 "gin-vue-admin/global"
5+ "gin-vue-admin/model"
56 "go.uber.org/zap"
67 "gorm.io/driver/mysql"
78 "gorm.io/driver/postgres"
8- "gorm.io/driver/sqlite"
99 "gorm.io/driver/sqlserver"
1010 "gorm.io/gorm"
1111 "gorm.io/gorm/logger"
1212 "os"
1313)
1414
15+ var err error
16+
1517// Gorm 初始化数据库并产生数据库全局变量
1618func Gorm () {
1719 switch global .GVA_CONFIG .System .DbType {
1820 case "mysql" :
1921 GormMysql ()
2022 case "postgresql" :
2123 GormPostgreSql ()
22- case "sqlite" :
23- GormSqlite ()
24+ // case "sqlite": // sqlite需要gcc支持 windows用户需要自行安装gcc 如需使用打开注释即可
25+ // GormSqlite()
2426 case "sqlserver" :
2527 GormSqlServer ()
2628 }
2729}
2830
31+ // GormDBTables 注册数据库表专用
32+ func GormDBTables (db * gorm.DB ) {
33+ err := db .AutoMigrate (
34+ model.SysUser {},
35+ model.SysAuthority {},
36+ model.SysApi {},
37+ model.SysBaseMenu {},
38+ model.SysBaseMenuParameter {},
39+ model.JwtBlacklist {},
40+ model.SysWorkflow {},
41+ model.SysWorkflowStepInfo {},
42+ model.SysDictionary {},
43+ model.SysDictionaryDetail {},
44+ model.ExaFileUploadAndDownload {},
45+ model.ExaFile {},
46+ model.ExaFileChunk {},
47+ model.ExaSimpleUploader {},
48+ model.ExaCustomer {},
49+ model.SysOperationRecord {},
50+ )
51+ if err != nil {
52+ global .GVA_LOG .Error ("register table failed" , zap .Any ("err" , err ))
53+ os .Exit (0 )
54+ }
55+ global .GVA_LOG .Debug ("register table success" )
56+ }
57+
2958// GormMysql 初始化Mysql数据库
3059func GormMysql () {
3160 m := global .GVA_CONFIG .Mysql
32- dsn := m .Username + ":" + m .Password + "@(" + m .Path + ")/" + m .Dbname + "?" + m .Config
61+ dsn := m .Username + ":" + m .Password + "@tcp (" + m .Path + ")/" + m .Dbname + "?" + m .Config
3362 mysqlConfig := mysql.Config {
3463 DSN : dsn , // DSN data source name
3564 DefaultStringSize : 191 , // string 类型字段的默认长度
@@ -39,12 +68,12 @@ func GormMysql() {
3968 SkipInitializeWithVersion : false , // 根据版本自动配置
4069 }
4170 gormConfig := config (m .LogMode )
42- if db , err : = gorm .Open (mysql .New (mysqlConfig ), gormConfig ); err != nil {
71+ if global . GVA_DB , err = gorm .Open (mysql .New (mysqlConfig ), gormConfig ); err != nil {
4372 global .GVA_LOG .Error ("MySQL启动异常" , zap .Any ("err" , err ))
4473 os .Exit (0 )
4574 } else {
46- global .GVA_DB = db
47- sqlDB , _ := db .DB ()
75+ GormDBTables ( global .GVA_DB )
76+ sqlDB , _ := global . GVA_DB .DB ()
4877 sqlDB .SetMaxIdleConns (m .MaxIdleConns )
4978 sqlDB .SetMaxOpenConns (m .MaxOpenConns )
5079 }
@@ -59,42 +88,42 @@ func GormPostgreSql() {
5988 PreferSimpleProtocol : p .PreferSimpleProtocol , // 禁用隐式 prepared statement
6089 }
6190 gormConfig := config (p .Logger )
62- if db , err : = gorm .Open (postgres .New (postgresConfig ), gormConfig ); err != nil {
91+ if global . GVA_DB , err = gorm .Open (postgres .New (postgresConfig ), gormConfig ); err != nil {
6392 global .GVA_LOG .Error ("PostgreSql启动异常" , zap .Any ("err" , err ))
6493 os .Exit (0 )
6594 } else {
66- global .GVA_DB = db
67- sqlDB , _ := db .DB ()
95+ GormDBTables ( global .GVA_DB )
96+ sqlDB , _ := global . GVA_DB .DB ()
6897 sqlDB .SetMaxIdleConns (p .MaxIdleConns )
6998 sqlDB .SetMaxOpenConns (p .MaxOpenConns )
7099 }
71100}
72101
73- // GormSqlite 初始化Sqlite数据库
74- func GormSqlite () {
75- s := global .GVA_CONFIG .Sqlite
76- gormConfig := config (s .Logger )
77- if db , err : = gorm .Open (sqlite .Open (s .Path ), gormConfig ); err != nil {
78- global .GVA_LOG .Error ("Sqlite启动异常" , zap .Any ("err" , err ))
79- os .Exit (0 )
80- } else {
81- global .GVA_DB = db
82- sqlDB , _ := db .DB ()
83- sqlDB .SetMaxIdleConns (s .MaxIdleConns )
84- sqlDB .SetMaxOpenConns (s .MaxOpenConns )
85- }
86- }
102+ // GormSqlite 初始化Sqlite数据库 sqlite需要gcc支持 windows用户需要自行安装gcc 如需使用打开注释即可
103+ // func GormSqlite() {
104+ // s := global.GVA_CONFIG.Sqlite
105+ // gormConfig := config(s.Logger)
106+ // if global.GVA_DB , err = gorm.Open(sqlite.Open(s.Path), gormConfig); err != nil {
107+ // global.GVA_LOG.Error("Sqlite启动异常", zap.Any("err", err))
108+ // os.Exit(0)
109+ // } else {
110+ // GormDBTables( global.GVA_DB)
111+ // sqlDB, _ := global.GVA_DB .DB()
112+ // sqlDB.SetMaxIdleConns(s.MaxIdleConns)
113+ // sqlDB.SetMaxOpenConns(s.MaxOpenConns)
114+ // }
115+ // }
87116
88117// GormSqlite 初始化Sqlite数据库
89118func GormSqlServer () {
90119 ss := global .GVA_CONFIG .Sqlserver
91120 dsn := "sqlserver://" + ss .Username + ":" + ss .Password + "@" + ss .Path + "?database=gorm"
92- if db , err : = gorm .Open (sqlserver .Open (dsn ), & gorm.Config {}); err != nil {
121+ if global . GVA_DB , err = gorm .Open (sqlserver .Open (dsn ), & gorm.Config {}); err != nil {
93122 global .GVA_LOG .Error ("SqlServer启动异常" , zap .Any ("err" , err ))
94123 os .Exit (0 )
95124 } else {
96- global .GVA_DB = db
97- sqlDB , _ := db .DB ()
125+ GormDBTables ( global .GVA_DB )
126+ sqlDB , _ := global . GVA_DB .DB ()
98127 sqlDB .SetMaxIdleConns (ss .MaxIdleConns )
99128 sqlDB .SetMaxOpenConns (ss .MaxOpenConns )
100129 }
0 commit comments