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()) } }