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



17
18
19
20
21
22
23
24
25
# File 'app/models/rails_console_ai/memory.rb', line 17

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



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

def self.record_use!(id)
  return false unless connection.column_exists?(table_name, :use_count)
  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

#last_used_atObject



39
40
41
# File 'app/models/rails_console_ai/memory.rb', line 39

def last_used_at
  has_attribute?(:last_used_at) ? read_attribute(:last_used_at) : nil
end

#tagsObject



27
28
29
# File 'app/models/rails_console_ai/memory.rb', line 27

def tags
  decode_json_array(read_attribute(:tags))
end

#tags=(value) ⇒ Object



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

def tags=(value)
  write_attribute(:tags, encode_json_array(value))
end

#to_hashObject



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

def to_hash
  {
    'id'           => id,
    'name'         => name,
    'description'  => description,
    'tags'         => tags,
    '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



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

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,
      description: description,
      tags:        tags,
      edited_by:   edited_by,
      change_note: change_note
    )
  end
  self
end

#use_countObject



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

def use_count
  has_attribute?(:use_count) ? (read_attribute(:use_count) || 0) : 0
end