Module: JSONAPI::Realizer

Defined in:
lib/jsonapi/realizer.rb,
lib/jsonapi/realizer/action.rb,
lib/jsonapi/realizer/adapter.rb,
lib/jsonapi/realizer/version.rb,
lib/jsonapi/realizer/resource.rb,
lib/jsonapi/realizer/action/show.rb,
lib/jsonapi/realizer/action/index.rb,
lib/jsonapi/realizer/action/create.rb,
lib/jsonapi/realizer/action/update.rb,
lib/jsonapi/realizer/adapter/memory.rb,
lib/jsonapi/realizer/adapter/active_record.rb

Defined Under Namespace

Modules: Resource Classes: Action, Adapter

Constant Summary collapse

VERSION =
"2.0.3"

Class Method Summary collapse

Class Method Details

.create(payload, headers:) ⇒ Object



32
33
34
# File 'lib/jsonapi/realizer.rb', line 32

def self.create(payload, headers:)
  enact(Action::Create.new(payload: payload, headers: headers))
end

.index(payload, headers:, type:) ⇒ Object



44
45
46
# File 'lib/jsonapi/realizer.rb', line 44

def self.index(payload, headers:, type:)
  enact(Action::Index.new(payload: payload, headers: headers, type: type))
end

.register(resource_class:, model_class:, adapter:, type:) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/jsonapi/realizer.rb', line 12

def self.register(resource_class:, model_class:, adapter:, type:)
  @mapping ||= Set.new
  @mapping << OpenStruct.new({
    resource_class: resource_class,
    model_class: model_class,
    adapter: adapter,
    type: type.dasherize,
    attributes: OpenStruct.new({}),
    relationships: OpenStruct.new({})
   })
end

.resource_mappingObject



24
25
26
# File 'lib/jsonapi/realizer.rb', line 24

def self.resource_mapping
  @mapping.index_by(&:resource_class)
end

.show(payload, headers:, type:) ⇒ Object



40
41
42
# File 'lib/jsonapi/realizer.rb', line 40

def self.show(payload, headers:, type:)
  enact(Action::Show.new(payload: payload, headers: headers, type: type))
end

.type_mappingObject



28
29
30
# File 'lib/jsonapi/realizer.rb', line 28

def self.type_mapping
  @mapping.index_by(&:type)
end

.update(payload, headers:) ⇒ Object



36
37
38
# File 'lib/jsonapi/realizer.rb', line 36

def self.update(payload, headers:)
  enact(Action::Update.new(payload: payload, headers: headers))
end