/common/database/conn.go

https://github.com/eolinker/goku-api-gateway · Go · 64 lines · 48 code · 11 blank · 5 comment · 7 complexity · a79af7d5c5e38f66c69056bed136c3a9 MD5 · raw file

  1. package database
  2. import (
  3. "database/sql"
  4. "io/ioutil"
  5. "strings"
  6. log "github.com/eolinker/goku-api-gateway/goku-log"
  7. //mysql数据库驱动
  8. _ "github.com/go-sql-driver/mysql"
  9. //sqlite3数据库驱动
  10. _ "github.com/mattn/go-sqlite3"
  11. )
  12. var (
  13. defaultDB *sql.DB
  14. )
  15. //InitConnection 初始化数据库连接
  16. func InitConnection(config Config) (*sql.DB, error) {
  17. return getConnection(config)
  18. }
  19. func getConnection(config Config) (*sql.DB, error) {
  20. db, e := sql.Open(config.GetDriver(), config.GetSource())
  21. if e == nil {
  22. if err := db.Ping(); err != nil {
  23. log.Info(err)
  24. return nil, err
  25. }
  26. db.SetMaxOpenConns(1000)
  27. db.SetMaxIdleConns(100)
  28. defaultDB = db
  29. return db, nil
  30. }
  31. log.Info(e)
  32. return nil, e
  33. }
  34. //GetConnection 获取数据库连接
  35. func GetConnection() *sql.DB {
  36. return defaultDB
  37. }
  38. //InitTable 初始化表
  39. func InitTable() error {
  40. content, err := ioutil.ReadFile("sql/goku_ce.sql")
  41. sqls := strings.Split(string(content), ";")
  42. Tx, _ := GetConnection().Begin()
  43. for _, sql := range sqls {
  44. _, err = Tx.Exec(sql)
  45. if err != nil {
  46. Tx.Rollback()
  47. log.Error("InitTable error:",err,"\t sql:",sql)
  48. return err
  49. }
  50. }
  51. Tx.Commit()
  52. return nil
  53. }