feat: compact command with auto-compact

This commit is contained in:
adamdottv
2025-05-02 09:24:24 -05:00
committed by Adam
parent 364cf5b429
commit 49423da081
16 changed files with 507 additions and 73 deletions

View File

@@ -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 {