From 788537499318bcd8c8440519e140e7cadb268906 Mon Sep 17 00:00:00 2001 From: Eugene Burmakin Date: Sat, 12 Jul 2025 23:45:43 +0200 Subject: [PATCH] Refactor Tracks::BulkTrackCreator to use start_at and end_at as datetime objects --- app/services/tracks/bulk_track_creator.rb | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/app/services/tracks/bulk_track_creator.rb b/app/services/tracks/bulk_track_creator.rb index f7eaf301..7dba8506 100644 --- a/app/services/tracks/bulk_track_creator.rb +++ b/app/services/tracks/bulk_track_creator.rb @@ -3,8 +3,8 @@ module Tracks class BulkTrackCreator def initialize(start_at: nil, end_at: 1.day.ago.end_of_day, user_ids: []) - @start_at = start_at - @end_at = end_at.to_datetime + @start_at = start_at&.to_datetime + @end_at = end_at&.to_datetime @user_ids = user_ids end @@ -12,22 +12,30 @@ module Tracks users.find_each do |user| next if user.tracked_points.empty? - user_start_at = @start_at&.to_datetime || start_time(user) + user_start_at = start_at || start_time(user) - next unless user.tracked_points.where(timestamp: user_start_at.to_i..@end_at.to_i).exists? + next unless user.tracked_points.where(timestamp: user_start_at.to_i..end_at.to_i).exists? - Tracks::CreateJob.perform_later(user.id, start_at: user_start_at, end_at: @end_at, cleaning_strategy: :daily) + Tracks::CreateJob.perform_later( + user.id, + start_at: user_start_at, + end_at:, + cleaning_strategy: :daily + ) end end private + attr_reader :start_at, :end_at, :user_ids + def users - @user_ids.any? ? User.active.where(id: @user_ids) : User.active + user_ids.any? ? User.active.where(id: user_ids) : User.active end def start_time(user) latest_track = user.tracks.order(end_at: :desc).first + if latest_track latest_track.end_at else