OSDN Git Service

feat: init cross_tx keepers (#146)
[bytom/vapor.git] / federation / database / db.go
1 package database
2
3 import (
4         "fmt"
5
6         _ "github.com/go-sql-driver/mysql"
7         "github.com/jinzhu/gorm"
8
9         "github.com/vapor/errors"
10         "github.com/vapor/federation/config"
11 )
12
13 func NewMySQLDB(cfg config.MySQLConfig) (*gorm.DB, error) {
14         dsnTemplate := "%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=true&loc=Local"
15         dsn := fmt.Sprintf(dsnTemplate, cfg.Connection.Username, cfg.Connection.Password, cfg.Connection.Host, cfg.Connection.Port, cfg.Connection.DbName)
16         db, err := gorm.Open("mysql", dsn)
17         if err != nil {
18                 return nil, errors.Wrap(err, "open db cluster")
19         }
20
21         db.LogMode(cfg.LogMode)
22         if err = db.DB().Ping(); err != nil {
23                 return nil, errors.Wrap(err, "ping db")
24         }
25
26         return db, nil
27 }