package models import ( "time" "github.com/google/uuid" "gorm.io/gorm" ) type User struct { ID uuid.UUID `json:"id" gorm:"primaryKey;type:uuid;default:gen_random_uuid()"` FirstName string `json:"first_name" gorm:"not null"` LastName string `json:"last_name" gorm:"not null"` Username string `json:"username" gorm:"not null;unique"` Password string `json:"password" gorm:"not null"` Email string `json:"email" gorm:"not null;unique"` Enabled bool `json:"enabled" gorm:"not null;default:true"` Verified bool `json:"verified" gorm:"not null;default:false"` // TODO: remove this field SuperAdmin bool `json:"super_admin" gorm:"not null;default:false"` CreatedAt time.Time `json:"created_at" gorm:"not null;default:now()"` UpdatedAt time.Time `json:"updated_at" gorm:"not null;default:now()"` DeletedAt gorm.DeletedAt `json:"deleted_at" gorm:"index;default:null"` // Relationships ApiKeys []ApiKey `json:"api_keys" gorm:"foreignKey:user_id;references:id"` Sessions []Session `json:"sessions" gorm:"foreignKey:user_id;references:id"` } func (u *User) TableName() string { return "users" } func (u *User) BeforeCreate(tx *gorm.DB) (err error) { u.ID = uuid.New() return }