|
@@ -16,30 +16,39 @@ import (
|
|
|
"github.com/gogits/gogs/modules/base"
|
|
|
)
|
|
|
|
|
|
-var orm *xorm.Engine
|
|
|
+var (
|
|
|
+ orm *xorm.Engine
|
|
|
+
|
|
|
+ dbCfg struct {
|
|
|
+ Type, Host, Name, User, Pwd, Path, SslMode string
|
|
|
+ }
|
|
|
+)
|
|
|
+
|
|
|
+func LoadModelsConfig() {
|
|
|
+ dbCfg.Type = base.Cfg.MustValue("database", "DB_TYPE")
|
|
|
+ dbCfg.Host = base.Cfg.MustValue("database", "HOST")
|
|
|
+ dbCfg.Name = base.Cfg.MustValue("database", "NAME")
|
|
|
+ dbCfg.User = base.Cfg.MustValue("database", "USER")
|
|
|
+ dbCfg.Pwd = base.Cfg.MustValue("database", "PASSWD")
|
|
|
+ dbCfg.Path = base.Cfg.MustValue("database", "PATH", "data/gogs.db")
|
|
|
+ dbCfg.SslMode = base.Cfg.MustValue("database", "SSL_MODE")
|
|
|
+}
|
|
|
|
|
|
func setEngine() {
|
|
|
- dbType := base.Cfg.MustValue("database", "DB_TYPE")
|
|
|
- dbHost := base.Cfg.MustValue("database", "HOST")
|
|
|
- dbName := base.Cfg.MustValue("database", "NAME")
|
|
|
- dbUser := base.Cfg.MustValue("database", "USER")
|
|
|
- dbPwd := base.Cfg.MustValue("database", "PASSWD")
|
|
|
- dbPath := base.Cfg.MustValue("database", "PATH", "data/gogs.db")
|
|
|
- sslMode := base.Cfg.MustValue("database", "SSL_MODE")
|
|
|
|
|
|
var err error
|
|
|
- switch dbType {
|
|
|
+ switch dbCfg.Type {
|
|
|
case "mysql":
|
|
|
orm, err = xorm.NewEngine("mysql", fmt.Sprintf("%s:%s@%s/%s?charset=utf8",
|
|
|
- dbUser, dbPwd, dbHost, dbName))
|
|
|
+ dbCfg.User, dbCfg.Pwd, dbCfg.Host, dbCfg.Name))
|
|
|
case "postgres":
|
|
|
orm, err = xorm.NewEngine("postgres", fmt.Sprintf("user=%s password=%s dbname=%s sslmode=%s",
|
|
|
- dbUser, dbPwd, dbName, sslMode))
|
|
|
+ dbCfg.User, dbCfg.Pwd, dbCfg.Name, dbCfg.SslMode))
|
|
|
case "sqlite3":
|
|
|
- os.MkdirAll(path.Dir(dbPath), os.ModePerm)
|
|
|
- orm, err = xorm.NewEngine("sqlite3", dbPath)
|
|
|
+ os.MkdirAll(path.Dir(dbCfg.Path), os.ModePerm)
|
|
|
+ orm, err = xorm.NewEngine("sqlite3", dbCfg.Path)
|
|
|
default:
|
|
|
- fmt.Printf("Unknown database type: %s\n", dbType)
|
|
|
+ fmt.Printf("Unknown database type: %s\n", dbCfg.Type)
|
|
|
os.Exit(2)
|
|
|
}
|
|
|
if err != nil {
|
|
@@ -61,7 +70,7 @@ func setEngine() {
|
|
|
orm.ShowSQL = true
|
|
|
}
|
|
|
|
|
|
-func init() {
|
|
|
+func NewEngine() {
|
|
|
setEngine()
|
|
|
if err := orm.Sync(new(User), new(PublicKey), new(Repository), new(Watch),
|
|
|
new(Action), new(Access)); err != nil {
|