Class: GitFit::Export::JSON

Inherits:
Object
  • Object
show all
Defined in:
lib/git_fit/export/json.rb

Constant Summary collapse

PLACEHOLDER_POLYLINE =
"gqqrFurkeU??".freeze

Instance Method Summary collapse

Constructor Details

#initialize(db:, output:, activity_filter: nil) ⇒ JSON

Returns a new instance of JSON.



8
9
10
11
12
# File 'lib/git_fit/export/json.rb', line 8

def initialize(db:, output:, activity_filter: nil)
  @db = db
  @output = output
  @activity_filter = activity_filter
end

Instance Method Details

#callObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/git_fit/export/json.rb', line 14

def call
  dataset = @db[:activities].order(Sequel.desc(:start_date))
  dataset = dataset.where(sport_category: @activity_filter) if @activity_filter

  activities = dataset.all

  run_id_to_group = {}
  @db[:dedup_group_members].each { |gm| run_id_to_group[gm[:run_id]] = gm[:group_id] }

  group_members_cache = {}

  formatted = activities.map do |a|
    gid = run_id_to_group[a[:run_id]]
    if gid
      group_members_cache[gid] ||= @db[:dedup_group_members].where(group_id: gid).all
      composite_activity(a, gid, group_members_cache[gid])
    else
      format_activity(a)
    end
  end

  File.write(@output, ::JSON.pretty_generate(formatted))
  formatted.size
end