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 }