|
@@ -41,6 +41,12 @@ class MaterioSchemaExtension extends SdlSchemaExtensionPluginBase {
|
|
|
|
|
|
$this->addCompany($registry, $builder);
|
|
|
|
|
|
+ $this->addProduct($registry, $builder);
|
|
|
+
|
|
|
+ $this->addVariation($registry, $builder);
|
|
|
+
|
|
|
+ $this->addPrice($registry, $builder);
|
|
|
+
|
|
|
$this->addAddress($registry, $builder);
|
|
|
|
|
|
$this->addFilefield($registry, $builder);
|
|
@@ -1075,6 +1081,164 @@ class MaterioSchemaExtension extends SdlSchemaExtensionPluginBase {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+ protected function addProduct(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
|
|
|
+ $registry->addFieldResolver('Query', 'product',
|
|
|
+ $builder->produce('entity_load')
|
|
|
+ ->map('type', $builder->fromValue('commerce_product'))
|
|
|
+ // ->map('bundles', $builder->fromValue(['materiau']))
|
|
|
+ ->map('id', $builder->fromArgument('id'))
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Query', 'products',
|
|
|
+ $builder->produce('entity_load_multiple')
|
|
|
+ ->map('type', $builder->fromValue('commerce_product'))
|
|
|
+ // ->map('bundles', $builder->fromValue(['materiau']))
|
|
|
+ ->map('ids', $builder->fromArgument('ids'))
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Product', 'id',
|
|
|
+ $builder->produce('entity_id')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Product', 'uuid',
|
|
|
+ $builder->produce('entity_uuid')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ );
|
|
|
+
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Product', 'bundle',
|
|
|
+ $builder->produce('entity_bundle')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Product', 'path',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->produce('entity_url')
|
|
|
+ ->map('entity', $builder->fromParent()),
|
|
|
+ $builder->produce('url_path')
|
|
|
+ ->map('url', $builder->fromParent())
|
|
|
+ )
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Product', 'title',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->produce('entity_label')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ ));
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Product', 'body',
|
|
|
+ $builder->produce('property_path')
|
|
|
+ ->map('type', $builder->fromValue('entity:node'))
|
|
|
+ ->map('value', $builder->fromParent())
|
|
|
+ ->map('path', $builder->fromValue('body.value'))
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Product', 'variations',
|
|
|
+ $builder->produce('entity_reference')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ ->map('field', $builder->fromValue('variations'))
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ protected function addVariation(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
|
|
|
+ // $registry->addFieldResolver('Query', 'product',
|
|
|
+ // $builder->produce('entity_load')
|
|
|
+ // ->map('type', $builder->fromValue('commerce_product_variation'))
|
|
|
+ // // ->map('bundles', $builder->fromValue(['materiau']))
|
|
|
+ // ->map('id', $builder->fromArgument('id'))
|
|
|
+ // );
|
|
|
+
|
|
|
+ // $registry->addFieldResolver('Query', 'product',
|
|
|
+ // $builder->produce('entity_load_multiple')
|
|
|
+ // ->map('type', $builder->fromValue('product'))
|
|
|
+ // // ->map('bundles', $builder->fromValue(['materiau']))
|
|
|
+ // ->map('ids', $builder->fromArgument('ids'))
|
|
|
+ // );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Variation', 'id',
|
|
|
+ $builder->produce('entity_id')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Variation', 'uuid',
|
|
|
+ $builder->produce('entity_uuid')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ );
|
|
|
+
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Variation', 'bundle',
|
|
|
+ $builder->produce('entity_bundle')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Variation', 'path',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->produce('entity_url')
|
|
|
+ ->map('entity', $builder->fromParent()),
|
|
|
+ $builder->produce('url_path')
|
|
|
+ ->map('url', $builder->fromParent())
|
|
|
+ )
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Variation', 'title',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->produce('entity_label')
|
|
|
+ ->map('entity', $builder->fromParent())
|
|
|
+ ));
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Variation', 'description',
|
|
|
+ $builder->produce('property_path')
|
|
|
+ ->map('type', $builder->fromValue('entity:commerce_product_variation'))
|
|
|
+ ->map('value', $builder->fromParent())
|
|
|
+ ->map('path', $builder->fromValue('field_description.value'))
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Variation', 'subscription_type',
|
|
|
+ $builder->produce('property_path')
|
|
|
+ ->map('type', $builder->fromValue('entity:commerce_product_variation'))
|
|
|
+ ->map('value', $builder->fromParent())
|
|
|
+ ->map('path', $builder->fromValue('subscription_type.value'))
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Variation', 'sku',
|
|
|
+ $builder->produce('property_path')
|
|
|
+ ->map('type', $builder->fromValue('entity:commerce_product_variation'))
|
|
|
+ ->map('value', $builder->fromParent())
|
|
|
+ ->map('path', $builder->fromValue('sku.value'))
|
|
|
+ );
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Variation', 'price',
|
|
|
+ $builder->produce('property_path')
|
|
|
+ ->map('type', $builder->fromValue('entity:commerce_product_variation'))
|
|
|
+ ->map('value', $builder->fromParent())
|
|
|
+ ->map('path', $builder->fromValue('price'))
|
|
|
+ );
|
|
|
+
|
|
|
+ // product_id
|
|
|
+ // list_price
|
|
|
+ // billing_schedule
|
|
|
+ // license_expiration
|
|
|
+ // license_type
|
|
|
+ // field_multiple
|
|
|
+ }
|
|
|
+
|
|
|
+ protected function addPrice(ResolverRegistryInterface $registry, ResolverBuilder $builder) {
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Price', 'value',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->callback(function($parent, $args){
|
|
|
+ return $parent[0]['number'];
|
|
|
+ })
|
|
|
+ ));
|
|
|
+
|
|
|
+ $registry->addFieldResolver('Price', 'currency',
|
|
|
+ $builder->compose(
|
|
|
+ $builder->callback(function($parent, $args){
|
|
|
+ return $parent[0]['currency_code'];
|
|
|
+ })
|
|
|
+ ));
|
|
|
+ }
|
|
|
/**
|
|
|
* Resolves the response type.
|
|
|
*
|