119 lines
3.3 KiB
Go
119 lines
3.3 KiB
Go
|
|
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
|
|||
|
|
}
|