Skip to content

Commit 81bc09a

Browse files
committed
add enum for direction of order
1 parent 692ab4a commit 81bc09a

File tree

6 files changed

+25
-20
lines changed

6 files changed

+25
-20
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -228,9 +228,9 @@ User::query(new \Aternos\Model\Query\SelectQuery(
228228
], \Aternos\Model\Query\WhereGroup:: OR)
229229
]),
230230
[
231-
new \Aternos\Model\Query\OrderField("field", \Aternos\Model\Query\OrderField::DESCENDING),
232-
new \Aternos\Model\Query\OrderField("hello", \Aternos\Model\Query\OrderField::ASCENDING),
233-
new \Aternos\Model\Query\OrderField("foo", \Aternos\Model\Query\OrderField::DESCENDING)
231+
new \Aternos\Model\Query\OrderField("field", \Aternos\Model\Query\Direction::DESCENDING),
232+
new \Aternos\Model\Query\OrderField("hello", \Aternos\Model\Query\Direction::ASCENDING),
233+
new \Aternos\Model\Query\OrderField("foo", \Aternos\Model\Query\Direction::DESCENDING)
234234
],
235235
[
236236
new \Aternos\Model\Query\SelectField("field"),

src/Query/Direction.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
3+
namespace Aternos\Model\Query;
4+
5+
enum Direction
6+
{
7+
case ASCENDING;
8+
case DESCENDING;
9+
}

src/Query/Generator/SQL.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Aternos\Model\Query\Generator;
44

55
use Aternos\Model\Query\{DeleteQuery,
6+
Direction,
67
OrderField,
78
Query,
89
SelectField,
@@ -171,9 +172,8 @@ private function generateOrder(Query $query): string
171172
foreach ($orderFields as $orderField) {
172173
/** @var OrderField $orderField */
173174
$direction = match ($orderField->direction) {
174-
OrderField::ASCENDING => "ASC",
175-
OrderField::DESCENDING => "DESC",
176-
default => throw new UnexpectedValueException("Invalid direction: " . $orderField->direction),
175+
Direction::ASCENDING => "ASC",
176+
Direction::DESCENDING => "DESC",
177177
};
178178

179179
if ($orderField->raw) {

src/Query/OrderField.php

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,6 @@
99
*/
1010
class OrderField
1111
{
12-
/**
13-
* Direction constants
14-
*/
15-
const int ASCENDING = 0;
16-
const int DESCENDING = 1;
1712

1813
/**
1914
* Field name to order by
@@ -30,17 +25,17 @@ class OrderField
3025
/**
3126
* Order direction
3227
*
33-
* @var int
28+
* @var Direction
3429
*/
35-
public int $direction = self::ASCENDING;
30+
public Direction $direction = Direction::ASCENDING;
3631

3732
/**
3833
* OrderField constructor.
3934
*
4035
* @param string|null $field
41-
* @param int $direction
36+
* @param Direction $direction
4237
*/
43-
public function __construct(?string $field = null, int $direction = self::ASCENDING)
38+
public function __construct(?string $field = null, Direction $direction = Direction::ASCENDING)
4439
{
4540
$this->field = $field;
4641
$this->direction = $direction;
@@ -57,10 +52,10 @@ public function setRaw(bool $raw): OrderField
5752
}
5853

5954
/**
60-
* @param int $direction
55+
* @param Direction $direction
6156
* @return OrderField
6257
*/
63-
public function setDirection(int $direction): OrderField
58+
public function setDirection(Direction $direction): OrderField
6459
{
6560
$this->direction = $direction;
6661
return $this;

src/Query/Query.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ public function orderBy(array $order): static
111111

112112
if (!is_int($value)) {
113113
$value = match (strtoupper($value)) {
114-
"ASCENDING", "ASC" => OrderField::ASCENDING,
115-
"DESCENDING", "DESC" => OrderField::DESCENDING,
114+
"ASCENDING", "ASC" => Direction::ASCENDING,
115+
"DESCENDING", "DESC" => Direction::DESCENDING,
116116
default => throw new InvalidArgumentException('Argument $order contains invalid order direction: ' . $value),
117117
};
118118
}

test/tests/TestDriverTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use Aternos\Model\Driver\Test\TestDriver;
77
use Aternos\Model\Query\CountField;
88
use Aternos\Model\Query\DeleteQuery;
9+
use Aternos\Model\Query\Direction;
910
use Aternos\Model\Query\MaxField;
1011
use Aternos\Model\Query\MinField;
1112
use Aternos\Model\Query\OrderField;
@@ -337,7 +338,7 @@ public function testSelectLikeEscaping(): void
337338

338339
public function testSelectOrder(): void
339340
{
340-
$models = TestModel::select(order: ["number" => OrderField::DESCENDING]);
341+
$models = TestModel::select(order: ["number" => Direction::DESCENDING]);
341342
$this->assertCount(10, $models);
342343
$this->assertEquals("9J", $models[0]->id);
343344
$this->assertEquals("J", $models[0]->text);

0 commit comments

Comments
 (0)