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
|
||
}
|