mirror of
https://github.com/wgh136/nysoure.git
synced 2025-09-27 04:17:23 +00:00
improve search
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user