mirror of https://github.com/ouqiang/gocron
系统安装, 写入数据库配置前, 测试连接是否成功
parent
beefe59858
commit
6fc6a0d65d
|
@ -5,7 +5,6 @@ import (
|
|||
_ "github.com/go-sql-driver/mysql"
|
||||
"github.com/go-xorm/core"
|
||||
"github.com/go-xorm/xorm"
|
||||
"github.com/ouqiang/cron-scheduler/modules/setting"
|
||||
"gopkg.in/macaron.v1"
|
||||
"strings"
|
||||
"time"
|
||||
|
@ -31,8 +30,7 @@ const (
|
|||
)
|
||||
|
||||
// 创建Db
|
||||
func CreateDb(configFile string) *xorm.Engine {
|
||||
config := getDbConfig(configFile)
|
||||
func CreateDb(config map[string]string) *xorm.Engine {
|
||||
dsn := getDbEngineDSN(config["engine"], config)
|
||||
engine, err := xorm.NewEngine(config["engine"], dsn)
|
||||
if err != nil {
|
||||
|
@ -54,6 +52,13 @@ func CreateDb(configFile string) *xorm.Engine {
|
|||
return engine
|
||||
}
|
||||
|
||||
// 创建临时数据库连接
|
||||
func CreateTmpDb(config map[string]string) (*xorm.Engine, error) {
|
||||
dsn := getDbEngineDSN(config["engine"], config)
|
||||
|
||||
return xorm.NewEngine(config["engine"], dsn)
|
||||
}
|
||||
|
||||
// 获取数据库引擎DSN mysql,sqlite
|
||||
func getDbEngineDSN(engine string, config map[string]string) string {
|
||||
engine = strings.ToLower(engine)
|
||||
|
@ -72,29 +77,6 @@ func getDbEngineDSN(engine string, config map[string]string) string {
|
|||
return dsn
|
||||
}
|
||||
|
||||
// 获取数据库配置
|
||||
func getDbConfig(configFile string) map[string]string {
|
||||
config, err := setting.Read(configFile)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
section := config.Section("db")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
var db map[string]string = make(map[string]string)
|
||||
db["user"] = section.Key("user").String()
|
||||
db["password"] = section.Key("password").String()
|
||||
db["host"] = section.Key("host").String()
|
||||
db["port"] = section.Key("port").String()
|
||||
db["database"] = section.Key("database").String()
|
||||
db["charset"] = section.Key("charset").String()
|
||||
db["prefix"] = section.Key("prefix").String()
|
||||
db["engine"] = section.Key("engine").String()
|
||||
|
||||
return db
|
||||
}
|
||||
|
||||
// 定时ping, 防止因数据库超时设置被断开
|
||||
func keepDbAlived(engine *xorm.Engine) {
|
||||
t := time.Tick(180 * time.Second)
|
||||
|
|
|
@ -9,6 +9,7 @@ import (
|
|||
"github.com/ouqiang/cron-scheduler/modules/crontask"
|
||||
"github.com/ouqiang/cron-scheduler/modules/utils"
|
||||
"github.com/ouqiang/cron-scheduler/service"
|
||||
"github.com/ouqiang/cron-scheduler/modules/setting"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -90,8 +91,9 @@ func InitResource() {
|
|||
}
|
||||
|
||||
// 初始化DB
|
||||
func InitDb() {
|
||||
models.Db = models.CreateDb(AppConfig)
|
||||
func InitDb() {
|
||||
dbConfig := getDbConfig(AppConfig)
|
||||
models.Db = models.CreateDb(dbConfig)
|
||||
}
|
||||
|
||||
// 检测目录是否存在
|
||||
|
@ -106,3 +108,26 @@ func checkDirExists(path ...string) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 获取数据库配置
|
||||
func getDbConfig(configFile string) map[string]string {
|
||||
config, err := setting.Read(configFile)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
section := config.Section("db")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
var db map[string]string = make(map[string]string)
|
||||
db["user"] = section.Key("user").String()
|
||||
db["password"] = section.Key("password").String()
|
||||
db["host"] = section.Key("host").String()
|
||||
db["port"] = section.Key("port").String()
|
||||
db["database"] = section.Key("database").String()
|
||||
db["charset"] = section.Key("charset").String()
|
||||
db["prefix"] = section.Key("prefix").String()
|
||||
db["engine"] = section.Key("engine").String()
|
||||
|
||||
return db
|
||||
}
|
|
@ -38,16 +38,20 @@ func Show(ctx *macaron.Context) {
|
|||
func Install(ctx *macaron.Context, form InstallForm) string {
|
||||
json := utils.Json{}
|
||||
if app.Installed {
|
||||
return json.Failure(utils.ResponseFailure, "系统已安装成功")
|
||||
return json.Failure(utils.ResponseFailure, "系统已安装!")
|
||||
}
|
||||
err := testDbConnection(form)
|
||||
if err != nil {
|
||||
utils.RecordLog(err)
|
||||
return json.Failure(utils.ResponseFailure, "数据库连接失败")
|
||||
}
|
||||
// 写入数据库配置
|
||||
err := writeConfig(form)
|
||||
err = writeConfig(form)
|
||||
if err != nil {
|
||||
utils.RecordLog(err)
|
||||
return json.Failure(utils.ResponseFailure, "数据库配置写入文件失败")
|
||||
}
|
||||
|
||||
// 初始化Db
|
||||
app.InitDb()
|
||||
// 创建数据库表
|
||||
migration := new(models.Migration)
|
||||
|
@ -107,3 +111,21 @@ func createAdminUser(form InstallForm) error {
|
|||
|
||||
return err
|
||||
}
|
||||
|
||||
// 测试数据库连接
|
||||
func testDbConnection(form InstallForm) error {
|
||||
var dbConfig map[string]string = make(map[string]string)
|
||||
dbConfig["engine"] = form.DbType
|
||||
dbConfig["host"] = form.DbHost
|
||||
dbConfig["port"] = strconv.Itoa(form.DbPort)
|
||||
dbConfig["user"] = form.DbUsername
|
||||
dbConfig["password"] = form.DbPassword
|
||||
dbConfig["charset"] = "utf8"
|
||||
db, err := models.CreateTmpDb(dbConfig)
|
||||
if err == nil {
|
||||
db.Close()
|
||||
}
|
||||
|
||||
return err
|
||||
|
||||
}
|
Loading…
Reference in New Issue