# Generate statistics, around events, by date or place class StatsController < ApplicationController before_action :set_temporal, :set_local, only: [:index] private def set_temporal @year_events = Event.group(year_grouping).count @month_events = Event.group(year_grouping, month_grouping).count end def set_local @region_events = Event.joins(:related_region).group(:name) .order('count(name) desc').count @city_events = Event.group(:city).having('count(city) > 3') .order('count(city) desc').count end def year_grouping if %w(Mysql2 MySQL PostgreSQL).include? Event.connection.adapter_name 'extract(year from start_time)' elsif Event.connection.adapter_name == 'SQLite' 'strftime("%Y", start_time)' end end def month_grouping if %w(Mysql2 MySQL PostgreSQL).include? Event.connection.adapter_name 'extract(month from start_time)' elsif Event.connection.adapter_name == 'SQLite' 'strftime("%m", start_time)' end end end