UPDATE: Fix bug
All checks were successful
Build and Release / release (push) Successful in 1m27s

This commit is contained in:
2026-04-10 15:52:09 +07:00
parent 0896fd587e
commit af76d2a26a
22 changed files with 586 additions and 129 deletions

View File

@@ -3,16 +3,15 @@ package request
import "time"
type UpdateProfileDto struct {
DisplayName string `json:"display_name" validate:"omitempty,min=2,max=50"`
FullName string `json:"full_name" validate:"omitempty,min=2,max=100"`
AvatarUrl string `json:"avatar_url" validate:"omitempty,url,image_url"`
Bio string `json:"bio" validate:"omitempty,max=255"`
Location string `json:"location" validate:"omitempty,max=100"`
Website string `json:"website" validate:"omitempty,url"`
CountryCode string `json:"country_code" validate:"omitempty,len=2"`
Phone string `json:"phone" validate:"omitempty,min=8,max=20"`
DisplayName *string `json:"display_name" validate:"omitempty,min=2,max=50"`
FullName *string `json:"full_name" validate:"omitempty,min=2,max=100"`
AvatarUrl *string `json:"avatar_url" validate:"omitempty,url,image_url"`
Bio *string `json:"bio" validate:"omitempty,max=255"`
Location *string `json:"location" validate:"omitempty,max=100"`
Website *string `json:"website" validate:"omitempty,url"`
CountryCode *string `json:"country_code" validate:"omitempty,len=2"`
Phone *string `json:"phone" validate:"omitempty,min=8,max=20"`
}
type ChangePasswordDto struct {
OldPassword string `json:"old_password" validate:"required,min=8,max=64"`
NewPassword string `json:"new_password" validate:"required,min=8,max=64,nefield=OldPassword"`

View File

@@ -0,0 +1,25 @@
package request
import "time"
type SearchUserVerificationDto struct {
PaginationDto
Sort string `json:"sort" query:"sort" validate:"omitempty,oneof=id created_at reviewed_at status"`
Search string `json:"search" query:"search" validate:"omitempty,min=2,max=200"`
UserIDs []string `json:"user_ids" query:"user_ids" validate:"omitempty,dive,uuid"`
VerifyTypes []string `json:"verify_types" query:"verify_types" validate:"omitempty,dive,ascii"`
Statuses []string `json:"statuses" query:"statuses" validate:"omitempty,dive,ascii"`
ReviewedBy *string `json:"reviewed_by" query:"reviewed_by" validate:"omitempty,uuid"`
CreatedAfter *time.Time `json:"created_after" query:"created_after" validate:"omitempty"`
CreatedBefore *time.Time `json:"created_before" query:"created_before" validate:"omitempty,gtfield=CreatedAfter"`
}
type CreateUserVerificationDto struct {
VerifyType string `json:"verify_type" validate:"required,oneof=ID_CARD EDUCATION EXPERT OTHER"`
Content string `json:"content" validate:"required"`
MediaIDs []string `json:"media_ids" validate:"omitempty,dive,uuid"`
}
type UpdateVerificationStatusDto struct {
Status string `json:"status" validate:"required,oneof=PENDING APPROVED REJECTED"`
}

View File

@@ -20,3 +20,13 @@ type MediaResponse struct {
CreatedAt *time.Time `json:"created_at"`
UpdatedAt *time.Time `json:"updated_at"`
}
type MediaSimpleResponse struct {
ID string `json:"id"`
StorageKey string `json:"storage_key"`
OriginalName string `json:"original_name"`
MimeType string `json:"mime_type"`
Size int64 `json:"size"`
FileMetadata []byte `json:"file_metadata"`
CreatedAt time.Time `json:"created_at"`
}

View File

@@ -0,0 +1,15 @@
package response
import "time"
type UserVerificationResponse struct {
ID string `json:"id"`
UserID string `json:"user_id"`
VerifyType string `json:"verify_type"`
Content string `json:"content"`
Status string `json:"status"`
ReviewedBy *string `json:"reviewed_by"`
ReviewedAt *time.Time `json:"reviewed_at"`
CreatedAt time.Time `json:"created_at"`
Medias []*MediaSimpleResponse `json:"media"`
}