From f55328c15dd11ff53d0302e082f6d09f392c25a3 Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Tue, 9 Apr 2024 11:35:56 +0200 Subject: [PATCH] fix: maintenance task to backfill city_name --- .../maintenance/backfill_city_name_task.rb | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 app/tasks/maintenance/backfill_city_name_task.rb diff --git a/app/tasks/maintenance/backfill_city_name_task.rb b/app/tasks/maintenance/backfill_city_name_task.rb new file mode 100644 index 000000000..e22aa403e --- /dev/null +++ b/app/tasks/maintenance/backfill_city_name_task.rb @@ -0,0 +1,43 @@ +# frozen_string_literal: true + +module Maintenance + class BackfillCityNameTask < MaintenanceTasks::Task + attribute :champ_ids, :string + validates :champ_ids, presence: true + + def collection + Champ.where(id: champ_ids.split(',').map(&:strip).map(&:to_i)) + end + + def process(champ) + return if champ.type != "Champs::AddressChamp" + + data = champ.data + + return if data.blank? + return if data['city_name'].present? + return if data['label'].blank? + + response = Typhoeus.get( + "#{API_ADRESSE_URL}/search", + params: { q: data['label'], limit: 1 }, + timeout: 3 + ) + + return if response.code != 200 + + json = JSON.parse(response.body) + city = json.dig('features', 0, 'properties', 'city') + return if city.blank? + + data['city_name'] = city + + champ.update(data:) + end + + def count + # Optionally, define the number of rows that will be iterated over + # This is used to track the task's progress + end + end +end