Class: Compendium::Query

Inherits:
Object
  • Object
show all
Defined in:
lib/compendium/query.rb

Direct Known Subclasses

CollectionQuery, Presenters::Chart, ThroughQuery

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Query

Returns a new instance of Query.

Raises:

  • (ArgumentError)


13
14
15
16
17
18
19
20
# File 'lib/compendium/query.rb', line 13

def initialize(*args)
  @report = args.shift if arg_is_report?(args.first)

  raise ArgumentError, "wrong number of arguments (#{args.size + (@report ? 1 : 0)} for 3..4)" unless args.size == 3

  @name, @options, @proc = args
  @metrics = ::Collection[Metric]
end

Instance Attribute Details

#metricsObject (readonly)

Returns the value of attribute metrics.



10
11
12
# File 'lib/compendium/query.rb', line 10

def metrics
  @metrics
end

#nameObject (readonly)

Returns the value of attribute name.



10
11
12
# File 'lib/compendium/query.rb', line 10

def name
  @name
end

#optionsObject

Returns the value of attribute options.



11
12
13
# File 'lib/compendium/query.rb', line 11

def options
  @options
end

#procObject

Returns the value of attribute proc.



11
12
13
# File 'lib/compendium/query.rb', line 11

def proc
  @proc
end

#reportObject

Returns the value of attribute report.



11
12
13
# File 'lib/compendium/query.rb', line 11

def report
  @report
end

#resultsObject (readonly)

Returns the value of attribute results.



10
11
12
# File 'lib/compendium/query.rb', line 10

def results
  @results
end

Instance Method Details

#add_metric(name, proc, options = {}) ⇒ Object



34
35
36
# File 'lib/compendium/query.rb', line 34

def add_metric(name, proc, options = {})
  Compendium::Metric.new(name, self.name, proc, options).tap { |m| @metrics << m }
end

#empty?Boolean

A query is empty if it has no results

Returns:

  • (Boolean)


57
58
59
# File 'lib/compendium/query.rb', line 57

def empty?
  results.empty?
end

#initialize_cloneObject



22
23
24
25
# File 'lib/compendium/query.rb', line 22

def initialize_clone(*)
  super
  @metrics = @metrics.clone
end

#nil?Boolean

A query is nil if it has no proc

Returns:

  • (Boolean)


52
53
54
# File 'lib/compendium/query.rb', line 52

def nil?
  proc.nil?
end

#ran?Boolean Also known as: has_run?

Returns:

  • (Boolean)


46
47
48
# File 'lib/compendium/query.rb', line 46

def ran?
  !@results.nil?
end

#render_chart(template, *options, &block) ⇒ Object



42
43
44
# File 'lib/compendium/query.rb', line 42

def render_chart(template, *options, &block)
  Compendium::Presenters::Chart.new(template, self, *options, &block).render unless empty?
end

#render_table(template, *options, &block) ⇒ Object



38
39
40
# File 'lib/compendium/query.rb', line 38

def render_table(template, *options, &block)
  Compendium::Presenters::Table.new(template, self, *options, &block).render unless empty?
end

#run(params, context = self) ⇒ Object



27
28
29
30
31
32
# File 'lib/compendium/query.rb', line 27

def run(params, context = self)
  collect_results(context, params)
  collect_metrics(context)

  @results
end