Sha256: 5c3103c02e9dc12b717fe8cfcc76d3c21ee8e333efdee29548fd870ef78867c9
Contents?: true
Size: 1.24 KB
Versions: 2
Compression:
Stored size: 1.24 KB
Contents
# frozen_string_literal: true module PubSubModelSync class Publisher attr_accessor :connector def initialize @connector = PubSubModelSync::Connector.new end def publish_data(klass, data, action) attributes = self.class.build_attrs(klass, action) connector.publish(data, attributes) end # @param settings (Hash): { attrs: [], as_klass: nil, id: nil } def publish_model(model, action, settings = nil) settings ||= model.class.ps_msync_publisher_settings attributes = build_model_attrs(model, action, settings) data = {} if action != 'destroy' data = model.as_json(only: settings[:attrs], methods: settings[:attrs]) end connector.publish(data.symbolize_keys, attributes) end def self.build_attrs(klass, action, id = nil) { klass: klass.to_s, action: action.to_sym, id: id, service_model_sync: true } end private def build_model_attrs(model, action, settings) as_klass = (settings[:as_klass] || model.class.name).to_s id_val = model.send(settings[:id] || :id) self.class.build_attrs(as_klass, action, id_val) end def log(msg) PubSubModelSync::Config.log(msg) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
pub_sub_model_sync-0.1.2 | lib/pub_sub_model_sync/publisher.rb |
pub_sub_model_sync-0.1.1 | lib/pub_sub_model_sync/publisher.rb |