Storage¶
Storage backend interface and implementations.
Interface¶
All storage backends extend SimpleAcp::Storage::Base.
Class: SimpleAcp::Storage::Base¶
Constructor¶
Abstract Methods¶
These methods must be implemented by subclasses:
#get_run¶
Retrieve a run by ID.
Parameters:
| Name | Type | Description |
|---|---|---|
run_id |
String |
Run ID |
Returns: Models::Run or nil
#save_run¶
Save a run.
Parameters:
| Name | Type | Description |
|---|---|---|
run |
Models::Run |
Run to save |
Returns: Models::Run
#delete_run¶
Delete a run and its events.
Parameters:
| Name | Type | Description |
|---|---|---|
run_id |
String |
Run ID |
Returns: void
#list_runs¶
List runs with optional filtering.
Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
agent_name |
String |
nil |
Filter by agent |
session_id |
String |
nil |
Filter by session |
limit |
Integer |
10 |
Max results |
offset |
Integer |
0 |
Skip count |
Returns: Hash with :runs and :total
#get_session¶
Retrieve a session by ID.
Parameters:
| Name | Type | Description |
|---|---|---|
session_id |
String |
Session ID |
Returns: Models::Session or nil
#save_session¶
Save a session.
Parameters:
| Name | Type | Description |
|---|---|---|
session |
Models::Session |
Session to save |
Returns: Models::Session
#delete_session¶
Delete a session.
Parameters:
| Name | Type | Description |
|---|---|---|
session_id |
String |
Session ID |
Returns: void
#add_event¶
Add an event to a run.
Parameters:
| Name | Type | Description |
|---|---|---|
run_id |
String |
Run ID |
event |
Event |
Event to add |
Returns: Event
#get_events¶
Get events for a run.
Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
run_id |
String |
required | Run ID |
limit |
Integer |
100 |
Max events |
offset |
Integer |
0 |
Skip count |
Returns: Array<Event>
Optional Methods¶
These have default implementations:
#close¶
Close the storage connection.
Default: No-op
#ping¶
Check if storage is accessible.
Returns: Boolean
Default: Returns true
Implementations¶
Memory¶
Additional Methods:
Redis¶
require 'simple_acp/storage/redis'
storage = SimpleAcp::Storage::Redis.new(
url: "redis://localhost:6379",
ttl: 86400, # TTL in seconds (default: 24 hours)
prefix: "acp:", # Key prefix (default: "acp:")
redis: nil # Existing Redis connection
)
Additional Methods:
PostgreSQL¶
require 'simple_acp/storage/postgresql'
storage = SimpleAcp::Storage::PostgreSQL.new(
url: "postgres://localhost/simple_acp",
skip_setup: false, # Skip table creation (default: false)
db: nil # Existing Sequel database
)
Additional Methods:
Custom Implementation¶
class MyStorage < SimpleAcp::Storage::Base
def initialize(options = {})
super
# Setup
end
def get_run(run_id)
# Implementation
end
def save_run(run)
# Implementation
end
def delete_run(run_id)
# Implementation
end
def list_runs(agent_name: nil, session_id: nil, limit: 10, offset: 0)
# Implementation
end
def get_session(session_id)
# Implementation
end
def save_session(session)
# Implementation
end
def delete_session(session_id)
# Implementation
end
def add_event(run_id, event)
# Implementation
end
def get_events(run_id, limit: 100, offset: 0)
# Implementation
end
def close
# Cleanup
end
def ping
# Health check
true
end
end