mirror of
https://github.com/AnimeThemes/animethemes-server.git
synced 2026-09-03 19:24:59 +02:00
53 lines
1.1 KiB
PHP
53 lines
1.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Http\Api\Sort;
|
|
|
|
use App\Enums\Http\Api\QualifyColumn;
|
|
use App\Enums\Http\Api\Sort\Direction;
|
|
|
|
class Sort
|
|
{
|
|
public function __construct(
|
|
protected readonly string $key,
|
|
protected readonly ?string $column = null,
|
|
protected readonly QualifyColumn $qualifyColumn = QualifyColumn::YES
|
|
) {}
|
|
|
|
/**
|
|
* Get sort key value.
|
|
*/
|
|
public function getKey(): string
|
|
{
|
|
return $this->key;
|
|
}
|
|
|
|
/**
|
|
* Get sort column.
|
|
*/
|
|
public function getColumn(): string
|
|
{
|
|
return $this->column ?? $this->key;
|
|
}
|
|
|
|
/**
|
|
* Determine if the column should be qualified for the sort.
|
|
*/
|
|
public function shouldQualifyColumn(): bool
|
|
{
|
|
return $this->qualifyColumn === QualifyColumn::YES;
|
|
}
|
|
|
|
/**
|
|
* Format the sort based on direction.
|
|
*/
|
|
public function format(Direction $direction): string
|
|
{
|
|
return match ($direction) {
|
|
Direction::ASCENDING => $this->getKey(),
|
|
Direction::DESCENDING => "-{$this->getKey()}",
|
|
};
|
|
}
|
|
}
|