aboutsummaryrefslogtreecommitdiff
path: root/models/models.go
diff options
context:
space:
mode:
authorMichael Boke <michael@mbict.nl>2014-10-03 22:51:07 +0200
committerMichael Boke <michael@mbict.nl>2014-10-03 22:51:07 +0200
commitba1270df2d3d835b397317f133963e7b517242f1 (patch)
tree1265a142a1fd9951d30ae11648e7fbfb5806e594 /models/models.go
parentba0feadc34400cb91ff23f66096884d862651cdd (diff)
parent405ee14711ab946bd709ec28a526890c40cbc03b (diff)
Merge remote-tracking branch 'upstream/master'
Conflicts: conf/app.ini
Diffstat (limited to 'models/models.go')
-rw-r--r--models/models.go49
1 files changed, 18 insertions, 31 deletions
diff --git a/models/models.go b/models/models.go
index 4e2e08cf..570df0c1 100644
--- a/models/models.go
+++ b/models/models.go
@@ -55,11 +55,12 @@ func LoadModelsConfig() {
DbCfg.Path = setting.Cfg.MustValue("database", "PATH", "data/gogs.db")
}
-func NewTestEngine(x *xorm.Engine) (err error) {
+func getEngine() (*xorm.Engine, error) {
+ cnnstr := ""
switch DbCfg.Type {
case "mysql":
- x, err = xorm.NewEngine("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8",
- DbCfg.User, DbCfg.Pwd, DbCfg.Host, DbCfg.Name))
+ cnnstr = fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8",
+ DbCfg.User, DbCfg.Pwd, DbCfg.Host, DbCfg.Name)
case "postgres":
var host, port = "127.0.0.1", "5432"
fields := strings.Split(DbCfg.Host, ":")
@@ -69,48 +70,33 @@ func NewTestEngine(x *xorm.Engine) (err error) {
if len(fields) > 1 && len(strings.TrimSpace(fields[1])) > 0 {
port = fields[1]
}
- cnnstr := fmt.Sprintf("user=%s password=%s host=%s port=%s dbname=%s sslmode=%s",
+ cnnstr = fmt.Sprintf("user=%s password=%s host=%s port=%s dbname=%s sslmode=%s",
DbCfg.User, DbCfg.Pwd, host, port, DbCfg.Name, DbCfg.SslMode)
- x, err = xorm.NewEngine("postgres", cnnstr)
case "sqlite3":
if !EnableSQLite3 {
- return fmt.Errorf("Unknown database type: %s", DbCfg.Type)
+ return nil, fmt.Errorf("Unknown database type: %s", DbCfg.Type)
}
os.MkdirAll(path.Dir(DbCfg.Path), os.ModePerm)
- x, err = xorm.NewEngine("sqlite3", DbCfg.Path)
+ cnnstr = "file:" + DbCfg.Path + "?cache=shared&mode=rwc"
default:
- return fmt.Errorf("Unknown database type: %s", DbCfg.Type)
+ return nil, fmt.Errorf("Unknown database type: %s", DbCfg.Type)
}
+ return xorm.NewEngine(DbCfg.Type, cnnstr)
+}
+
+func NewTestEngine(x *xorm.Engine) (err error) {
+ x, err = getEngine()
if err != nil {
- return fmt.Errorf("models.init(fail to conntect database): %v", err)
+ return fmt.Errorf("models.init(fail to connect to database): %v", err)
}
+
return x.Sync(tables...)
}
func SetEngine() (err error) {
- switch DbCfg.Type {
- case "mysql":
- x, err = xorm.NewEngine("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8",
- DbCfg.User, DbCfg.Pwd, DbCfg.Host, DbCfg.Name))
- case "postgres":
- var host, port = "127.0.0.1", "5432"
- fields := strings.Split(DbCfg.Host, ":")
- if len(fields) > 0 && len(strings.TrimSpace(fields[0])) > 0 {
- host = fields[0]
- }
- if len(fields) > 1 && len(strings.TrimSpace(fields[1])) > 0 {
- port = fields[1]
- }
- x, err = xorm.NewEngine("postgres", fmt.Sprintf("user=%s password=%s host=%s port=%s dbname=%s sslmode=%s",
- DbCfg.User, DbCfg.Pwd, host, port, DbCfg.Name, DbCfg.SslMode))
- case "sqlite3":
- os.MkdirAll(path.Dir(DbCfg.Path), os.ModePerm)
- x, err = xorm.NewEngine("sqlite3", DbCfg.Path)
- default:
- return fmt.Errorf("Unknown database type: %s", DbCfg.Type)
- }
+ x, err = getEngine()
if err != nil {
- return fmt.Errorf("models.init(fail to conntect database): %v", err)
+ return fmt.Errorf("models.init(fail to connect to database): %v", err)
}
// WARNNING: for serv command, MUST remove the output to os.stdout,
@@ -125,6 +111,7 @@ func SetEngine() (err error) {
x.Logger = xorm.NewSimpleLogger(f)
x.ShowSQL = true
+ x.ShowInfo = true
x.ShowDebug = true
x.ShowErr = true
x.ShowWarn = true