OSDN Git Service

Merge pull request #201 from Bytom/v0.1
[bytom/vapor.git] / federation / database / db.go
diff --git a/federation/database/db.go b/federation/database/db.go
new file mode 100644 (file)
index 0000000..2005b37
--- /dev/null
@@ -0,0 +1,27 @@
+package database
+
+import (
+       "fmt"
+
+       _ "github.com/go-sql-driver/mysql"
+       "github.com/jinzhu/gorm"
+
+       "github.com/vapor/errors"
+       "github.com/vapor/federation/config"
+)
+
+func NewMySQLDB(cfg config.MySQLConfig) (*gorm.DB, error) {
+       dsnTemplate := "%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=true&loc=Local"
+       dsn := fmt.Sprintf(dsnTemplate, cfg.Connection.Username, cfg.Connection.Password, cfg.Connection.Host, cfg.Connection.Port, cfg.Connection.DbName)
+       db, err := gorm.Open("mysql", dsn)
+       if err != nil {
+               return nil, errors.Wrap(err, "open db cluster")
+       }
+
+       db.LogMode(cfg.LogMode)
+       if err = db.DB().Ping(); err != nil {
+               return nil, errors.Wrap(err, "ping db")
+       }
+
+       return db, nil
+}