package models
import (
"time"
)
type User struct {
ID uint64 `gorm:"primaryKey;autoIncrement" json:"id"`
Username string `gorm:"size:50;not null;uniqueIndex" json:"username"`
Password string `gorm:"size:255;not null" json:"-"`
Nickname string `gorm:"size:50" json:"nickname"`
Avatar string `gorm:"size:255" json:"avatar"`
Phone string `gorm:"size:20;index" json:"phone"`
Email string `gorm:"size:100" json:"email"`
Status int `gorm:"default:1" json:"status"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type UserLoginRequest struct {
Username string `json:"username" binding:"required"`
Password string `json:"password" binding:"required"`
}
type UserRegisterRequest struct {
Username string `json:"username" binding:"required,min=3,max=20"`
Password string `json:"password" binding:"required,min=6,max=20"`
Nickname string `json:"nickname"`
Phone string `json:"phone"`
}
type UserResponse struct {
ID uint64 `json:"id"`
Username string `json:"username"`
Nickname string `json:"nickname"`
Avatar string `json:"avatar"`
Phone string `json:"phone"`
Email string `json:"email"`
Status int `json:"status"`
CreatedAt time.Time `json:"created_at"`
}
func (u *User) ToResponse() UserResponse {
return UserResponse{
ID: u.ID,
Username: u.Username,
Nickname: u.Nickname,
Avatar: u.Avatar,
Phone: u.Phone,
Email: u.Email,
Status: u.Status,
CreatedAt: u.CreatedAt,
}
}
type LoginResponse struct {
Token string `json:"token"`
User UserResponse `json:"user"`
}