chore: init repository

This commit is contained in:
2022-10-06 15:37:28 +02:00
commit 833851f695
38 changed files with 2302 additions and 0 deletions

55
internal/user/service.go Normal file
View File

@@ -0,0 +1,55 @@
package user
import (
"john/internal/storage/dao"
"john/internal/storage/model"
)
type Service struct {
db *Database
}
func NewService(database *Database) *Service {
return &Service{db: database}
}
func (s *Service) GetUserById(userId string) (*User, error) {
user, err := s.db.GetUsersByID(userId)
if e, ok := err.(*dao.Error); ok {
switch {
case e.Type == dao.ErrTypeNotFound:
return nil, &model.ErrNotFound
default:
return nil, &model.ErrInternalServer
}
} else if err != nil {
return nil, &model.ErrInternalServer
}
if user == nil {
return nil, &model.ErrNotFound
}
return user, nil
}
func (us *Service) GetUserFromGoogleID(googleUserID string) (*User, error) {
user, err := us.db.GetUsersByGoogleID(googleUserID)
if err != nil {
if castedError, ok := err.(*dao.Error); 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 *Service) CreateUserFromGoogleToken(id string, email string) (*User, error) {
user := &User{UserEditable: UserEditable{Email: email}, GoogleID: id}
err := us.db.CreateUser(user)
return user, err
}