GetRole gets a role.
(ctx context.Context, req *connect.Request[v1pb.GetRoleRequest])
| 49 | |
| 50 | // GetRole gets a role. |
| 51 | func (s *RoleService) GetRole(ctx context.Context, req *connect.Request[v1pb.GetRoleRequest]) (*connect.Response[v1pb.Role], error) { |
| 52 | roleName := req.Msg.Name |
| 53 | roleID, err := common.GetRoleID(roleName) |
| 54 | if err != nil { |
| 55 | return nil, connect.NewError(connect.CodeInvalidArgument, err) |
| 56 | } |
| 57 | role, err := s.store.GetRole(ctx, &store.FindRoleMessage{Workspace: common.GetWorkspaceIDFromContext(ctx), ResourceID: &roleID}) |
| 58 | if err != nil { |
| 59 | return nil, connect.NewError(connect.CodeInternal, errors.Wrap(err, "failed to get role")) |
| 60 | } |
| 61 | if role != nil { |
| 62 | return connect.NewResponse(convertToRole(role)), nil |
| 63 | } |
| 64 | if predefinedRole := s.getBuildinRole(roleID); predefinedRole != nil { |
| 65 | return connect.NewResponse(convertToRole(predefinedRole)), nil |
| 66 | } |
| 67 | return nil, connect.NewError(connect.CodeNotFound, errors.Errorf("role not found: %s", roleID)) |
| 68 | } |
| 69 | |
| 70 | func (*RoleService) getBuildinRole(roleID string) *store.RoleMessage { |
| 71 | return store.GetPredefinedRole(roleID) |
nothing calls this directly
no test coverage detected