class Dossier::Report

Attributes

options[R]
parent[RW]
query_results[R]

Public Class Methods

filename() click to toggle source
# File lib/dossier/report.rb, line 23
def self.filename
  "#{report_name.parameterize}-report_#{Time.now.strftime('%Y-%m-%d_%H-%M-%S-%Z')}"
end
inherited(base) click to toggle source
Calls superclass method
# File lib/dossier/report.rb, line 18
def self.inherited(base)
  super
  base.template = base.report_name
end
new(options = {}) click to toggle source
# File lib/dossier/report.rb, line 27
def initialize(options = {})
  @options = options.dup.with_indifferent_access
end

Public Instance Methods

display_column?(column) click to toggle source
# File lib/dossier/report.rb, line 62
def display_column?(column)
  true
end
dossier_client() click to toggle source
# File lib/dossier/report.rb, line 66
def dossier_client
  Dossier.client
end
format_column(column, value) click to toggle source
# File lib/dossier/report.rb, line 58
def format_column(column, value)
  value
end
format_header(header) click to toggle source
# File lib/dossier/report.rb, line 54
def format_header(header)
  formatter.titleize(header.to_s)
end
query() click to toggle source
# File lib/dossier/report.rb, line 35
def query
  build_query unless defined?(@query)
  @query.to_s
end
raw_results() click to toggle source
# File lib/dossier/report.rb, line 45
def raw_results
  execute unless query_results
  @raw_results ||= Result::Unformatted.new(query_results, self)
end
renderer() click to toggle source
# File lib/dossier/report.rb, line 70
def renderer
  @renderer ||= Renderer.new(self)
end
results() click to toggle source
# File lib/dossier/report.rb, line 40
def results
  execute unless query_results
  @results ||= Result::Formatted.new(query_results, self)
end
run() click to toggle source
# File lib/dossier/report.rb, line 50
def run
  tap { execute }
end
sql() click to toggle source
# File lib/dossier/report.rb, line 31
def sql
  raise NotImplementedError, "`sql` method must be defined by each report"
end

Private Instance Methods

build_query() click to toggle source
# File lib/dossier/report.rb, line 78
def build_query
  run_callbacks(:build_query) { @query = Dossier::Query.new(self) }
end
execute() click to toggle source
# File lib/dossier/report.rb, line 82
def execute
  build_query
  run_callbacks :execute do
    self.query_results = dossier_client.execute(query, self.class.name)
  end
end
query_results=(query_results) click to toggle source
# File lib/dossier/report.rb, line 89
def query_results=(query_results)
  @query_results = query_results.freeze
end