diff --git a/internal/dataprovider/sqlcommon.go b/internal/dataprovider/sqlcommon.go index a873c1ba..8ffce39b 100644 --- a/internal/dataprovider/sqlcommon.go +++ b/internal/dataprovider/sqlcommon.go @@ -3133,6 +3133,12 @@ func sqlCommonAddEventRule(rule *EventRule, dbHandle *sql.DB) error { defer cancel() return sqlCommonExecuteTx(ctx, dbHandle, func(tx *sql.Tx) error { + if config.IsShared == 1 { + _, err := tx.ExecContext(ctx, getRemoveSoftDeletedRuleQuery(), rule.Name) + if err != nil { + return err + } + } q := getAddEventRuleQuery() _, err := tx.ExecContext(ctx, q, rule.Name, rule.Description, util.GetTimeAsMsSinceEpoch(time.Now()), util.GetTimeAsMsSinceEpoch(time.Now()), rule.Trigger, string(conditions)) diff --git a/internal/dataprovider/sqlqueries.go b/internal/dataprovider/sqlqueries.go index b2230897..2ae1ed30 100644 --- a/internal/dataprovider/sqlqueries.go +++ b/internal/dataprovider/sqlqueries.go @@ -895,6 +895,10 @@ func getDeleteEventRuleQuery(softDelete bool) string { return fmt.Sprintf(`DELETE FROM %s WHERE name = %s`, sqlTableEventsRules, sqlPlaceholders[0]) } +func getRemoveSoftDeletedRuleQuery() string { + return fmt.Sprintf(`DELETE FROM %s WHERE name = %s AND deleted_at > 0`, sqlTableEventsRules, sqlPlaceholders[0]) +} + func getClearRuleActionMappingQuery() string { return fmt.Sprintf(`DELETE FROM %s WHERE rule_id = (SELECT id FROM %s WHERE name = %s)`, sqlTableRulesActionsMapping, sqlTableEventsRules, sqlPlaceholders[0])