mysql.go 1.89 KB
Newer Older
brent's avatar
brent committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
package mysql

import (
	"ai_developer_admin/models"
	"fmt"
	"github.com/beego/beego/orm"
	"github.com/beego/beego/v2/core/logs"
	beego "github.com/beego/beego/v2/server/web"
	_ "github.com/go-sql-driver/mysql"
	"sync"
)

type Singleton struct {
	Ormer orm.Ormer
}

var instance *Singleton
var once sync.Once

func GetMysqlInstace() *Singleton {
	once.Do(func() {
		instance = &Singleton{
			Ormer: orm.NewOrm(),
		}
	})
	return instance
}

func init() {
	logs.Debug("mysql lib init")
brent's avatar
brent committed
31
	//return
brent's avatar
brent committed
32 33 34 35 36 37 38 39 40 41 42 43 44
	orm.Debug = true
	if err := orm.RegisterDriver("mysql", orm.DRMySQL); err != nil {
		logs.Error(err.Error())
	}

	orm.RegisterModel(new(models.User))
	//orm.RegisterModel(new(models.App))
	orm.RegisterModel(new(models.ChargeRecord))
	orm.RegisterModel(new(models.UserLevel))
	orm.RegisterModel(new(models.ApiKey))
	orm.RegisterModel(new(models.JwtToken))
	orm.RegisterModel(new(models.TaskType))
	orm.RegisterModel(new(models.UserLevelTaskType))
brent's avatar
brent committed
45 46 47
	orm.RegisterModel(new(models.Category))
	orm.RegisterModel(new(models.Whitelist))
	orm.RegisterModel(new(models.Computility))
brent's avatar
brent committed
48
	orm.RegisterModel(new(models.Favorite))
brent's avatar
brent committed
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68

	logs.Debug("AppConfig", beego.AppConfig)

	dbuser, _ := beego.AppConfig.String("mysqluser")
	dbpass, _ := beego.AppConfig.String("mysqlpass")
	dbhost, _ := beego.AppConfig.String("mysqlhost")
	dbport, _ := beego.AppConfig.String("mysqlport")
	dbname, _ := beego.AppConfig.String("mysqldb")
	logs.Debug("mysql info", dbuser, dbpass, dbhost, dbport, dbname)

	dbURL := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=true", dbuser, dbpass, dbhost, dbport, dbname)
	logs.Debug("Will connect to mysql url", dbURL)

	if err := orm.RegisterDataBase("default", "mysql", dbURL); err != nil {
		logs.Error(err.Error())
		panic(err.Error())
	}
	orm.SetMaxIdleConns("default", 10)
	orm.SetMaxOpenConns("default", 100)
}
brent's avatar
brent committed
69 70 71 72 73 74 75 76

func Ping() error {
	db, err := orm.GetDB("default")
	if err != nil {
		return err
	}
	return db.Ping()
}