Module: Spree::Report::QueryFragments

Defined in:
app/reports/spree/report/query_fragments.rb

Class Method Summary collapse

Class Method Details

.day(column, as = 'day') ⇒ Object



26
27
28
# File 'app/reports/spree/report/query_fragments.rb', line 26

def self.day(column, as='day')
  extract_from_date(:day, column, as)
end

.extract_from_date(part, column, as) ⇒ Object



34
35
36
# File 'app/reports/spree/report/query_fragments.rb', line 34

def self.extract_from_date(part, column, as)
  "EXTRACT(#{ part } from #{ column }) AS #{ as }"
end

.from_join(subquery1, subquery2, join_expr) ⇒ Object



6
7
8
# File 'app/reports/spree/report/query_fragments.rb', line 6

def self.from_join(subquery1, subquery2, join_expr)
  Arel::SelectManager.new(Arel.sql("((#{ subquery1.to_sql }) as q1 JOIN (#{ subquery2.to_sql }) as q2 ON #{ join_expr })"))
end

.from_subquery(subquery, as: 'results') ⇒ Object



2
3
4
# File 'app/reports/spree/report/query_fragments.rb', line 2

def self.from_subquery(subquery, as: 'results')
  Arel::SelectManager.new(Arel.sql("(#{subquery.to_sql}) as #{ as }"))
end

.from_union(subquery1, subquery2, as: 'results') ⇒ Object



10
11
12
# File 'app/reports/spree/report/query_fragments.rb', line 10

def self.from_union(subquery1, subquery2, as: 'results')
  Arel::SelectManager.new(Arel.sql("((#{ subquery1.to_sql }) UNION (#{ subquery2.to_sql })) as #{ as }"))
end

.hour(column, as = 'hour') ⇒ Object



30
31
32
# File 'app/reports/spree/report/query_fragments.rb', line 30

def self.hour(column, as='hour')
  extract_from_date(:hour, column, as)
end

.if_null(val, default_val) ⇒ Object



38
39
40
# File 'app/reports/spree/report/query_fragments.rb', line 38

def self.if_null(val, default_val)
  Arel::Nodes::NamedFunction.new('COALESCE', [val, default_val])
end

.month(column, as = 'month') ⇒ Object



18
19
20
# File 'app/reports/spree/report/query_fragments.rb', line 18

def self.month(column, as='month')
  extract_from_date(:month, column, as)
end

.sum(node) ⇒ Object



42
43
44
# File 'app/reports/spree/report/query_fragments.rb', line 42

def self.sum(node)
  Arel::Nodes::NamedFunction.new('SUM', [node])
end

.week(column, as = 'week') ⇒ Object



22
23
24
# File 'app/reports/spree/report/query_fragments.rb', line 22

def self.week(column, as='week')
  extract_from_date(:week, column, as)
end

.year(column, as = 'year') ⇒ Object



14
15
16
# File 'app/reports/spree/report/query_fragments.rb', line 14

def self.year(column, as='year')
  extract_from_date(:year, column, as)
end