Message Group
implemented · REST first3
Routes
create · send · list messages
2
Group Types
PRIVATE · CROWD
2
Public IDs
group.publicId · message.publicId
REST
Delivery
Pusher phase sau
Implemented Flow
Flow hiện tại là REST: tạo group, gửi message, lấy message history. Realtime/Pusher sẽ được triển khai trong phase notification hoặc chat realtime sau.
Current API Contract
| # | Endpoint | Behavior | Status |
|---|---|---|---|
| 01 | POST /message-group Create group | Body { type: "private" | "crowd", members: string[] }. Server tự thêm user đăng nhập, tìm user theo username, bỏ qua username không tồn tại. | done |
| 02 | POST /message-group/:publicId/messages Send message | Body { content }. Content trim, không rỗng, tối đa 1000 ký tự. Tạo Message và update MessageGroup.lastMessageAt. | done |
| 03 | GET /message-group/:publicId/messages List messages | Query after=messagePublicId, take. Nếu cursor không thuộc group thì 404. Sort createdAt desc. | done |
Schema Snapshot
MessageGroup
Có
id, publicId, groupType, createdById, lastMessageAt. Client chỉ dùng publicId.MemberMessageGroup
Liên kết user với group, có unique
messageGroupId + userId để tránh duplicate member.Message
Có
publicId làm cursor, messageGroupId, senderId, content, createdAt. Pagination dùng cursor publicId.Next Phase
Realtime
Dùng Pusher để trigger
message:new tới private channel của từng user hoặc từng message group.Inbox list
Cần route list message groups của user, sort theo
lastMessageAt desc.Read state
Nếu cần seen/unread thì bổ sung vào
MemberMessageGroup: lastSeenMessageId, unreadCount.