diff --git a/.app_version b/.app_version index 1e9b46b2..ac39a106 100644 --- a/.app_version +++ b/.app_version @@ -1 +1 @@ -0.8.7 +0.9.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 93bf2ad6..07028947 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,20 @@ 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.9.0] — 2024-07-12 + +### Added + +- Background jobs page. You can find it in Settings -> Backgroun Jobs. +- Queue clearing buttons. You can clear all jobs in the queue. +- Reverse geocoding restart button. You can restart the reverse geocoding process for all of your points. +- Reverse geocoding continue button. Click on this button will start reverse geocoding process only for points that were not processed yet. +- A lot more data is now being saved in terms of reverse geocoding process. It will be used in the future to create more insights about your data. + +### Changed + +- Point reference to a user is no longer optional. It should not cause any problems, but if you see any issues, please let me know. + ## [0.8.7] — 2024-07-09 ### Changed diff --git a/app/controllers/settings/background_jobs_controller.rb b/app/controllers/settings/background_jobs_controller.rb index d713b108..6ebc3b94 100644 --- a/app/controllers/settings/background_jobs_controller.rb +++ b/app/controllers/settings/background_jobs_controller.rb @@ -8,13 +8,6 @@ class Settings::BackgroundJobsController < ApplicationController @queues = Sidekiq::Queue.all end - def show; end - - def new - end - - def edit; end - def create EnqueueReverseGeocodingJob.perform_later(params[:job_name], current_user.id) @@ -23,9 +16,6 @@ class Settings::BackgroundJobsController < ApplicationController redirect_to settings_background_jobs_path, notice: 'Job was successfully created.' end - def update - end - def destroy # Clear all jobs in the queue, params[:id] contains queue name queue = Sidekiq::Queue.new(params[:id]) diff --git a/app/helpers/settings/background_jobs_helper.rb b/app/helpers/settings/background_jobs_helper.rb deleted file mode 100644 index 3a150599..00000000 --- a/app/helpers/settings/background_jobs_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module Settings::BackgroundJobsHelper -end diff --git a/app/jobs/reverse_geocoding_job.rb b/app/jobs/reverse_geocoding_job.rb index 6921ffa4..75bcd5d4 100644 --- a/app/jobs/reverse_geocoding_job.rb +++ b/app/jobs/reverse_geocoding_job.rb @@ -6,14 +6,6 @@ class ReverseGeocodingJob < ApplicationJob def perform(point_id) return unless REVERSE_GEOCODING_ENABLED - point = Point.find(point_id) - return if point.city.present? && point.country.present? - - result = Geocoder.search([point.latitude, point.longitude]) - return if result.blank? - - point.update!(city: result.first.city, country: result.first.country) - rescue ActiveRecord::RecordNotFound => e - Rails.logger.error("Point with id #{point_id} not found: #{e.message}") + ReverseGeocoding::FetchData.new(point_id).call end end diff --git a/app/models/point.rb b/app/models/point.rb index 9ed0aa9d..9bd22f52 100644 --- a/app/models/point.rb +++ b/app/models/point.rb @@ -1,8 +1,10 @@ # frozen_string_literal: true class Point < ApplicationRecord + reverse_geocoded_by :latitude, :longitude + belongs_to :import, optional: true - belongs_to :user, optional: true + belongs_to :user validates :latitude, :longitude, :timestamp, presence: true diff --git a/app/services/reverse_geocoding/fetch_data.rb b/app/services/reverse_geocoding/fetch_data.rb new file mode 100644 index 00000000..7be065fd --- /dev/null +++ b/app/services/reverse_geocoding/fetch_data.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class ReverseGeocoding::FetchData + attr_reader :point + + def initialize(point_id) + @point = Point.find(point_id) + rescue ActiveRecord::RecordNotFound => e + Rails.logger.error("Point with id #{point_id} not found: #{e.message}") + end + + def call + return if reverse_geocoded? + + response = Geocoder.search([point.latitude, point.longitude]).first + return if response.blank? || response.data['error'].present? + + point.update!(city: response.city, country: response.country, geodata: response.data) + end + + private + + def reverse_geocoded? + point.city.present? && point.country.present? || point.geodata.present? + end +end diff --git a/app/views/settings/background_jobs/_background_job.html.erb b/app/views/settings/background_jobs/_background_job.html.erb deleted file mode 100644 index f67e58ce..00000000 --- a/app/views/settings/background_jobs/_background_job.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -
-
diff --git a/app/views/settings/background_jobs/_form.html.erb b/app/views/settings/background_jobs/_form.html.erb deleted file mode 100644 index e0992e34..00000000 --- a/app/views/settings/background_jobs/_form.html.erb +++ /dev/null @@ -1,17 +0,0 @@ -<%= form_with(model: settings_background_job, class: "contents") do |form| %> - <% if settings_background_job.errors.any? %> -
-

<%= pluralize(settings_background_job.errors.count, "error") %> prohibited this settings_background_job from being saved:

- - -
- <% end %> - -
- <%= form.submit class: "rounded-lg py-3 px-5 bg-blue-600 text-white inline-block font-medium cursor-pointer" %> -
-<% end %> diff --git a/app/views/settings/background_jobs/edit.html.erb b/app/views/settings/background_jobs/edit.html.erb deleted file mode 100644 index 7351eb69..00000000 --- a/app/views/settings/background_jobs/edit.html.erb +++ /dev/null @@ -1,8 +0,0 @@ -
-

Editing background job

- - <%= render "form", settings_background_job: @settings_background_job %> - - <%= link_to "Show this background job", @settings_background_job, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %> - <%= link_to "Back to background jobs", settings_background_jobs_path, class: "ml-2 rounded-lg py-3 px-5 bg-gray-100 inline-block font-medium" %> -
diff --git a/app/views/settings/background_jobs/index.html.erb b/app/views/settings/background_jobs/index.html.erb index 3343449e..3b216c76 100644 --- a/app/views/settings/background_jobs/index.html.erb +++ b/app/views/settings/background_jobs/index.html.erb @@ -7,7 +7,7 @@

Background jobs

-