mirror of
https://github.com/wgh136/nysoure.git
synced 2025-09-27 04:17:23 +00:00
Enhance GetResourceByID to resolve tag aliases
This commit is contained in:
@@ -32,12 +32,26 @@ func CreateResource(r model.Resource) (model.Resource, error) {
|
||||
func GetResourceByID(id uint) (model.Resource, error) {
|
||||
// Retrieve a resource by its ID from the database
|
||||
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) {
|
||||
return model.Resource{}, model.NewNotFoundError("Resource not found")
|
||||
}
|
||||
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
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user