summaryrefslogtreecommitdiffhomepage
path: root/internal/message
diff options
context:
space:
mode:
Diffstat (limited to 'internal/message')
-rw-r--r--internal/message/message.go19
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 {