module Card::Query::CardQuery::FoundBy

nest independent query

Public Instance Methods

found_by(val) click to toggle source
# File lib/card/query/card_query/found_by.rb, line 6
def found_by val
  found_by_cards(val).compact.each do |card|
    subquery found_by_subquery(card)
  end
end

Private Instance Methods

fetch_found_by_cards(val) click to toggle source
# File lib/card/query/card_query/found_by.rb, line 35
def fetch_found_by_cards val
  Array.wrap(val).map do |v|
    Card.fetch v.to_name.absolute(context), new: {}
  end
end
found_by_cards(val) click to toggle source
# File lib/card/query/card_query/found_by.rb, line 27
def found_by_cards val
  if val.is_a? Hash
    Query.run val
  else
    fetch_found_by_cards val
  end
end
found_by_statement(card) click to toggle source
# File lib/card/query/card_query/found_by.rb, line 18
def found_by_statement card
  card&.try(:cql_hash) || invalid_found_by_card!(card)
end
found_by_subquery(card) click to toggle source
# File lib/card/query/card_query/found_by.rb, line 14
def found_by_subquery card
  found_by_statement(card).merge(fasten: :direct, context: card.name)
end
invalid_found_by_card!(card) click to toggle source
# File lib/card/query/card_query/found_by.rb, line 22
def invalid_found_by_card! card
  raise Card::Error::BadQuery, '"found_by" value must be valid Search, ' \
                               "but #{card.name} is a #{card.type_name}"
end