code: private function getOperationRootType(Schema $schema, OperationDefinitionNode $operation)
      {
          switch ($operation->operation) {
              case 'query':
                  $queryType = $schema->getQueryType();
                  if (! $queryType) {
                      throw new Error(
                          'Schema does not define the required query root type.',
                          [$operation]
                      );
                  }
  
                  return $queryType;
              case 'mutation':
                  $mutationType = $schema->getMutationType();
                  if (! $mutationType) {
                      throw new Error(
                          'Schema is not configured for mutations.',
                          [$operation]
                      );
                  }
  
                  return $mutationType;
              case 'subscription':
                  $subscriptionType = $schema->getSubscriptionType();
                  if (! $subscriptionType) {
                      throw new Error(
                          'Schema is not configured for subscriptions.',
                          [$operation]
                      );
                  }
  
                  return $subscriptionType;
              default:
                  throw new Error(
                      'Can only execute queries, mutations and subscriptions.',
                      [$operation]
                  );
          }
      }
docs: Extracts the root type of the operation from the schema.
  
  @return ObjectType
  
  @throws Error