dto.go 2.15 KB
package svmysql

import (
	"apigame/util/util-lx/lxalilog"
	"gorm.io/gorm"
	"strings"
)

func Insert(obj IMysqlData, suffix string) (err error) {
	info := obj.MysqlInfo(suffix)
	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, suffix)
		return
	}
	return
}

func Updates(obj IMysqlData, suffix string) (err error) {
	info := obj.MysqlInfo(suffix)
	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, suffix)
		return
	}
	return
}

func Save(obj IMysqlData, suffix string) (err error) {
	info := obj.MysqlInfo(suffix)
	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, suffix)
		return
	}
	return
}

func First(obj IMysqlData, suffix string) (has bool, err error) {
	info := obj.MysqlInfo(suffix)
	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, suffix)
		return
	}
	return
}

func Find(obj IMysqlData, suffix string) (has bool, err error) {
	info := obj.MysqlInfo(suffix)
	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, suffix)
		return
	}
	return
}