Files
IDP-Backend/internal/api/user/service/user_service.go

72 lines
1.9 KiB
Go

package service
import (
"context"
"git.logidex.ru/fakz9/logidex-id/internal/api/user/domain"
)
type UserService interface {
GetUserByPhoneNumber(ctx context.Context, phoneNumber string) (*domain.User, error)
GetUserByUuid(ctx context.Context, uuid string) (*domain.User, error)
CreateUser(ctx context.Context, phoneNumber string) (*domain.User, error)
VerifyUser(ctx context.Context, uuid string) (*domain.User, error)
}
type userService struct {
repo domain.UserRepository
}
func (u userService) GetUserByUuid(ctx context.Context, uuid string) (*domain.User, error) {
dbUser, err := u.repo.GetUserByUuid(ctx, uuid)
if err != nil {
return nil, err
}
if dbUser == nil {
return nil, domain.ErrUserNotFound{PhoneNumber: uuid}
}
return &domain.User{
Uuid: dbUser.Uuid.String(),
PhoneNumber: dbUser.PhoneNumber,
}, nil
}
func (u userService) GetUserByPhoneNumber(ctx context.Context, phoneNumber string) (*domain.User, error) {
dbUser, err := u.repo.GetUserByPhoneNumber(ctx, phoneNumber)
if err != nil {
return nil, err
}
if dbUser == nil {
return nil, domain.ErrUserNotFound{PhoneNumber: phoneNumber}
}
return &domain.User{
Uuid: dbUser.Uuid.String(),
PhoneNumber: dbUser.PhoneNumber,
}, nil
}
func (u userService) CreateUser(ctx context.Context, phoneNumber string) (*domain.User, error) {
dbUser, err := u.repo.CreateUser(ctx, phoneNumber)
if err != nil {
return nil, err
}
return &domain.User{
Uuid: dbUser.Uuid.String(),
PhoneNumber: dbUser.PhoneNumber,
}, nil
}
func (u userService) VerifyUser(ctx context.Context, uuid string) (*domain.User, error) {
dbUser, err := u.repo.VerifyUser(ctx, uuid)
if err != nil {
return nil, err
}
return &domain.User{
Uuid: dbUser.Uuid.String(),
PhoneNumber: dbUser.PhoneNumber,
}, nil
}
func NewUserService(repo domain.UserRepository) UserService {
return &userService{repo: repo}
}