diff --git a/lib/Repositories/SharedModulesRepository.php b/lib/Repositories/SharedModulesRepository.php index 731ae488..0e9338e4 100644 --- a/lib/Repositories/SharedModulesRepository.php +++ b/lib/Repositories/SharedModulesRepository.php @@ -9,9 +9,37 @@ namespace Hedera\Repositories; +use Doctrine\Common\Collections\Collection; use GraphAware\Neo4j\OGM\Repository\BaseRepository; +use GraphAware\Neo4j\OGM\Common\Collection as HederaCollection; class SharedModulesRepository extends BaseRepository { + /** + * @param Collection $collection + * @param string $classConfig + * @return Collection + * @throws \Exception + */ + public function loadConfigs(Collection $collection, string $classConfig) + { + if ($collection->isEmpty()) { + return new HederaCollection(); + } + $ids = $collection->map(function ($item) { + return $item->getId(); + }); + + $query = $this->entityManager + ->createQuery('MATCH (n:' . $this->getClassName() . ') WHERE ID(n) IN $id MATCH (n)<-[:MODULE_CONFIG_IN]-(conf) RETURN n, conf'); + $query->setParameter('id', $ids); + $query + ->addEntityMapping('n', $this->getClassName()) + ->addEntityMapping('conf', $classConfig); + + $result = $query->execute(); + + return new HederaCollection($result); + } }