77 lines
2.2 KiB
Go
77 lines
2.2 KiB
Go
|
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
|
|||
|
}
|