improve search

This commit is contained in:
2025-09-09 10:56:35 +08:00
parent c0d904e035
commit ed5843cd54

View File

@@ -430,24 +430,32 @@ func GetResourcesIdWithTag(tagID uint) ([]uint, error) {
} }
func BatchGetResources(ids []uint) ([]model.Resource, error) { func BatchGetResources(ids []uint) ([]model.Resource, error) {
idMap := make(map[uint]struct{}) var resources []model.Resource
uniqueIds := make([]uint, 0, len(ids))
for _, id := range ids { for _, id := range ids {
if _, exists := idMap[id]; !exists { var r model.Resource
idMap[id] = struct{}{} if err := db.
uniqueIds = append(uniqueIds, id) 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 return resources, nil
} }