Class: RailsConsoleAi::Memory

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/rails_console_ai/memory.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.connectionObject



21
22
23
24
25
26
27
28
29
# File 'app/models/rails_console_ai/memory.rb', line 21

def self.connection
  klass = RailsConsoleAi.configuration.connection_class
  if klass
    klass = Object.const_get(klass) if klass.is_a?(String)
    klass.connection
  else
    super
  end
end

.record_use!(id) ⇒ Object



45
46
47
48
49
50
51
52
53
54
# File 'app/models/rails_console_ai/memory.rb', line 45

def self.record_use!(id)
  where(id: id).update_all([
    'use_count = COALESCE(use_count, 0) + 1, last_used_at = ?',
    Time.now.utc
  ])
  true
rescue ::ActiveRecord::ActiveRecordError => e
  RailsConsoleAi.logger.warn("RailsConsoleAi::Memory.record_use!(#{id.inspect}) failed: #{e.message}")
  false
end

Instance Method Details

#content=(value) ⇒ Object



35
36
37
38
# File 'app/models/rails_console_ai/memory.rb', line 35

def content=(value)
  @parsed = nil
  super
end

#descriptionObject

Memories don’t have a separate description vs body — the markdown body IS the memory. Parser exposes it under ‘description’.



42
# File 'app/models/rails_console_ai/memory.rb', line 42

def description; parsed['description']; end

#parsedObject



31
32
33
# File 'app/models/rails_console_ai/memory.rb', line 31

def parsed
  @parsed ||= (RailsConsoleAi::Tools::MemoryTools.parse(content.to_s) || {})
end

#tagsObject



43
# File 'app/models/rails_console_ai/memory.rb', line 43

def tags;        Array(parsed['tags']); end

#to_hashObject



56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'app/models/rails_console_ai/memory.rb', line 56

def to_hash
  {
    'id'           => id,
    'name'         => name,
    'description'  => description,
    'tags'         => tags,
    'content'      => content,
    'use_count'    => use_count,
    'last_used_at' => last_used_at,
    'source'       => :db,
    'updated_at'   => updated_at
  }
end

#update_with_version!(attrs, edited_by: nil, change_note: nil) ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'app/models/rails_console_ai/memory.rb', line 70

def update_with_version!(attrs, edited_by: nil, change_note: nil)
  transaction do
    assign_attributes(attrs)
    save!
    RailsConsoleAi::MemoryVersion.create!(
      memory_id:   id,
      name:        name,
      content:     content,
      edited_by:   edited_by,
      change_note: change_note
    )
  end
  self
end