Implement snip sorting
This commit is contained in:
@ -4,8 +4,12 @@ namespace App\Dto;
|
||||
|
||||
readonly class SnipFilterRequest implements CachableDtoInterface
|
||||
{
|
||||
public const string SORT_NAME = 'name';
|
||||
public const string SORT_DATE = 'date';
|
||||
|
||||
public function __construct(
|
||||
public bool $onlyVisible = true,
|
||||
public ?string $sort = self::SORT_DATE,
|
||||
) {}
|
||||
|
||||
public function toArray(): array
|
||||
|
@ -48,13 +48,20 @@ class SnipRepository extends ServiceEntityRepository
|
||||
->createQueryBuilder('s')
|
||||
->where('s.createdBy = :user')
|
||||
->setParameter('user', $user)
|
||||
->orderBy('s.name', 'ASC')
|
||||
;
|
||||
|
||||
$qb->andWhere('s.visible = :visible')
|
||||
->setParameter('visible', $request->onlyVisible)
|
||||
;
|
||||
|
||||
if ($request->sort === SnipFilterRequest::SORT_NAME) {
|
||||
$qb->orderBy('s.name', 'ASC');
|
||||
} elseif ($request->sort === SnipFilterRequest::SORT_DATE) {
|
||||
$qb->orderBy('s.createdAt', 'DESC');
|
||||
} else {
|
||||
throw new \InvalidArgumentException('Invalid sort option: ', $request->sort);
|
||||
}
|
||||
|
||||
return $qb->getQuery()->getResult();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user