115 lines
3.8 KiB
Go
115 lines
3.8 KiB
Go
package response
|
|
|
|
import (
|
|
"encoding/json"
|
|
"time"
|
|
|
|
"git.echol.cn/loser/st/server/model/app"
|
|
)
|
|
|
|
// WorldbookResponse 世界书响应
|
|
type WorldbookResponse struct {
|
|
ID uint `json:"id"`
|
|
UserID uint `json:"userId"`
|
|
Name string `json:"name"`
|
|
Description string `json:"description"`
|
|
IsPublic bool `json:"isPublic"`
|
|
EntryCount int `json:"entryCount"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
}
|
|
|
|
// WorldbookListResponse 世界书列表响应
|
|
type WorldbookListResponse struct {
|
|
List []WorldbookResponse `json:"list"`
|
|
Total int64 `json:"total"`
|
|
Page int `json:"page"`
|
|
PageSize int `json:"pageSize"`
|
|
}
|
|
|
|
// EntryResponse 世界书条目响应
|
|
type EntryResponse struct {
|
|
ID uint `json:"id"`
|
|
WorldbookID uint `json:"worldbookId"`
|
|
Comment string `json:"comment"`
|
|
Content string `json:"content"`
|
|
Keys []string `json:"keys"`
|
|
SecondaryKeys []string `json:"secondaryKeys"`
|
|
Constant bool `json:"constant"`
|
|
Enabled bool `json:"enabled"`
|
|
UseRegex bool `json:"useRegex"`
|
|
CaseSensitive bool `json:"caseSensitive"`
|
|
MatchWholeWords bool `json:"matchWholeWords"`
|
|
Selective bool `json:"selective"`
|
|
SelectiveLogic int `json:"selectiveLogic"`
|
|
Position int `json:"position"`
|
|
Depth int `json:"depth"`
|
|
Order int `json:"order"`
|
|
Probability int `json:"probability"`
|
|
ScanDepth int `json:"scanDepth"`
|
|
GroupID string `json:"groupId"`
|
|
Extensions map[string]interface{} `json:"extensions"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
}
|
|
|
|
// EntryListResponse 条目列表响应
|
|
type EntryListResponse struct {
|
|
List []EntryResponse `json:"list"`
|
|
Total int64 `json:"total"`
|
|
}
|
|
|
|
// ToWorldbookResponse 转换为世界书响应结构
|
|
func ToWorldbookResponse(wb *app.Worldbook) WorldbookResponse {
|
|
return WorldbookResponse{
|
|
ID: wb.ID,
|
|
UserID: wb.UserID,
|
|
Name: wb.Name,
|
|
Description: wb.Description,
|
|
IsPublic: wb.IsPublic,
|
|
EntryCount: wb.EntryCount,
|
|
CreatedAt: wb.CreatedAt,
|
|
UpdatedAt: wb.UpdatedAt,
|
|
}
|
|
}
|
|
|
|
// ToEntryResponse 转换为条目响应结构
|
|
func ToEntryResponse(entry *app.WorldbookEntry) EntryResponse {
|
|
var keys []string
|
|
if len(entry.Keys) > 0 {
|
|
json.Unmarshal(entry.Keys, &keys)
|
|
}
|
|
var secondaryKeys []string
|
|
if len(entry.SecondaryKeys) > 0 {
|
|
json.Unmarshal(entry.SecondaryKeys, &secondaryKeys)
|
|
}
|
|
var extensions map[string]interface{}
|
|
if len(entry.Extensions) > 0 {
|
|
json.Unmarshal(entry.Extensions, &extensions)
|
|
}
|
|
return EntryResponse{
|
|
ID: entry.ID,
|
|
WorldbookID: entry.WorldbookID,
|
|
Comment: entry.Comment,
|
|
Content: entry.Content,
|
|
Keys: keys,
|
|
SecondaryKeys: secondaryKeys,
|
|
Constant: entry.Constant,
|
|
Enabled: entry.Enabled,
|
|
UseRegex: entry.UseRegex,
|
|
CaseSensitive: entry.CaseSensitive,
|
|
MatchWholeWords: entry.MatchWholeWords,
|
|
Selective: entry.Selective,
|
|
SelectiveLogic: entry.SelectiveLogic,
|
|
Position: entry.Position,
|
|
Depth: entry.Depth,
|
|
Order: entry.Order,
|
|
Probability: entry.Probability,
|
|
ScanDepth: entry.ScanDepth,
|
|
GroupID: entry.GroupID,
|
|
Extensions: extensions,
|
|
CreatedAt: entry.CreatedAt,
|
|
UpdatedAt: entry.UpdatedAt,
|
|
}
|
|
}
|