- Issue created by @cedricl
- Assigned to almunnings
- 🇦🇺Australia almunnings Melbourne, 🇦🇺
Yeah lets do it. I’ll try get it done tomorrow and into dev.
- Status changed to Postponed: needs info
over 1 year ago 12:20am 21 July 2023 - 🇦🇺Australia almunnings Melbourne, 🇦🇺
OOooohkay!
Hopefully this is enough information for you:I've updated the docs to help with your query:
https://drupal-graphql-compose.github.io/documentation/#/extending/custo...This is possible using hooks in a custom module on your end.
I'm hesitant to add it to the schema, as the data doesn't really exist and isn't a schema requiremen... The return order of the data is the same as the delta. So you use case might be a little unique in the need for it to be in the data.
What you want though, is 100% possible, just using a few hooks.
/** * @file * My drupal module that extends graphql_compose. */ declare(strict_types=1); use Drupal\Core\Cache\RefinableCacheableDependencyInterface; use Drupal\Core\Entity\EntityTypeInterface; use Drupal\Core\Field\BaseFieldDefinition; use Drupal\paragraphs\ParagraphInterface; /** * Implements hook_entity_base_field_info(). * * Add a weight field to paragraphs. */ function mymodule_entity_base_field_info(EntityTypeInterface $entity_type): ?array { if ($entity_type->id() === 'paragraph') { $fields = []; $fields['weight'] = BaseFieldDefinition::create('integer') ->setLabel(t('Weight')) ->setDescription(t('The delta weight of this paragraph within a fielded context.')) ->setComputed(TRUE) ->setDefaultValue(0); return $fields; } } /** * Implements hook_graphql_compose_field_results_alter(). * * Modify the entity results as they are given to the schema. * * You could also compute this somewhere else, but for this example * we'll do it here. * * The delta is the position of the paragraph in the field. */ function mymodule_graphql_compose_field_results_alter(array &$results, array $context, RefinableCacheableDependencyInterface $metadata): void { foreach ($results as $delta => $result) { if ($result instanceof ParagraphInterface) { $result->set('weight', $delta ?? 0); } } } /** * Implements hook_graphql_compose_entity_base_fields_alter(). * * Add the new "weight" field to the interface. */ function mymodule_graphql_compose_entity_base_fields_alter(array &$fields, string $entity_type_id): void { if ($entity_type_id === 'paragraph') { // You could use any entity type base_field annotation in the array. // @see https://drupal-graphql-compose.github.io/documentation/#/extending/entity_type $fields['weight'] = []; } }
Does this answer the feature request?
- Status changed to Closed: works as designed
over 1 year ago 7:13am 25 July 2023