module LinkedRails::Model::Serialization::ClassMethods

Public Instance Methods

attributes_from_filters(filters) click to toggle source
# File lib/linked_rails/model/serialization.rb, line 19
def attributes_from_filters(filters)
  filters.each_with_object({}) do |(key, value), hash|
    next unless value.count == 1

    attribute = predicate_mapping[key]&.key
    hash[attribute] = value.first if attribute
  end
end
include_in_collection?() click to toggle source
# File lib/linked_rails/model/serialization.rb, line 28
def include_in_collection?
  false
end
includes_for_serializer() click to toggle source

The associations to preload when serializing multiple records

# File lib/linked_rails/model/serialization.rb, line 37
def includes_for_serializer
  {}
end
input_select_property() click to toggle source
# File lib/linked_rails/model/serialization.rb, line 32
def input_select_property
  Vocab.schema.name
end
predicate_for_key(key) click to toggle source
# File lib/linked_rails/model/serialization.rb, line 41
def predicate_for_key(key)
  return if key.blank?

  predicate_mapping.detect { |_key, value| value.key.to_sym == key.to_sym }&.first ||
    predicate_for_key(try(:attribute_aliases)&.key(key.to_s))
end
predicate_mapping() click to toggle source
# File lib/linked_rails/model/serialization.rb, line 48
def predicate_mapping
  @predicate_mapping ||= Hash[attribute_mapping + reflection_mapping]
end
preview_includes() click to toggle source

The associations to include when serializing multiple records

# File lib/linked_rails/model/serialization.rb, line 53
def preview_includes
  []
end
show_includes() click to toggle source

The associations to include when serializing one record

# File lib/linked_rails/model/serialization.rb, line 58
def show_includes
  preview_includes
end

Private Instance Methods

attribute_mapping() click to toggle source
# File lib/linked_rails/model/serialization.rb, line 64
def attribute_mapping
  serializer = RDF::Serializers.serializer_for(self)
  return [] if serializer.try(:attributes_to_serialize).blank?

  serializer
    .attributes_to_serialize
    .values
    .select { |attr| attr.predicate.present? }
    .map { |attr| [attr.predicate, attr] }
end
reflection_mapping() click to toggle source
# File lib/linked_rails/model/serialization.rb, line 75
def reflection_mapping
  serializer = RDF::Serializers.serializer_for(self)
  return [] if serializer.try(:relationships_to_serialize).blank?

  serializer
    .relationships_to_serialize
    .values
    .select { |value| value.predicate.present? }
    .map { |value| [value.predicate, value] }
end