Class: RubyCode::Models::ApiKey
- Defined in:
- lib/rubycode/models/api_key.rb
Overview
Manages encrypted API keys for LLM providers
Class Method Summary collapse
-
.delete_key(adapter:) ⇒ Object
Delete an API key for a specific adapter.
-
.get_key(adapter:) ⇒ String?
Retrieve and decrypt an API key for a specific adapter.
- .insert_new_key(adapter, encrypted_data) ⇒ Object
-
.key_exists?(adapter:) ⇒ Boolean
Check if an API key exists for a specific adapter.
-
.save_key(adapter:, api_key:) ⇒ Object
Save an API key for a specific adapter.
- .table_name ⇒ Object
- .update_existing_key(adapter, encrypted_data) ⇒ Object
Methods inherited from Base
all, count, dataset, delete, first, last, latest, oldest, order, where
Class Method Details
.delete_key(adapter:) ⇒ Object
Delete an API key for a specific adapter
60 61 62 |
# File 'lib/rubycode/models/api_key.rb', line 60 def delete_key(adapter:) dataset.where(adapter: adapter.to_s).delete end |
.get_key(adapter:) ⇒ String?
Retrieve and decrypt an API key for a specific adapter
48 49 50 51 52 53 54 55 56 |
# File 'lib/rubycode/models/api_key.rb', line 48 def get_key(adapter:) row = dataset.where(adapter: adapter.to_s).first return nil unless row decrypt( encrypted: row[:encrypted_key], init_vector: row[:iv] ) end |
.insert_new_key(adapter, encrypted_data) ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/rubycode/models/api_key.rb', line 37 def insert_new_key(adapter, encrypted_data) dataset.insert( adapter: adapter.to_s, encrypted_key: encrypted_data[:encrypted], iv: encrypted_data[:iv] ) end |
.key_exists?(adapter:) ⇒ Boolean
Check if an API key exists for a specific adapter
67 68 69 |
# File 'lib/rubycode/models/api_key.rb', line 67 def key_exists?(adapter:) dataset.where(adapter: adapter.to_s).any? end |
.save_key(adapter:, api_key:) ⇒ Object
Save an API key for a specific adapter
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/rubycode/models/api_key.rb', line 18 def save_key(adapter:, api_key:) encrypted_data = encrypt(api_key) existing = dataset.where(adapter: adapter.to_s).first if existing update_existing_key(adapter, encrypted_data) else insert_new_key(adapter, encrypted_data) end end |
.table_name ⇒ Object
11 12 13 |
# File 'lib/rubycode/models/api_key.rb', line 11 def table_name :api_keys end |
.update_existing_key(adapter, encrypted_data) ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/rubycode/models/api_key.rb', line 29 def update_existing_key(adapter, encrypted_data) dataset.where(adapter: adapter.to_s).update( encrypted_key: encrypted_data[:encrypted], iv: encrypted_data[:iv], updated_at: Time.now ) end |