49
49
tables []interface {}
50
50
HasEngine bool
51
51
52
- DbCfg struct {
53
- Type , Host , Name , User , Passwd , Path , SSLMode string
54
- }
55
-
56
52
EnableSQLite3 bool
57
53
)
58
54
@@ -74,29 +70,6 @@ func init() {
74
70
}
75
71
}
76
72
77
- func LoadConfigs () {
78
- sec := conf .File .Section ("database" )
79
- DbCfg .Type = sec .Key ("DB_TYPE" ).String ()
80
- switch DbCfg .Type {
81
- case "sqlite3" :
82
- conf .UseSQLite3 = true
83
- case "mysql" :
84
- conf .UseMySQL = true
85
- case "postgres" :
86
- conf .UsePostgreSQL = true
87
- case "mssql" :
88
- conf .UseMSSQL = true
89
- }
90
- DbCfg .Host = sec .Key ("HOST" ).String ()
91
- DbCfg .Name = sec .Key ("NAME" ).String ()
92
- DbCfg .User = sec .Key ("USER" ).String ()
93
- if len (DbCfg .Passwd ) == 0 {
94
- DbCfg .Passwd = sec .Key ("PASSWD" ).String ()
95
- }
96
- DbCfg .SSLMode = sec .Key ("SSL_MODE" ).String ()
97
- DbCfg .Path = sec .Key ("PATH" ).MustString ("data/gogs.db" )
98
- }
99
-
100
73
// parsePostgreSQLHostPort parses given input in various forms defined in
101
74
// https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING
102
75
// and returns proper host and port number.
@@ -127,46 +100,55 @@ func parseMSSQLHostPort(info string) (string, string) {
127
100
}
128
101
129
102
func getEngine () (* xorm.Engine , error ) {
130
- connStr := ""
131
- var Param string = "?"
132
- if strings .Contains (DbCfg .Name , Param ) {
103
+ Param := "?"
104
+ if strings .Contains (conf .Database .Name , Param ) {
133
105
Param = "&"
134
106
}
135
- switch DbCfg .Type {
107
+
108
+ connStr := ""
109
+ switch conf .Database .Type {
136
110
case "mysql" :
137
- if DbCfg .Host [0 ] == '/' { // looks like a unix socket
111
+ conf .UseMySQL = true
112
+ if conf .Database .Host [0 ] == '/' { // looks like a unix socket
138
113
connStr = fmt .Sprintf ("%s:%s@unix(%s)/%s%scharset=utf8mb4&parseTime=true" ,
139
- DbCfg . User , DbCfg . Passwd , DbCfg . Host , DbCfg .Name , Param )
114
+ conf . Database . User , conf . Database . Password , conf . Database . Host , conf . Database .Name , Param )
140
115
} else {
141
116
connStr = fmt .Sprintf ("%s:%s@tcp(%s)/%s%scharset=utf8mb4&parseTime=true" ,
142
- DbCfg . User , DbCfg . Passwd , DbCfg . Host , DbCfg .Name , Param )
117
+ conf . Database . User , conf . Database . Password , conf . Database . Host , conf . Database .Name , Param )
143
118
}
144
119
var engineParams = map [string ]string {"rowFormat" : "DYNAMIC" }
145
- return xorm .NewEngineWithParams (DbCfg .Type , connStr , engineParams )
120
+ return xorm .NewEngineWithParams (conf .Database .Type , connStr , engineParams )
121
+
146
122
case "postgres" :
147
- host , port := parsePostgreSQLHostPort (DbCfg .Host )
123
+ conf .UsePostgreSQL = true
124
+ host , port := parsePostgreSQLHostPort (conf .Database .Host )
148
125
if host [0 ] == '/' { // looks like a unix socket
149
126
connStr = fmt .Sprintf ("postgres://%s:%s@:%s/%s%ssslmode=%s&host=%s" ,
150
- url .QueryEscape (DbCfg . User ), url .QueryEscape (DbCfg . Passwd ), port , DbCfg . Name , Param , DbCfg .SSLMode , host )
127
+ url .QueryEscape (conf . Database . User ), url .QueryEscape (conf . Database . Password ), port , conf . Database . Name , Param , conf . Database .SSLMode , host )
151
128
} else {
152
129
connStr = fmt .Sprintf ("postgres://%s:%s@%s:%s/%s%ssslmode=%s" ,
153
- url .QueryEscape (DbCfg . User ), url .QueryEscape (DbCfg . Passwd ), host , port , DbCfg . Name , Param , DbCfg .SSLMode )
130
+ url .QueryEscape (conf . Database . User ), url .QueryEscape (conf . Database . Password ), host , port , conf . Database . Name , Param , conf . Database .SSLMode )
154
131
}
132
+
155
133
case "mssql" :
156
- host , port := parseMSSQLHostPort (DbCfg .Host )
157
- connStr = fmt .Sprintf ("server=%s; port=%s; database=%s; user id=%s; password=%s;" , host , port , DbCfg .Name , DbCfg .User , DbCfg .Passwd )
134
+ conf .UseMSSQL = true
135
+ host , port := parseMSSQLHostPort (conf .Database .Host )
136
+ connStr = fmt .Sprintf ("server=%s; port=%s; database=%s; user id=%s; password=%s;" , host , port , conf .Database .Name , conf .Database .User , conf .Database .Passwd )
137
+
158
138
case "sqlite3" :
159
139
if ! EnableSQLite3 {
160
140
return nil , errors .New ("this binary version does not build support for SQLite3" )
161
141
}
162
- if err := os .MkdirAll (path .Dir (DbCfg .Path ), os .ModePerm ); err != nil {
142
+ if err := os .MkdirAll (path .Dir (conf . Database .Path ), os .ModePerm ); err != nil {
163
143
return nil , fmt .Errorf ("create directories: %v" , err )
164
144
}
165
- connStr = "file:" + DbCfg .Path + "?cache=shared&mode=rwc"
145
+ conf .UseSQLite3 = true
146
+ connStr = "file:" + conf .Database .Path + "?cache=shared&mode=rwc"
147
+
166
148
default :
167
- return nil , fmt .Errorf ("unknown database type: %s" , DbCfg .Type )
149
+ return nil , fmt .Errorf ("unknown database type: %s" , conf . Database .Type )
168
150
}
169
- return xorm .NewEngine (DbCfg .Type , connStr )
151
+ return xorm .NewEngine (conf . Database .Type , connStr )
170
152
}
171
153
172
154
func NewTestEngine (x * xorm.Engine ) (err error ) {
0 commit comments