package service import ( "hamster-tycoon/storage/dao" "hamster-tycoon/storage/model" "hamster-tycoon/utils" ) type UserService struct { serviceContext } func NewUserService(database dao.Database) *UserService { return &UserService{serviceContext{db: database}} } func (us *UserService) GetUserFromGoogleId(googleUserId string) (*model.User, error) { user, err := us.db.GetUsersByGoogleID(googleUserId) if err != nil { if castedError, ok := err.(*dao.DAOError); ok { switch castedError.Type { case dao.ErrTypeNotFound: return nil, &model.ErrNotFound default: return nil, &model.ErrInternalServer } } return nil, &model.ErrInternalServer } return user, nil } func (us *UserService) CreateUserFromGoogleToken(id string, email string) (*model.User, error) { randNick := utils.String(20) user := &model.User{UserEditable: model.UserEditable{Email: email, Nickname: "player-" + randNick}, GoogleId: id} err := us.db.CreateUser(user) return user, err }