80 lines
2.7 KiB
Go
80 lines
2.7 KiB
Go
package response
|
|
|
|
import (
|
|
"git.echol.cn/loser/st/server/model/app"
|
|
"time"
|
|
)
|
|
|
|
// CharacterResponse 角色卡响应
|
|
type CharacterResponse struct {
|
|
ID uint `json:"id"`
|
|
Name string `json:"name"`
|
|
Description string `json:"description"`
|
|
Personality string `json:"personality"`
|
|
Scenario string `json:"scenario"`
|
|
Avatar string `json:"avatar"`
|
|
CreatorID *uint `json:"creatorId"`
|
|
CreatorName string `json:"creatorName"`
|
|
CreatorNotes string `json:"creatorNotes"`
|
|
Tags []string `json:"tags"`
|
|
IsPublic bool `json:"isPublic"`
|
|
Version int `json:"version"`
|
|
FirstMessage string `json:"firstMessage"`
|
|
ExampleMessages []string `json:"exampleMessages"`
|
|
TotalChats int `json:"totalChats"`
|
|
TotalLikes int `json:"totalLikes"`
|
|
UsageCount int `json:"usageCount"`
|
|
FavoriteCount int `json:"favoriteCount"`
|
|
TokenCount int `json:"tokenCount"`
|
|
IsFavorited bool `json:"isFavorited"` // 当前用户是否收藏
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
}
|
|
|
|
// CharacterListResponse 角色卡列表响应
|
|
type CharacterListResponse struct {
|
|
List []CharacterResponse `json:"list"`
|
|
Total int64 `json:"total"`
|
|
Page int `json:"page"`
|
|
PageSize int `json:"pageSize"`
|
|
}
|
|
|
|
// ToCharacterResponse 转换为角色卡响应
|
|
func ToCharacterResponse(character *app.AICharacter, isFavorited bool) CharacterResponse {
|
|
// pq.StringArray 可以直接赋值给 []string
|
|
tags := []string{}
|
|
if character.Tags != nil {
|
|
tags = character.Tags
|
|
}
|
|
|
|
exampleMessages := []string{}
|
|
if character.ExampleMessages != nil {
|
|
exampleMessages = character.ExampleMessages
|
|
}
|
|
|
|
return CharacterResponse{
|
|
ID: character.ID,
|
|
Name: character.Name,
|
|
Description: character.Description,
|
|
Personality: character.Personality,
|
|
Scenario: character.Scenario,
|
|
Avatar: character.Avatar,
|
|
CreatorID: character.CreatorID,
|
|
CreatorName: character.CreatorName,
|
|
CreatorNotes: character.CreatorNotes,
|
|
Tags: tags,
|
|
IsPublic: character.IsPublic,
|
|
Version: character.Version,
|
|
FirstMessage: character.FirstMessage,
|
|
ExampleMessages: exampleMessages,
|
|
TotalChats: character.TotalChats,
|
|
TotalLikes: character.TotalLikes,
|
|
UsageCount: character.UsageCount,
|
|
FavoriteCount: character.FavoriteCount,
|
|
TokenCount: character.TokenCount,
|
|
IsFavorited: isFavorited,
|
|
CreatedAt: character.CreatedAt,
|
|
UpdatedAt: character.UpdatedAt,
|
|
}
|
|
}
|