Skip to content

Commit 7a629c5

Browse files
Remove hasMore
1 parent fdbefb8 commit 7a629c5

File tree

3 files changed

+10
-17
lines changed

3 files changed

+10
-17
lines changed

pkg/api/pagination.go

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,19 +41,16 @@ func PaginateMessages(messages []session.Message, params PaginationParams) ([]se
4141
endIdx := totalCount
4242

4343
if params.Before != "" {
44-
// Get messages before the cursor (older messages)
4544
endIdx = beforeIndex
4645
if endIdx <= 0 {
4746
return []session.Message{}, &PaginationMetadata{
4847
TotalMessages: totalCount,
4948
Limit: 0,
50-
HasMore: false,
5149
}, nil
5250
}
5351
actualStart := max(endIdx-limit, startIdx)
5452
startIdx = actualStart
5553
} else {
56-
// Default: get most recent messages (for chat infinite scroll)
5754
actualStart := max(totalCount-limit, 0)
5855
startIdx = actualStart
5956
endIdx = totalCount
@@ -64,12 +61,10 @@ func PaginateMessages(messages []session.Message, params PaginationParams) ([]se
6461
metadata := &PaginationMetadata{
6562
TotalMessages: totalCount,
6663
Limit: len(paginatedMessages),
67-
HasMore: false,
6864
}
6965

70-
metadata.HasMore = startIdx > 0
71-
72-
if len(paginatedMessages) > 0 {
66+
// Only set cursor if there are more (older) messages available
67+
if len(paginatedMessages) > 0 && startIdx > 0 {
7368
metadata.PrevCursor = strconv.Itoa(startIdx)
7469
}
7570

pkg/api/pagination_test.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ func TestPaginateMessages_FirstPage(t *testing.T) {
4444
assert.Len(t, paginated, 10)
4545
assert.Equal(t, 100, meta.TotalMessages)
4646
assert.Equal(t, 10, meta.Limit)
47-
assert.True(t, meta.HasMore)
48-
assert.NotEmpty(t, meta.PrevCursor)
47+
assert.NotEmpty(t, meta.PrevCursor) // More older messages available
4948

5049
// Should get most recent 10 messages (for chat infinite scroll)
5150
// For 100 messages, indices 90-99 should be returned
@@ -83,7 +82,7 @@ func TestPaginateMessages_WithBeforeCursorPagination(t *testing.T) {
8382
require.NoError(t, err)
8483

8584
assert.Len(t, prevPage, 10)
86-
assert.False(t, prevMeta.HasMore) // No more older messages
85+
assert.Empty(t, prevMeta.PrevCursor) // No more older messages
8786

8887
// Should get messages 0-9
8988
assert.Equal(t, "Message A", prevPage[0].Message.Content) // Index 0 = 'A'
@@ -108,7 +107,7 @@ func TestPaginateMessages_WithBeforeCursor(t *testing.T) {
108107
require.NoError(t, err)
109108

110109
assert.Len(t, paginated, 10)
111-
assert.True(t, meta.HasMore) // There are older messages
110+
assert.NotEmpty(t, meta.PrevCursor) // There are older messages
112111

113112
// Should get 10 messages before index 50 (indices 40-49)
114113
assert.Equal(t, "Message "+string(rune('A'+40)), paginated[0].Message.Content)
@@ -155,7 +154,7 @@ func TestPaginateMessages_EmptyMessages(t *testing.T) {
155154

156155
assert.Empty(t, paginated)
157156
assert.Equal(t, 0, meta.TotalMessages)
158-
assert.False(t, meta.HasMore)
157+
assert.Empty(t, meta.PrevCursor) // No messages at all
159158
}
160159

161160
func TestPaginateMessages_LastPage(t *testing.T) {
@@ -169,8 +168,8 @@ func TestPaginateMessages_LastPage(t *testing.T) {
169168
lastPage, lastMeta, err := PaginateMessages(messages, lastPageParams)
170169
require.NoError(t, err)
171170

172-
assert.Len(t, lastPage, 5) // Only 5 messages (0-4)
173-
assert.False(t, lastMeta.HasMore) // No more older messages
171+
assert.Len(t, lastPage, 5) // Only 5 messages (0-4)
172+
assert.Empty(t, lastMeta.PrevCursor) // No more older messages
174173
assert.Equal(t, 25, lastMeta.TotalMessages)
175174

176175
// Should get the first 5 messages
@@ -193,7 +192,7 @@ func TestPaginateMessages_BeforeFirstMessage(t *testing.T) {
193192
require.NoError(t, err)
194193

195194
assert.Empty(t, paginated)
196-
assert.False(t, meta.HasMore)
195+
assert.Empty(t, meta.PrevCursor) // No messages at all
197196
}
198197

199198
func TestPaginateMessages_InvalidCursor(t *testing.T) {

pkg/api/types.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,7 @@ type SessionResponse struct {
141141
type PaginationMetadata struct {
142142
TotalMessages int `json:"total_messages"` // Total number of messages in session
143143
Limit int `json:"limit"` // Number of messages in this response
144-
HasMore bool `json:"has_more"` // Whether more messages exist
145-
PrevCursor string `json:"prev_cursor,omitempty"` // Cursor for previous page
144+
PrevCursor string `json:"prev_cursor,omitempty"` // Cursor for previous page (empty if no more messages)
146145
}
147146

148147
// ResumeSessionRequest represents a request to resume a session

0 commit comments

Comments
 (0)