Class: Bugsage::Store

Inherits:
Object
  • Object
show all
Defined in:
lib/bugsage/store.rb

Constant Summary collapse

MAX_ENTRIES =
100

Class Method Summary collapse

Class Method Details

.add(suggestion, context = {}, metadata = {}) ⇒ Object



9
10
11
12
13
# File 'lib/bugsage/store.rb', line 9

def self.add(suggestion, context = {},  = {})
  event = build_event(suggestion, context, )
  entries.unshift(event)
  entries.pop if entries.size > MAX_ENTRIES
end

.allObject



15
16
17
# File 'lib/bugsage/store.rb', line 15

def self.all
  entries
end

.build_event(suggestion, context, metadata = {}) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/bugsage/store.rb', line 40

def self.build_event(suggestion, context,  = {})
  exception = [:exception]

  {
    issue: suggestion.issue,
    location: suggestion.location,
    root_cause: suggestion.root_cause,
    fixes: suggestion.fixes,
    confidence: suggestion.confidence,
    source: suggestion.source,
    ai_notes: suggestion.ai_notes,
    code_patch: suggestion.code_patch,
    ai_error: [:ai_error],
    exception_class: exception&.class&.name,
    exception_message: exception&.message.to_s,
    context: context,
    timestamp: Time.now.utc.iso8601
  }
end

.clear!Object



19
20
21
# File 'lib/bugsage/store.rb', line 19

def self.clear!
  @entries = []
end

.entriesObject



23
24
25
# File 'lib/bugsage/store.rb', line 23

def self.entries
  @entries ||= []
end

.update_at(index, suggestion, ai_error: nil) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/bugsage/store.rb', line 27

def self.update_at(index, suggestion, ai_error: nil)
  event = entries[index]
  return unless event

  event[:root_cause] = suggestion.root_cause
  event[:fixes] = suggestion.fixes
  event[:confidence] = suggestion.confidence
  event[:source] = suggestion.source
  event[:ai_notes] = suggestion.ai_notes
  event[:code_patch] = suggestion.code_patch
  event[:ai_error] = ai_error
end