2025-12-27 07:33:54 -05:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
|
|
class Cache::InvalidateUserCaches
|
|
|
|
|
# Invalidates user-specific caches that depend on point data.
|
|
|
|
|
# This should be called after:
|
|
|
|
|
# - Reverse geocoding operations (updates country/city data)
|
|
|
|
|
# - Stats calculations (updates geocoding stats)
|
|
|
|
|
# - Bulk point imports/updates
|
|
|
|
|
def initialize(user_id)
|
|
|
|
|
@user_id = user_id
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def call
|
|
|
|
|
invalidate_countries_visited
|
|
|
|
|
invalidate_cities_visited
|
|
|
|
|
invalidate_points_geocoded_stats
|
2026-01-07 13:48:14 -05:00
|
|
|
invalidate_total_distance
|
2025-12-27 07:33:54 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def invalidate_countries_visited
|
|
|
|
|
Rails.cache.delete("dawarich/user_#{user_id}_countries_visited")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def invalidate_cities_visited
|
|
|
|
|
Rails.cache.delete("dawarich/user_#{user_id}_cities_visited")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def invalidate_points_geocoded_stats
|
|
|
|
|
Rails.cache.delete("dawarich/user_#{user_id}_points_geocoded_stats")
|
|
|
|
|
end
|
|
|
|
|
|
2026-01-07 13:48:14 -05:00
|
|
|
def invalidate_total_distance
|
|
|
|
|
Rails.cache.delete("dawarich/user_#{user_id}_total_distance")
|
|
|
|
|
end
|
|
|
|
|
|
2025-12-27 07:33:54 -05:00
|
|
|
private
|
|
|
|
|
|
|
|
|
|
attr_reader :user_id
|
|
|
|
|
end
|