Files
cardverse-be/internal/modules/user/model.go
2026-07-30 09:51:25 +07:00

37 lines
1.6 KiB
Go

package user
import "time"
const (
RoleSuperAdmin = "superadmin"
RoleAdmin = "admin"
RoleUser = "user"
StatusActive = "active"
StatusSuspended = "suspended"
StatusUnverified = "unverified"
)
type User struct {
ID uint `json:"id" gorm:"primaryKey;autoIncrement"`
Name string `json:"name" gorm:"type:varchar(100);not null"`
Email string `json:"email" gorm:"type:varchar(150);uniqueIndex;not null"`
Password string `json:"-" gorm:"type:varchar(255)"`
GoogleID *string `json:"google_id,omitempty" gorm:"type:varchar(255);uniqueIndex;default:null"`
AvatarURL *string `json:"avatar_url,omitempty" gorm:"type:varchar(500);default:null"`
Role string `json:"role" gorm:"type:varchar(30);not null;default:'user';index"`
Status string `json:"status" gorm:"type:varchar(30);not null;default:'active';index"`
IsEmailVerified bool `json:"is_email_verified" gorm:"default:false"`
VerificationToken string `json:"-" gorm:"type:varchar(255)"`
ResetPasswordToken string `json:"-" gorm:"type:varchar(255)"`
ResetPasswordExpiresAt *time.Time `json:"-"`
CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime"`
UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"`
CreatedBy *uint `json:"created_by" gorm:"default:null"`
UpdatedBy *uint `json:"updated_by" gorm:"default:null"`
}
func (User) TableName() string {
return "users"
}