Fix ClearUnusedTags

This commit is contained in:
2025-06-14 17:38:17 +08:00
parent 389168ef29
commit a2b9e52f88

View File

@@ -148,17 +148,19 @@ func ClearUnusedTags() error {
return err return err
} }
for _, tag := range tags { for _, tag := range tags {
var count int64 resources, _, err := GetResourceByTag(tag.ID, 1, 1)
if err := db. if err != nil {
Model(&model.Resource{}).
Where("id IN (SELECT resource_id FROM resource_tags WHERE tag_id = ?)", tag.ID).
Count(&count).Error; err != nil {
return err return err
} }
if count == 0 { if len(resources) == 0 {
// The tag maybe associated with a deleted resource, so we need to remove it from the resource_tags table first
if err := db.Exec("DELETE FROM resource_tags WHERE tag_id = ?", tag.ID).Error; err != nil { if err := db.Exec("DELETE FROM resource_tags WHERE tag_id = ?", tag.ID).Error; err != nil {
return err return err
} }
// Remove all aliases of the tag
if err := db.Where("alias_of = ?", tag.ID).Update("alias_of", nil).Error; err != nil {
return err
}
// Use hard delete to remove the tag to ensure the tag can be re-created later // Use hard delete to remove the tag to ensure the tag can be re-created later
if err := db.Unscoped().Delete(&tag).Error; err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { if err := db.Unscoped().Delete(&tag).Error; err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
return err return err