Class: Woods::SessionTracer::Store Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/woods/session_tracer/store.rb

Overview

This class is abstract.

Subclass and implement the required methods.

Abstract store interface for session trace data.

Concrete implementations must define:

  • ‘record(session_id, request_data)` — append a request record

  • ‘read(session_id)` — return all requests for a session, ordered by timestamp

  • ‘sessions(limit:)` — return recent session summaries

  • ‘clear(session_id)` — remove a single session

  • ‘clear_all` — remove all sessions

Direct Known Subclasses

FileStore, RedisStore, SolidCacheStore

Instance Method Summary collapse

Instance Method Details

#clear(session_id) ⇒ void

This method returns an undefined value.

Remove all data for a single session.

Parameters:

  • session_id (String)

    The session identifier

Raises:

  • (NotImplementedError)


45
46
47
# File 'lib/woods/session_tracer/store.rb', line 45

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

#clear_allvoid

This method returns an undefined value.

Remove all session data.

Raises:

  • (NotImplementedError)


52
53
54
# File 'lib/woods/session_tracer/store.rb', line 52

def clear_all
  raise NotImplementedError, "#{self.class}#clear_all must be implemented"
end

#read(session_id) ⇒ Array<Hash>

Read all request records for a session, ordered by timestamp.

Parameters:

  • session_id (String)

    The session identifier

Returns:

  • (Array<Hash>)

    Request records, oldest first

Raises:

  • (NotImplementedError)


29
30
31
# File 'lib/woods/session_tracer/store.rb', line 29

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

#record(session_id, request_data) ⇒ void

This method returns an undefined value.

Append a request record to a session.

Parameters:

  • session_id (String)

    The session identifier

  • request_data (Hash)

    Request metadata to store

Raises:

  • (NotImplementedError)


21
22
23
# File 'lib/woods/session_tracer/store.rb', line 21

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

#sessions(limit: 20) ⇒ Array<Hash>

List recent session summaries.

Parameters:

  • limit (Integer) (defaults to: 20)

    Maximum number of sessions to return

Returns:

  • (Array<Hash>)

    Session summaries with :session_id, :request_count, :first_request, :last_request

Raises:

  • (NotImplementedError)


37
38
39
# File 'lib/woods/session_tracer/store.rb', line 37

def sessions(limit: 20)
  raise NotImplementedError, "#{self.class}#sessions must be implemented"
end