Module: Spotlight::SolrDocument
  
  
  
  
  
  
  
      - Extended by:
 
      - ActiveSupport::Concern
 
  
  
  
  
  
      - Includes:
 
      - GlobalID::Identification, Finder
 
  
  
  
  
  
  
    - Defined in:
 
    - app/models/concerns/spotlight/solr_document.rb,
  app/models/concerns/spotlight/solr_document/finder.rb,
 app/models/concerns/spotlight/solr_document/atomic_updates.rb,
 app/models/concerns/spotlight/solr_document/uploaded_resource.rb
 
  
  
 
Overview
  
    
SolrDocument mixins to add ActiveModel shims and indexing methods
   
 
  
Defined Under Namespace
  
    
      Modules: AtomicUpdates, ClassMethods, Finder, UploadedResource
    
  
    
  
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  
  
  Methods included from Finder
  #==, #blacklight_solr
  
  
    Instance Method Details
    
      
  
  
    #attribute_present?(*_args)  ⇒ Boolean 
  
  
  
  
    
      
120
121
122 
     | 
    
      # File 'app/models/concerns/spotlight/solr_document.rb', line 120
def attribute_present?(*_args)
  false
end 
     | 
  
 
    
      
  
  
    #make_private!(exhibit)  ⇒ Object 
  
  
  
  
    
      
103
104
105 
     | 
    
      # File 'app/models/concerns/spotlight/solr_document.rb', line 103
def make_private!(exhibit)
  sidecar(exhibit).private!
end 
     | 
  
 
    
      
  
  
    #make_public!(exhibit)  ⇒ Object 
  
  
  
  
    
      
99
100
101 
     | 
    
      # File 'app/models/concerns/spotlight/solr_document.rb', line 99
def make_public!(exhibit)
  sidecar(exhibit).public!
end 
     | 
  
 
    
      
  
  
    #private?(exhibit)  ⇒ Boolean 
  
  
  
  
    
      
107
108
109 
     | 
    
      # File 'app/models/concerns/spotlight/solr_document.rb', line 107
def private?(exhibit)
  !public?(exhibit)
end 
     | 
  
 
    
      
  
  
    #public?(exhibit)  ⇒ Boolean 
  
  
  
  
    
      
111
112
113 
     | 
    
      # File 'app/models/concerns/spotlight/solr_document.rb', line 111
def public?(exhibit)
  sidecar(exhibit).public?
end 
     | 
  
 
    
      
  
  
    #reindex  ⇒ Object 
  
  
  
  
    
      
81
82
83 
     | 
    
      # File 'app/models/concerns/spotlight/solr_document.rb', line 81
def reindex
  end 
     | 
  
 
    
      
  
  
    #save  ⇒ Object 
  
  
  
  
    
      
71
72
73 
     | 
    
      # File 'app/models/concerns/spotlight/solr_document.rb', line 71
def save
  reindex
end 
     | 
  
 
    
      
  
  
    #sidecar(exhibit)  ⇒ Object 
  
  
  
  
    
      
89
90
91 
     | 
    
      # File 'app/models/concerns/spotlight/solr_document.rb', line 89
def sidecar(exhibit)
  sidecars.find_or_initialize_by exhibit:, document_id: id, document_type: self.class.to_s
end 
     | 
  
 
    
      
  
  
    #sidecars  ⇒ Object 
  
  
  
  
    
      
85
86
87 
     | 
    
      # File 'app/models/concerns/spotlight/solr_document.rb', line 85
def sidecars
  Spotlight::SolrDocumentSidecar.where(document_id: id, document_type: self.class.to_s)
end 
     | 
  
 
    
      
  
  
    #to_solr  ⇒ Object 
  
  
  
  
    
      
93
94
95
96
97 
     | 
    
      # File 'app/models/concerns/spotlight/solr_document.rb', line 93
def to_solr
  { self.class.unique_key.to_sym => id }.reverse_merge(sidecars.inject({}) { |acc, elem| acc.merge(elem.to_solr) })
                                        .merge(tags_to_solr)
                                        .merge(exhibits_to_solr)
end
     | 
  
 
    
      
  
  
    #update(current_exhibit, new_attributes)  ⇒ Object 
  
  
  
  
    
      
56
57
58
59
60
61
62
63
64
65
66
67
68
69 
     | 
    
      # File 'app/models/concerns/spotlight/solr_document.rb', line 56
def update(current_exhibit, new_attributes)
  attributes = convert_incoming_attributes(new_attributes)
  custom_data = attributes.delete('sidecar')
  tags = attributes.delete('exhibit_tag_list')
  resource_attributes = attributes.delete('uploaded_resource')
  sidecar(current_exhibit).update(custom_data) if custom_data
    current_exhibit.tag(sidecar(current_exhibit), with: tags, on: :tags) if tags
  update_exhibit_resource(resource_attributes) if uploaded_resource?
end
     | 
  
 
    
      
  
  
    #update_exhibit_resource(resource_attributes)  ⇒ Object 
  
  
  
  
    
      
75
76
77
78
79 
     | 
    
      # File 'app/models/concerns/spotlight/solr_document.rb', line 75
def update_exhibit_resource(resource_attributes)
  return unless resource_attributes && resource_attributes['url']
  uploaded_resource.upload.update image: resource_attributes['url']
end 
     | 
  
 
    
      
  
  
    #uploaded_resource?  ⇒ Boolean 
  
  
  
  
    
      
115
116
117
118 
     | 
    
      # File 'app/models/concerns/spotlight/solr_document.rb', line 115
def uploaded_resource?
  self[self.class.resource_type_field].present? &&
    self[self.class.resource_type_field].include?('spotlight/resources/uploads')
end
     |