Module: Graphiti::Resource::Persistence

Extended by:
ActiveSupport::Concern
Included in:
Graphiti::Resource
Defined in:
lib/graphiti/resource/persistence.rb

Instance Method Summary collapse

Instance Method Details

#assign(assign_params, meta = nil, action_name = nil, model_instance: nil) ⇒ Object

model_instance is the already-built model from a previous #assign (see ResourceProxy#assign_attributes). When given, attributes are applied to it rather than to a freshly built/found model.



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/graphiti/resource/persistence.rb', line 75

def assign(assign_params, meta = nil, action_name = nil, model_instance: nil)
  # Only update strips :id (it identifies the record to find) - a create
  # payload may legitimately carry a client-supplied id to assign.
  if action_name == :update
    id = assign_params[:id]
    assign_params = assign_params.except(:id)
  end

  run_callbacks :attributes, action_name, assign_params, meta do |params|
    model_instance ||= if action_name == :update
      self.class._find(id: id).data
    else
      call_with_meta(:build, model, meta)
    end
    call_with_meta(:assign_attributes, model_instance, params, meta)
    model_instance
  end

  model_instance
end

#assign_attributes(model_instance, update_params, meta = nil) ⇒ Object



140
141
142
# File 'lib/graphiti/resource/persistence.rb', line 140

def assign_attributes(model_instance, update_params, meta = nil)
  adapter.assign_attributes(model_instance, update_params)
end

#build(model, meta = nil) ⇒ Object



136
137
138
# File 'lib/graphiti/resource/persistence.rb', line 136

def build(model, meta = nil)
  adapter.build(model)
end

#create(create_params, meta = nil, assigned_model: nil) ⇒ Object

Attributes are assigned before the persistence callbacks fire, so around_persistence receives the assigned model - its pre-yield position is the last chance to touch the model before save, inside the transaction. Modify attributes in before_attributes instead.



100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/graphiti/resource/persistence.rb', line 100

def create(create_params, meta = nil, assigned_model: nil)
  model_instance = assigned_model || assign(create_params, meta, :create)

  run_callbacks :persistence, :create, model_instance, meta do
    run_callbacks :save, :create, model_instance, meta do
      model_instance = call_with_meta(:save, model_instance, meta)
    end

    model_instance
  end

  model_instance
end

#delete(model_instance, meta = nil) ⇒ Object



148
149
150
# File 'lib/graphiti/resource/persistence.rb', line 148

def delete(model_instance, meta = nil)
  adapter.destroy(model_instance)
end

#destroy(id, meta = nil) ⇒ Object



128
129
130
131
132
133
134
# File 'lib/graphiti/resource/persistence.rb', line 128

def destroy(id, meta = nil)
  model_instance = self.class._find(id: id).data
  run_callbacks :destroy, :destroy, model_instance, meta do
    call_with_meta(:delete, model_instance, meta)
  end
  model_instance
end

#save(model_instance, meta = nil) ⇒ Object



144
145
146
# File 'lib/graphiti/resource/persistence.rb', line 144

def save(model_instance, meta = nil)
  adapter.save(model_instance)
end

#update(update_params, meta = nil, assigned_model: nil) ⇒ Object



114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/graphiti/resource/persistence.rb', line 114

def update(update_params, meta = nil, assigned_model: nil)
  model_instance = assigned_model || assign(update_params, meta, :update)

  run_callbacks :persistence, :update, model_instance, meta do
    run_callbacks :save, :update, model_instance, meta do
      model_instance = call_with_meta(:save, model_instance, meta)
    end

    model_instance
  end

  model_instance
end