feat: webhooker 1.0 MVP — entity rename, core engine, delivery, management UI #16

Merged
sneak merged 33 commits from feature/mvp-1.0 into main 2026-03-04 01:19:41 +01:00
Showing only changes of commit 2606d41c60 - Show all commits

View File

@@ -295,10 +295,30 @@ func (h *Handlers) HandleSourceDelete() http.HandlerFunc {
return return
} }
// Soft-delete child records // Soft-delete child records in dependency order (deepest first).
// Collect event IDs for this webhook
var eventIDs []string
tx.Model(&database.Event{}).Where("webhook_id = ?", webhook.ID).Pluck("id", &eventIDs)
if len(eventIDs) > 0 {
// Collect delivery IDs for these events
var deliveryIDs []string
tx.Model(&database.Delivery{}).Where("event_id IN ?", eventIDs).Pluck("id", &deliveryIDs)
if len(deliveryIDs) > 0 {
// Soft-delete delivery results
tx.Where("delivery_id IN ?", deliveryIDs).Delete(&database.DeliveryResult{})
}
// Soft-delete deliveries
tx.Where("event_id IN ?", eventIDs).Delete(&database.Delivery{})
}
// Soft-delete events, entrypoints, targets, and the webhook itself
tx.Where("webhook_id = ?", webhook.ID).Delete(&database.Event{})
tx.Where("webhook_id = ?", webhook.ID).Delete(&database.Entrypoint{}) tx.Where("webhook_id = ?", webhook.ID).Delete(&database.Entrypoint{})
tx.Where("webhook_id = ?", webhook.ID).Delete(&database.Target{}) tx.Where("webhook_id = ?", webhook.ID).Delete(&database.Target{})
tx.Where("webhook_id = ?", webhook.ID).Delete(&database.Event{})
tx.Delete(&webhook) tx.Delete(&webhook)
if err := tx.Commit().Error; err != nil { if err := tx.Commit().Error; err != nil {