22 lines
1.1 KiB
Go
22 lines
1.1 KiB
Go
package domain
|
|
|
|
import "time"
|
|
|
|
type User struct {
|
|
ID string `gorm:"primaryKey;type:uuid;default:uuid_generate_v4();unique;not null" json:"id"`
|
|
Avatar *string `json:"avatar,omitempty"`
|
|
Username string `gorm:"not null" json:"username"`
|
|
Name string `gorm:"not null" json:"name"`
|
|
Phone string `gorm:"not null" json:"phone"`
|
|
Email string `gorm:"not null" json:"email"`
|
|
EmailVerified bool `gorm:"default:false" json:"emailVerified"`
|
|
Password string `gorm:"not null" json:"password"`
|
|
Pin UserPin `gorm:"foreignKey:UserID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"pin"`
|
|
CreatedAt time.Time `gorm:"default:current_timestamp" json:"createdAt"`
|
|
UpdatedAt time.Time `gorm:"default:current_timestamp" json:"updatedAt"`
|
|
RoleID string `gorm:"not null" json:"roleId"`
|
|
Role UserRole `gorm:"foreignKey:RoleID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"role"`
|
|
AddressId *string `gorm:"default:null" json:"addressId"`
|
|
Addresses []Address `gorm:"foreignKey:UserID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"addresses"`
|
|
}
|