Class: Hyrax::CustomQueries::Navigators::ParentCollectionsNavigator

Inherits:
Object
  • Object
show all
Defined in:
app/services/hyrax/custom_queries/navigators/parent_collections_navigator.rb

Overview

Navigate from a resource to the parent collections of the resource.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(query_service:) ⇒ ParentCollectionsNavigator

Returns a new instance of ParentCollectionsNavigator.

Since:

  • 3.0.0



19
20
21
# File 'app/services/hyrax/custom_queries/navigators/parent_collections_navigator.rb', line 19

def initialize(query_service:)
  @query_service = query_service
end

Instance Attribute Details

#query_serviceObject (readonly)

Since:

  • 3.0.0



17
18
19
# File 'app/services/hyrax/custom_queries/navigators/parent_collections_navigator.rb', line 17

def query_service
  @query_service
end

Class Method Details

.queriesObject

Define the queries that can be fulfilled by this navigator.

Since:

  • 3.0.0



13
14
15
# File 'app/services/hyrax/custom_queries/navigators/parent_collections_navigator.rb', line 13

def self.queries
  [:find_parent_collections, :find_parent_collection_ids]
end

Instance Method Details

#find_parent_collection_ids(resource:) ⇒ Array<Valkyrie::ID>

Find the ids of parent collections of a given resource, and map to Valkyrie Resources IDs

Parameters:

  • resource (Valkyrie::Resource)

Returns:

  • (Array<Valkyrie::ID>)

Since:

  • 3.0.0



40
41
42
# File 'app/services/hyrax/custom_queries/navigators/parent_collections_navigator.rb', line 40

def find_parent_collection_ids(resource:)
  resource.member_of_collection_ids
end

#find_parent_collections(resource:) ⇒ Array<Valkyrie::Resource>

Find parent collections of a given resource, and map to Valkyrie Resources

Parameters:

  • resource (Valkyrie::Resource)

Returns:

  • (Array<Valkyrie::Resource>)

Since:

  • 3.0.0



29
30
31
32
# File 'app/services/hyrax/custom_queries/navigators/parent_collections_navigator.rb', line 29

def find_parent_collections(resource:)
  query_service
    .find_many_by_ids(ids: find_parent_collection_ids(resource: resource))
end