Sha256: fc80305a2b2d0507af354fb23a90ed7f3e04cd5901bb71ffdd94ed4000c143d7
Contents?: true
Size: 1.33 KB
Versions: 7
Compression:
Stored size: 1.33 KB
Contents
# frozen_string_literal: true module PubSubModelSync module SubscriberConcern def self.included(base) base.extend(ClassMethods) end module ClassMethods # @param settings (Hash): { as_klass: nil, actions: nil, id: nil } def ps_subscribe(attrs, settings = {}) as_klass = (settings[:as_klass] || name).to_s actions = settings.delete(:actions) || %i[create update destroy] settings = settings.merge(attrs: attrs) actions.each do |action| add_ps_subscriber(as_klass, action, action, false, settings) end end def ps_class_subscribe(action, as_action: nil, as_klass: nil) add_ps_subscriber(as_klass, action, as_action, true, {}) end def ps_subscriber(action = :create) PubSubModelSync::Config.listeners.select do |listener| listener[:klass] == name && listener[:action] == action end.last end private def add_ps_subscriber(as_klass, action, as_action, direct_mode, settings) listener = { klass: name, as_klass: (as_klass || name).to_s, action: action.to_sym, as_action: (as_action || action).to_sym, direct_mode: direct_mode, settings: settings } PubSubModelSync::Config.listeners << listener end end end end
Version data entries
7 entries across 7 versions & 1 rubygems