58 lines
1.4 KiB
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
|
|
}
|