dawarich/app/queries/stats_query.rb

31 lines
583 B
Ruby
Raw Normal View History

2025-07-22 13:43:27 -04:00
# frozen_string_literal: true
class StatsQuery
def initialize(user)
@user = user
end
def points_stats
2025-07-22 13:52:24 -04:00
result = Point.connection.execute(<<~SQL.squish)
SELECT
COUNT(id) as total,
2025-07-22 13:43:27 -04:00
COUNT(reverse_geocoded_at) as geocoded,
2025-07-22 13:52:24 -04:00
COUNT(CASE WHEN geodata = '{}'::jsonb THEN 1 END) as without_data
FROM points
2025-07-22 13:43:27 -04:00
WHERE user_id = #{user.id}
SQL
row = result.first
{
total: row['total'].to_i,
geocoded: row['geocoded'].to_i,
without_data: row['without_data'].to_i
}
end
private
attr_reader :user
end