Class: TimeStreamer::App

Inherits:
Sinatra::Base
  • Object
show all
Defined in:
lib/time_streamer/app.rb

Instance Method Summary collapse

Instance Method Details

#adapterObject



55
56
57
# File 'lib/time_streamer/app.rb', line 55

def adapter
  TimeStreamer.configuration.adapter
end

#associations_for(parent) ⇒ Object



32
33
34
35
36
37
38
39
40
# File 'lib/time_streamer/app.rb', line 32

def associations_for(parent)
  return if parent.nil?

  associations = load_associations parent
  associations.transform_values! do |value|
    Array(value).map { |record| adapter.identifier_for(record) }
  end
  associations.reject { |_, value| value.empty? }
end

#format_time(time) ⇒ Object



47
48
49
# File 'lib/time_streamer/app.rb', line 47

def format_time(time)
  time.strftime '%Y-%m-%d %H:%M:%S'
end

#ignored_associations(model_class) ⇒ Object



59
60
61
62
63
# File 'lib/time_streamer/app.rb', line 59

def ignored_associations(model_class)
  global = TimeStreamer.configuration.global_ignored_associations
  specific = TimeStreamer.configuration.ignored_associations.fetch(model_class.to_s) { [] }
  global | specific
end

#load_associations(record) ⇒ Object



42
43
44
45
# File 'lib/time_streamer/app.rb', line 42

def load_associations(record)
  associations = record.class.reflections.keys - ignored_associations(record.class)
  associations.map { |key| [key, record.send(key)] }.to_h
end

#mount_pathObject



65
66
67
# File 'lib/time_streamer/app.rb', line 65

def mount_path
  TimeStreamer.configuration.mount_path
end

#versions_to_view_models(versions) ⇒ Object



51
52
53
# File 'lib/time_streamer/app.rb', line 51

def versions_to_view_models(versions)
  versions.map { |version| VersionViewModel.new(**adapter.version_data(version)) }
end