-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathdialect_registry.go
executable file
·38 lines (33 loc) · 1.39 KB
/
dialect_registry.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
package dsc
var dialect = NewDefaultDialect()
var datastoreDialectableRegistry = make(map[string]DatastoreDialect)
//RegisterDatastoreDialect register DatastoreDialect for a driver.
func RegisterDatastoreDialect(driver string, dialectable DatastoreDialect) {
datastoreDialectableRegistry[driver] = dialectable
}
//GetDatastoreDialect returns DatastoreDialect for passed in driver.
func GetDatastoreDialect(driver string) DatastoreDialect {
if result, ok := datastoreDialectableRegistry[driver]; ok {
return result
}
if isSQLDatabase(driver) {
RegisterDatastoreDialect(driver, newAnsiSQLDialect())
return datastoreDialectableRegistry[driver]
}
panic("failed to lookup datastore dialect: " + driver)
}
func init() {
RegisterDatastoreDialect("mysql", newMySQLDialect())
RegisterDatastoreDialect("pg", newPgDialect())
RegisterDatastoreDialect("postgres", newPgDialect())
RegisterDatastoreDialect("ora", newOraDialect())
RegisterDatastoreDialect("oci8", newOraDialect())
RegisterDatastoreDialect("sqlserver", newMsSQLDialect())
RegisterDatastoreDialect("sqlite3", newSQLLiteDialect())
RegisterDatastoreDialect("cql", newCasandraDialect())
RegisterDatastoreDialect("vertica", newVerticaDialect())
RegisterDatastoreDialect("odbc", newOdbcDialect())
RegisterDatastoreDialect("ndjson", &fileDialect{})
RegisterDatastoreDialect("tsv", &fileDialect{})
RegisterDatastoreDialect("csv", &fileDialect{})
}