class Rack::Queries::Cache
Attributes
cache[R]
Public Class Methods
instance()
click to toggle source
# File lib/rack/queries/cache.rb, line 104 def instance @instance ||= new end
new()
click to toggle source
# File lib/rack/queries/cache.rb, line 61 def initialize @cache = [] end
Public Instance Methods
add(*queries)
click to toggle source
# File lib/rack/queries/cache.rb, line 65 def add(*queries) queries.each do |query| opts = {} (query.public_instance_methods(false) - %i[run]).each do |name| opts[name] = SelectOption.new(name) end query.define_singleton_method(:opts) { opts } end @cache = (cache + queries).sort_by(&:name) end
create(&block)
click to toggle source
# File lib/rack/queries/cache.rb, line 79 def create(&block) query = Class.new(CreateQuery, &block) @cache = (cache << query).sort_by(&:name) end
opts_for(name, opt)
click to toggle source
# File lib/rack/queries/cache.rb, line 84 def opts_for(name, opt) query = query_for(name) query.new.public_send(opt) if query end
queries()
click to toggle source
# File lib/rack/queries/cache.rb, line 89 def queries cache.map do |query| desc = query.respond_to?(:desc) ? query.desc : '' opts = query.respond_to?(:opts) ? query.opts.values.map(&:as_json) : [] { name: query.name, desc: desc, opts: opts } end end
query_for(name)
click to toggle source
# File lib/rack/queries/cache.rb, line 99 def query_for(name) cache.detect { |query| query.name == name } end