Module: ApiMaker::ModelExtensions

Defined in:
lib/api_maker/model_extensions.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



2
3
4
# File 'lib/api_maker/model_extensions.rb', line 2

def self.included(base)
  base.extend(ClassMethods)
end

Instance Method Details

#api_maker_broadcast_createObject



51
52
53
54
55
56
57
58
59
60
61
# File 'lib/api_maker/model_extensions.rb', line 51

def api_maker_broadcast_create
  serializer = ApiMaker::Serializer.new(model: self)
  data_to_broadcast = ApiMaker::ResultParser.parse(
    model: self,
    model_class_name: self.class.name,
    model_id: id,
    model_type: serializer.resource.collection_name,
    type: :create
  )
  ActionCable.server.broadcast(self.class.api_maker_broadcast_create_channel_name, data_to_broadcast)
end

#api_maker_broadcast_destroyObject



63
64
65
66
67
68
69
70
71
72
# File 'lib/api_maker/model_extensions.rb', line 63

def api_maker_broadcast_destroy
  serializer = ApiMaker::Serializer.new(model: self)
  data_to_broadcast = ApiMaker::ResultParser.parse(
    model: self,
    model_id: id,
    model_type: serializer.resource.collection_name,
    type: :destroy
  )
  ActionCable.server.broadcast(api_maker_broadcast_destroy_channel_name, data_to_broadcast)
end

#api_maker_broadcast_destroy_channel_nameObject



74
75
76
# File 'lib/api_maker/model_extensions.rb', line 74

def api_maker_broadcast_destroy_channel_name
  @api_maker_broadcast_destroy_channel_name ||= "api_maker_destroys_#{api_maker_resource.short_name}_#{id}"
end

#api_maker_broadcast_updateObject



78
79
80
81
82
83
84
85
86
87
# File 'lib/api_maker/model_extensions.rb', line 78

def api_maker_broadcast_update
  serializer = ApiMaker::Serializer.new(model: self)
  data_to_broadcast = ApiMaker::ResultParser.parse(
    model: self,
    model_id: id,
    model_type: serializer.resource.collection_name,
    type: :update
  )
  ActionCable.server.broadcast(api_maker_broadcast_update_channel_name, data_to_broadcast)
end

#api_maker_broadcast_update_channel_nameObject



89
90
91
# File 'lib/api_maker/model_extensions.rb', line 89

def api_maker_broadcast_update_channel_name
  @api_maker_broadcast_update_channel_name ||= "api_maker_updates_#{api_maker_resource.short_name}_#{id}"
end

#api_maker_event(event_name, args = {}) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/api_maker/model_extensions.rb', line 34

def api_maker_event(event_name, args = {})
  channel_name = api_maker_event_channel_name(event_name)
  serializer = ApiMaker::Serializer.new(model: self)
  data_to_broadcast = ApiMaker::ResultParser.parse(
    args: args,
    event_name: event_name,
    model_id: id,
    model_type: serializer.resource.collection_name,
    type: :event
  )
  ActionCable.server.broadcast(channel_name, data_to_broadcast)
end

#api_maker_event_channel_name(event_name) ⇒ Object



47
48
49
# File 'lib/api_maker/model_extensions.rb', line 47

def api_maker_event_channel_name(event_name)
  "api_maker_events_#{api_maker_resource.short_name}_#{id}_#{event_name}"
end

#api_maker_resourceObject



93
94
95
# File 'lib/api_maker/model_extensions.rb', line 93

def api_maker_resource
  @api_maker_resource ||= self.class.api_maker_resource
end