backend/pkg/chat/domain/usecase/room.go

119 lines
3.3 KiB
Go
Raw Normal View History

2026-01-07 02:47:37 +00:00
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
}