Module: ApiMaker::ModelExtensions::ClassMethods

Defined in:
lib/api_maker/model_extensions.rb

Instance Method Summary collapse

Instance Method Details

#api_maker_broadcast_create_channel_nameObject



13
14
15
# File 'lib/api_maker/model_extensions.rb', line 13

def api_maker_broadcast_create_channel_name
  @api_maker_broadcast_create_channel_name ||= "api_maker_creates_#{api_maker_resource.short_name}"
end

#api_maker_broadcast_createsObject



7
8
9
10
11
# File 'lib/api_maker/model_extensions.rb', line 7

def api_maker_broadcast_creates
  after_commit on: :create do |model| # rubocop:disable Style/SymbolProc
    model.api_maker_broadcast_create
  end
end

#api_maker_broadcast_destroy_channel_name(id) ⇒ Object



17
18
19
# File 'lib/api_maker/model_extensions.rb', line 17

def api_maker_broadcast_destroy_channel_name(id)
  "api_maker_destroys_#{api_maker_resource.short_name}_#{id}"
end

#api_maker_broadcast_destroysObject



35
36
37
38
39
# File 'lib/api_maker/model_extensions.rb', line 35

def api_maker_broadcast_destroys
  after_commit on: :destroy do |model| # rubocop:disable Style/SymbolProc
    model.api_maker_broadcast_destroy
  end
end

#api_maker_broadcast_update_channel_name(id) ⇒ Object



25
26
27
# File 'lib/api_maker/model_extensions.rb', line 25

def api_maker_broadcast_update_channel_name(id)
  "api_maker_updates_#{api_maker_resource.short_name}_#{id}"
end

#api_maker_broadcast_updatesObject



29
30
31
32
33
# File 'lib/api_maker/model_extensions.rb', line 29

def api_maker_broadcast_updates
  after_commit on: :update do |model| # rubocop:disable Style/SymbolProc
    model.api_maker_broadcast_update
  end
end

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



41
42
43
44
45
46
47
48
49
50
51
# File 'lib/api_maker/model_extensions.rb', line 41

def api_maker_event(event_name, args = {})
  channel_name = api_maker_model_class_event_name(event_name)
  resource = ApiMaker::MemoryStorage.current.resource_for_model(self)
  data_to_broadcast = ApiMaker::ResultParser.parse(
    a: args,
    e: event_name,
    mt: resource.collection_name,
    t: :mce
  )
  ActionCable.server.broadcast(channel_name, data_to_broadcast)
end

#api_maker_event_channel_name(id, event_name) ⇒ Object



21
22
23
# File 'lib/api_maker/model_extensions.rb', line 21

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

#api_maker_model_class_event_name(event_name) ⇒ Object



53
54
55
# File 'lib/api_maker/model_extensions.rb', line 53

def api_maker_model_class_event_name(event_name)
  "api_maker_model_class_events_#{api_maker_resource.short_name}_#{event_name}"
end

#api_maker_resourceObject



57
58
59
# File 'lib/api_maker/model_extensions.rb', line 57

def api_maker_resource
  @api_maker_resource ||= ApiMaker::MemoryStorage.current.resource_for_model(self)
end

#translated_collection(collection_name, &blk) ⇒ Object



61
62
63
64
65
66
67
# File 'lib/api_maker/model_extensions.rb', line 61

def translated_collection(collection_name, &blk)
  ApiMaker::TranslatedCollections.add(
    blk: blk,
    collection_name: collection_name,
    model_class: self
  )
end