github.com/Richardknop/go-oauth2-server@v1.0.1/database/database.go (about) 1 package database 2 3 import ( 4 "fmt" 5 "time" 6 7 "github.com/RichardKnop/go-oauth2-server/config" 8 "github.com/jinzhu/gorm" 9 // Drivers 10 _ "github.com/lib/pq" 11 ) 12 13 func init() { 14 gorm.NowFunc = func() time.Time { 15 return time.Now().UTC() 16 } 17 } 18 19 // NewDatabase returns a gorm.DB struct, gorm.DB.DB() returns a database handle 20 // see http://golang.org/pkg/database/sql/#DB 21 func NewDatabase(cnf *config.Config) (*gorm.DB, error) { 22 // Postgres 23 if cnf.Database.Type == "postgres" { 24 // Connection args 25 // see https://godoc.org/github.com/lib/pq#hdr-Connection_String_Parameters 26 args := fmt.Sprintf( 27 "sslmode=disable host=%s port=%d user=%s password='%s' dbname=%s", 28 cnf.Database.Host, 29 cnf.Database.Port, 30 cnf.Database.User, 31 cnf.Database.Password, 32 cnf.Database.DatabaseName, 33 ) 34 35 db, err := gorm.Open(cnf.Database.Type, args) 36 if err != nil { 37 return db, err 38 } 39 40 // Max idle connections 41 db.DB().SetMaxIdleConns(cnf.Database.MaxIdleConns) 42 43 // Max open connections 44 db.DB().SetMaxOpenConns(cnf.Database.MaxOpenConns) 45 46 // Database logging 47 db.LogMode(cnf.IsDevelopment) 48 49 return db, nil 50 } 51 52 // Database type not supported 53 return nil, fmt.Errorf("Database type %s not suppported", cnf.Database.Type) 54 }