Module: Queries::Concerns::Depictions

Extended by:
ActiveSupport::Concern
Included in:
Queries::CollectingEvent::Filter, Queries::Content::Filter, Descriptor::Filter, Observation::Filter, Otu::Filter
Defined in:
lib/queries/concerns/depictions.rb

Overview

Helpers and facets for queries that reference Depictions/Images

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.merge_clausesObject



63
64
65
66
67
68
69
# File 'lib/queries/concerns/depictions.rb', line 63

def self.merge_clauses
  [
    :image_query_facet,
    :image_id_facet,
    :images_facet
  ]
end

.paramsObject



6
7
8
9
10
11
12
13
# File 'lib/queries/concerns/depictions.rb', line 6

def self.params
  [ 
    :image_id,
    :images,
    # :depictions ?
    image_id: []
  ]
end

Instance Method Details

#image_id_facetObject

Returns all sources that match all _and ids OR any OR id.

Returns:

  • all sources that match all _and ids OR any OR id



37
38
39
40
# File 'lib/queries/concerns/depictions.rb', line 37

def image_id_facet
  return nil if image_id.empty?
  referenced_klass.joins(:depictions).where(depictions: {image_id: image_id})
end

#image_query_facetObject



51
52
53
54
55
56
57
58
59
60
61
# File 'lib/queries/concerns/depictions.rb', line 51

def image_query_facet
  return nil if image_query.nil?
  s = 'WITH query_images AS (' + image_query.all.to_sql + ')' 

  s << ' ' + referenced_klass
  .joins(:depictions)
  .joins('JOIN query_images as query_images1 on depictions.image_id = query_images1.id')
  .to_sql

  referenced_klass.from('(' + s + ') as ' + referenced_klass.name.tableize) 
end

#images_facetObject



42
43
44
45
46
47
48
49
# File 'lib/queries/concerns/depictions.rb', line 42

def images_facet
  return nil if images.nil?
  if images
    return referenced_klass.joins(:depictions).distinct
  else
    return referenced_klass.where.missing(:depictions)
  end
end

#set_depiction_params(params) ⇒ Object



30
31
32
33
# File 'lib/queries/concerns/depictions.rb', line 30

def set_depiction_params(params)
  @image_id = params[:image_id]
  @images = boolean_param(params, :images)
end