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-sql-driver/mysql"
|
||||||
"github.com/go-xorm/core"
|
"github.com/go-xorm/core"
|
||||||
"github.com/go-xorm/xorm"
|
"github.com/go-xorm/xorm"
|
||||||
"github.com/ouqiang/cron-scheduler/modules/setting"
|
|
||||||
"gopkg.in/macaron.v1"
|
"gopkg.in/macaron.v1"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
@ -31,8 +30,7 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
// 创建Db
|
// 创建Db
|
||||||
func CreateDb(configFile string) *xorm.Engine {
|
func CreateDb(config map[string]string) *xorm.Engine {
|
||||||
config := getDbConfig(configFile)
|
|
||||||
dsn := getDbEngineDSN(config["engine"], config)
|
dsn := getDbEngineDSN(config["engine"], config)
|
||||||
engine, err := xorm.NewEngine(config["engine"], dsn)
|
engine, err := xorm.NewEngine(config["engine"], dsn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -54,6 +52,13 @@ func CreateDb(configFile string) *xorm.Engine {
|
||||||
return 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
|
// 获取数据库引擎DSN mysql,sqlite
|
||||||
func getDbEngineDSN(engine string, config map[string]string) string {
|
func getDbEngineDSN(engine string, config map[string]string) string {
|
||||||
engine = strings.ToLower(engine)
|
engine = strings.ToLower(engine)
|
||||||
|
@ -72,29 +77,6 @@ func getDbEngineDSN(engine string, config map[string]string) string {
|
||||||
return dsn
|
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, 防止因数据库超时设置被断开
|
// 定时ping, 防止因数据库超时设置被断开
|
||||||
func keepDbAlived(engine *xorm.Engine) {
|
func keepDbAlived(engine *xorm.Engine) {
|
||||||
t := time.Tick(180 * time.Second)
|
t := time.Tick(180 * time.Second)
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
"github.com/ouqiang/cron-scheduler/modules/crontask"
|
"github.com/ouqiang/cron-scheduler/modules/crontask"
|
||||||
"github.com/ouqiang/cron-scheduler/modules/utils"
|
"github.com/ouqiang/cron-scheduler/modules/utils"
|
||||||
"github.com/ouqiang/cron-scheduler/service"
|
"github.com/ouqiang/cron-scheduler/service"
|
||||||
|
"github.com/ouqiang/cron-scheduler/modules/setting"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -90,8 +91,9 @@ func InitResource() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 初始化DB
|
// 初始化DB
|
||||||
func InitDb() {
|
func InitDb() {
|
||||||
models.Db = models.CreateDb(AppConfig)
|
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 {
|
func Install(ctx *macaron.Context, form InstallForm) string {
|
||||||
json := utils.Json{}
|
json := utils.Json{}
|
||||||
if app.Installed {
|
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 {
|
if err != nil {
|
||||||
utils.RecordLog(err)
|
utils.RecordLog(err)
|
||||||
return json.Failure(utils.ResponseFailure, "数据库配置写入文件失败")
|
return json.Failure(utils.ResponseFailure, "数据库配置写入文件失败")
|
||||||
}
|
}
|
||||||
|
|
||||||
// 初始化Db
|
|
||||||
app.InitDb()
|
app.InitDb()
|
||||||
// 创建数据库表
|
// 创建数据库表
|
||||||
migration := new(models.Migration)
|
migration := new(models.Migration)
|
||||||
|
@ -107,3 +111,21 @@ func createAdminUser(form InstallForm) error {
|
||||||
|
|
||||||
return err
|
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