d5b5c18c by slene Committed by asta.xie

orm add GetDB api #433

1 parent cacdb322
...@@ -168,7 +168,7 @@ func addAliasWthDB(aliasName, driverName string, db *sql.DB) (*alias, error) { ...@@ -168,7 +168,7 @@ func addAliasWthDB(aliasName, driverName string, db *sql.DB) (*alias, error) {
168 } 168 }
169 169
170 if dataBaseCache.add(aliasName, al) == false { 170 if dataBaseCache.add(aliasName, al) == false {
171 return nil, fmt.Errorf("db name `%s` already registered, cannot reuse", aliasName) 171 return nil, fmt.Errorf("DataBase alias name `%s` already registered, cannot reuse", aliasName)
172 } 172 }
173 173
174 return al, nil 174 return al, nil
...@@ -239,7 +239,7 @@ func SetDataBaseTZ(aliasName string, tz *time.Location) error { ...@@ -239,7 +239,7 @@ func SetDataBaseTZ(aliasName string, tz *time.Location) error {
239 if al, ok := dataBaseCache.get(aliasName); ok { 239 if al, ok := dataBaseCache.get(aliasName); ok {
240 al.TZ = tz 240 al.TZ = tz
241 } else { 241 } else {
242 return fmt.Errorf("DataBase name `%s` not registered\n", aliasName) 242 return fmt.Errorf("DataBase alias name `%s` not registered\n", aliasName)
243 } 243 }
244 return nil 244 return nil
245 } 245 }
...@@ -260,3 +260,19 @@ func SetMaxOpenConns(aliasName string, maxOpenConns int) { ...@@ -260,3 +260,19 @@ func SetMaxOpenConns(aliasName string, maxOpenConns int) {
260 fun.Call([]reflect.Value{reflect.ValueOf(maxOpenConns)}) 260 fun.Call([]reflect.Value{reflect.ValueOf(maxOpenConns)})
261 } 261 }
262 } 262 }
263
264 // Get *sql.DB from registered database by db alias name.
265 // Use "default" as alias name if you not set.
266 func GetDB(aliasNames ...string) (*sql.DB, error) {
267 var name string
268 if len(aliasNames) > 0 {
269 name = aliasNames[0]
270 } else {
271 name = "default"
272 }
273 if al, ok := dataBaseCache.get(name); ok {
274 return al.DB, nil
275 } else {
276 return nil, fmt.Errorf("DataBase of alias name `%s` not found\n", name)
277 }
278 }
......
...@@ -139,6 +139,15 @@ func throwFailNow(t *testing.T, err error, args ...interface{}) { ...@@ -139,6 +139,15 @@ func throwFailNow(t *testing.T, err error, args ...interface{}) {
139 } 139 }
140 } 140 }
141 141
142 func TestGetDB(t *testing.T) {
143 if db, err := GetDB(); err != nil {
144 throwFailNow(t, err)
145 } else {
146 err = db.Ping()
147 throwFailNow(t, err)
148 }
149 }
150
142 func TestSyncDb(t *testing.T) { 151 func TestSyncDb(t *testing.T) {
143 RegisterModel(new(Data), new(DataNull)) 152 RegisterModel(new(Data), new(DataNull))
144 RegisterModel(new(User)) 153 RegisterModel(new(User))
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!