44 "context"
55 "errors"
66 "fmt"
7+ "gorm.io/driver/mysql"
8+ "gorm.io/driver/postgres"
9+ "io/ioutil"
710 "os"
811 "path/filepath"
912 "runtime"
@@ -16,9 +19,9 @@ import (
1619 "code.cloudfoundry.org/routing-api/config"
1720 "code.cloudfoundry.org/routing-api/models"
1821
19- "github.com/jinzhu/gorm "
20- _ "github.com/jinzhu/gorm/dialects/mysql "
21- _ "github.com/jinzhu/ gorm/dialects/postgres "
22+ _ "gorm.io/driver/mysql "
23+ _ "gorm.io/driver/postgres "
24+ "gorm.io/ gorm"
2225)
2326
2427//go:generate counterfeiter -o fakes/fake_db.go . DB
@@ -104,24 +107,36 @@ func NewSqlDB(cfg *config.SqlDB) (*SqlDB, error) {
104107 return nil , errors .New ("SQL configuration cannot be nil" )
105108 }
106109
107- if cfg .Type != "mysql" && cfg .Type != "postgres" {
108- return & SqlDB {}, fmt .Errorf ("Unknown type %s" , cfg .Type )
110+ connStr , err := ConnectionString (cfg )
111+ if err != nil {
112+ return nil , err
109113 }
110114
111- connStr , err := ConnectionString (cfg )
115+ var dialect gorm.Dialector
116+ switch cfg .Type {
117+ case "postgres" :
118+ dialect = postgres .Open (connStr )
119+ case "mysql" :
120+ dialect = mysql .Open (connStr )
121+ default :
122+ return & SqlDB {}, errors .New (fmt .Sprintf ("Unknown type %s" , cfg .Type ))
123+ }
124+
125+ db , err := gorm .Open (dialect , & gorm.Config {})
112126 if err != nil {
113127 return nil , err
114128 }
115129
116- db , err := gorm .Open (cfg .Type , connStr )
130+ // Use the connection pool and setup it
131+ sqlDB , err := db .DB ()
117132 if err != nil {
118133 return nil , err
119134 }
120135
121- db . DB () .SetMaxIdleConns (cfg .MaxIdleConns )
122- db . DB () .SetMaxOpenConns (cfg .MaxOpenConns )
136+ sqlDB .SetMaxIdleConns (cfg .MaxIdleConns )
137+ sqlDB .SetMaxOpenConns (cfg .MaxOpenConns )
123138 connMaxLifetime := time .Duration (cfg .ConnMaxLifetime ) * time .Second
124- db . DB () .SetConnMaxLifetime (connMaxLifetime )
139+ sqlDB .SetConnMaxLifetime (connMaxLifetime )
125140
126141 tcpEventHub := eventhub .NewNonBlocking (1024 )
127142 httpEventHub := eventhub .NewNonBlocking (1024 )
0 commit comments