package models import ( "time" "github.com/google/uuid" "gorm.io/gorm" ) const ( RoleAdmin = "admin" RoleUser = "user" ) type User struct { ID string `gorm:"primaryKey"` Name string `gorm:"size:120;index"` Email string `gorm:"size:320;uniqueIndex;not null"` PasswordHash string `gorm:"size:255;not null"` EmailVerified bool `gorm:"not null;default:false"` Role string `gorm:"size:32;index;not null;default:user"` Properties UserProperties `gorm:"foreignKey:UserId;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"` CreatedAt time.Time UpdatedAt time.Time } func (user *User) BeforeCreate(tx *gorm.DB) (err error) { // UUID version 4 user.ID = uuid.NewString() return } type UserProperties struct { UserId string `json:"user_id" gorm:"uniqueIndex"` Lang string `json:"lang"` Dark bool `json:"dark"` }