mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-10 01:01:39 -05:00
36 lines
1.1 KiB
Ruby
36 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Tracks
|
|
module IncompleteSegmentHandlers
|
|
class BufferHandler
|
|
attr_reader :user, :day, :grace_period_minutes, :redis_buffer
|
|
|
|
def initialize(user, day = nil, grace_period_minutes = 5)
|
|
@user = user
|
|
@day = day || Date.current
|
|
@grace_period_minutes = grace_period_minutes
|
|
@redis_buffer = Tracks::RedisBuffer.new(user.id, @day)
|
|
end
|
|
|
|
def should_finalize_segment?(segment_points)
|
|
return false if segment_points.empty?
|
|
|
|
# Check if the last point is old enough (grace period)
|
|
last_point_time = Time.zone.at(segment_points.last.timestamp)
|
|
grace_period_cutoff = Time.current - grace_period_minutes.minutes
|
|
|
|
last_point_time < grace_period_cutoff
|
|
end
|
|
|
|
def handle_incomplete_segment(segment_points)
|
|
redis_buffer.store(segment_points)
|
|
Rails.logger.debug "Stored #{segment_points.size} points in buffer for user #{user.id}, day #{day}"
|
|
end
|
|
|
|
def cleanup_processed_data
|
|
redis_buffer.clear
|
|
Rails.logger.debug "Cleared buffer for user #{user.id}, day #{day}"
|
|
end
|
|
end
|
|
end
|
|
end
|