94 lines
2.1 KiB
Go
94 lines
2.1 KiB
Go
package grpc
|
|
|
|
import (
|
|
"google.golang.org/grpc/codes"
|
|
"google.golang.org/grpc/status"
|
|
"src.dualinventive.com/go/users-service/errors"
|
|
"src.dualinventive.com/go/users-service/internal/domain"
|
|
)
|
|
|
|
func mapUser(user *domain.User) *User {
|
|
mapped := &User{
|
|
UserID: uint64(user.ID),
|
|
UserName: user.UserName,
|
|
FirstName: user.FirstName,
|
|
LastName: user.LastName,
|
|
Reference: user.Reference,
|
|
}
|
|
|
|
modelRoles := make([]*Role, 0, len(user.Roles))
|
|
for _, domainRole := range user.Roles {
|
|
var rightCodes []string
|
|
for _, right := range domainRole.Rights {
|
|
rightCodes = append(rightCodes, right.Code)
|
|
}
|
|
|
|
modelRoles = append(modelRoles, &Role{
|
|
Name: domainRole.Name,
|
|
Rights: rightCodes,
|
|
})
|
|
}
|
|
mapped.Roles = modelRoles
|
|
mapped.Company = &Company{
|
|
Id: int64(user.Company.ID),
|
|
Name: user.Company.Name,
|
|
Code: user.Company.Code,
|
|
}
|
|
|
|
return mapped
|
|
}
|
|
|
|
func mapUsers(users []domain.User) []*User {
|
|
if users == nil {
|
|
return nil
|
|
}
|
|
|
|
userslist := []*User{}
|
|
|
|
for _, user := range users {
|
|
user := user
|
|
userslist = append(userslist, mapUser(&user))
|
|
}
|
|
|
|
return userslist
|
|
}
|
|
|
|
func mapFilter(reqfilter *UsersFilter) domain.UsersFilter {
|
|
filter := make(domain.UsersFilter)
|
|
if reqfilter != nil && len(reqfilter.Reference) != 0 {
|
|
filter[domain.UsersFilterTypeReference] = reqfilter.Reference
|
|
}
|
|
|
|
return filter
|
|
}
|
|
|
|
func mapSortCol(sortcol ListUsersRequest_SortCol) domain.SortCol {
|
|
switch sortcol {
|
|
case ListUsersRequest_ID_ASC:
|
|
return domain.SortColIDAsc
|
|
case ListUsersRequest_ID_DESC:
|
|
return domain.SortColIDDesc
|
|
case ListUsersRequest_NAME_ASC:
|
|
return domain.SortColNameAsc
|
|
case ListUsersRequest_NAME_DESC:
|
|
return domain.SortColNameDesc
|
|
default:
|
|
return domain.SortColIDAsc
|
|
}
|
|
}
|
|
|
|
func mapError(err error) error {
|
|
switch err.(type) {
|
|
case *errors.ErrUnauthorized:
|
|
return status.Error(codes.Unauthenticated, err.Error())
|
|
case *errors.ErrAuthFailed:
|
|
return status.Error(codes.Internal, err.Error())
|
|
case *errors.ErrUserNotFound:
|
|
return status.Error(codes.NotFound, err.Error())
|
|
case *errors.ErrUserRepositoryErr:
|
|
return status.Error(codes.Internal, err.Error())
|
|
default:
|
|
return status.Error(codes.Internal, err.Error())
|
|
}
|
|
}
|