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

Function getSegmentMessages

packages/core/src/query/session-queries.ts:262–305  ·  view source on GitHub ↗
(
  db: DatabaseAdapter,
  segmentId: number,
  limit: number = 500
)

Source from the content-addressed store, hash-verified

260 * Get messages for a specific chat session
261 */
262export function getSegmentMessages(
263 db: DatabaseAdapter,
264 segmentId: number,
265 limit: number = 500
266): SegmentMessagesData | null {
267 if (!hasTable(db, 'segment')) return null
268
269 const session = db
270 .prepare(
271 `SELECT id, start_ts as startTs, end_ts as endTs, message_count as messageCount
272 FROM segment WHERE id = ?`
273 )
274 .get(segmentId) as { id: number; startTs: number; endTs: number; messageCount: number } | undefined
275
276 if (!session) return null
277
278 const messages = db
279 .prepare(
280 `SELECT m.id, mb.id as senderId,
281 COALESCE(mb.group_nickname, mb.account_name, mb.platform_id) as senderName,
282 mb.platform_id as senderPlatformId,
283 m.content, m.ts as timestamp
284 FROM message_context mc
285 JOIN message m ON m.id = mc.message_id
286 JOIN member mb ON mb.id = m.sender_id
287 WHERE mc.segment_id = ? ORDER BY m.ts ASC LIMIT ?`
288 )
289 .all(segmentId, limit) as unknown as SessionPreviewMessage[]
290
291 const participantsSet = new Set<string>()
292 for (const msg of messages) {
293 participantsSet.add(msg.senderName)
294 }
295
296 return {
297 segmentId: session.id,
298 startTs: session.startTs,
299 endTs: session.endTs,
300 messageCount: session.messageCount,
301 returnedCount: messages.length,
302 participants: Array.from(participantsSet),
303 messages,
304 }
305}
306
307/**
308 * Get session summaries (only sessions that have AI-generated summaries)

Callers 1

loadMessagesFunction · 0.90

Calls 5

hasTableFunction · 0.90
getMethod · 0.65
prepareMethod · 0.65
allMethod · 0.65
addMethod · 0.45

Tested by

no test coverage detected