index.go 3.06 KB
package svmysql

import (
	"apigame/common/svconst"
	"apigame/service/constd"
	"apigame/util/utdto"
	"apigame/util/util-lx/lxalilog"
	"fmt"
	"github.com/astaxie/beego"
	"gorm.io/gorm"
	"strings"
)

func Init() bool {

	// ConnectMySQL
	if db, err := utdto.ConnectMySQL(beego.AppConfig.String("mysql::" + constd.MYSQL_DBAPI)); err == nil {
		svconst.DbApi = db
	} else {
		fmt.Println("svmysql.Init DbApi Error::" + err.Error())
		return false
	}
	if db, err := utdto.ConnectMySQL(beego.AppConfig.String("mysql::mergecommon")); err == nil {
		svconst.DbCommon = db
	} else {
		fmt.Println("svmysql.Init DbCommon Error::" + err.Error())
		return false
	}
	if db, err := utdto.ConnectMySQL(beego.AppConfig.String("mysql::" + constd.MYSQL_MERGECONFIG)); err == nil {
		svconst.DbConfig = db
	} else {
		fmt.Println("svmysql.Init DbConfig Error::" + err.Error())
		return false
	}
	return true

}

func InitTable(obj IMysqlData, gameId string) {
	info := obj.MysqlInfo(gameId)
	utdto.InitTable(info.DbMysql, obj, info.TableName)
}

func Insert(obj IMysqlData, gameId string) (err error) {
	info := obj.MysqlInfo(gameId)
	db := info.DbMysql
	stmt := db.Session(&gorm.Session{DryRun: true}).Create(obj).Statement
	stmtSQL := stmt.SQL.String()
	sql := strings.Replace(stmtSQL, stmt.Table, info.TableName, -1)
	result := db.Exec(sql, stmt.Vars...)
	err = result.Error
	if err != nil {
		lxalilog.Errors(err, gameId)
		return
	}
	return
}

func Updates(obj IMysqlData, gameId string) (err error) {
	info := obj.MysqlInfo(gameId)
	db := info.DbMysql
	stmt := db.Session(&gorm.Session{DryRun: true}).Updates(obj).Statement
	stmtSQL := stmt.SQL.String()
	sql := strings.Replace(stmtSQL, stmt.Table, info.TableName, -1)
	result := db.Exec(sql, stmt.Vars...)
	err = result.Error
	if err != nil {
		lxalilog.Errors(err, gameId)
		return
	}
	return
}

func Save(obj IMysqlData, gameId string) (err error) {
	info := obj.MysqlInfo(gameId)
	db := info.DbMysql
	stmt := db.Session(&gorm.Session{DryRun: true}).Save(obj).Statement
	stmtSQL := stmt.SQL.String()
	sql := strings.Replace(stmtSQL, stmt.Table, info.TableName, -1)
	result := db.Exec(sql, stmt.Vars...)
	err = result.Error
	if err != nil {
		lxalilog.Errors(err, gameId)
		return
	}
	return
}

func First(obj IMysqlData, gameId string) (has bool, err error) {
	info := obj.MysqlInfo(gameId)
	db := info.DbMysql
	stmt := db.Session(&gorm.Session{DryRun: true}).First(obj).Statement
	stmtSQL := stmt.SQL.String()
	sql := strings.Replace(stmtSQL, stmt.Table, info.TableName, -1)
	result := db.Raw(sql, stmt.Vars...).Scan(obj)
	has = result.RowsAffected != 0
	err = result.Error
	if err != nil {
		lxalilog.Errors(err, gameId)
		return
	}
	return
}

func Find(obj IMysqlData, gameId string) (has bool, err error) {
	info := obj.MysqlInfo(gameId)
	db := info.DbMysql
	stmt := db.Session(&gorm.Session{DryRun: true}).Find(obj).Statement
	stmtSQL := stmt.SQL.String()
	sql := strings.Replace(stmtSQL, stmt.Table, info.TableName, -1)
	result := db.Raw(sql, stmt.Vars...).Scan(obj)
	has = result.RowsAffected != 0
	err = result.Error
	if err != nil {
		lxalilog.Errors(err, gameId)
		return
	}
	return
}