Class: SimpleAcp::Storage::Base Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_acp/storage/base.rb

Overview

This class is abstract.

Subclass and implement all methods

Abstract base class for storage backends.

Defines the interface for storing runs, sessions, and events. Implementations include Memory, Redis, and PostgreSQL.

Examples:

Custom storage backend

class MyStorage < SimpleAcp::Storage::Base
  def get_run(run_id)
    # ...
  end
  # ... implement other methods
end

Direct Known Subclasses

Memory, PostgreSQL, Redis

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Base

Initialize the storage backend.

Parameters:

  • options (Hash) (defaults to: {}) —

    backend-specific options



23
24
25
# File 'lib/simple_acp/storage/base.rb', line 23

def initialize(options = {})
  @options = options
end

Instance Method Details

#add_event(run_id, event) ⇒ Models::Event

Add an event to a run.

Parameters:

  • run_id (String) —

    the run ID

  • event (Models::Event) —

    the event to add

Returns:

Raises:

  • (NotImplementedError) —

    if not implemented



99
100
101
# File 'lib/simple_acp/storage/base.rb', line 99

def add_event(run_id, event)
  raise NotImplementedError, "#{self.class}#add_event must be implemented"
end

#close ⇒ void

This method returns an undefined value.

Close the storage connection.



117
118
119
# File 'lib/simple_acp/storage/base.rb', line 117

def close
  # Override in subclasses if needed
end

#delete_run(run_id) ⇒ void

This method returns an undefined value.

Delete a run.

Parameters:

  • run_id (String) —

    the run ID to delete

Raises:

  • (NotImplementedError) —

    if not implemented



50
51
52
# File 'lib/simple_acp/storage/base.rb', line 50

def delete_run(run_id)
  raise NotImplementedError, "#{self.class}#delete_run must be implemented"
end

#delete_session(session_id) ⇒ void

This method returns an undefined value.

Delete a session.

Parameters:

  • session_id (String) —

    the session ID to delete

Raises:

  • (NotImplementedError) —

    if not implemented



89
90
91
# File 'lib/simple_acp/storage/base.rb', line 89

def delete_session(session_id)
  raise NotImplementedError, "#{self.class}#delete_session must be implemented"
end

#get_events(run_id, limit: 100, offset: 0) ⇒ Array<Models::Event>

Get events for a run.

Parameters:

  • run_id (String) —

    the run ID

  • limit (Integer) (defaults to: 100) —

    maximum number to return (default: 100)

  • offset (Integer) (defaults to: 0) —

    number to skip (default: 0)

Returns:

Raises:

  • (NotImplementedError) —

    if not implemented



110
111
112
# File 'lib/simple_acp/storage/base.rb', line 110

def get_events(run_id, limit: 100, offset: 0)
  raise NotImplementedError, "#{self.class}#get_events must be implemented"
end

#get_run(run_id) ⇒ Models::Run?

Retrieve a run by ID.

Parameters:

  • run_id (String) —

    the run ID

Returns:

Raises:

  • (NotImplementedError) —

    if not implemented



32
33
34
# File 'lib/simple_acp/storage/base.rb', line 32

def get_run(run_id)
  raise NotImplementedError, "#{self.class}#get_run must be implemented"
end

#get_session(session_id) ⇒ Models::Session?

Retrieve a session by ID.

Parameters:

  • session_id (String) —

    the session ID

Returns:

Raises:

  • (NotImplementedError) —

    if not implemented



71
72
73
# File 'lib/simple_acp/storage/base.rb', line 71

def get_session(session_id)
  raise NotImplementedError, "#{self.class}#get_session must be implemented"
end

#list_runs(agent_name: nil, session_id: nil, limit: 10, offset: 0) ⇒ Hash

List runs with optional filtering.

Parameters:

  • agent_name (String, nil) (defaults to: nil) —

    filter by agent name

  • session_id (String, nil) (defaults to: nil) —

    filter by session ID

  • limit (Integer) (defaults to: 10) —

    maximum number to return (default: 10)

  • offset (Integer) (defaults to: 0) —

    number to skip (default: 0)

Returns:

  • (Hash) —

    with :runs and :total keys

Raises:

  • (NotImplementedError) —

    if not implemented



62
63
64
# File 'lib/simple_acp/storage/base.rb', line 62

def list_runs(agent_name: nil, session_id: nil, limit: 10, offset: 0)
  raise NotImplementedError, "#{self.class}#list_runs must be implemented"
end

#ping ⇒ Boolean

Check if the storage is accessible.

Returns:

  • (Boolean) —

    true if accessible



124
125
126
# File 'lib/simple_acp/storage/base.rb', line 124

def ping
  true
end

#save_run(run) ⇒ Models::Run

Save a run.

Parameters:

Returns:

Raises:

  • (NotImplementedError) —

    if not implemented



41
42
43
# File 'lib/simple_acp/storage/base.rb', line 41

def save_run(run)
  raise NotImplementedError, "#{self.class}#save_run must be implemented"
end

#save_session(session) ⇒ Models::Session

Save a session.

Parameters:

Returns:

Raises:

  • (NotImplementedError) —

    if not implemented



80
81
82
# File 'lib/simple_acp/storage/base.rb', line 80

def save_session(session)
  raise NotImplementedError, "#{self.class}#save_session must be implemented"
end