| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package models
- import (
- "time"
- )
- // User represents the user account model
- type User struct {
- ID string `gorm:"type:uuid;primaryKey;default:gen_random_uuid()" json:"id"`
- Username string `gorm:"uniqueIndex;not null;size:50" json:"username"`
- Email *string `gorm:"uniqueIndex;size:100" json:"email,omitempty"`
- PhoneNumber *string `gorm:"uniqueIndex;size:20" json:"phoneNumber,omitempty"`
- PasswordHash string `gorm:"column:password_hash;not null" json:"-"`
- AvatarURL *string `gorm:"size:500" json:"avatarURL,omitempty"`
- RegisteredAt time.Time `gorm:"autoCreateTime" json:"registeredAt"`
- UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updatedAt"`
- }
- // RegisterRequest DTO
- type RegisterRequest struct {
- Username string `json:"username" binding:"required,min=2"`
- Identifier string `json:"identifier" binding:"required"` // email or phone
- Password string `json:"password" binding:"required,min=6"`
- }
- // LoginRequest DTO
- type LoginRequest struct {
- Identifier string `json:"identifier" binding:"required"`
- Password string `json:"password" binding:"required"`
- }
- // UpdateProfileRequest DTO
- type UpdateProfileRequest struct {
- Username *string `json:"username,omitempty"`
- Email *string `json:"email,omitempty"`
- PhoneNumber *string `json:"phoneNumber,omitempty"`
- AvatarURL *string `json:"avatarURL,omitempty"`
- }
- // ChangePasswordRequest DTO
- type ChangePasswordRequest struct {
- OldPassword string `json:"oldPassword" binding:"required"`
- NewPassword string `json:"newPassword" binding:"required,min=6"`
- }
- // AuthResponse DTO
- type AuthResponse struct {
- User User `json:"user"`
- Token string `json:"token"`
- }
- // ErrorResponse DTO
- type ErrorResponse struct {
- Code int `json:"code"`
- Message string `json:"message"`
- }
|