thread-master/backend/internal/logic/persona/mapper.go

67 lines
2.1 KiB
Go
Raw Normal View History

2026-06-26 08:37:04 +00:00
package persona
import (
domusecase "haixun-backend/internal/model/persona/domain/usecase"
2026-06-30 09:10:23 +00:00
stylepresetdomain "haixun-backend/internal/model/style_preset/domain/usecase"
2026-06-26 08:37:04 +00:00
"haixun-backend/internal/types"
)
func toPersonaData(item domusecase.PersonaSummary) types.PersonaData {
return types.PersonaData{
ID: item.ID,
DisplayName: item.DisplayName,
Persona: item.Persona,
Brief: item.Brief,
StyleProfile: item.StyleProfile,
StyleBenchmark: item.StyleBenchmark,
SeedQuery: item.SeedQuery,
CopyResearchMap: toCopyResearchMapData(item.CopyResearchMap),
CreateAt: item.CreateAt,
UpdateAt: item.UpdateAt,
}
}
func toCopyResearchMapData(item domusecase.CopyResearchMapSummary) types.CopyResearchMapData {
return types.CopyResearchMapData{
AudienceSummary: item.AudienceSummary,
ContentGoal: item.ContentGoal,
Questions: item.Questions,
Pillars: item.Pillars,
Exclusions: item.Exclusions,
SuggestedTags: item.SuggestedTags,
BenchmarkNotes: item.BenchmarkNotes,
}
}
func toListData(result *domusecase.ListResult) *types.ListPersonasData {
if result == nil {
return &types.ListPersonasData{List: []types.PersonaData{}}
}
list := make([]types.PersonaData, 0, len(result.List))
for _, item := range result.List {
list = append(list, toPersonaData(item))
}
return &types.ListPersonasData{List: list}
}
func toPersonaPatch(req *types.UpdatePersonaReq) domusecase.PersonaPatch {
if req == nil {
return domusecase.PersonaPatch{}
}
return domusecase.PersonaPatch{
DisplayName: req.DisplayName,
Persona: req.Persona,
Brief: req.Brief,
StyleProfile: req.StyleProfile,
StyleBenchmark: req.StyleBenchmark,
}
}
2026-06-30 09:10:23 +00:00
func toStylePresetData(item stylepresetdomain.PresetSummary) types.StylePresetData {
return types.StylePresetData{
ID: item.ID, PersonaID: item.PersonaID, Name: item.Name, Tone: item.Tone,
CTA: append([]string(nil), item.CTA...), BannedWords: append([]string(nil), item.BannedWords...),
Notes: item.Notes, CreateAt: item.CreateAt, UpdateAt: item.UpdateAt,
}
}