forked from volatiletech/sqlboiler
-
Notifications
You must be signed in to change notification settings - Fork 0
/
registration.go
36 lines (28 loc) · 1.01 KB
/
registration.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package drivers
import "fmt"
// registeredDrivers are all the drivers which are currently registered
var registeredDrivers = map[string]Interface{}
// RegisterBinary is used to register drivers that are binaries.
// Panics if a driver with the same name has been previously loaded.
func RegisterBinary(name, path string) {
register(name, binaryDriver(path))
}
// RegisterFromInit is typically called by a side-effect loaded driver
// during init time.
// Panics if a driver with the same name has been previously loaded.
func RegisterFromInit(name string, driver Interface) {
register(name, driver)
}
// GetDriver retrieves the driver by name
func GetDriver(name string) Interface {
if d, ok := registeredDrivers[name]; ok {
return d
}
panic(fmt.Sprintf("drivers: sqlboiler driver %s has not been registered", name))
}
func register(name string, driver Interface) {
if _, ok := registeredDrivers[name]; ok {
panic(fmt.Sprintf("drivers: sqlboiler driver %s already loaded", name))
}
registeredDrivers[name] = driver
}