Class: Chartable::Queries::Weekly
- Inherits:
-
Object
- Object
- Chartable::Queries::Weekly
- Defined in:
- lib/chartable/queries/weekly.rb
Class Method Summary collapse
-
.call(scope, on:, order:) ⇒ Hash
It returns analytics data for the weekly period.
Class Method Details
.call(scope, on:, order:) ⇒ Hash
It returns analytics data for the weekly period. Example output: ‘- 02/03/2018” => 1, “02/11/2018 - 02/17/2018” => 1`
8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/chartable/queries/weekly.rb', line 8 def self.call(scope, on:, order:) if ActiveRecord::Base.connection.class.to_s.match(/postgresql/i) scope .group(Arel.sql("concat(to_char(date_trunc('week', #{on}) + '-1 day', 'MM/DD/YYYY'), ' - ', to_char(date_trunc('week', #{on}) + '5 days', 'MM/DD/YYYY'))")) .order(Arel.sql("concat(to_char(date_trunc('week', #{on}) + '-1 day', 'MM/DD/YYYY'), ' - ', to_char(date_trunc('week', #{on}) + '5 days', 'MM/DD/YYYY')) #{order}")).size else scope .group(Arel.sql("CONCAT(DATE_FORMAT(DATE(DATE_ADD(#{on}, INTERVAL(1-DAYOFWEEK(#{on})) DAY)), '%m/%d/%Y'), ' - ', DATE_FORMAT(DATE(DATE_ADD(#{on}, INTERVAL(7-DAYOFWEEK(#{on})) DAY)),'%m/%d/%Y'))")) .order(Arel.sql("CONCAT(DATE_FORMAT(DATE(DATE_ADD(#{on}, INTERVAL(1-DAYOFWEEK(#{on})) DAY)), '%m/%d/%Y'), ' - ', DATE_FORMAT(DATE(DATE_ADD(#{on}, INTERVAL(7-DAYOFWEEK(#{on})) DAY)),'%m/%d/%Y')) #{order}")).size end end |