Class: Queris::QueryStore::Metaquery

Inherits:
Queris::QuerisModelQuery show all
Defined in:
lib/queris/query_store.rb

Constant Summary

Constants inherited from Queris::Query

Queris::Query::MINIMUM_QUERY_TTL

Instance Attribute Summary

Attributes inherited from Queris::QuerisModelQuery

#params

Attributes inherited from Queris::Query

#created_at, #model, #ops, #params, #redis_prefix, #run_id, #sort_ops, #subqueries, #temp_key_ttl, #timer, #ttl

Instance Method Summary collapse

Methods inherited from Queris::Query

#add_temp_key, #all_index_keys, #all_indices, #all_live_indices, #all_query_keys, #all_subqueries, #count, #delta, #diff, #each_operand, #each_subquery, #explain, #first_result, #flush, #gather_ready_data, #id, #indices, #info, #intersect, #json_redis_dump, #key, #key_size, #live!, #live=, #live?, #marshal_dump, #marshal_load, #marshaled, #member?, #no_optimize!, #pageable!, #pageable?, #paged?, #param, #profiler, #query_run_stage_begin, #query_run_stage_inspect, #query_run_stage_prepare, #query_run_stage_release, #query_run_stage_reserve, #query_run_stage_run, #range, #raw_results, #ready?, #realtime!, #realtime?, #resort, #result, #result_score, #result_scores, #results, #results_key, #run, #run_callbacks, #run_pipeline, #run_stage, #runstate_key, #runstate_keys, #sort, #sort_mult, #sort_score, #sortby, #sorting_by, #sorting_by?, #static!, #static?, #structure, #subquery, #subquery_id, #temp_keys, #to_s, #trace, #trace!, #trace?, #undo, #union, #unpageable!, #update, #usable_as_results?, #use_page, #use_redis, #uses_index?, #uses_index_as_results_key?, #volatile_query_keys

Constructor Details

#initialize(model, arg = {}) ⇒ Metaquery

Returns a new instance of Metaquery.



95
96
97
98
99
# File 'lib/queris/query_store.rb', line 95

def initialize(model, arg={})
  @target_model = arg[:target_model]
  arg[:profiler] = Queris::DummyProfiler.new
  super model, arg
end

Instance Method Details

#exists?Boolean

Returns:

  • (Boolean)


125
126
127
# File 'lib/queris/query_store.rb', line 125

def exists?
  super(redis)
end

#redisObject



103
104
105
106
107
108
109
# File 'lib/queris/query_store.rb', line 103

def redis
  if model == QueryStore
    Queris.redis :'metaquery:metaquery'
  else
    @redis || Queris::redis(:'metaquery:slave') || redis_master
  end
end

#redis_masterObject



100
101
102
# File 'lib/queris/query_store.rb', line 100

def redis_master
  Queris.redis(model == QueryStore ? :'metaquery:metaquery' : :metaquery)
end

#results_with_gcObject



111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/queris/query_store.rb', line 111

def results_with_gc
  res = results(:replace_command => true) do |cmd, key, first, last, rangeopt|
    redis.evalsha(Queris.script_hash(:results_with_ttl), [key], ["Queris:Metaquery:expire:%s"])
  end
  res = [[],[]] if res.empty?
  res.first.map! do |marshaled|
    QueryStore.load marshaled
  end
  #garbage-collect the expired stuff
  res.last.each do |marshaled|
    QueryStore.remove QueryStore.load(marshaled)
  end
  res.first
end

#set_param_from_index(*arg) ⇒ Object



128
# File 'lib/queris/query_store.rb', line 128

def set_param_from_index(*arg); self; end