diff --git a/src/web/modules/custom/enfrancais_graphql/graphql/enfr_extension.extension.graphqls b/src/web/modules/custom/enfrancais_graphql/graphql/enfr_extension.extension.graphqls index 937beb5..2cee853 100644 --- a/src/web/modules/custom/enfrancais_graphql/graphql/enfr_extension.extension.graphqls +++ b/src/web/modules/custom/enfrancais_graphql/graphql/enfr_extension.extension.graphqls @@ -3,12 +3,21 @@ # } extend type Query { - mapitems: [MapItemInterface] + allmapitems: [MapItemInterface] } + +extend type Query { + mapitems(ids: [Int]): [MapItemInterface] +} + extend type Query { mapitem(id: Int!): MapItemInterface } +extend type Query { + allmapitemsof(familyId: Int!): [MapItemInterface] +} + extend type Query { texts: [TextInterface] } diff --git a/src/web/modules/custom/enfrancais_graphql/src/Plugin/GraphQL/SchemaExtension/EnFrSchemaExtension.php b/src/web/modules/custom/enfrancais_graphql/src/Plugin/GraphQL/SchemaExtension/EnFrSchemaExtension.php index 643420e..2229933 100644 --- a/src/web/modules/custom/enfrancais_graphql/src/Plugin/GraphQL/SchemaExtension/EnFrSchemaExtension.php +++ b/src/web/modules/custom/enfrancais_graphql/src/Plugin/GraphQL/SchemaExtension/EnFrSchemaExtension.php @@ -168,7 +168,7 @@ class EnFrSchemaExtension extends SdlSchemaExtensionPluginBase { throw new Error('Could not resolve content type.'); }); - $registry->addFieldResolver('Query', 'mapitems', + $registry->addFieldResolver('Query', 'allmapitems', $builder->compose( $builder->callback(function($parent, $arg){ $entity_storage = \Drupal::entityTypeManager()->getStorage('node'); @@ -184,11 +184,44 @@ class EnFrSchemaExtension extends SdlSchemaExtensionPluginBase { ) ); + $registry->addFieldResolver('Query', 'mapitems', + $builder->compose( + $builder->callback(function($parent, $arg){ + $entity_storage = \Drupal::entityTypeManager()->getStorage('node'); + $query = $entity_storage->getQuery() + ->condition('type', ['texte', 'texte_prod', 'creation'], 'IN') + ->accessCheck(TRUE); + $results = $query->execute(); + return $results; + }), + $builder->produce('entity_load_multiple') + ->map('type', $builder->fromValue('node')) + ->map('ids', $builder->fromArgument('ids')) + ) + ); + $registry->addFieldResolver('Query', 'mapitem', $builder->produce('entity_load') ->map('type', $builder->fromValue('node')) ->map('id', $builder->fromArgument('id')) ); + + $registry->addFieldResolver('Query', 'allmapitemsof', + $builder->compose( + $builder->callback(function($parent, $arg){ + $entity_storage = \Drupal::entityTypeManager()->getStorage('node'); + $query = $entity_storage->getQuery() + ->condition('type', ['texte', 'texte_prod'], 'IN') + ->condition('field_famille', $arg) + ->accessCheck(TRUE); + $results = $query->execute(); + return $results; + }), + $builder->produce('entity_load_multiple') + ->map('type', $builder->fromValue('node')) + ->map('ids', $builder->fromParent()) + ) + ); } // _____ _ ___ _