diff --git a/.app_version b/.app_version index a67cebaf..59dad104 100644 --- a/.app_version +++ b/.app_version @@ -1 +1 @@ -0.21.1 +0.21.2 diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d5c2fc7..e48c4511 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +# 0.21.2 - 2024-12-25 + +### Changed + +- Imported points will now be reverse geocoded only after import is finished. + # 0.21.1 - 2024-12-24 ### Added diff --git a/app/javascript/controllers/imports_controller.js b/app/javascript/controllers/imports_controller.js index b4817c23..fd00d5c9 100644 --- a/app/javascript/controllers/imports_controller.js +++ b/app/javascript/controllers/imports_controller.js @@ -10,31 +10,20 @@ export default class extends Controller { return } - // console.log("Imports controller connected", { - // hasIndexTarget: this.hasIndexTarget, - // element: this.element, - // userId: this.element.dataset.userId - // }); this.setupSubscription(); } setupSubscription() { const userId = this.element.dataset.userId; - // console.log("Setting up subscription with userId:", userId); this.channel = consumer.subscriptions.create( { channel: "ImportsChannel" }, { connected: () => { - // console.log("Successfully connected to ImportsChannel"); - // Test that we can receive messages - // console.log("Subscription object:", this.channel); }, disconnected: () => { - // console.log("Disconnected from ImportsChannel"); }, received: (data) => { - // console.log("Received data:", data); const row = this.element.querySelector(`tr[data-import-id="${data.import.id}"]`); if (row) { diff --git a/app/models/import.rb b/app/models/import.rb index a0fbc870..f396c555 100644 --- a/app/models/import.rb +++ b/app/models/import.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class Import < ApplicationRecord - # self.ignored_columns = %w[raw_data] - belongs_to :user has_many :points, dependent: :destroy @@ -17,6 +15,10 @@ class Import < ApplicationRecord Imports::Create.new(user, self).call end + def reverse_geocoded_points_count + points.reverse_geocoded.count + end + def years_and_months_tracked points.order(:timestamp).pluck(:timestamp).map do |timestamp| time = Time.zone.at(timestamp) diff --git a/app/models/point.rb b/app/models/point.rb index bec501b4..26984c3e 100644 --- a/app/models/point.rb +++ b/app/models/point.rb @@ -33,8 +33,9 @@ class Point < ApplicationRecord Time.zone.at(timestamp) end - def async_reverse_geocode + def async_reverse_geocode(force: false) return unless REVERSE_GEOCODING_ENABLED + return if import_id.present? && !force ReverseGeocodingJob.perform_later(self.class.to_s, id) end diff --git a/app/services/imports/create.rb b/app/services/imports/create.rb index af9b0d0c..78ddf9cd 100644 --- a/app/services/imports/create.rb +++ b/app/services/imports/create.rb @@ -15,6 +15,7 @@ class Imports::Create schedule_stats_creating(user.id) schedule_visit_suggesting(user.id, import) + schedule_reverse_geocoding(user.id) rescue StandardError => e create_import_failed_notification(import, user, e) end @@ -47,6 +48,10 @@ class Imports::Create VisitSuggestingJob.perform_later(user_ids: [user_id], start_at:, end_at:) end + def schedule_reverse_geocoding(user_id) + EnqueueBackgroundJob.perform_later('continue_reverse_geocoding', user_id) + end + def create_import_finished_notification(import, user) Notifications::Create.new( user:, diff --git a/app/services/jobs/create.rb b/app/services/jobs/create.rb index ff8466be..6e301146 100644 --- a/app/services/jobs/create.rb +++ b/app/services/jobs/create.rb @@ -21,6 +21,8 @@ class Jobs::Create raise InvalidJobName, 'Invalid job name' end - points.find_each(batch_size: 1_000, &:async_reverse_geocode) + points.find_each(batch_size: 1_000) do |point| + point.async_reverse_geocode(force: true) + end end end diff --git a/app/views/imports/index.html.erb b/app/views/imports/index.html.erb index b3f8cbfc..d2ee8d30 100644 --- a/app/views/imports/index.html.erb +++ b/app/views/imports/index.html.erb @@ -41,6 +41,7 @@