package models import ( "github.com/nose7en/ToyBoomServer/defs" "gorm.io/gorm" ) var _ defs.UserGettable = (*User)(nil) func NewUserGettable(opt ...func(*User)) defs.UserGettable { u := &User{} for _, o := range opt { o(u) } return u } type User struct { gorm.Model UserID string `json:"user_id"` // user id from apple Name string `json:"name"` // ToyBoom's user name Username string `json:"username"` // user name from apple Email string `json:"email"` // email from apple IsPrivateEmail bool `json:"is_private_email"` EmailVerified bool `json:"email_verified"` } func (u *User) FillWithUserInfo(userInfo defs.UserGettable) { u.UserID = userInfo.GetUserID() u.Name = userInfo.GetName() u.Username = userInfo.GetUsername() u.Email = userInfo.GetEmail() u.IsPrivateEmail = userInfo.GetIsPrivateEmail() u.EmailVerified = userInfo.GetEmailVerified() } func (u *User) GetName() string { return u.Name } func (u *User) GetUsername() string { return u.Username } func (u *User) GetUserID() string { return u.UserID } func (u *User) GetEmail() string { return u.Email } func (u *User) GetIsPrivateEmail() bool { return u.IsPrivateEmail } func (u *User) GetEmailVerified() bool { return u.EmailVerified } func (u *User) ToUser() defs.User { return defs.User{ UserID: u.UserID, Name: u.Name, Username: u.Username, Email: u.Email, } }