added commerce's products and variations queries to graphql
This commit is contained in:
parent
dfe6a21021
commit
830f5a5909
|
@ -72,6 +72,37 @@ type SearchResult {
|
||||||
reference: String
|
reference: String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Product {
|
||||||
|
id: Int!
|
||||||
|
uuid: String!
|
||||||
|
title: String
|
||||||
|
bundle: String
|
||||||
|
body: String
|
||||||
|
path: String
|
||||||
|
variations: [Variation]
|
||||||
|
}
|
||||||
|
|
||||||
|
type Variation {
|
||||||
|
id: Int!
|
||||||
|
uuid: String!
|
||||||
|
title: String
|
||||||
|
description: String
|
||||||
|
subscription_type: String
|
||||||
|
sku: String
|
||||||
|
price: Price
|
||||||
|
product_id: Int
|
||||||
|
# list_price
|
||||||
|
# billing_schedule
|
||||||
|
# license_expiration
|
||||||
|
# license_type
|
||||||
|
# field_multiple
|
||||||
|
}
|
||||||
|
|
||||||
|
type Price {
|
||||||
|
value: Int
|
||||||
|
currency: String
|
||||||
|
}
|
||||||
|
|
||||||
type Sample {
|
type Sample {
|
||||||
showroom: Showroom
|
showroom: Showroom
|
||||||
location: String
|
location: String
|
||||||
|
|
|
@ -37,3 +37,19 @@ extend type Query {
|
||||||
extend type Query {
|
extend type Query {
|
||||||
company(id: Int!): Company
|
company(id: Int!): Company
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extend type Query {
|
||||||
|
product(id: Int!): Product
|
||||||
|
}
|
||||||
|
|
||||||
|
extend type Query {
|
||||||
|
products(ids: [Int]): [Product]
|
||||||
|
}
|
||||||
|
|
||||||
|
# extend type Query {
|
||||||
|
# variation(id: Int!): Variation
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# extend type Query {
|
||||||
|
# variations(id: [Int]): Variation
|
||||||
|
# }
|
||||||
|
|
|
@ -41,6 +41,12 @@ class MaterioSchemaExtension extends SdlSchemaExtensionPluginBase {
|
||||||
|
|
||||||
$this->addCompany($registry, $builder);
|
$this->addCompany($registry, $builder);
|
||||||
|
|
||||||
|
$this->addProduct($registry, $builder);
|
||||||
|
|
||||||
|
$this->addVariation($registry, $builder);
|
||||||
|
|
||||||
|
$this->addPrice($registry, $builder);
|
||||||
|
|
||||||
$this->addAddress($registry, $builder);
|
$this->addAddress($registry, $builder);
|
||||||
|
|
||||||
$this->addFilefield($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.
|
* Resolves the response type.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue