Documentation
¶
Overview ¶
Package dynamo provides a DynamoDB-backed Storage adapter for Chronos.
It is built on the official AWS SDK for Go v2 (aws-sdk-go-v2). The previous implementation hand-rolled DynamoDB's JSON-1.0 REST protocol over net/http and did NOT sign requests with AWS Signature Version 4 (it merely set a bogus X-Amz-Access-Key header), so every call against real DynamoDB was rejected. Half of its methods were also stubs returning empty slices. This rewrite delegates signing, retries, endpoint resolution and (un)marshaling to the SDK.
Data model (single-table design) ¶
Primary key : pk (S, HASH) + sk (S, RANGE) — GetItem by entity id GSI "owner-seq-index" : owner (S, HASH) + seq (N, RANGE) — list by parent
Each item stores the entity as a JSON blob in the "data" attribute. Items are grouped for listing via the owner attribute (e.g. AGENT#<id>, EVENTS#<sid>); the seq attribute orders them (creation time in millis, or event/checkpoint sequence number). Memory records also carry kind/mkey attributes so that GetMemory (by key) and ListMemory (by kind) can filter server-side.
Index ¶
- type Store
- func (s *Store) AppendAuditLog(ctx context.Context, log *storage.AuditLog) error
- func (s *Store) AppendEvent(ctx context.Context, e *storage.Event) error
- func (s *Store) Close() error
- func (s *Store) CreateSession(ctx context.Context, sess *storage.Session) error
- func (s *Store) DeleteMemory(ctx context.Context, id string) error
- func (s *Store) GetCheckpoint(ctx context.Context, id string) (*storage.Checkpoint, error)
- func (s *Store) GetLatestCheckpoint(ctx context.Context, sessionID string) (*storage.Checkpoint, error)
- func (s *Store) GetMemory(ctx context.Context, agentID, key string) (*storage.MemoryRecord, error)
- func (s *Store) GetSession(ctx context.Context, id string) (*storage.Session, error)
- func (s *Store) GetTrace(ctx context.Context, id string) (*storage.Trace, error)
- func (s *Store) InsertTrace(ctx context.Context, t *storage.Trace) error
- func (s *Store) ListAuditLogs(ctx context.Context, sessionID string, limit, offset int) ([]*storage.AuditLog, error)
- func (s *Store) ListCheckpoints(ctx context.Context, sessionID string) ([]*storage.Checkpoint, error)
- func (s *Store) ListEvents(ctx context.Context, sessionID string, afterSeq int64) ([]*storage.Event, error)
- func (s *Store) ListMemory(ctx context.Context, agentID, kind string) ([]*storage.MemoryRecord, error)
- func (s *Store) ListSessions(ctx context.Context, agentID string, limit, offset int) ([]*storage.Session, error)
- func (s *Store) ListTraces(ctx context.Context, sessionID string) ([]*storage.Trace, error)
- func (s *Store) Migrate(ctx context.Context) error
- func (s *Store) PutMemory(ctx context.Context, m *storage.MemoryRecord) error
- func (s *Store) SaveCheckpoint(ctx context.Context, cp *storage.Checkpoint) error
- func (s *Store) UpdateSession(ctx context.Context, sess *storage.Session) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Store ¶
type Store struct {
// contains filtered or unexported fields
}
Store implements storage.Storage using AWS DynamoDB.
func New ¶
New creates a DynamoDB storage adapter using AWS SigV4-signed requests.
If accessKey/secretKey are empty the default AWS credential chain is used (env, shared config, IAM role). For local development against DynamoDB Local pass endpoint "http://localhost:8000".
func NewWithClient ¶ added in v0.6.0
NewWithClient wraps a preconfigured client (or fake). Used for tests.
func (*Store) AppendAuditLog ¶
func (*Store) AppendEvent ¶
func (*Store) CreateSession ¶
func (*Store) GetCheckpoint ¶
func (*Store) GetLatestCheckpoint ¶
func (*Store) GetSession ¶
func (*Store) InsertTrace ¶
func (*Store) ListAuditLogs ¶
func (*Store) ListCheckpoints ¶
func (*Store) ListEvents ¶
func (*Store) ListMemory ¶
func (*Store) ListSessions ¶
func (*Store) ListTraces ¶
func (*Store) Migrate ¶
Migrate creates the single Chronos table with the owner-seq GSI if it does not already exist.