From 49423da081d6fdffb0bd7275e070a2edeb28e3b5 Mon Sep 17 00:00:00 2001 From: adamdottv <2363879+adamdottv@users.noreply.github.com> Date: Fri, 2 May 2025 09:24:24 -0500 Subject: feat: compact command with auto-compact --- internal/message/message.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'internal/message') diff --git a/internal/message/message.go b/internal/message/message.go index b26af92f4..e091cdfa1 100644 --- a/internal/message/message.go +++ b/internal/message/message.go @@ -25,6 +25,7 @@ type Service interface { Update(ctx context.Context, message Message) error Get(ctx context.Context, id string) (Message, error) List(ctx context.Context, sessionID string) ([]Message, error) + ListAfter(ctx context.Context, sessionID string, timestamp int64) ([]Message, error) Delete(ctx context.Context, id string) error DeleteSessionMessages(ctx context.Context, sessionID string) error } @@ -145,6 +146,24 @@ func (s *service) List(ctx context.Context, sessionID string) ([]Message, error) return messages, nil } +func (s *service) ListAfter(ctx context.Context, sessionID string, timestamp int64) ([]Message, error) { + dbMessages, err := s.q.ListMessagesBySessionAfter(ctx, db.ListMessagesBySessionAfterParams{ + SessionID: sessionID, + CreatedAt: timestamp, + }) + if err != nil { + return nil, err + } + messages := make([]Message, len(dbMessages)) + for i, dbMessage := range dbMessages { + messages[i], err = s.fromDBItem(dbMessage) + if err != nil { + return nil, err + } + } + return messages, nil +} + func (s *service) fromDBItem(item db.Message) (Message, error) { parts, err := unmarshallParts([]byte(item.Parts)) if err != nil { -- cgit v1.2.3