From 875b8d662c8e694780123be1d2d8cb586f183906 Mon Sep 17 00:00:00 2001 From: bcmmbaga Date: Wed, 27 Nov 2024 15:40:37 +0300 Subject: [PATCH] Clean up sqlite policy rules after deletion Signed-off-by: bcmmbaga --- management/server/sql_store.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/management/server/sql_store.go b/management/server/sql_store.go index 25eec7c50bb..7f09f5dba6a 100644 --- a/management/server/sql_store.go +++ b/management/server/sql_store.go @@ -1449,17 +1449,21 @@ func (s *SqlStore) SavePolicy(ctx context.Context, lockStrength LockingStrength, } func (s *SqlStore) DeletePolicy(ctx context.Context, lockStrength LockingStrength, accountID, policyID string) error { - result := s.db.Clauses(clause.Locking{Strength: string(lockStrength)}). - Delete(&Policy{}, accountAndIDQueryCondition, accountID, policyID) - if err := result.Error; err != nil { + err := s.db.Transaction(func(tx *gorm.DB) error { + result := tx.Clauses(clause.Locking{Strength: string(lockStrength)}). + Delete(&PolicyRule{}, "policy_id = ?", policyID) + if result.Error != nil { + return result.Error + } + + return tx.Clauses(clause.Locking{Strength: string(lockStrength)}). + Delete(&Policy{}, accountAndIDQueryCondition, accountID, policyID).Error + }) + if err != nil { log.WithContext(ctx).Errorf("failed to delete policy from store: %s", err) return status.Errorf(status.Internal, "failed to delete policy from store") } - if result.RowsAffected == 0 { - return status.NewPolicyNotFoundError(policyID) - } - return nil }