MCPcopy Create free account
hub / github.com/ChatLab/ChatLab / fetchMessagesAfter

Function fetchMessagesAfter

packages/core/src/query/message-query-functions.ts:88–102  ·  view source on GitHub ↗
(
  executor: AsyncSqlExecutor,
  afterId: number,
  limit: number = 50,
  filter?: TimeFilter,
  senderId?: number,
  keywords?: string[]
)

Source from the content-addressed store, hash-verified

86 * Results are returned in ascending order.
87 */
88export async function fetchMessagesAfter(
89 executor: AsyncSqlExecutor,
90 afterId: number,
91 limit: number = 50,
92 filter?: TimeFilter,
93 senderId?: number,
94 keywords?: string[]
95): Promise<AsyncPaginatedMessages> {
96 const { clause, params } = filterConditions(filter, senderId, keywords)
97 const sql = `${FULL_MSG_SELECT} WHERE msg.id > ? ${clause} ORDER BY msg.id ASC LIMIT ?`
98 const rows = await executor.all<FullMessageRow>(sql, [afterId, ...params, limit + 1])
99 const hasMore = rows.length > limit
100 const sliced = hasMore ? rows.slice(0, limit) : rows
101 return { messages: sliced.map(mapMessageRow), hasMore }
102}
103
104/**
105 * LIKE-based keyword search with count + pagination.

Callers 3

getMessagesAfterFunction · 0.90
getMessagesAfterMethod · 0.90

Calls 1

filterConditionsFunction · 0.85

Tested by

no test coverage detected