backend/internal/types/types.go

297 lines
12 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.

// Code generated by goctl. DO NOT EDIT.
// goctl 1.8.5
package types
type AddMemberReq struct {
Authorization
RoomID string `json:"room_id" validate:"required"`
UID string `json:"uid" validate:"required"` // 要添加的用戶 UID
}
type Authorization struct {
Authorization string `header:"Authorization" validate:"required"`
}
type BaseReq struct {
}
type CreateRoomReq struct {
Authorization
Name string `json:"name" validate:"required,min=1,max=100"` // 聊天室名稱
Status string `json:"status,optional" validate:"omitempty,oneof=active archived"` // 狀態,預設為 active
}
type CredentialsPayload struct {
Password string `json:"password" validate:"required,min=8,max=128"` // 密碼 (後端應使用 bcrypt 進行雜湊)
PasswordConfirm string `json:"password_confirm" validate:"eqfield=Password"` // 確認密碼
AccountType string `json:"account_type" validate:"required,oneof=email phone any"` // 帳號型別 email phone any
}
type GetUserRoomsResp struct {
Rooms []RoomResp `json:"rooms"`
Total int64 `json:"total"`
}
type IsMemberResp struct {
IsMember bool `json:"is_member"`
}
type ListMembersResp struct {
Members []Member `json:"members"`
Total int64 `json:"total"`
}
type ListMessagesReq struct {
Authorization
RoomID string `path:"room_id" validate:"required"`
BucketDay string `json:"bucket_day,optional"` // yyyyMMdd不提供則使用今天
PageSize int64 `json:"page_size,optional" validate:"omitempty,min=1,max=100"` // 每頁大小,預設 20
LastTS int64 `json:"last_ts,optional"` // 用於 cursor-based pagination
}
type ListMessagesResp struct {
Messages []MessageResp `json:"messages"`
Total int64 `json:"total,optional"` // 總數(僅第一頁返回)
LastTS int64 `json:"last_ts,optional"` // 用於下一頁查詢
}
type ListRoomsReq struct {
Authorization
Status string `json:"status,optional" validate:"omitempty,oneof=active archived"` // 狀態篩選
PageSize int `json:"page_size,optional" validate:"omitempty,min=1,max=100"` // 每頁大小,預設 20
LastID string `json:"last_id,optional"` // 用於 cursor-based pagination
}
type ListRoomsResp struct {
Rooms []RoomResp `json:"rooms"`
LastID string `json:"last_id,optional"` // 用於下一頁查詢
Total int64 `json:"total,optional"` // 總數(僅第一頁返回)
}
type LoginReq struct {
AuthMethod string `json:"auth_method" validate:"required,oneof=credentials platform"` // 驗證類型 credentials platform
LoginID string `json:"login_id" validate:"required,min=3,max=50"` // 信箱或手機號碼
Credentials *CredentialsPayload `json:"credentials,optional"` // AuthMethod 為 'credentials' 時使用
Platform *PlatformPayload `json:"platform,optional"` // AuthMethod 為 'platform' 時使用
}
type LoginResp struct {
UID string `json:"uid"`
AccessToken string `json:"access_token"`
RefreshToken string `json:"refresh_token"`
TokenType string `json:"token_type"` // 通常固定為 "Bearer"
}
type Member struct {
UID string `json:"uid"`
Name string `json:"name"`
Avatar string `json:"avatar"`
}
type MemberResp struct {
RoomID string `json:"room_id"`
UID string `json:"uid"`
Role string `json:"role"`
JoinedAt string `json:"joined_at"`
UpdatedAt string `json:"updated_at"`
}
type MessageResp struct {
RoomID string `json:"room_id"`
BucketDay string `json:"bucket_day"` // yyyyMMdd
TS int64 `json:"ts"` // timestamp
UID string `json:"uid"`
Content string `json:"content"`
}
type MyInfo struct {
Platform string `json:"platform"` // 註冊平台
UID string `json:"uid"` // 用戶 UID
AvatarURL *string `json:"avatar_url,omitempty"` // 頭像 URL
FullName *string `json:"full_name,omitempty"` // 用戶全名
Nickname *string `json:"nickname,omitempty"` // 暱稱
GenderCode *string `json:"gender_code,omitempty"` // 性別代碼
Birthdate *string `json:"birthdate,omitempty"` // 生日 (格式: 1993-04-17)
PhoneNumber *string `json:"phone_number,omitempty"` // 電話
IsPhoneVerified *bool `json:"is_phone_verified,omitempty"` // 手機是否已驗證
Email *string `json:"email,omitempty"` // 信箱
IsEmailVerified *bool `json:"is_email_verified,omitempty"` // 信箱是否已驗證
Address *string `json:"address,omitempty"` // 地址
UserStatus string `json:"user_status,omitempty"` // 用戶狀態
PreferredLanguage string `json:"preferred_language,omitempty"` // 偏好語言
Currency string `json:"currency,omitempty"` // 偏好幣種
AlarmCategory string `json:"alarm_category,omitempty"` // 告警狀態
PostCode *string `json:"post_code,omitempty"` // 郵遞區號
Carrier *string `json:"carrier,omitempty"` // 載具
Role string `json:"role"` // 角色
UpdateAt string `json:"update_at"`
CreateAt string `json:"create_at"`
}
type PagerResp struct {
Total int64 `json:"total"`
Size int64 `json:"size"`
Index int64 `json:"index"`
}
type PlatformPayload struct {
Provider string `json:"provider" validate:"required,oneof=google line apple"` // 平台名稱,目前支援 google line apple
Token string `json:"token" validate:"required"` // 平台提供的 Access Token 或 ID Token
}
type RefreshTokenReq struct {
AccessToken string `json:"access_token" validate:"required"`
RefreshToken string `json:"refresh_token" validate:"required"`
}
type RefreshTokenResp struct {
AccessToken string `json:"access_token"`
RefreshToken string `json:"refresh_token"` // 可選:某些策略下刷新後也會換發新的 Refresh Token
TokenType string `json:"token_type"`
}
type RemoveMemberReq struct {
Authorization
RoomID string `path:"room_id" validate:"required"`
UID string `path:"uid" validate:"required"` // 要移除的用戶 UID
}
type RequestPasswordResetReq struct {
Identifier string `json:"identifier" validate:"required"` // 使用者帳號 (信箱或手機)
AccountType string `json:"account_type" validate:"required,oneof=email phone"`
}
type RequestVerificationCodeReq struct {
Account string `json:"account" validate:"required`
Purpose string `json:"purpose" validate:"required,oneof=email_verification phone_verification"`
Authorization
}
type ResetPasswordReq struct {
Identifier string `json:"identifier" validate:"required"`
VerifyCode string `json:"verify_code" validate:"required"` // 來自上一步驗證通過的 Code作為一種「票證」
Password string `json:"password" validate:"required,min=8,max=128"` // 新密碼
PasswordConfirm string `json:"password_confirm" validate:"eqfield=Password"` // 確認新密碼
}
type Resp struct {
Code string `json:"code"`
Message string `json:"message"`
Data interface{} `json:"data,omitempty"`
Error interface{} `json:"error,omitempty"` // 可選的錯誤信息
}
type RespOK struct {
}
type RoomReq struct {
Authorization
RoomID string `path:"room_id"`
}
type RoomResp struct {
RoomID string `json:"room_id"`
Name string `json:"name"`
Status string `json:"status"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
}
type SendMessageReq struct {
Authorization
RoomID string `path:"room_id" validate:"required"`
Content string `json:"content" validate:"required,min=1,max=5000"` // 訊息內容
}
type SendMessageResp struct {
RoomID string `json:"room_id"`
BucketDay string `json:"bucket_day"` // yyyyMMdd
TS int64 `json:"ts"` // timestamp
UID string `json:"uid"`
Content string `json:"content"`
}
type SubmitVerificationCodeReq struct {
Account string `json:"account" validate:"required`
Purpose string `json:"purpose" validate:"required,oneof=email_verification phone_verification"`
VerifyCode string `json:"verify_code" validate:"required,len=6"`
Authorization
}
type UpdateMemberRoleReq struct {
Authorization
RoomID string `path:"room_id" validate:"required"`
UID string `path:"uid" validate:"required"`
Role string `json:"role" validate:"required,oneof=admin member"`
}
type UpdatePasswordReq struct {
CurrentPassword string `json:"current_password" validate:"required"`
NewPassword string `json:"new_password" validate:"required,min=8,max=128"`
NewPasswordConfirm string `json:"new_password_confirm" validate:"eqfield=NewPassword"`
Authorization
}
type UpdateRoomReq struct {
Authorization
RoomID string `path:"room_id" validate:"required"`
Name *string `json:"name,optional" validate:"omitempty,min=1,max=100"`
Status *string `json:"status,optional" validate:"omitempty,oneof=active archived"`
}
type UpdateUserInfoReq struct {
AvatarURL *string `json:"avatar_url,optional"` // 頭像 URL
FullName *string `json:"full_name,optional"` // 用戶全名
Nickname *string `json:"nickname,optional"` // 暱稱
GenderCode *string `json:"gender_code,optional" validate:"omitempty,oneof=secret male female"` // 性別
Birthdate *string `json:"birthdate,optional"` // 生日 (格式: 1993-04-17)
Address *string `json:"address,optional"` // 地址
PreferredLanguage *string `json:"preferred_language,optional" validate:"omitempty,oneof=zh-tw en-us"` // 語言
Currency *string `json:"currency,optional" validate:"omitempty,oneof=TWD USD"` // 貨幣代號
National *string `json:"national,optional"` // 國家
PostCode *string `json:"post_code,optional"` // 郵遞區號
Carrier *string `json:"carrier,optional"` // 載具
}
type UploadImgReq struct {
Authorization
Content string `json:"content" validate:"required"` // base64 編碼的圖片內容
}
type UploadResp struct {
FileUrl string `json:"file_url"` // 文件訪問 URL
FileSize int64 `json:"file_size,optional"` // 文件大小bytes
MimeType string `json:"mime_type,optional"` // MIME 類型
}
type UploadVideoReq struct {
Authorization
}
type UserInfoResp struct {
Platform string `json:"platform"` // 註冊平台
UID string `json:"uid"` // 用戶 UID
AvatarURL string `json:"avatar_url"` // 頭像 URL
FullName string `json:"full_name"` // 用戶全名
Nickname string `json:"nickname"` // 暱稱
GenderCode string `json:"gender_code"` // 性別代碼
Birthdate string `json:"birthdate"` // 生日 (格式: 1993-04-17)
PhoneNumber string `json:"phone_number"` // 電話
IsPhoneVerified bool `json:"is_phone_verified"` // 手機是否已驗證
Email string `json:"email"` // 信箱
IsEmailVerified bool `json:"is_email_verified"` // 信箱是否已驗證
Address string `json:"address"` // 地址
UserStatus string `json:"user_status"` // 用戶狀態
PreferredLanguage string `json:"preferred_language"` // 偏好語言
Currency string `json:"currency"` // 偏好幣種
Role string `json:"role"` // 角色
UpdateAt string `json:"update_at"`
CreateAt string `json:"create_at"`
}
type VerifyCodeReq struct {
Identifier string `json:"identifier" validate:"required"`
VerifyCode string `json:"verify_code" validate:"required,len=6"`
}