From ed5843cd54c73b1f2517e54f193e87265afc72b1 Mon Sep 17 00:00:00 2001 From: nyne Date: Tue, 9 Sep 2025 10:56:35 +0800 Subject: [PATCH] improve search --- server/dao/resource.go | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/server/dao/resource.go b/server/dao/resource.go index 8310a9b..941e67d 100644 --- a/server/dao/resource.go +++ b/server/dao/resource.go @@ -430,24 +430,32 @@ func GetResourcesIdWithTag(tagID uint) ([]uint, error) { } func BatchGetResources(ids []uint) ([]model.Resource, error) { - idMap := make(map[uint]struct{}) - uniqueIds := make([]uint, 0, len(ids)) + var resources []model.Resource + for _, id := range ids { - if _, exists := idMap[id]; !exists { - idMap[id] = struct{}{} - uniqueIds = append(uniqueIds, id) + var r model.Resource + if err := db. + Preload("User"). + Preload("Images"). + Preload("Tags"). + First(&r, id).Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + continue + } + return nil, err } + for i, tag := range r.Tags { + if tag.AliasOf != nil { + t, err := GetTagByID(*tag.AliasOf) + if err != nil { + return nil, err + } else { + r.Tags[i].Type = t.Type + } + } + } + resources = append(resources, r) } - var resources []model.Resource - if err := db. - Where("id IN ?", uniqueIds). - Preload("User"). - Preload("Images"). - Preload("Tags"). - Find(&resources). - Error; err != nil { - return nil, err - } return resources, nil }