-
Notifications
You must be signed in to change notification settings - Fork 1
/
factory.go
48 lines (44 loc) · 1.1 KB
/
factory.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
37
38
39
40
41
42
43
44
45
46
47
48
package database
import "fmt"
const (
MySQL = "mysql"
PostgreSQL = "postgres"
SQLServer = "sqlserver"
SQlite = "sqlite3"
Oracle = "oracle"
)
var (
mysqlFactory func(host, user, pwd, dbName string) Query
postgreFactory func(host, user, pwd, dbName, schema string) Query
sqlServerFactory func(host, user, pwd, dbName string) Query
sqliteFactory func(file string) Query
oracleFactory func(host, user, pwd, dbName string) Query
)
func NewQuery(driver, host, user, pwd, db, schema string) (query Query, err error) {
switch driver {
case MySQL:
if mysqlFactory != nil {
query = mysqlFactory(host, user, pwd, db)
}
case PostgreSQL:
if postgreFactory != nil {
query = postgreFactory(host, user, pwd, db, schema)
}
case SQLServer:
if sqlServerFactory != nil {
query = sqlServerFactory(host, user, pwd, db)
}
case SQlite:
if sqliteFactory != nil {
query = sqliteFactory(host)
}
case Oracle:
if oracleFactory != nil {
query = oracleFactory(host, user, pwd, db)
}
}
if query == nil {
err = fmt.Errorf("不支持的数据库类型 %s", driver)
}
return
}