Enhance GetResourceByID to resolve tag aliases

This commit is contained in:
2025-05-31 09:26:01 +08:00
parent c46d80d310
commit 16c1dcd64b

View File

@@ -32,12 +32,26 @@ func CreateResource(r model.Resource) (model.Resource, error) {
func GetResourceByID(id uint) (model.Resource, error) { func GetResourceByID(id uint) (model.Resource, error) {
// Retrieve a resource by its ID from the database // Retrieve a resource by its ID from the database
var r model.Resource var r model.Resource
if err := db.Preload("User").Preload("Images").Preload("Tags").Preload("Files").First(&r, id).Error; err != nil { if err := db.Preload("User").
Preload("Images").
Preload("Tags").
Preload("Files").
First(&r, id).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) { if errors.Is(err, gorm.ErrRecordNotFound) {
return model.Resource{}, model.NewNotFoundError("Resource not found") return model.Resource{}, model.NewNotFoundError("Resource not found")
} }
return model.Resource{}, err return model.Resource{}, err
} }
for i, tag := range r.Tags {
if tag.AliasOf != nil {
t, err := GetTagByID(*tag.AliasOf)
if err != nil {
return model.Resource{}, err
} else {
r.Tags[i].Type = t.Type
}
}
}
return r, nil return r, nil
} }