module Zen::Query::ApiMethods

Public Instance Methods

alias_subject_name(name) click to toggle source
# File lib/zen/query/api_methods.rb, line 6
def alias_subject_name(name)
  @subject_name = name

  define_singleton_method(name) { |&block| subject(&block) }

  alias_method(name, :subject)
end
defaults(&block) click to toggle source
# File lib/zen/query/api_methods.rb, line 32
def defaults(&block)
  return @defaults_block unless block_given?

  @defaults_block = block
end
fetch_defaults() click to toggle source
# File lib/zen/query/api_methods.rb, line 38
def fetch_defaults
  ancestors
    .select { |mod| mod.respond_to?(:defaults) }
    .map(&:defaults)
    .compact
    .reduce({}) { |result, block| result.merge!(block.call) }
end
guard(message = nil, &block) click to toggle source
# File lib/zen/query/api_methods.rb, line 94
def guard(message = nil, &block)
  guard_blocks.push([message, block])
end
guard_blocks() click to toggle source
# File lib/zen/query/api_methods.rb, line 106
def guard_blocks
  @guard_blocks ||= []
end
query(*presence_fields, **value_fields, &block)
Alias for: query_by
query!(*presence_fields, &block)
Alias for: query_by!
query_blocks() click to toggle source
# File lib/zen/query/api_methods.rb, line 102
def query_blocks
  @query_blocks ||= []
end
query_by(*presence_fields, **value_fields, &block) click to toggle source
# File lib/zen/query/api_methods.rb, line 56
def query_by(*presence_fields, **value_fields, &block)
  query_blocks.push(
    Query::ApiBlock.new(
      presence_fields: presence_fields,
      value_fields: value_fields,
      block: block
    )
  )
end
Also aliased as: query
query_by!(*presence_fields, &block) click to toggle source
# File lib/zen/query/api_methods.rb, line 80
def query_by!(*presence_fields, &block)
  query_blocks.push(
    Query::ApiBlock.new(
      presence_fields: presence_fields,
      value_fields: {},
      block: block,
      force: true
    )
  )
end
Also aliased as: query!
raise_on_guard_violation(value) click to toggle source
# File lib/zen/query/api_methods.rb, line 18
def raise_on_guard_violation(value)
  @raise_on_guard_violation = !!value
end
raise_on_guard_violation?() click to toggle source
# File lib/zen/query/api_methods.rb, line 22
def raise_on_guard_violation?
  @raise_on_guard_violation
end
sift_blocks() click to toggle source
# File lib/zen/query/api_methods.rb, line 98
def sift_blocks
  @sift_blocks ||= []
end
sift_by(*presence_fields, **value_fields, &block) click to toggle source
# File lib/zen/query/api_methods.rb, line 46
def sift_by(*presence_fields, **value_fields, &block)
  sift_blocks.push(
    Query::ApiBlock.new(
      presence_fields: presence_fields,
      value_fields: value_fields,
      block: block
    )
  )
end
Also aliased as: sifter
sift_by!(*presence_fields, &block) click to toggle source
# File lib/zen/query/api_methods.rb, line 69
def sift_by!(*presence_fields, &block)
  sift_blocks.push(
    Query::ApiBlock.new(
      presence_fields: presence_fields,
      value_fields: {},
      block: block,
      force: true
    )
  )
end
Also aliased as: sifter!
sifter(*presence_fields, **value_fields, &block)
Alias for: sift_by
sifter!(*presence_fields, &block)
Alias for: sift_by!
sorted_query_blocks() click to toggle source
# File lib/zen/query/api_methods.rb, line 110
def sorted_query_blocks
  query_blocks.sort do |a, b|
    if a.index == b.index
      query_blocks.index(a) <=> query_blocks.index(b)
    else
      a.index <=> b.index
    end
  end
end
subject(&block) click to toggle source
# File lib/zen/query/api_methods.rb, line 26
def subject(&block)
  return @subject_block unless block_given?

  @subject_block = block
end
subject_name() click to toggle source
# File lib/zen/query/api_methods.rb, line 14
def subject_name
  @subject_name || :subject
end