diff options
| author | adamdottv <[email protected]> | 2025-05-02 09:24:24 -0500 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-05-02 15:24:47 -0500 |
| commit | 49423da081d6fdffb0bd7275e070a2edeb28e3b5 (patch) | |
| tree | 3119b731ecd46ff8ef3c26d779c0420c7dfe6c9e /internal/message | |
| parent | 364cf5b429c3dd6952d45c3361765aa3898e6326 (diff) | |
| download | opencode-49423da081d6fdffb0bd7275e070a2edeb28e3b5.tar.gz opencode-49423da081d6fdffb0bd7275e070a2edeb28e3b5.zip | |
feat: compact command with auto-compact
Diffstat (limited to 'internal/message')
| -rw-r--r-- | internal/message/message.go | 19 |
1 files changed, 19 insertions, 0 deletions
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 { |
