Add a Custom Query Operator
For adding a new query operator two steps are necessary:
- add a type definition
- add the operator implementation
Type Definition
Add a section similar to this one to your services.yml file.
pimcore.datahub.graphql.querytypegenerator_operator_mycustomoperator:
class: Pimcore\Bundle\DataHubBundle\GraphQL\QueryOperatorConfigGenerator\MyCustomOperator
tags:
- { name: pimcore.datahub.graphql.dataobjectquerytypegenerator, id: typegenerator_queryoperator_mycustomoperator }
For reference, have a look at a look at the
Trimmer operator.
Operator Implementation
You have to provide both JavaScript code dealing with the UI configuration aspects specific to your operator and the server-side PHP implementation doing the actual calculations.
A JS sample can be found here.
Note that the namespace would be pimcore.plugin.datahub.operator.mycustomoperator.
Make sure, that your extension gets loaded. See Pimcore Bundles docs page for further details.
Next thing is to provide the server-side implementation. A sample can be found here.
Finally, we have to define how the operator instances get created.
In most cases we use the DefaultOperatorFactory for that:
pimcore.datahub.graphql.dataobjectqueryoperator.factory.mycustomoperator:
class: Pimcore\Bundle\DataHubBundle\GraphQL\Query\Operator\Factory\DefaultOperatorFactory
arguments:
$className: Pimcore\Bundle\DataHubBundle\GraphQL\Query\Operator\MyCustomOperator
tags:
- { name: pimcore.datahub.graphql.dataobjectqueryoperator_factory, id: mycustomoperator }