Files
backend/internal/dto/user.go
T
2026-07-15 22:42:31 +08:00

71 lines
2.0 KiB
Go

package dto
import (
"time"
"github.com/XingfenD/yoresee_doc/internal/model"
)
type UserBase struct {
ExternalID string `json:"external_id"`
Username string `json:"username"`
Email string `json:"email"`
Nickname string `json:"nickname"`
Avatar string `json:"avatar"`
AvatarObjectKey string `json:"-"`
AvatarVersion int64 `json:"-"`
Status int `json:"status"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type UserCreate struct {
Username string `json:"username"`
Email string `json:"email"`
Password string `json:"password"`
InvitationCode *string `json:"invitation_code"`
}
type UserUpdate struct {
Username string `json:"username"`
Email string `json:"email"`
Password string `json:"password"`
Nickname string `json:"nickname"`
Avatar string `json:"avatar"`
Status int `json:"status"`
InvitationCode *string `json:"invitation_code"`
}
type UpdateProfileRequest struct {
Username *string `json:"username"`
Email *string `json:"email"`
Nickname *string `json:"nickname"`
Password *string `json:"password"`
AvatarFile []byte `json:"avatar_file"`
AvatarFilename *string `json:"avatar_filename"`
AvatarContentType *string `json:"avatar_content_type"`
}
type UserResponse struct {
UserBase
InvitationCode *string `json:"invitation_code"`
}
func NewUserResponseFromModel(user *model.User) *UserResponse {
return &UserResponse{
UserBase: UserBase{
ExternalID: user.ExternalID,
Username: user.Username,
Email: user.Email,
Nickname: user.Nickname,
Avatar: "",
AvatarObjectKey: user.AvatarObjectKey,
AvatarVersion: user.AvatarVersion,
Status: user.Status,
CreatedAt: user.CreatedAt,
UpdatedAt: user.UpdatedAt,
},
InvitationCode: user.InvitationCode,
}
}