--- /dev/null
+<?php
+
+namespace Drupal\Core\Entity\KeyValueStore\Query;
+
+use Drupal\Core\Entity\EntityTypeInterface;
+use Drupal\Core\Entity\Query\QueryException;
+use Drupal\Core\Entity\Query\QueryFactoryInterface;
+use Drupal\Core\KeyValueStore\KeyValueFactoryInterface;
+
+/**
+ * Provides a factory for creating the key value entity query.
+ */
+class QueryFactory implements QueryFactoryInterface {
+
+ /**
+ * The key value factory.
+ *
+ * @var \Drupal\Core\KeyValueStore\KeyValueFactoryInterface
+ */
+ protected $keyValueFactory;
+
+ /**
+ * The namespace of this class, the parent class etc.
+ *
+ * @var array
+ */
+ protected $namespaces;
+
+ /**
+ * Constructs a QueryFactory object.
+ */
+ public function __construct(KeyValueFactoryInterface $key_value_factory) {
+ $this->keyValueFactory = $key_value_factory;
+ $this->namespaces = Query::getNamespaces($this);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get(EntityTypeInterface $entity_type, $conjunction) {
+ return new Query($entity_type, $conjunction, $this->namespaces, $this->keyValueFactory);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getAggregate(EntityTypeInterface $entity_type, $conjunction) {
+ throw new QueryException('Aggregation over key-value entity storage is not supported');
+ }
+
+}