conn.go 1.2 KB
Newer Older
E
eoLinker API Management 已提交
1 2 3 4
package database

import (
	"database/sql"
Y
Your Name 已提交
5 6
	"io/ioutil"
	"strings"
Y
Your Name 已提交
7

黄孟柱 已提交
8
	log "github.com/eolinker/goku-api-gateway/goku-log"
E
eoLinker API Management 已提交
9

Y
Your Name 已提交
10 11 12 13
	//mysql数据库驱动
	_ "github.com/go-sql-driver/mysql"
	//sqlite3数据库驱动
	_ "github.com/mattn/go-sqlite3"
E
eoLinker API Management 已提交
14 15
)

Y
Your Name 已提交
16 17 18 19
var (
	defaultDB *sql.DB
)

Y
Your Name 已提交
20
//InitConnection 初始化数据库连接
Y
Your Name 已提交
21 22
func InitConnection(config Config) (*sql.DB, error) {
	return getConnection(config)
E
eoLinker API Management 已提交
23 24 25 26 27 28 29 30 31 32 33 34
}
func getConnection(config Config) (*sql.DB, error) {

	db, e := sql.Open(config.GetDriver(), config.GetSource())

	if e == nil {
		if err := db.Ping(); err != nil {
			log.Info(err)
			return nil, err
		}
		db.SetMaxOpenConns(1000)
		db.SetMaxIdleConns(100)
Y
Your Name 已提交
35
		defaultDB = db
E
eoLinker API Management 已提交
36 37
		return db, nil
	}
Y
Your Name 已提交
38 39
	log.Info(e)
	return nil, e
E
eoLinker API Management 已提交
40 41 42

}

Y
Your Name 已提交
43 44 45 46
//GetConnection 获取数据库连接
func GetConnection() *sql.DB {
	return defaultDB
}
Y
Your Name 已提交
47

Y
Your Name 已提交
48 49 50 51 52 53 54 55 56 57 58
//InitTable 初始化表
func InitTable() error {

	content, err := ioutil.ReadFile("sql/goku_ce.sql")
	sqls := strings.Split(string(content), ";")
	Tx, _ := GetConnection().Begin()
	for _, sql := range sqls {
		_, err = Tx.Exec(sql)
		if err != nil {
			Tx.Rollback()
			log.Error("InitTable error:",err,"\t sql:",sql)
Y
Your Name 已提交
59 60 61
			return err
		}
	}
Y
Your Name 已提交
62 63
	Tx.Commit()
	return nil
Y
Your Name 已提交
64
}