Skip to content

Commit

Permalink
lighten select for single circle
Browse files Browse the repository at this point in the history
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
  • Loading branch information
ArtificialOwl committed Dec 12, 2021
1 parent 0f103be commit 334c40c
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 10 deletions.
10 changes: 5 additions & 5 deletions lib/Db/CircleRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ public function getFederatedUserBySingleId(string $singleId): FederatedUser {
* @throws RequestBuilderException
*/
public function getSingleCircle(IFederatedUser $initiator): Circle {
$qb = $this->getCircleSelectSql(CoreQueryBuilder::SINGLE);
$qb = $this->getCircleSelectSql(CoreQueryBuilder::SINGLE, true);

if ($initiator instanceof FederatedUser) {
$member = new Member();
Expand All @@ -311,7 +311,7 @@ public function getSingleCircle(IFederatedUser $initiator): Circle {
}

$qb->limitToDirectMembership(CoreQueryBuilder::SINGLE, $member);
$qb->limitToConfigFlag(Circle::CFG_SINGLE);
$qb->limitInArray('config', [Circle::CFG_SINGLE, Circle::CFG_SINGLE + Circle::CFG_ROOT]);

try {
return $this->getItemFromRequest($qb);
Expand Down Expand Up @@ -357,9 +357,9 @@ public function searchCircle(Circle $circle, ?IFederatedUser $initiator = null):
if (!is_null($initiator)) {
$qb->setOptions(
[CoreQueryBuilder::CIRCLE], [
'getData' => true,
'initiatorDirectMember' => true
]
'getData' => true,
'initiatorDirectMember' => true
]
);
$qb->limitToInitiator(CoreQueryBuilder::CIRCLE, $initiator);
}
Expand Down
15 changes: 11 additions & 4 deletions lib/Db/CircleRequestBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -68,14 +68,21 @@ protected function getCircleUpdateSql(): CoreQueryBuilder {

/**
* @param string $alias
* @param bool $single
*
* @return CoreQueryBuilder
*/
protected function getCircleSelectSql(string $alias = CoreQueryBuilder::CIRCLE): CoreQueryBuilder {
protected function getCircleSelectSql(
string $alias = CoreQueryBuilder::CIRCLE,
bool $single = false
): CoreQueryBuilder {
$qb = $this->getQueryBuilder();
$qb->generateSelect(self::TABLE_CIRCLE, self::$tables[self::TABLE_CIRCLE], $alias, true)
->generateGroupBy(self::$tables[self::TABLE_CIRCLE], $alias)
->orderBy($alias . '.creation', 'asc');
$qb->generateSelect(self::TABLE_CIRCLE, self::$tables[self::TABLE_CIRCLE], $alias, !$single)
->generateGroupBy(self::$tables[self::TABLE_CIRCLE], $alias);

if (!$single) {
$qb->orderBy($alias . '.creation', 'asc');
}

return $qb;
}
Expand Down
2 changes: 1 addition & 1 deletion lib/Db/CoreQueryBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -639,7 +639,7 @@ public function limitToDirectMembership(string $alias, Member $member): void {
if ($getData) {
$this->generateMemberSelectAlias($aliasMember);
}
$this->leftJoin(
$this->innerJoin(
$this->getDefaultSelectAlias(), CoreRequestBuilder::TABLE_MEMBER, $aliasMember,
$expr->eq($aliasMember . '.circle_id', $alias . '.unique_id')
);
Expand Down

0 comments on commit 334c40c

Please sign in to comment.