Class: Valkyrie::Persistence::Fedora::Persister
- Inherits:
-
Object
- Object
- Valkyrie::Persistence::Fedora::Persister
- Defined in:
- lib/valkyrie/persistence/fedora/persister.rb,
lib/valkyrie/persistence/fedora/persister/orm_converter.rb,
lib/valkyrie/persistence/fedora/persister/model_converter.rb,
lib/valkyrie/persistence/fedora/persister/resource_factory.rb
Overview
Persister for Fedora MetadataAdapter.
Defined Under Namespace
Classes: ModelConverter, OrmConverter, ResourceFactory
Instance Attribute Summary collapse
-
#adapter ⇒ Object
readonly
Returns the value of attribute adapter.
Instance Method Summary collapse
- #delete(resource:) ⇒ Object
-
#initialize(adapter:) ⇒ Persister
constructor
A new instance of Persister.
- #initialize_repository ⇒ Object
-
#save(resource:) ⇒ Valkyrie::Resource
The resource with an ‘#id` value generated by the persistence backend.
-
#save_all(resources:) ⇒ Array<Valkyrie::Resource>
List of resources with an ‘#id` value generated by the persistence backend.
-
#wipe! ⇒ Object
Wipes all data in the persistence backend.
Constructor Details
#initialize(adapter:) ⇒ Persister
Returns a new instance of Persister.
8 9 10 |
# File 'lib/valkyrie/persistence/fedora/persister.rb', line 8 def initialize(adapter:) @adapter = adapter end |
Instance Attribute Details
#adapter ⇒ Object (readonly)
Returns the value of attribute adapter.
6 7 8 |
# File 'lib/valkyrie/persistence/fedora/persister.rb', line 6 def adapter @adapter end |
Instance Method Details
#delete(resource:) ⇒ Object
37 38 39 40 41 |
# File 'lib/valkyrie/persistence/fedora/persister.rb', line 37 def delete(resource:) orm = resource_factory.from_resource(resource: resource) orm.delete resource end |
#initialize_repository ⇒ Object
51 52 53 54 55 56 57 58 |
# File 'lib/valkyrie/persistence/fedora/persister.rb', line 51 def initialize_repository @initialized ||= begin resource = ::Ldp::Container::Basic.new(connection, base_path, nil, base_path) resource.save if resource.new? true end end |
#save(resource:) ⇒ Valkyrie::Resource
Returns The resource with an ‘#id` value generated by the persistence backend.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/valkyrie/persistence/fedora/persister.rb', line 13 def save(resource:) initialize_repository resource.created_at ||= Time.current resource.updated_at ||= Time.current ensure_multiple_values!(resource) orm = resource_factory.from_resource(resource: resource) if !orm.new? || resource.id orm.update do |req| req.headers["Prefer"] = "handling=lenient; received=\"minimal\"" end else orm.create end resource_factory.to_resource(object: orm) end |
#save_all(resources:) ⇒ Array<Valkyrie::Resource>
Returns List of resources with an ‘#id` value generated by the persistence backend.
30 31 32 33 34 |
# File 'lib/valkyrie/persistence/fedora/persister.rb', line 30 def save_all(resources:) resources.map do |resource| save(resource: resource) end end |
#wipe! ⇒ Object
Wipes all data in the persistence backend.
44 45 46 47 48 49 |
# File 'lib/valkyrie/persistence/fedora/persister.rb', line 44 def wipe! connection.delete(base_path) connection.delete("#{base_path}/fcr:tombstone") rescue => error Valkyrie.logger.debug("Failed to wipe Fedora for some reason.") unless error.is_a?(::Ldp::NotFound) end |