app/models/webhooks/outgoing/delivery.rb in bullet_train-outgoing_webhooks-1.0.4 vs app/models/webhooks/outgoing/delivery.rb in bullet_train-outgoing_webhooks-1.0.5
- old
+ new
@@ -1,23 +1,11 @@
-class Webhooks::Outgoing::Delivery < ApplicationRecord
+class Webhooks::Outgoing::Delivery < BulletTrain::OutgoingWebhooks.base_class.constantize
+ include Webhooks::Outgoing::DeliverySupport
# 🚅 add concerns above.
- belongs_to :endpoint, class_name: "Webhooks::Outgoing::Endpoint"
- belongs_to :event, class_name: "Webhooks::Outgoing::Event"
- has_one :team, through: :endpoint
-
- ATTEMPT_SCHEDULE = {
- 1 => 15.seconds,
- 2 => 1.minute,
- 3 => 5.minutes,
- 4 => 15.minutes,
- 5 => 1.hour,
- }
-
# 🚅 add belongs_to associations above.
- has_many :delivery_attempts, class_name: "Webhooks::Outgoing::DeliveryAttempt", dependent: :destroy, foreign_key: :delivery_id
# 🚅 add has_many associations above.
# 🚅 add has_one associations above.
# 🚅 add scopes above.
@@ -25,55 +13,8 @@
# 🚅 add validations above.
# 🚅 add callbacks above.
# 🚅 add delegations above.
-
- def label_string
- event.short_uuid
- end
-
- def next_reattempt_delay
- ATTEMPT_SCHEDULE[attempt_count]
- end
-
- def deliver_async
- if still_attempting?
- Webhooks::Outgoing::DeliveryJob.set(wait: next_reattempt_delay).perform_later(self)
- end
- end
-
- def deliver
- if delivery_attempts.create.attempt
- touch(:delivered_at)
- else
- deliver_async
- end
- end
-
- def attempt_count
- delivery_attempts.count
- end
-
- def delivered?
- delivered_at.present?
- end
-
- def still_attempting?
- return false if delivered?
- attempt_count < max_attempts
- end
-
- def failed?
- !(delivered? || still_attempting?)
- end
-
- def name
- event.short_uuid
- end
-
- def max_attempts
- ATTEMPT_SCHEDULE.keys.max
- end
# 🚅 add methods above.
end