refactored materioSchemaExtension

This commit is contained in:
Bachir Soussi Chiadmi 2020-12-22 19:28:27 +01:00
parent 5deb568786
commit 2175e7ae2d
1 changed files with 461 additions and 451 deletions

View File

@ -26,446 +26,23 @@ class MaterioSchemaExtension extends SdlSchemaExtensionPluginBase {
$this->addMateriau($registry, $builder); $this->addMateriau($registry, $builder);
// _ _ _ _ $this->addArticle($registry, $builder);
// /_\ _ _| |_(_)__| |___
// / _ \| '_| _| / _| / -_)
// /_/ \_\_| \__|_\__|_\___|
$registry->addFieldResolver('Query', 'article',
$builder->produce('entity_load')
->map('type', $builder->fromValue('node'))
->map('bundles', $builder->fromValue(['article']))
->map('id', $builder->fromArgument('id'))
);
$registry->addFieldResolver('Article', 'id', $this->addCompany($registry, $builder);
$builder->produce('entity_id')
->map('entity', $builder->fromParent())
);
$registry->addFieldResolver('Article', 'uuid', $this->addAddress($registry, $builder);
$builder->produce('entity_uuid')
->map('entity', $builder->fromParent())
);
$registry->addFieldResolver('Article', 'title', $this->addFilefield($registry, $builder);
$builder->compose(
$builder->produce('entity_label')
->map('entity', $builder->fromParent())
));
$registry->addFieldResolver('Article', 'author', $this->addFile($registry, $builder);
$builder->compose(
$builder->produce('entity_owner')
->map('entity', $builder->fromParent()),
$builder->produce('entity_label')
->map('entity', $builder->fromParent())
));
$registry->addFieldResolver('Article', 'body', $this->addDate($registry, $builder);
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:node'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('body.value'))
);
$registry->addFieldResolver('Article', 'memo', $this->addLink($registry, $builder);
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:node'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_memo.value'))
);
// https://github.com/drupal-graphql/graphql/blob/8.x-4.x/doc/SUMMARY.md
// https://blog.chrismitchellonline.com/posts/custom_graphql_data/
$registry->addFieldResolver('Article', 'linked_materials',
$builder->produce('entity_reference')
->map('entity', $builder->fromParent())
->map('field', $builder->fromValue('field_linked_materials'))
);
$registry->addFieldResolver('Article', 'images', $this->addShowroom($registry, $builder);
$builder->produce('entity_reference')
->map('entity', $builder->fromParent())
->map('field', $builder->fromValue('field_visuel'))
);
$registry->addFieldResolver('Article', 'videos',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:node'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_video'))
);
$registry->addFieldResolver('Article', 'tags',
$builder->produce('entity_reference')
->map('entity', $builder->fromParent())
->map('field', $builder->fromValue('field_tags'))
);
$registry->addFieldResolver('Article', 'thesaurus',
$builder->produce('entity_reference')
->map('entity', $builder->fromParent())
->map('field', $builder->fromValue('field_thesaurus'))
);
$registry->addFieldResolver('Article', 'showroom',
$builder->compose(
$builder->produce('entity_reference')
->map('entity', $builder->fromParent())
->map('field', $builder->fromValue('field_showroom')),
$builder->callback(function ($items) {
return $items[0];
})
));
$registry->addFieldResolver('Article', 'source',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:node'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_source'))
);
$registry->addFieldResolver('Article', 'date',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:node'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_date'))
);
// ___
// / __|___ _ __ _ __ __ _ _ _ _ _
// | (__/ _ \ ' \| '_ \/ _` | ' \ || |
// \___\___/_|_|_| .__/\__,_|_||_\_, |
// |_| |__/
$registry->addFieldResolver('Query', 'company',
$builder->produce('entity_load')
->map('type', $builder->fromValue('taxonomy_term'))
->map('bundles', $builder->fromValue(['company']))
->map('id', $builder->fromArgument('id'))
);
$registry->addFieldResolver('Company', 'id',
$builder->produce('entity_id')
->map('entity', $builder->fromParent())
);
$registry->addFieldResolver('Company', 'uuid',
$builder->produce('entity_uuid')
->map('entity', $builder->fromParent())
);
$registry->addFieldResolver('Company', 'name',
$builder->produce('entity_label')
->map('entity', $builder->fromParent())
);
// TODO: property_path helper
// $props = [
// [
// "res" => "attachments",
// "type" => "entity:taxonomy_term",
// "path" => "field_attachments",
// ]
// ]
// foreach ($props as $key => $value) {
// $registry->addFieldResolver('Company', $value['res'],
// $builder->produce('property_path')
// ->map('type', $builder->fromValue('entity:taxonomy_term'))
// ->map('value', $builder->fromParent())
// ->map('path', $builder->fromValue('field_attachments'))
// );
// }
$registry->addFieldResolver('Company', 'attachments',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:taxonomy_term'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_attachments'))
);
$registry->addFieldResolver('Company', 'memo',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:taxonomy_term'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_memo.value'))
);
$registry->addFieldResolver('Company', 'note',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:taxonomy_term'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_note.value'))
);
$registry->addFieldResolver('Company', 'website',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:taxonomy_term'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_website'))
);
$registry->addFieldResolver('Company', 'departement',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:taxonomy_term'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_departement.value'))
);
$registry->addFieldResolver('Company', 'email',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:taxonomy_term'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_public_email.value'))
);
$registry->addFieldResolver('Company', 'address',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:taxonomy_term'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_public_address'))
);
// field_infos_from_company
// field_public_phone
// _ _ _
// /_\ __| |__| |_ _ ___ ______
// / _ \/ _` / _` | '_/ -_|_-<_-<
// /_/ \_\__,_\__,_|_| \___/__/__/
// $addr_fields = [
// 'langcode',
// 'country_code',
// 'administrative_area',
// 'locality',
// 'dependent_locality',
// 'postal_code',
// 'sorting_code',
// 'address_line1',
// 'address_line2',
// 'organization',
// 'given_name',
// 'additional_name',
// 'family_name'
// ];
//
// foreach ($addr_fields as $key => $value) {
// $registry->addFieldResolver('Address', $value,
// $builder->callback(function ($parent, $args) {
// return $parent[0][$value];
// })
// );
// }
$registry->addFieldResolver('Address', 'langcode',
$builder->callback(function ($parent, $args) {
return $parent[0]['langcode'];
})
);
$registry->addFieldResolver('Address', 'country_code',
$builder->callback(function ($parent, $args) {
return $parent[0]['country_code'];
})
);
$registry->addFieldResolver('Address', 'administrative_area',
$builder->callback(function ($parent, $args) {
return $parent[0]['administrative_area'];
})
);
$registry->addFieldResolver('Address', 'locality',
$builder->callback(function ($parent, $args) {
return $parent[0]['locality'];
})
);
$registry->addFieldResolver('Address', 'dependent_locality',
$builder->callback(function ($parent, $args) {
return $parent[0]['dependent_locality'];
})
);
$registry->addFieldResolver('Address', 'postal_code',
$builder->callback(function ($parent, $args) {
return $parent[0]['postal_code'];
})
);
$registry->addFieldResolver('Address', 'sorting_code',
$builder->callback(function ($parent, $args) {
return $parent[0]['sorting_code'];
})
);
$registry->addFieldResolver('Address', 'address_line1',
$builder->callback(function ($parent, $args) {
return $parent[0]['address_line1'];
})
);
$registry->addFieldResolver('Address', 'address_line2',
$builder->callback(function ($parent, $args) {
return $parent[0]['address_line2'];
})
);
$registry->addFieldResolver('Address', 'organization',
$builder->callback(function ($parent, $args) {
return $parent[0]['organization'];
})
);
$registry->addFieldResolver('Address', 'given_name',
$builder->callback(function ($parent, $args) {
return $parent[0]['given_name'];
})
);
$registry->addFieldResolver('Address', 'additional_name',
$builder->callback(function ($parent, $args) {
return $parent[0]['additional_name'];
})
);
$registry->addFieldResolver('Address', 'family_name',
$builder->callback(function ($parent, $args) {
return $parent[0]['family_name'];
})
);
// ___ _ _ __ _ _ _
// | __(_) |___ / _(_)___| |__| |
// | _|| | / -_) _| / -_) / _` |
// |_| |_|_\___|_| |_\___|_\__,_|
$registry->addFieldResolver('Filefield', 'description',
$builder->callback(function ($parent, $args) {
return $parent['description'];
})
);
$registry->addFieldResolver('Filefield', 'file',
$builder->callback(function ($parent, $args) {
return \Drupal\file\Entity\File::load($parent['target_id']);
})
);
// ___ _ _
// | __(_) |___
// | _|| | / -_)
// |_| |_|_\___|
$registry->addFieldResolver('File', 'url',
$builder->callback(function ($parent, $args) {
return $parent->url();
})
);
$registry->addFieldResolver('File', 'filesize',
$builder->callback(function ($parent, $args) {
return $parent->getSize();
})
);
$registry->addFieldResolver('File', 'filemime',
$builder->callback(function ($parent, $args) {
return $parent->getMimeType();
})
);
$registry->addFieldResolver('File', 'filename',
$builder->callback(function ($parent, $args) {
return $parent->getFilename();
})
);
$registry->addFieldResolver('File', 'fid',
$builder->callback(function ($parent, $args) {
return $parent->id();
})
);
$registry->addFieldResolver('File', 'uuid',
$builder->callback(function ($parent, $args) {
return $parent->uuid();
})
);
// ___ _
// | \ __ _| |_ ___
// | |) / _` | _/ -_)
// |___/\__,_|\__\___|
$registry->addFieldResolver('Date', 'start',
$builder->callback(function ($parent, $args) {
return $parent[0]['value'];
})
);
$registry->addFieldResolver('Date', 'end',
$builder->callback(function ($parent, $args) {
return $parent[0]['end_value'];
})
);
// _ _ _
// | | (_)_ _ | |__
// | |__| | ' \| / /
// |____|_|_||_|_\_\
$registry->addFieldResolver('Link', 'url',
$builder->callback(function ($parent, $args) {
return $parent[0]['uri'];
})
);
$registry->addFieldResolver('Link', 'title',
$builder->callback(function ($parent, $args) {
return $parent[0]['title'];
})
);
// ___ _
// / __| |_ _____ __ ___ _ ___ ___ _ __
// \__ \ ' \/ _ \ V V / '_/ _ \/ _ \ ' \
// |___/_||_\___/\_/\_/|_| \___/\___/_|_|_|
$registry->addFieldResolver('Query', 'showroom',
$builder->produce('entity_load')
->map('type', $builder->fromValue('taxonomy_term'))
->map('bundles', $builder->fromValue(['showroom']))
->map('id', $builder->fromArgument('id'))
);
$registry->addFieldResolver('Showroom', 'id',
$builder->produce('entity_id')
->map('entity', $builder->fromParent())
);
$registry->addFieldResolver('Showroom', 'uuid',
$builder->produce('entity_uuid')
->map('entity', $builder->fromParent())
);
$registry->addFieldResolver('Showroom', 'name',
$builder->produce('entity_label')
->map('entity', $builder->fromParent())
);
// _____
// |_ _|_ _ __ _
// | |/ _` / _` |
// |_|\__,_\__, |
// |___/
$registry->addFieldResolver('Query', 'tag',
$builder->produce('entity_load')
->map('type', $builder->fromValue('taxonomy_term'))
->map('bundles', $builder->fromValue(['tags']))
->map('id', $builder->fromArgument('id'))
);
$registry->addFieldResolver('Tag', 'id',
$builder->produce('entity_id')
->map('entity', $builder->fromParent())
);
$registry->addFieldResolver('Tag', 'uuid',
$builder->produce('entity_uuid')
->map('entity', $builder->fromParent())
);
$registry->addFieldResolver('Tag', 'name',
$builder->produce('entity_label')
->map('entity', $builder->fromParent())
);
$this->addTag($registry, $builder);
$this->addThesaurus($registry, $builder); $this->addThesaurus($registry, $builder);
@ -480,15 +57,10 @@ class MaterioSchemaExtension extends SdlSchemaExtensionPluginBase {
]); ]);
} }
// __ __ _ _ // __ __ _ _
// | \/ |__ _| |_ ___ _ _(_)__ _ _ _ // | \/ |__ _| |_ ___ _ _(_)__ _ _ _
// | |\/| / _` | _/ -_) '_| / _` | || | // | |\/| / _` | _/ -_) '_| / _` | || |
// |_| |_\__,_|\__\___|_| |_\__,_|\_,_| // |_| |_\__,_|\__\___|_| |_\__,_|\_,_|
/**
* @param \Drupal\graphql\GraphQL\ResolverRegistryInterface $registry
* @param \Drupal\graphql\GraphQL\ResolverBuilder $builder
*/
protected function addMateriau(ResolverRegistryInterface $registry, ResolverBuilder $builder) { protected function addMateriau(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
$registry->addFieldResolver('Query', 'materiau', $registry->addFieldResolver('Query', 'materiau',
$builder->produce('entity_load') $builder->produce('entity_load')
@ -611,15 +183,118 @@ class MaterioSchemaExtension extends SdlSchemaExtensionPluginBase {
} }
// _ _ _ _
// /_\ _ _| |_(_)__| |___
// / _ \| '_| _| / _| / -_)
// /_/ \_\_| \__|_\__|_\___|
protected function addArticle(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
$registry->addFieldResolver('Query', 'article',
$builder->produce('entity_load')
->map('type', $builder->fromValue('node'))
->map('bundles', $builder->fromValue(['article']))
->map('id', $builder->fromArgument('id'))
);
$registry->addFieldResolver('Article', 'id',
$builder->produce('entity_id')
->map('entity', $builder->fromParent())
);
$registry->addFieldResolver('Article', 'uuid',
$builder->produce('entity_uuid')
->map('entity', $builder->fromParent())
);
$registry->addFieldResolver('Article', 'title',
$builder->compose(
$builder->produce('entity_label')
->map('entity', $builder->fromParent())
));
$registry->addFieldResolver('Article', 'author',
$builder->compose(
$builder->produce('entity_owner')
->map('entity', $builder->fromParent()),
$builder->produce('entity_label')
->map('entity', $builder->fromParent())
));
$registry->addFieldResolver('Article', 'body',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:node'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('body.value'))
);
$registry->addFieldResolver('Article', 'memo',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:node'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_memo.value'))
);
// https://github.com/drupal-graphql/graphql/blob/8.x-4.x/doc/SUMMARY.md
// https://blog.chrismitchellonline.com/posts/custom_graphql_data/
$registry->addFieldResolver('Article', 'linked_materials',
$builder->produce('entity_reference')
->map('entity', $builder->fromParent())
->map('field', $builder->fromValue('field_linked_materials'))
);
$registry->addFieldResolver('Article', 'images',
$builder->produce('entity_reference')
->map('entity', $builder->fromParent())
->map('field', $builder->fromValue('field_visuel'))
);
$registry->addFieldResolver('Article', 'videos',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:node'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_video'))
);
$registry->addFieldResolver('Article', 'tags',
$builder->produce('entity_reference')
->map('entity', $builder->fromParent())
->map('field', $builder->fromValue('field_tags'))
);
$registry->addFieldResolver('Article', 'thesaurus',
$builder->produce('entity_reference')
->map('entity', $builder->fromParent())
->map('field', $builder->fromValue('field_thesaurus'))
);
$registry->addFieldResolver('Article', 'showroom',
$builder->compose(
$builder->produce('entity_reference')
->map('entity', $builder->fromParent())
->map('field', $builder->fromValue('field_showroom')),
$builder->callback(function ($items) {
return $items[0];
})
));
$registry->addFieldResolver('Article', 'source',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:node'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_source'))
);
$registry->addFieldResolver('Article', 'date',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:node'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_date'))
);
}
// ___ // ___
// |_ _|_ __ __ _ __ _ ___ // |_ _|_ __ __ _ __ _ ___
// | || ' \/ _` / _` / -_) // | || ' \/ _` / _` / -_)
// |___|_|_|_\__,_\__, \___| // |___|_|_|_\__,_\__, \___|
// |___/ // |___/
/**
* @param \Drupal\graphql\GraphQL\ResolverRegistryInterface $registry
* @param \Drupal\graphql\GraphQL\ResolverBuilder $builder
*/
protected function addImage(ResolverRegistryInterface $registry, ResolverBuilder $builder) { protected function addImage(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
$registry->addFieldResolver('Image', 'id', $registry->addFieldResolver('Image', 'id',
$builder->produce('entity_id') $builder->produce('entity_id')
@ -664,15 +339,10 @@ class MaterioSchemaExtension extends SdlSchemaExtensionPluginBase {
} }
// __ ___ _ _ _ _ // __ ___ _ _ _ _
// \ \ / (_)__| |___ ___| | (_)_ _ | |__ // \ \ / (_)__| |___ ___| | (_)_ _ | |__
// \ V /| / _` / -_) _ \ |__| | ' \| / / // \ V /| / _` / -_) _ \ |__| | ' \| / /
// \_/ |_\__,_\___\___/____|_|_||_|_\_\ // \_/ |_\__,_\___\___/____|_|_||_|_\_\
/**
* @param \Drupal\graphql\GraphQL\ResolverRegistryInterface $registry
* @param \Drupal\graphql\GraphQL\ResolverBuilder $builder
*/
protected function addVideolink(ResolverRegistryInterface $registry, ResolverBuilder $builder) { protected function addVideolink(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
$registry->addFieldResolver('VideoLink', 'url', $registry->addFieldResolver('VideoLink', 'url',
$builder->produce('property_path') $builder->produce('property_path')
@ -682,15 +352,10 @@ class MaterioSchemaExtension extends SdlSchemaExtensionPluginBase {
); );
} }
// _____ _ // _____ _
// |_ _| |_ ___ ___ __ _ _ _ _ _ _ _ ___ // |_ _| |_ ___ ___ __ _ _ _ _ _ _ _ ___
// | | | ' \/ -_|_-</ _` | || | '_| || (_-< // | | | ' \/ -_|_-</ _` | || | '_| || (_-<
// |_| |_||_\___/__/\__,_|\_,_|_| \_,_/__/ // |_| |_||_\___/__/\__,_|\_,_|_| \_,_/__/
/**
* @param \Drupal\graphql\GraphQL\ResolverRegistryInterface $registry
* @param \Drupal\graphql\GraphQL\ResolverBuilder $builder
*/
protected function addThesaurus(ResolverRegistryInterface $registry, ResolverBuilder $builder) { protected function addThesaurus(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
$registry->addFieldResolver('Query', 'thesaurus', $registry->addFieldResolver('Query', 'thesaurus',
$builder->produce('entity_load') $builder->produce('entity_load')
@ -715,6 +380,351 @@ class MaterioSchemaExtension extends SdlSchemaExtensionPluginBase {
); );
} }
// _____
// |_ _|_ _ __ _
// | |/ _` / _` |
// |_|\__,_\__, |
// |___/
protected function addTag(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
$registry->addFieldResolver('Query', 'tag',
$builder->produce('entity_load')
->map('type', $builder->fromValue('taxonomy_term'))
->map('bundles', $builder->fromValue(['tags']))
->map('id', $builder->fromArgument('id'))
);
$registry->addFieldResolver('Tag', 'id',
$builder->produce('entity_id')
->map('entity', $builder->fromParent())
);
$registry->addFieldResolver('Tag', 'uuid',
$builder->produce('entity_uuid')
->map('entity', $builder->fromParent())
);
$registry->addFieldResolver('Tag', 'name',
$builder->produce('entity_label')
->map('entity', $builder->fromParent())
);
}
// ___ _
// / __| |_ _____ __ ___ _ ___ ___ _ __
// \__ \ ' \/ _ \ V V / '_/ _ \/ _ \ ' \
// |___/_||_\___/\_/\_/|_| \___/\___/_|_|_|
protected function addShowroom(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
$registry->addFieldResolver('Query', 'showroom',
$builder->produce('entity_load')
->map('type', $builder->fromValue('taxonomy_term'))
->map('bundles', $builder->fromValue(['showroom']))
->map('id', $builder->fromArgument('id'))
);
$registry->addFieldResolver('Showroom', 'id',
$builder->produce('entity_id')
->map('entity', $builder->fromParent())
);
$registry->addFieldResolver('Showroom', 'uuid',
$builder->produce('entity_uuid')
->map('entity', $builder->fromParent())
);
$registry->addFieldResolver('Showroom', 'name',
$builder->produce('entity_label')
->map('entity', $builder->fromParent())
);
}
// _ _ _
// | | (_)_ _ | |__
// | |__| | ' \| / /
// |____|_|_||_|_\_\
protected function addLink(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
$registry->addFieldResolver('Link', 'url',
$builder->callback(function ($parent, $args) {
return $parent[0]['uri'];
})
);
$registry->addFieldResolver('Link', 'title',
$builder->callback(function ($parent, $args) {
return $parent[0]['title'];
})
);
}
// ___ _
// | \ __ _| |_ ___
// | |) / _` | _/ -_)
// |___/\__,_|\__\___|
protected function addDate(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
$registry->addFieldResolver('Date', 'start',
$builder->callback(function ($parent, $args) {
return $parent[0]['value'];
})
);
$registry->addFieldResolver('Date', 'end',
$builder->callback(function ($parent, $args) {
return $parent[0]['end_value'];
})
);
}
// ___ _ _ __ _ _ _
// | __(_) |___ / _(_)___| |__| |
// | _|| | / -_) _| / -_) / _` |
// |_| |_|_\___|_| |_\___|_\__,_|
protected function addFilefield(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
$registry->addFieldResolver('Filefield', 'description',
$builder->callback(function ($parent, $args) {
return $parent['description'];
})
);
$registry->addFieldResolver('Filefield', 'file',
$builder->callback(function ($parent, $args) {
return \Drupal\file\Entity\File::load($parent['target_id']);
})
);
}
// ___ _ _
// | __(_) |___
// | _|| | / -_)
// |_| |_|_\___|
protected function addFile(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
$registry->addFieldResolver('File', 'url',
$builder->callback(function ($parent, $args) {
return $parent->url();
})
);
$registry->addFieldResolver('File', 'filesize',
$builder->callback(function ($parent, $args) {
return $parent->getSize();
})
);
$registry->addFieldResolver('File', 'filemime',
$builder->callback(function ($parent, $args) {
return $parent->getMimeType();
})
);
$registry->addFieldResolver('File', 'filename',
$builder->callback(function ($parent, $args) {
return $parent->getFilename();
})
);
$registry->addFieldResolver('File', 'fid',
$builder->callback(function ($parent, $args) {
return $parent->id();
})
);
$registry->addFieldResolver('File', 'uuid',
$builder->callback(function ($parent, $args) {
return $parent->uuid();
})
);
}
// _ _ _
// /_\ __| |__| |_ _ ___ ______
// / _ \/ _` / _` | '_/ -_|_-<_-<
// /_/ \_\__,_\__,_|_| \___/__/__/
protected function addAddress(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
// $addr_fields = [
// 'langcode',
// 'country_code',
// 'administrative_area',
// 'locality',
// 'dependent_locality',
// 'postal_code',
// 'sorting_code',
// 'address_line1',
// 'address_line2',
// 'organization',
// 'given_name',
// 'additional_name',
// 'family_name'
// ];
//
// foreach ($addr_fields as $key => $value) {
// $registry->addFieldResolver('Address', $value,
// $builder->callback(function ($parent, $args) {
// return $parent[0][$value];
// })
// );
// }
$registry->addFieldResolver('Address', 'langcode',
$builder->callback(function ($parent, $args) {
return $parent[0]['langcode'];
})
);
$registry->addFieldResolver('Address', 'country_code',
$builder->callback(function ($parent, $args) {
return $parent[0]['country_code'];
})
);
$registry->addFieldResolver('Address', 'administrative_area',
$builder->callback(function ($parent, $args) {
return $parent[0]['administrative_area'];
})
);
$registry->addFieldResolver('Address', 'locality',
$builder->callback(function ($parent, $args) {
return $parent[0]['locality'];
})
);
$registry->addFieldResolver('Address', 'dependent_locality',
$builder->callback(function ($parent, $args) {
return $parent[0]['dependent_locality'];
})
);
$registry->addFieldResolver('Address', 'postal_code',
$builder->callback(function ($parent, $args) {
return $parent[0]['postal_code'];
})
);
$registry->addFieldResolver('Address', 'sorting_code',
$builder->callback(function ($parent, $args) {
return $parent[0]['sorting_code'];
})
);
$registry->addFieldResolver('Address', 'address_line1',
$builder->callback(function ($parent, $args) {
return $parent[0]['address_line1'];
})
);
$registry->addFieldResolver('Address', 'address_line2',
$builder->callback(function ($parent, $args) {
return $parent[0]['address_line2'];
})
);
$registry->addFieldResolver('Address', 'organization',
$builder->callback(function ($parent, $args) {
return $parent[0]['organization'];
})
);
$registry->addFieldResolver('Address', 'given_name',
$builder->callback(function ($parent, $args) {
return $parent[0]['given_name'];
})
);
$registry->addFieldResolver('Address', 'additional_name',
$builder->callback(function ($parent, $args) {
return $parent[0]['additional_name'];
})
);
$registry->addFieldResolver('Address', 'family_name',
$builder->callback(function ($parent, $args) {
return $parent[0]['family_name'];
})
);
}
// ___
// / __|___ _ __ _ __ __ _ _ _ _ _
// | (__/ _ \ ' \| '_ \/ _` | ' \ || |
// \___\___/_|_|_| .__/\__,_|_||_\_, |
// |_| |__/
protected function addCompany(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
$registry->addFieldResolver('Query', 'company',
$builder->produce('entity_load')
->map('type', $builder->fromValue('taxonomy_term'))
->map('bundles', $builder->fromValue(['company']))
->map('id', $builder->fromArgument('id'))
);
$registry->addFieldResolver('Company', 'id',
$builder->produce('entity_id')
->map('entity', $builder->fromParent())
);
$registry->addFieldResolver('Company', 'uuid',
$builder->produce('entity_uuid')
->map('entity', $builder->fromParent())
);
$registry->addFieldResolver('Company', 'name',
$builder->produce('entity_label')
->map('entity', $builder->fromParent())
);
// TODO: property_path helper
// $props = [
// [
// "res" => "attachments",
// "type" => "entity:taxonomy_term",
// "path" => "field_attachments",
// ]
// ]
// foreach ($props as $key => $value) {
// $registry->addFieldResolver('Company', $value['res'],
// $builder->produce('property_path')
// ->map('type', $builder->fromValue('entity:taxonomy_term'))
// ->map('value', $builder->fromParent())
// ->map('path', $builder->fromValue('field_attachments'))
// );
// }
$registry->addFieldResolver('Company', 'attachments',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:taxonomy_term'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_attachments'))
);
$registry->addFieldResolver('Company', 'memo',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:taxonomy_term'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_memo.value'))
);
$registry->addFieldResolver('Company', 'note',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:taxonomy_term'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_note.value'))
);
$registry->addFieldResolver('Company', 'website',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:taxonomy_term'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_website'))
);
$registry->addFieldResolver('Company', 'departement',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:taxonomy_term'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_departement.value'))
);
$registry->addFieldResolver('Company', 'email',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:taxonomy_term'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_public_email.value'))
);
$registry->addFieldResolver('Company', 'address',
$builder->produce('property_path')
->map('type', $builder->fromValue('entity:taxonomy_term'))
->map('value', $builder->fromParent())
->map('path', $builder->fromValue('field_public_address'))
);
// field_infos_from_company
// field_public_phone
}
/** /**
* Resolves the response type. * Resolves the response type.
* *