dawarich/app/serializers/track_serializer.rb

39 lines
851 B
Ruby
Raw Normal View History

# frozen_string_literal: true
class TrackSerializer
2025-07-04 14:09:06 -04:00
def initialize(user, track_ids)
@user = user
2025-07-04 14:09:06 -04:00
@track_ids = track_ids
end
def call
2025-07-04 13:49:56 -04:00
return [] if track_ids.empty?
2025-07-07 17:12:02 -04:00
tracks = user.tracks
2025-07-04 13:49:56 -04:00
.where(id: track_ids)
.order(start_at: :asc)
2025-07-07 17:12:02 -04:00
tracks.map { |track| serialize_track_data(track) }
end
private
2025-07-04 14:09:06 -04:00
attr_reader :user, :track_ids
2025-07-07 17:12:02 -04:00
def serialize_track_data(track)
{
2025-07-07 17:12:02 -04:00
id: track.id,
start_at: track.start_at.iso8601,
end_at: track.end_at.iso8601,
distance: track.distance.to_i,
avg_speed: track.avg_speed.to_f,
duration: track.duration,
elevation_gain: track.elevation_gain,
elevation_loss: track.elevation_loss,
elevation_max: track.elevation_max,
elevation_min: track.elevation_min,
original_path: track.original_path.to_s
}
end
end