Skip to content

Commit 91240b9

Browse files
author
syklev
committed
allow passing connpool for initialize, same as mysql driver
1 parent d62480c commit 91240b9

File tree

1 file changed

+26
-3
lines changed

1 file changed

+26
-3
lines changed

sqlserver.go

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,46 @@ import (
1616
"gorm.io/gorm/schema"
1717
)
1818

19+
type Config struct {
20+
DriverName string
21+
DSN string
22+
Conn gorm.ConnPool
23+
}
24+
1925
type Dialector struct {
20-
DSN string
26+
*Config
2127
}
2228

2329
func (dialector Dialector) Name() string {
2430
return "sqlserver"
2531
}
2632

2733
func Open(dsn string) gorm.Dialector {
28-
return &Dialector{DSN: dsn}
34+
return &Dialector{Config: &Config{DSN: dsn}}
35+
}
36+
37+
func New(config Config) gorm.Dialector {
38+
return &Dialector{Config: &config}
2939
}
3040

3141
func (dialector Dialector) Initialize(db *gorm.DB) (err error) {
42+
3243
// register callbacks
3344
callbacks.RegisterDefaultCallbacks(db, &callbacks.Config{})
3445
db.Callback().Create().Replace("gorm:create", Create)
35-
db.ConnPool, err = sql.Open("sqlserver", dialector.DSN)
46+
47+
if dialector.DriverName == "" {
48+
dialector.DriverName = "sqlserver"
49+
}
50+
51+
if dialector.Conn != nil {
52+
db.ConnPool = dialector.Conn
53+
} else {
54+
db.ConnPool, err = sql.Open(dialector.DriverName, dialector.DSN)
55+
if err != nil {
56+
return err
57+
}
58+
}
3659

3760
for k, v := range dialector.ClauseBuilders() {
3861
db.ClauseBuilders[k] = v

0 commit comments

Comments
 (0)