personRepository->find($metadata['id']); } public function prepare(array $metadatas): void { $ids = \array_map(static fn ($m) => $m['id'], $metadatas); $this->personRepository->findByIds($ids); } public function provideQuery(string $pattern, array $parameters): SearchApiQuery { $datesResult = $this->extractDateFromPattern->extractDates($pattern); $phoneResult = $this->extractPhonenumberFromPattern->extractPhonenumber($datesResult->getFilteredSubject()); $filtered = $phoneResult->getFilteredSubject(); return $this->personACLAwareRepository->buildAuthorizedQuery( $filtered, null, null, \count($datesResult->getFound()) > 0 ? $datesResult->getFound()[0] : null, null, null, null, null, \count($phoneResult->getFound()) > 0 ? $phoneResult->getFound()[0] : null ) ->setSelectKey('person') ->setSelectJsonbMetadata("jsonb_build_object('id', person.id)"); } public function supportsResult(string $key, array $metadatas): bool { return 'person' === $key; } public function supportsTypes(string $pattern, array $types, array $parameters): bool { return \in_array('person', $types, true); } }