package usecase import ( "context" ) // RoomUseCase 定義聊天室相關的業務邏輯介面 type RoomUseCase interface { // CreateRoom 創建聊天室 CreateRoom(ctx context.Context, req CreateRoomReq) (*Room, error) // GetRoom 取得聊天室資訊 GetRoom(ctx context.Context, req GetRoomReq) (*Room, error) // UpdateRoom 更新聊天室資訊 UpdateRoom(ctx context.Context, req UpdateRoomReq) (*Room, error) // DeleteRoom 刪除聊天室 DeleteRoom(ctx context.Context, req DeleteRoomReq) error // ListRooms 查詢聊天室列表(分頁) ListRooms(ctx context.Context, req ListRoomsReq) ([]Room, string, int64, error) // IsUserInRoom 檢查用戶是否在聊天室中 IsUserInRoom(ctx context.Context, req IsUserInRoomReq) (bool, error) // AddMember 添加成員到聊天室 AddMember(ctx context.Context, req AddMemberReq) (*Member, error) // RemoveMember 移除聊天室成員 RemoveMember(ctx context.Context, req RemoveMemberReq) error // UpdateMemberRole 更新成員角色 UpdateMemberRole(ctx context.Context, req UpdateMemberRoleReq) (*Member, error) // ListMembers 查詢聊天室成員列表 ListMembers(ctx context.Context, req ListMembersReq) ([]Member, int64, error) // GetUserRooms 查詢用戶所在的聊天室 GetUserRooms(ctx context.Context, req GetUserRoomsReq) ([]Room, int64, error) } // ==================== 聊天室管理請求/回應 ==================== type CreateRoomReq struct { UID string // 創建者 UID Name string // 聊天室名稱 Status string // 狀態,預設為 active } type GetRoomReq struct { UID string // 請求者 UID RoomID string // 聊天室 ID } type UpdateRoomReq struct { UID string // 請求者 UID RoomID string // 聊天室 ID Name *string // 聊天室名稱(可選) Status *string // 狀態(可選) } type DeleteRoomReq struct { UID string // 請求者 UID RoomID string // 聊天室 ID } type ListRoomsReq struct { UID string // 用戶 UID(查詢該用戶所在的聊天室) Status string // 狀態篩選(可選) PageSize int // 每頁大小,預設 20 LastID string // 用於 cursor-based pagination } type IsUserInRoomReq struct { UID string // 用戶 UID RoomID string // 聊天室 ID } type Room struct { RoomID string `json:"room_id"` Name string `json:"name"` Status string `json:"status"` CreatedAt int64 `json:"created_at"` UpdatedAt int64 `json:"updated_at"` } // ==================== 成員管理請求/回應 ==================== type AddMemberReq struct { UID string // 操作者 UID RoomID string // 聊天室 ID MemberUID string // 要添加的用戶 UID Role string // 角色,預設為 member } type RemoveMemberReq struct { UID string // 操作者 UID RoomID string // 聊天室 ID MemberUID string // 要移除的用戶 UID } type UpdateMemberRoleReq struct { UID string // 操作者 UID RoomID string // 聊天室 ID MemberUID string // 要更新的用戶 UID Role string // 新角色 } type ListMembersReq struct { UID string // 請求者 UID RoomID string // 聊天室 ID } type Member struct { RoomID string `json:"room_id"` UID string `json:"uid"` Role string `json:"role"` JoinedAt int64 `json:"joined_at"` } // ==================== 用戶相關請求/回應 ==================== type GetUserRoomsReq struct { UID string // 用戶 UID }