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

119 lines
3.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}