Module: LinkedRails::Helpers::DeltaHelper
- Defined in:
- lib/linked_rails/helpers/delta_helper.rb
Instance Method Summary collapse
- #change_triple(predicate, value) ⇒ Object
- #changed_relation_triples(predicate, destructed, resources) ⇒ Object
-
#changed_relations_triples ⇒ Object
rubocop:disable Metrics/AbcSize.
-
#changes_triples ⇒ Object
rubocop:disable Metrics/AbcSize, Metrics/MethodLength.
- #delta_iri(delta) ⇒ Object
- #invalidate_collection_delta(collection) ⇒ Object
- #invalidate_parent_collections_delta(resource) ⇒ Object
- #invalidate_resource_delta(resource) ⇒ Object
- #resource_added_delta(resource) ⇒ Object
- #resource_removed_delta(resource) ⇒ Object
Instance Method Details
#change_triple(predicate, value) ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/linked_rails/helpers/delta_helper.rb', line 35 def change_triple(predicate, value) if value.nil? RDF::Statement.new(current_resource.iri, predicate, Vocab.sp[:Variable], graph_name: delta_iri(:remove)) else RDF::Statement.new(current_resource.iri, predicate, value, graph_name: delta_iri(:replace)) end end |
#changed_relation_triples(predicate, destructed, resources) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/linked_rails/helpers/delta_helper.rb', line 6 def changed_relation_triples(predicate, destructed, resources) = resources.map(&method(:invalidate_resource_delta)) return unless predicate if destructed return + [ [current_resource.iri, predicate, Vocab.sp[:Variable], delta_iri(:remove)] ] end + resources.map do |resource| [current_resource.iri, predicate, resource.iri, delta_iri(:replace)] end end |
#changed_relations_triples ⇒ Object
rubocop:disable Metrics/AbcSize
22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/linked_rails/helpers/delta_helper.rb', line 22 def changed_relations_triples # rubocop:disable Metrics/AbcSize current_resource.previously_changed_relations.flat_map do |key, value| if key.to_s.ends_with?('_collection') [invalidate_collection_delta(current_resource.send(key))] else destructed = current_resource.send(:association_has_destructed?, key) many = value.relationship_type == :has_many relation = current_resource.send(key) changed_relation_triples(value.predicate, destructed, many ? relation : [relation]) end end end |
#changes_triples ⇒ Object
rubocop:disable Metrics/AbcSize, Metrics/MethodLength
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/linked_rails/helpers/delta_helper.rb', line 43 def changes_triples # rubocop:disable Metrics/AbcSize, Metrics/MethodLength serializer = RDF::Serializers.serializer_for(current_resource).new(current_resource) current_resource.previous_changes_by_predicate.map do |predicate, (_old_value, _new_value)| serializer_attributes = current_resource.class.predicate_mapping[predicate] next if serializer_attributes.is_a?(FastJsonapi::Relationship) attr_name = serializer_attributes.key serialized_value = serializer.class.attributes_to_serialize[attr_name]&.serialize(current_resource, serializer_params, {}) (serialized_value.is_a?(Array) ? serialized_value : [serialized_value]).map do |value| change_triple(predicate, value) end end.compact.flatten end |
#delta_iri(delta) ⇒ Object
59 60 61 |
# File 'lib/linked_rails/helpers/delta_helper.rb', line 59 def delta_iri(delta) i[remove replace invalidate].include?(delta) ? Vocab.ontola[delta] : Vocab.ll[delta] end |
#invalidate_collection_delta(collection) ⇒ Object
63 64 65 |
# File 'lib/linked_rails/helpers/delta_helper.rb', line 63 def invalidate_collection_delta(collection) [Vocab.sp[:Variable], Vocab.ontola[:baseCollection], collection.iri, delta_iri(:invalidate)] end |
#invalidate_parent_collections_delta(resource) ⇒ Object
67 68 69 |
# File 'lib/linked_rails/helpers/delta_helper.rb', line 67 def invalidate_parent_collections_delta(resource) resource&.parent_collections(try(:user_context))&.map(&method(:invalidate_collection_delta)) || [] end |
#invalidate_resource_delta(resource) ⇒ Object
71 72 73 74 75 |
# File 'lib/linked_rails/helpers/delta_helper.rb', line 71 def invalidate_resource_delta(resource) iri = resource.is_a?(RDF::Resource) ? resource : resource.iri [iri, Vocab.sp[:Variable], Vocab.sp[:Variable], delta_iri(:invalidate)] end |
#resource_added_delta(resource) ⇒ Object
77 78 79 |
# File 'lib/linked_rails/helpers/delta_helper.rb', line 77 def resource_added_delta(resource) invalidate_parent_collections_delta(resource) end |
#resource_removed_delta(resource) ⇒ Object
81 82 83 |
# File 'lib/linked_rails/helpers/delta_helper.rb', line 81 def resource_removed_delta(resource) invalidate_parent_collections_delta(resource) end |