qq_bot/service/game_data_helpers.go

98 lines
2.0 KiB
Go

package service
import (
"errors"
"strconv"
"time"
"git.lxtend.com/lixiangwuxian/qqbot/sqlite3"
"gorm.io/gorm"
)
// SSBind相关的GORM辅助函数
func CheckSSBindExists(qqid string) (bool, string, error) {
db := sqlite3.GetGormDB()
var bind SSBind
err := db.Where("qqid = ?", qqid).First(&bind).Error
if errors.Is(err, gorm.ErrRecordNotFound) {
return false, "", nil
}
if err != nil {
return false, "", err
}
return true, bind.SSID, nil
}
func CheckSSIDExists(ssid string) (bool, error) {
db := sqlite3.GetGormDB()
var count int64
err := db.Model(&SSBind{}).Where("ssid = ?", ssid).Count(&count).Error
return count > 0, err
}
func CreateSSBind(qqid, ssid string) error {
db := sqlite3.GetGormDB()
bind := SSBind{
QQID: qqid,
SSID: ssid,
}
return db.Create(&bind).Error
}
func DeleteSSBind(qqid string) error {
db := sqlite3.GetGormDB()
return db.Where("qqid = ?", qqid).Delete(&SSBind{}).Error
}
// SSData相关的GORM辅助函数
func GetLatestSSData(id string) (*SSData, error) {
db := sqlite3.GetGormDB()
var data SSData
err := db.Where("id = ?", id).Order("generated_time DESC").First(&data).Error
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, nil
}
return &data, err
}
// BLData相关的GORM辅助函数
func GetLatestBLData(id string) (*BLData, error) {
db := sqlite3.GetGormDB()
var data BLData
err := db.Where("id = ?", id).Order("generated_time DESC").First(&data).Error
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, nil
}
return &data, err
}
func CreateBLData(data BLData) error {
db := sqlite3.GetGormDB()
return db.Create(&data).Error
}
// RecordData相关的GORM辅助函数
func CreateSSRecordData(data SSRecordData) error {
db := sqlite3.GetGormDB()
return db.Create(&data).Error
}
func CreateBLRecordData(data BLRecordData) error {
db := sqlite3.GetGormDB()
return db.Create(&data).Error
}
// 通用辅助函数
func ParseQQIDToInt64(qqidStr string) (int64, error) {
return strconv.ParseInt(qqidStr, 10, 64)
}
func FormatTimeNow() time.Time {
return time.Now()
}