package tests

import (
	"fmt"
	"github.com/astaxie/beego"
	_ "github.com/go-sql-driver/mysql"
	"gitlab.fjmaimaimai.com/mmm-go/gocomm/config"
	"gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log"
	"gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/orm"
	"gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/redis"
	"os"
	"path/filepath"
	"runtime"
	"sync"
)

var one sync.Once

func Init() {
	one.Do(func() {
		_, file, _, _ := runtime.Caller(0)
		apppath, _ := filepath.Abs(filepath.Dir(filepath.Join(file, ".."+string(filepath.Separator))))
		beego.TestBeegoInit(apppath)

		path, _ := os.Getwd()
		filename := "app.conf"
		beego.LoadAppConfig("ini", filepath.Join(path, "conf", filename))
		log.InitLog(config.Logger{
			Filename: "app.log",
			Level:    "7", //7  单元test时 可以把级别设置低一点 减少日志
		})
		err := redis.InitWithDb(100, beego.AppConfig.String("redis_add_port"), beego.AppConfig.String("redis_auth"), "0")
		if err != nil {
			log.Fatal(err)
			panic(err)
		}
		dataSource := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?loc=Asia%%2FShanghai",
			beego.AppConfig.String("mysql_user"),
			beego.AppConfig.String("mysql_password"),
			beego.AppConfig.String("mysql_host"),
			beego.AppConfig.String("mysql_port"),
			beego.AppConfig.String("mysql_db_name"),
		)
		orm.NewBeeormEngine(config.Mysql{
			DataSource: dataSource,
			MaxIdle:    100,
			MaxOpen:    100,
		})
		//protocol.InitMessageCode()
	})
}