feat(messages): stream history one-message-per-WS-frame instead of 50-row batch
- backend: add streamMany generator (paginated, yields one record at a time) + messagesService.streamMessages + WS 'stream_messages' handler emitting 'message_snapshot' per message, 'message_snapshot_end' with nextCursor - frontend: useMessagesStream hook accumulates snapshots into SWR list, SSR getMessages seeds first paint, WsHook gains sendText - add stream-many.test.ts locking the one-at-a-time + cursor contract
This commit is contained in:
@@ -15,6 +15,14 @@ export class MessagesService {
|
||||
return messagesRepository.findMany(query);
|
||||
}
|
||||
|
||||
/**
|
||||
* Stream messages one at a time (no 50-row batch). The WS handler iterates
|
||||
* this generator and emits one `message_snapshot` frame per message.
|
||||
*/
|
||||
streamMessages(query: MessageQuery, pageSize = 50) {
|
||||
return messagesRepository.streamMany(query, pageSize);
|
||||
}
|
||||
|
||||
async getMessagesByChannel(channelId: string, query: MessageQuery) {
|
||||
if (!channelId) {
|
||||
throw new ValidationError("channelId is required");
|
||||
|
||||
Reference in New Issue
Block a user