first commit
This commit is contained in:
72
internal/modules/user/dto.go
Normal file
72
internal/modules/user/dto.go
Normal file
@@ -0,0 +1,72 @@
|
||||
package user
|
||||
|
||||
import (
|
||||
"cardverse/internal/pkg/utils"
|
||||
"time"
|
||||
)
|
||||
|
||||
type CreateUserRequest struct {
|
||||
Name string `json:"name" binding:"required,min=2,max=100"`
|
||||
Email string `json:"email" binding:"required,email,max=150"`
|
||||
Password string `json:"password" binding:"required,min=6"`
|
||||
Role string `json:"role" binding:"omitempty,oneof=user admin superadmin"`
|
||||
}
|
||||
|
||||
type UpdateUserRequest struct {
|
||||
Name string `json:"name" binding:"omitempty,min=2,max=100"`
|
||||
Email string `json:"email" binding:"omitempty,email,max=150"`
|
||||
AvatarURL string `json:"avatar_url" binding:"omitempty,max=500"`
|
||||
Role string `json:"role" binding:"omitempty,oneof=user admin superadmin"`
|
||||
Status string `json:"status" binding:"omitempty,oneof=active suspended unverified"`
|
||||
}
|
||||
|
||||
type UpdateProfileRequest struct {
|
||||
Name string `json:"name" binding:"omitempty,min=2,max=100"`
|
||||
AvatarURL string `json:"avatar_url" binding:"omitempty,max=500"`
|
||||
}
|
||||
|
||||
type ListUserQuery struct {
|
||||
Page int `form:"page,default=1" binding:"omitempty,min=1"`
|
||||
Limit int `form:"limit,default=20" binding:"omitempty,min=1,max=100"`
|
||||
Search string `form:"search"`
|
||||
Role string `form:"role" binding:"omitempty"`
|
||||
Status string `form:"status" binding:"omitempty"`
|
||||
}
|
||||
|
||||
type UserResponse struct {
|
||||
ID uint `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Email string `json:"email"`
|
||||
AvatarURL *string `json:"avatar_url"`
|
||||
Role string `json:"role"`
|
||||
Status string `json:"status"`
|
||||
IsEmailVerified bool `json:"is_email_verified"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
CreatedBy *uint `json:"created_by,omitempty"`
|
||||
UpdatedBy *uint `json:"updated_by,omitempty"`
|
||||
}
|
||||
|
||||
func ToUserResponse(u User) UserResponse {
|
||||
return UserResponse{
|
||||
ID: u.ID,
|
||||
Name: u.Name,
|
||||
Email: u.Email,
|
||||
AvatarURL: utils.FormatMediaURLPtr(u.AvatarURL),
|
||||
Role: u.Role,
|
||||
Status: u.Status,
|
||||
IsEmailVerified: u.IsEmailVerified,
|
||||
CreatedAt: u.CreatedAt,
|
||||
UpdatedAt: u.UpdatedAt,
|
||||
CreatedBy: u.CreatedBy,
|
||||
UpdatedBy: u.UpdatedBy,
|
||||
}
|
||||
}
|
||||
|
||||
func ToUserResponseList(users []User) []UserResponse {
|
||||
result := make([]UserResponse, 0, len(users))
|
||||
for _, u := range users {
|
||||
result = append(result, ToUserResponse(u))
|
||||
}
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user