package domain import ( "time" "github.com/google/uuid" "gorm.io/gorm" ) // User represents the user model stored in PostgreSQL type User struct { ID string `gorm:"primaryKey;type:uuid;default:gen_random_uuid()" json:"id"` Email string `gorm:"uniqueIndex;not null" json:"email"` PasswordHash string `gorm:"not null" json:"-"` Name string `gorm:"not null" json:"name"` Phone string `json:"phone"` Role string `gorm:"default:'user'" json:"role"` // 'admin', 'user' AffiliationType string `json:"affiliationType"` CompanyCode string `json:"companyCode"` Department string `json:"department"` Status string `gorm:"default:'active'" json:"status"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` } // BeforeCreate hook to generate UUID if not present func (u *User) BeforeCreate(tx *gorm.DB) (err error) { if u.ID == "" { u.ID = uuid.New().String() } return }