package repository import ( "backend/pkg/chat/domain/entity" "context" ) // MessageRepository 定義訊息相關的資料存取介面 type MessageRepository interface { // Insert 插入訊息 Insert(ctx context.Context, msg *entity.Message) error // ListMessages 查詢訊息列表(分頁) ListMessages(ctx context.Context, param ListMessagesReq) ([]entity.Message, error) // Count 計算符合條件的訊息總數 Count(ctx context.Context, RoomID string) (int64, error) // CheckAndInsertDedup 檢查並插入去重記錄,如果已存在則返回 true(表示重複) CheckAndInsertDedup(ctx context.Context, param CheckDupReq) (bool, error) } type SendMessageReq struct { RoomID string UID string Content string ClientMsgID string } type ListMessagesReq struct { RoomID string BucketDay string PageSize int // LastTS 用於 cursor-based pagination,獲取 ts < LastTS 的訊息 // 如果為 0,則獲取最新的訊息 LastTS int64 } type CheckDupReq struct { RoomID string UID string BucketSec int64 ContentMD5 string }