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
|
||
}
|