11package service
22
33import (
4+ "database/sql"
45 "fmt"
5- "gin-vue-admin/cmd/source"
66 "gin-vue-admin/global"
7+ "gin-vue-admin/model"
78 "gin-vue-admin/model/request"
9+ "gin-vue-admin/source"
10+ "github.com/spf13/viper"
811)
912
13+ //@author: [songzhibin97](https://github.com/songzhibin97)
14+ //@function: writeConfig
15+ //@description: 回写配置
16+ //@param:
17+ //@return: error
18+
19+ func writeConfig (viper * viper.Viper , conf map [string ]interface {}) error {
20+ for k , v := range conf {
21+ viper .Set (k , v )
22+ }
23+ return viper .WriteConfig ()
24+ }
25+
26+ //@author: [songzhibin97](https://github.com/songzhibin97)
27+ //@function: createTable
28+ //@description: 创建数据库(mysql)
29+ //@param: dsn string, driver string, createSql
30+ //@return: error
31+
32+ func createTable (dsn string , driver string , createSql string ) error {
33+ db , err := sql .Open (driver , dsn )
34+ if err != nil {
35+ return err
36+ }
37+ defer db .Close ()
38+ if err = db .Ping (); err != nil {
39+ return err
40+ }
41+ _ , err = db .Exec (createSql )
42+ return err
43+ }
44+
45+ func initDB (InitDBFunctions ... model.InitDBFunc ) (err error ) {
46+ for _ , v := range InitDBFunctions {
47+ err = v .Init ()
48+ if err != nil {
49+ return err
50+ }
51+ }
52+ return nil
53+ }
54+
1055//@author: [songzhibin97](https://github.com/songzhibin97)
1156//@function: InitDB
1257//@description: 创建数据库并初始化
@@ -23,7 +68,7 @@ func InitDB(conf request.InitDB) error {
2368 dsn := fmt .Sprintf ("%s:%s@tcp(%s:%s)/" , conf .UserName , conf .Password , conf .Host , conf .Port )
2469 fmt .Println (dsn )
2570 createSql := fmt .Sprintf ("CREATE DATABASE IF NOT EXISTS %s DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;" , conf .DBName )
26- if err := source . CreateTable (dsn , "mysql" , createSql ); err != nil {
71+ if err := createTable (dsn , "mysql" , createSql ); err != nil {
2772 return err
2873 }
2974 setting := map [string ]interface {}{
@@ -32,9 +77,23 @@ func InitDB(conf request.InitDB) error {
3277 "mysql.username" : conf .UserName ,
3378 "mysql.password" : conf .Password ,
3479 }
35- if err := source .WriteConfig (global .GVA_VP , setting ); err != nil {
80+ if err := writeConfig (global .GVA_VP , setting ); err != nil {
81+ return err
82+ }
83+ err := initDB (source .Admin ,
84+ source .Api ,
85+ source .AuthorityMenu ,
86+ source .Authority ,
87+ source .AuthoritiesMenus ,
88+ source .Casbin ,
89+ source .DataAuthorities ,
90+ source .Dictionary ,
91+ source .DictionaryDetail ,
92+ source .File ,
93+ source .BaseMenu ,
94+ source .Workflow )
95+ if err != nil {
3696 return err
3797 }
38- source .InitDB ()
3998 return nil
4099}
0 commit comments