backend/pkg/member/usecase/account.go

58 lines
1.4 KiB
Go

package usecase
import (
errs "backend/pkg/library/errors"
"backend/pkg/member/domain/config"
"backend/pkg/member/domain/repository"
"backend/pkg/member/domain/usecase"
repo "backend/pkg/member/repository"
"context"
"errors"
)
type MemberUseCaseParam struct {
Account repository.AccountRepository
User repository.UserRepository
AccountUID repository.AccountUIDRepository
VerifyCodeModel repository.VerifyCodeRepository
GenerateUID repository.AutoIDRepository
Config config.Config
Logger errs.Logger
}
type MemberUseCase struct {
MemberUseCaseParam
}
func MustMemberUseCase(param MemberUseCaseParam) usecase.AccountUseCase {
return &MemberUseCase{
param,
}
}
func (use *MemberUseCase) FindLoginIDByUID(ctx context.Context, uid string) (usecase.BindingUser, error) {
data, err := use.AccountUID.FindOneByUID(ctx, uid)
if err != nil {
if errors.Is(err, repo.ErrNotFound) {
e := errs.ResNotFoundError("failed to find user by uid: " + uid)
return usecase.BindingUser{}, e
}
e := errs.DBErrorErrorL(use.Logger,
[]errs.LogField{
{Key: "uid", Val: uid},
{Key: "func", Val: "AccountUID.FindOneByUID"},
{Key: "err", Val: err.Error()},
},
"failed to use database")
return usecase.BindingUser{}, e
}
return usecase.BindingUser{
UID: data.UID,
LoginID: data.LoginID,
}, nil
}