File tree Expand file tree Collapse file tree 1 file changed +26
-3
lines changed Expand file tree Collapse file tree 1 file changed +26
-3
lines changed Original file line number Diff line number Diff 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+
1925type Dialector struct {
20- DSN string
26+ * Config
2127}
2228
2329func (dialector Dialector ) Name () string {
2430 return "sqlserver"
2531}
2632
2733func 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
3141func (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
You can’t perform that action at this time.
0 commit comments