fix(subscriptions): reject concurrent duplicate rules

Fixes #66
This commit is contained in:
ShukeBta
2026-08-10 19:30:17 +08:00
parent c32f23a626
commit c0d743d89d
18 changed files with 584 additions and 10 deletions
@@ -16,7 +16,12 @@ func (s *SubscriptionService) prepareSubscriptionForRun(ctx context.Context, sub
}
normalizeSubscriptionDefaults(sub)
updates := map[string]any{}
if s.fillSubscriptionRunMetadata(ctx, sub, updates); len(updates) > 0 && s.repo != nil && s.repo.DB != nil {
s.fillSubscriptionRunMetadata(ctx, sub, updates)
if identityKey := model.SubscriptionIdentityKey(sub); identityKey != sub.IdentityKey {
sub.IdentityKey = identityKey
updates["identity_key"] = identityKey
}
if len(updates) > 0 && s.repo != nil && s.repo.DB != nil {
if err := s.repo.DB.WithContext(ctx).Model(&model.Subscription{}).Where("id = ?", sub.ID).Updates(updates).Error; err != nil && s.log != nil {
s.log.Debug("subscription metadata prepare persist failed", zap.String("id", sub.ID), zap.Error(err))
}