Class: SolidLog::UI::DataSource

Inherits:
Object
  • Object
show all
Defined in:
lib/solid_log/ui/data_source.rb

Instance Method Summary collapse

Instance Method Details

#all_facets ⇒ Object

Get all facets



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/solid_log/ui/data_source.rb', line 47

def all_facets
  if direct_db_mode?
    {
      level: SolidLog::SearchService.facets_for("level"),
      app: SolidLog::SearchService.facets_for("app"),
      env: SolidLog::SearchService.facets_for("env"),
      controller: SolidLog::SearchService.facets_for("controller"),
      action: SolidLog::SearchService.facets_for("action"),
      method: SolidLog::SearchService.facets_for("method"),
      status_code: SolidLog::SearchService.facets_for("status_code")
    }
  else
    result = api_client.all_facets
    result["facets"]
  end
end

#entries(filters = {}) ⇒ Object

Query entries with filters



7
8
9
10
11
12
13
# File 'lib/solid_log/ui/data_source.rb', line 7

def entries(filters = {})
  if direct_db_mode?
    query_direct_db(filters)
  else
    query_http_api(filters)
  end
end

#entry(id) ⇒ Object

Get single entry by ID



16
17
18
19
20
21
22
23
# File 'lib/solid_log/ui/data_source.rb', line 16

def entry(id)
  if direct_db_mode?
    SolidLog::Entry.find(id)
  else
    result = api_client.entry(id)
    OpenStruct.new(result["entry"])
  end
end

#facets(field) ⇒ Object

Get facets for a field



37
38
39
40
41
42
43
44
# File 'lib/solid_log/ui/data_source.rb', line 37

def facets(field)
  if direct_db_mode?
    SolidLog::SearchService.facets_for(field)
  else
    result = api_client.facets(field)
    result["values"]
  end
end

#health ⇒ Object

Get health metrics



91
92
93
94
95
96
97
# File 'lib/solid_log/ui/data_source.rb', line 91

def health
  if direct_db_mode?
    SolidLog::HealthService.metrics
  else
    api_client.health["metrics"]
  end
end

#job_timeline(job_id) ⇒ Object

Get job timeline



78
79
80
81
82
83
84
85
86
87
88
# File 'lib/solid_log/ui/data_source.rb', line 78

def job_timeline(job_id)
  if direct_db_mode?
    {
      job_id: job_id,
      entries: SolidLog::CorrelationService.job_timeline(job_id),
      stats: SolidLog::CorrelationService.job_stats(job_id)
    }
  else
    api_client.job_timeline(job_id)
  end
end

#request_timeline(request_id) ⇒ Object

Get request timeline



65
66
67
68
69
70
71
72
73
74
75
# File 'lib/solid_log/ui/data_source.rb', line 65

def request_timeline(request_id)
  if direct_db_mode?
    {
      request_id: request_id,
      entries: SolidLog::CorrelationService.request_timeline(request_id),
      stats: SolidLog::CorrelationService.request_stats(request_id)
    }
  else
    api_client.request_timeline(request_id)
  end
end

#search(query, filters = {}) ⇒ Object

Full-text search



26
27
28
29
30
31
32
33
34
# File 'lib/solid_log/ui/data_source.rb', line 26

def search(query, filters = {})
  if direct_db_mode?
    entries = SolidLog::SearchService.search(query)
    apply_filters(entries, filters)
  else
    result = api_client.search(query, filters)
    parse_entries_response(result)
  end
end