Class: AhoyCaptain::Stats::AverageVisitDurationQuery
- Inherits:
-
BaseQuery
show all
- Defined in:
- app/queries/ahoy_captain/stats/average_visit_duration_query.rb
Instance Attribute Summary
#params
Class Method Summary
collapse
Instance Method Summary
collapse
#with_lazy_comparison
#with_comparison
call, inherited, #initialize, #inspect
Class Method Details
.cast_type(value) ⇒ Object
10
11
12
|
# File 'app/queries/ahoy_captain/stats/average_visit_duration_query.rb', line 10
def self.cast_type(value)
ActiveRecord::Type.lookup(:string)
end
|
.cast_value(_type, value) ⇒ Object
14
15
16
17
18
19
20
|
# File 'app/queries/ahoy_captain/stats/average_visit_duration_query.rb', line 14
def self.cast_value(_type, value)
if value.present?
ActiveSupport::Duration.parse(value)
else
ActiveSupport::Duration.parse("P0MT0S")
end
end
|
Instance Method Details
#build ⇒ Object
4
5
6
7
8
|
# File 'app/queries/ahoy_captain/stats/average_visit_duration_query.rb', line 4
def build
max_events = event_query.select("#{AhoyCaptain.event.table_name}.visit_id, max(#{AhoyCaptain.event.table_name}.time) as created_at").group("visit_id")
visit_query.select("avg((max_events.created_at - #{AhoyCaptain.visit.table_name}.started_at))::interval as average_visit_duration")
.joins("LEFT JOIN (#{max_events.to_sql}) as max_events ON #{AhoyCaptain.visit.table_name}.id = max_events.visit_id")
end
|