github.com/lovung/GoCleanArchitecture@v0.0.0-20210302152432-50d91fd29f9f/pkg/gormer/gormer.go (about) 1 package gormer 2 3 import ( 4 "sync" 5 6 "gorm.io/driver/mysql" 7 "gorm.io/gorm" 8 ) 9 10 var ( 11 once sync.Once 12 singleton *gorm.DB 13 ) 14 15 // OpenDBConnection opens a DB connection. 16 func OpenDBConnection(connStr string, config gorm.Config) (*gorm.DB, error) { 17 var err error 18 once.Do(func() { 19 db, err := gorm.Open(mysql.Open(connStr), &config) 20 if err == nil { 21 singleton = db 22 } 23 }) 24 if err != nil { 25 return nil, err 26 } 27 return singleton, nil 28 } 29 30 // GetDB gets the instance of singleton 31 func GetDB() *gorm.DB { 32 return singleton 33 }