مراية لـ
https://github.com/postalserver/postal.git
تم المزامنة 2025-12-01 05:43:04 +00:00
61 أسطر
1.4 KiB
Ruby
61 أسطر
1.4 KiB
Ruby
# == Schema Information
|
|
#
|
|
# Table name: webhooks
|
|
#
|
|
# id :integer not null, primary key
|
|
# server_id :integer
|
|
# uuid :string(255)
|
|
# name :string(255)
|
|
# url :string(255)
|
|
# last_used_at :datetime
|
|
# all_events :boolean default(FALSE)
|
|
# enabled :boolean default(TRUE)
|
|
# sign :boolean default(TRUE)
|
|
# created_at :datetime
|
|
# updated_at :datetime
|
|
#
|
|
# Indexes
|
|
#
|
|
# index_webhooks_on_server_id (server_id)
|
|
#
|
|
|
|
class Webhook < ApplicationRecord
|
|
|
|
include HasUUID
|
|
|
|
belongs_to :server
|
|
has_many :webhook_events, :dependent => :destroy
|
|
has_many :webhook_requests
|
|
|
|
validates :name, :presence => true
|
|
validates :url, :presence => true, :format => {:with => /\Ahttps?\:\/\/[a-z0-9\-\.\_\?\=\&\/\+:]+\z/i, :allow_blank => true}
|
|
|
|
scope :enabled, -> { where(:enabled => true) }
|
|
|
|
after_save :save_events
|
|
|
|
when_attribute :all_events, :changes_to => true do
|
|
after_save do
|
|
self.webhook_events.destroy_all
|
|
end
|
|
end
|
|
|
|
def events
|
|
@events ||= webhook_events.map(&:event)
|
|
end
|
|
|
|
def events=(value)
|
|
@events = value.map(&:to_s).select(&:present?)
|
|
end
|
|
|
|
def save_events
|
|
if @events
|
|
@events.each do |event|
|
|
webhook_events.where(:event => event).first_or_create!
|
|
end
|
|
webhook_events.where.not(:event => @events).destroy_all
|
|
end
|
|
end
|
|
|
|
end
|