69 lines
1.4 KiB
Go
69 lines
1.4 KiB
Go
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,
|
|
}
|
|
}
|