packages/sql-semantics/src/Core/Model/Ordering.php
1<?php
2
3declare(strict_types=1);
4
5namespace SqlSemantics\Core\Model;
6
7/**
8 * A result ordering expression with explicit direction and NULL placement.
9 *
10 * @example Accept this semantic value in a database-independent consumer
11 * $consume = static fn (\SqlSemantics\Core\Model\Ordering $value): string => $value::class;
12 * $consume instanceof \Closure // => true
13 *
14 * @visibility public
15 */
16final class Ordering
17{
18 /**
19 * @param Expression $expression Sort expression
20 * @param bool $descending Descending order
21 * @param bool|null $nullsFirst Explicit NULLS FIRST/LAST; null uses the dialect default
22 */
23 public function __construct(
24 public readonly Expression $expression,
25 public readonly bool $descending = false,
26 public readonly ?bool $nullsFirst = null,
27 ) {
28 }
29}
30