diff --git a/internal/models/model.go b/internal/models/model.go index 57e1008..7f0b36c 100644 --- a/internal/models/model.go +++ b/internal/models/model.go @@ -6,6 +6,7 @@ import ( "time" _ "github.com/go-sql-driver/mysql" + _ "github.com/lib/pq" "github.com/go-xorm/core" "github.com/go-xorm/xorm" "github.com/ouqiang/gocron/internal/modules/app" @@ -97,7 +98,7 @@ func CreateTmpDb(setting *setting.Setting) (*xorm.Engine, error) { return xorm.NewEngine(setting.Db.Engine, dsn) } -// 获取数据库引擎DSN mysql,sqlite +// 获取数据库引擎DSN mysql,sqlite,postgres func getDbEngineDSN(setting *setting.Setting) string { engine := strings.ToLower(setting.Db.Engine) dsn := "" @@ -110,6 +111,13 @@ func getDbEngineDSN(setting *setting.Setting) string { setting.Db.Port, setting.Db.Database, setting.Db.Charset) + case "postgres": + dsn = fmt.Sprintf("user=%s password=%s host=%s port=%d dbname=%s sslmode=disable", + setting.Db.User, + setting.Db.Password, + setting.Db.Host, + setting.Db.Port, + setting.Db.Database) } return dsn diff --git a/internal/routers/install/install.go b/internal/routers/install/install.go index 1e4a56f..6ef85c0 100644 --- a/internal/routers/install/install.go +++ b/internal/routers/install/install.go @@ -16,7 +16,7 @@ import ( // 系统安装 type InstallForm struct { - DbType string `binding:"In(mysql)"` + DbType string `binding:"In(mysql,postgres)"` DbHost string `binding:"Required;MaxSize(50)"` DbPort int `binding:"Required;Range(1,65535)"` DbUsername string `binding:"Required;MaxSize(50)"` @@ -141,6 +141,7 @@ func testDbConnection(form InstallForm) error { s.Db.Port = form.DbPort s.Db.User = form.DbUsername s.Db.Password = form.DbPassword + s.Db.Database = form.DbName s.Db.Charset = "utf8" db, err := models.CreateTmpDb(&s) if err != nil {