Skip to content

Commit

Permalink
fix: Fix searching tickets by contract if using subquery
Browse files Browse the repository at this point in the history
  • Loading branch information
marien-probesys committed Mar 14, 2024
1 parent 93a2bb5 commit b30603e
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 5 deletions.
22 changes: 18 additions & 4 deletions src/SearchEngine/QueryBuilder/TicketQueryBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -412,10 +412,24 @@ private function registerParameter(mixed $value): string
private function mustIncludeContracts(array $queries): bool
{
foreach ($queries as $query) {
foreach ($query->getConditions() as $condition) {
if ($condition->isQualifierCondition() && $condition->getQualifier() === 'contract') {
return true;
}
if ($this->includesQualifier($query, 'contract')) {
return true;
}
}

return false;
}

private function includesQualifier(Query $query, string $qualifier): bool
{
foreach ($query->getConditions() as $condition) {
if ($condition->isQualifierCondition() && $condition->getQualifier() === $qualifier) {
return true;
} elseif (
$condition->isQueryCondition() &&
$this->includesQualifier($condition->getQuery(), $qualifier)
) {
return true;
}
}

Expand Down
2 changes: 1 addition & 1 deletion tests/SearchEngine/QueryBuilder/TicketQueryBuilderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public function testCreate(): void

public function testCreateWithContract(): void
{
$query = SearchEngine\Query::fromString('contract:#1');
$query = SearchEngine\Query::fromString('(contract:#1)');

$queryBuilder = $this->ticketQueryBuilder->create([$query]);

Expand Down

0 comments on commit b30603e

Please sign in to comment.