wx-server/internal/dao/character.go

77 lines
2.2 KiB
Go
Raw Permalink Normal View History

2024-06-04 21:22:50 +08:00
package dao
import (
"gorm.io/gorm"
)
type Character struct {
ID int32 `gorm:"primaryKey;type:int;not null;comment:'角色ID'"`
VoiceId int `gorm:"type:int;default null;comment:'声音ID'"`
AvatarId string `gorm:"type:varchar(32);not null;comment:'角色头像的uuid'"`
BackgroundIds string `gorm:"type:varchar(255);not null;comment:'聊天背景图集合逗号分隔元素是背景图的uuid'"`
Name string `gorm:"type:varchar(32);not null;comment:'角色名称'"`
WakeupWords string `gorm:"type:varchar(255);not null;"`
WorldScenario string `gorm:"type:mediumtext;not null;"`
Description string `gorm:"type:mediumtext;not null;"`
Emojis string `gorm:"type:json;not null;"`
Dialogues string `gorm:"type:mediumtext;not null;"`
}
func (Character) TableName() string { return "character" }
func Character_Insert(data *Character) (int32, error) {
if err := s.db.Create(data).Error; err != nil {
return 0, err
}
return data.ID, nil
}
func Character_Query(characterId int32) (*Character, error) {
var data Character
err := s.db.Where("id = ?", characterId).First(&data).Error
if err != nil {
if err == gorm.ErrRecordNotFound {
return nil, nil
}
return nil, err
}
return &data, nil
}
func Character_QueryAllCharacter() ([]*Character, error) {
var list []*Character
err := s.db.Find(&list).Error
if err != nil {
return nil, err
}
return list, nil
}
// 根据角色ID列表查询信息
func Character_QueryList(characterIds []int32) ([]*Character, error) {
var list []*Character
if err := s.db.Find(&list, characterIds).Error; err != nil {
return nil, err
}
return list, nil
}
func Character_Delete(characterId int32) error {
return s.db.Delete(&Character{}, characterId).Error
}
type CharacterBaseInfo struct {
ID int32 `gorm:"id"`
AvatarId string `gorm:"avatar_id"`
Name string `gorm:"name"`
}
// 根据头像的ID列表查询头像和名称信息
func Character_QueryList_BaseInfo(characterIds []int32) ([]*CharacterBaseInfo, error) {
var list []*CharacterBaseInfo
if err := s.db.Model(&Character{}).Where("id in (?)", characterIds).Select("id, avatar_id, name").Scan(&list).Error; err != nil {
return nil, err
}
return list, nil
}