From a0265de2649dc645144518e65995877767b5871c Mon Sep 17 00:00:00 2001 From: Mo Tarbin Date: Wed, 27 Nov 2024 19:14:16 -0500 Subject: [PATCH] Refactor AssignLabelsToChore function to optimize label assignment and avoid unnecessary --- internal/label/repo/repository.go | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/internal/label/repo/repository.go b/internal/label/repo/repository.go index e27bbe7..90c26d3 100644 --- a/internal/label/repo/repository.go +++ b/internal/label/repo/repository.go @@ -73,16 +73,18 @@ func (r *LabelRepository) AssignLabelsToChore(ctx context.Context, choreID int, }) } return r.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error { - - if err := r.db.WithContext(ctx).Where("chore_id = ? AND user_id = ? AND label_id IN (?)", choreID, userID, toBeRemoved).Delete(&chModel.ChoreLabels{}).Error; err != nil { - return err + if len(toBeRemoved) > 0 { + if err := r.db.WithContext(ctx).Where("chore_id = ? AND user_id = ? AND label_id IN (?)", choreID, userID, toBeRemoved).Delete(&chModel.ChoreLabels{}).Error; err != nil { + return err + } } - - if err := r.db.WithContext(ctx).Clauses(clause.OnConflict{ - Columns: []clause.Column{{Name: "chore_id"}, {Name: "label_id"}, {Name: "user_id"}}, - DoNothing: true, - }).Create(&choreLabels).Error; err != nil { - return err + if len(toBeAdded) > 0 { + if err := r.db.WithContext(ctx).Clauses(clause.OnConflict{ + Columns: []clause.Column{{Name: "chore_id"}, {Name: "label_id"}, {Name: "user_id"}}, + DoNothing: true, + }).Create(&choreLabels).Error; err != nil { + return err + } } return nil })