dawarich/app/jobs/data_migrations/migrate_places_lonlat_job.rb

30 lines
1 KiB
Ruby
Raw Normal View History

2025-03-03 14:50:49 -05:00
# frozen_string_literal: true
class DataMigrations::MigratePlacesLonlatJob < ApplicationJob
2025-07-26 19:08:29 -04:00
queue_as :data_migrations
2025-03-03 14:50:49 -05:00
def perform(user_id)
user = User.find(user_id)
2025-03-09 11:29:16 -04:00
# Find all places with nil lonlat
places_to_update = user.visited_places.where(lonlat: nil)
2025-03-09 11:29:16 -04:00
# For each place, set the lonlat value based on longitude and latitude
places_to_update.find_each do |place|
next if place.longitude.nil? || place.latitude.nil?
# Set the lonlat to a PostGIS point with the proper SRID
# rubocop:disable Rails/SkipsModelValidations
place.update_column(:lonlat, "SRID=4326;POINT(#{place.longitude} #{place.latitude})")
# rubocop:enable Rails/SkipsModelValidations
end
# Double check if there are any remaining places without lonlat
remaining = user.visited_places.where(lonlat: nil)
2025-03-09 11:29:16 -04:00
return unless remaining.exists?
# Log an error for these places
Rails.logger.error("Places with ID #{remaining.pluck(:id).join(', ')} for user #{user.id} could not be updated with lonlat values")
2025-03-03 14:50:49 -05:00
end
end