Class: Valkyrie::Sequel::Persister

Inherits:
Object
  • Object
show all
Defined in:
lib/valkyrie/sequel/persister.rb

Defined Under Namespace

Classes: SaveAllPersister

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(adapter:) ⇒ Persister

Returns a new instance of Persister.



7
8
9
# File 'lib/valkyrie/sequel/persister.rb', line 7

def initialize(adapter:)
  @adapter = adapter
end

Instance Attribute Details

#adapterObject (readonly)

Returns the value of attribute adapter.



4
5
6
# File 'lib/valkyrie/sequel/persister.rb', line 4

def adapter
  @adapter
end

Instance Method Details

#delete(resource:) ⇒ Object



115
116
117
118
# File 'lib/valkyrie/sequel/persister.rb', line 115

def delete(resource:)
  resources.where(id: resource.id.to_s).delete
  resource
end

#save(resource:, external_resource: false) ⇒ Object



11
12
13
14
15
# File 'lib/valkyrie/sequel/persister.rb', line 11

def save(resource:, external_resource: false)
  object_attributes = resource_factory.from_resource(resource: resource)
  output = create_or_update(resource: resource, attributes: object_attributes, external_resource: external_resource)
  resource_factory.to_resource(object: output)
end

#save_all(resources:) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/valkyrie/sequel/persister.rb', line 17

def save_all(resources:)
  connection.transaction do
    output = SaveAllPersister::Factory.new(persister: self).for(resources: resources).persist!
    raise Valkyrie::Persistence::StaleObjectError, "One or more resources have been updated by another process." if output.length != resources.length
    output.map do |object|
      resource_factory.to_resource(object: object)
    end
  end
end

#wipe!Object



120
121
122
# File 'lib/valkyrie/sequel/persister.rb', line 120

def wipe!
  resources.delete
end