graphql api for entités

This commit is contained in:
Bachir Soussi Chiadmi 2023-04-19 12:39:00 +02:00
parent e81913c2e1
commit 3467bc3f5f
3 changed files with 101 additions and 20 deletions

View File

@ -21,7 +21,7 @@ settings:
handler: 'default:file'
handler_settings: { }
file_directory: '[date:custom:Y]-[date:custom:m]'
file_extensions: ogg
file_extensions: 'ogg mp3 flac'
max_filesize: ''
description_field: true
field_type: file

View File

@ -32,10 +32,19 @@ type Entite implements NodeInterface {
title: String!
path: String!
author: String
texte: String
action: String
menacemaintien: String
sources: [Source]
}
type Source {
audios: Filefield
date: Date
documents: [Filefield]
description: String
images: [Image]
fichiers: [Filefield]
liens: [Link]
videos: [VideoLink]
}
type Static implements NodeInterface {

View File

@ -36,6 +36,8 @@ class OuattSchemaExtension extends SdlSchemaExtensionPluginBase {
//
$this->addEntites($registry, $builder);
//
$this->addSource($registry, $builder);
//
$this->addStatic($registry, $builder);
//
$this->addGroup($registry, $builder);
@ -259,7 +261,6 @@ class OuattSchemaExtension extends SdlSchemaExtensionPluginBase {
// | _| | '_ \| __| | __/ _ \/ __|
// | |___| | | | |_| | || __/\__ \
// |_____|_| |_|\__|_|\__\___||___/
protected function addEntites(ResolverRegistryInterface $registry, ResolverBuilder $builder){
$registry->addFieldResolver('Query', 'allentites',
$builder->compose(
@ -330,11 +331,18 @@ class OuattSchemaExtension extends SdlSchemaExtensionPluginBase {
->map('entity', $builder->fromParent())
));
$registry->addFieldResolver('Entite', 'texte',
$registry->addFieldResolver('Entite', 'action',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:node'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('body.value'))
->map('path', $builder->fromValue('field_action.value'))
);
$registry->addFieldResolver('Entite', 'menacemaintien',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:node'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_menace_maintien.value'))
);
$registry->addFieldResolver('Entite', 'author',
@ -345,34 +353,73 @@ class OuattSchemaExtension extends SdlSchemaExtensionPluginBase {
->map('entity', $builder->fromParent())
));
$registry->addFieldResolver('Entite', 'images',
$registry->addFieldResolver('Entite', 'sources',
$builder->produce('entity_reference_revisions')
->map('entity', $builder->fromParent())
->map('field', $builder->fromValue('field_sources'))
);
}
// ____
// / ___| ___ _ _ _ __ ___ ___
// \___ \ / _ \| | | | '__/ __/ _ \
// ___) | (_) | |_| | | | (_| __/
// |____/ \___/ \__,_|_| \___\___|
protected function addSource(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
$registry->addFieldResolver('Source', 'description',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:paragraph'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_description.value'))
);
$registry->addFieldResolver('Source', 'images',
$builder->produce('entity_reference')
->map('entity', $builder->fromParent())
->map('field', $builder->fromValue('field_images'))
);
$registry->addFieldResolver('Entite', 'videos',
$registry->addFieldResolver('Source', 'videos',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:node'))
->map('type', $builder->fromValue('entity:paragraph'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_videos'))
);
$registry->addFieldResolver('Entite', 'fichiers',
$builder->produce('entity_reference')
->map('entity', $builder->fromParent())
->map('field', $builder->fromValue('field_fichiers'))
$registry->addFieldResolver('Source', 'documents',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:paragraph'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_documents'))
);
$registry->addFieldResolver('Entite', 'liens',
$registry->addFieldResolver('Source', 'liens',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:node'))
->map('type', $builder->fromValue('entity:paragraph'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_liens'))
);
}
$registry->addFieldResolver('Source', 'date',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:paragraph'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_date'))
);
$registry->addFieldResolver('Source', 'audios',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:paragraph'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_audio'))
);
}
// ___ _ _ _
// / __| |_ __ _| |_(_)__ ___
// \__ \ _/ _` | _| / _(_-<
@ -684,13 +731,25 @@ class OuattSchemaExtension extends SdlSchemaExtensionPluginBase {
$registry->addFieldResolver('Filefield', 'description',
$builder->callback(function ($parent, $args) {
return $parent['description'];
if (is_array($parent) && isset($parent['description'])) {
return $parent['description'];
} else if (is_array($parent) && isset($parent[0]['description'])) {
return $parent[0]['description'];
} else{
return null;
}
})
);
$registry->addFieldResolver('Filefield', 'file',
$builder->callback(function ($parent, $args) {
return \Drupal\file\Entity\File::load($parent['target_id']);
if (is_array($parent) && isset($parent['target_id'])) {
return \Drupal\file\Entity\File::load($parent['target_id']);
} else if (is_array($parent) && isset($parent[0]['target_id'])) {
return \Drupal\file\Entity\File::load($parent[0]['target_id']);
} else{
return null;
}
})
);
@ -884,16 +943,24 @@ class OuattSchemaExtension extends SdlSchemaExtensionPluginBase {
protected function addLink(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
$registry->addFieldResolver('Link', 'url',
$builder->callback(function ($parent, $args) {
return isset($parent[0]) ? $parent[0]['uri'] : null;
// return isset($parent[0]) ? $parent[0]['uri'] : null;
return $parent['uri'];
})
);
$registry->addFieldResolver('Link', 'title',
$builder->callback(function ($parent, $args) {
return isset($parent[0]) ? $parent[0]['title'] : null;
// return isset($parent[0]) ? $parent[0]['title'] : null;
return $parent['title'];
})
);
}
// _____ _ _ _ ____ __ _ _ _ _
// | ____|_ __ | |_(_) |_ _ _ | _ \ ___ / _(_)_ __ (_) |_(_) ___ _ __
// | _| | '_ \| __| | __| | | | | | | |/ _ \ |_| | '_ \| | __| |/ _ \| '_ \
// | |___| | | | |_| | |_| |_| | | |_| | __/ _| | | | | | |_| | (_) | | | |
// |_____|_| |_|\__|_|\__|\__, | |____/ \___|_| |_|_| |_|_|\__|_|\___/|_| |_|
// |___/
protected function addEntityDefinition(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
$registry->addFieldResolver('Query', 'entitydef',
$builder->compose(
@ -913,6 +980,11 @@ class OuattSchemaExtension extends SdlSchemaExtensionPluginBase {
}
// _____ _ _ _ ____ __
// | ___(_) ___| | __| | | _ \ ___ / _|
// | |_ | |/ _ \ |/ _` | | | | |/ _ \ |_
// | _| | | __/ | (_| | | |_| | __/ _|
// |_| |_|\___|_|\__,_| |____/ \___|_|
protected function addFieldDef(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
$registry->addFieldResolver('FieldDef', 'type',