package repository import ( "backend/pkg/chat/domain/entity" "context" ) type RoomRepository interface { Room Member User } // ListRoomsReq 查詢聊天室列表的請求參數 type ListRoomsReq struct { Status string // 聊天室狀態(active, archived 等) PageSize int // 每頁大小 LastID string // 用於 cursor-based pagination } // CountRoomsReq 統計聊天室的請求參數 type CountRoomsReq struct { Status string // 可選的狀態篩選 } type Room interface { Create(ctx context.Context, room *entity.Room) error // Create 創建聊天室 RoomGet(ctx context.Context, roomID string) (*entity.Room, error) // Get 獲取聊天室資訊 RoomUpdate(ctx context.Context, room *entity.Room) error // Update 更新聊天室資訊 RoomDelete(ctx context.Context, roomID string) error // Delete 刪除聊天室(同時需要刪除相關的成員和訊息) RoomList(ctx context.Context, param ListRoomsReq) ([]entity.Room, error) // List 查詢聊天室列表(支援分頁和篩選) RoomCount(ctx context.Context, param CountRoomsReq) (int64, error) // Count 統計聊天室總數 RoomExists(ctx context.Context, roomID string) (bool, error) // Exists 檢查聊天室是否存在 RoomGetByID(ctx context.Context, roomIDs []string) ([]entity.Room, error) // 取得 Room by id } type Member interface { Insert(ctx context.Context, member *entity.RoomMember) error // Insert 添加成員到聊天室 Get(ctx context.Context, roomID, uid string) (*entity.RoomMember, error) // Get 獲取特定成員資訊 AllMembers(ctx context.Context, roomID string) ([]entity.RoomMember, error) // AllMembers 查詢聊天室所有成員 UpdateRole(ctx context.Context, member *entity.RoomMember) error // UpdateRole 更新成員資訊(例如更新角色) DeleteMember(ctx context.Context, roomID, uid string) error // DeleteMember 刪除特定成員(某人退出聊天室) DeleteRoom(ctx context.Context, roomID string) error // DeleteRoom 刪除整個聊天室的所有成員 Count(ctx context.Context, roomID string) (int64, error) // Count 計算聊天室成員數量 } type User interface { GetUserRooms(ctx context.Context, uid string) ([]entity.UserRoom, error) // GetUserRooms 查詢用戶所在的所有聊天室 CountUserRooms(ctx context.Context, uid string) (int64, error) // CountUserRooms 統計用戶所在的聊天室數量 IsUserInRoom(ctx context.Context, uid, roomID string) (bool, error) // IsUserInRoom 檢查用戶是否在某個聊天室中 }