Sha256: b403d582b1edc332fda5482d0b90666fa18f6a0c8c8f8a73af5b58976830f59f
Contents?: true
Size: 1.42 KB
Versions: 3
Compression:
Stored size: 1.42 KB
Contents
# frozen_string_literal: true module PubSubModelSync module SubscriberConcern def self.included(base) base.extend(ClassMethods) end # check if model was changed to skip nonsense .update!() def ps_subscriber_changed?(_data) validate changed? end module ClassMethods def ps_subscribe(attrs, actions: nil, from_klass: name, id: :id) settings = { id: id, from_klass: from_klass } actions ||= %i[create update destroy] actions.each do |action| add_ps_subscriber(action, attrs, settings) end end def ps_class_subscribe(action, from_action: nil, from_klass: nil) settings = { direct_mode: true } settings[:from_action] = from_action if from_action settings[:from_klass] = from_klass if from_klass add_ps_subscriber(action, nil, settings) end def ps_subscriber(action = :create) PubSubModelSync::Config.subscribers.find do |subscriber| subscriber.klass == name && subscriber.action == action end end private # @param settings (Hash): refer to PubSubModelSync::Subscriber.settings def add_ps_subscriber(action, attrs, settings = {}) klass = PubSubModelSync::Subscriber subscriber = klass.new(name, action, attrs: attrs, settings: settings) PubSubModelSync::Config.subscribers.push(subscriber) && subscriber end end end end
Version data entries
3 entries across 3 versions & 1 rubygems