Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
CastAsDate
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 2
6
0.00% covered (danger)
0.00%
0 / 1
 parse
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
2
 getSql
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3declare(strict_types=1);
4
5namespace Satag\AmicronEntityBundle\DQL;
6
7use Doctrine\ORM\Query\AST\Functions\FunctionNode;
8use Doctrine\ORM\Query\Parser;
9use Doctrine\ORM\Query\SqlWalker;
10use Doctrine\ORM\Query\TokenType;
11
12/**
13 * Firebird DQL function: CAST_AS_DATE(expr)
14 *
15 * Generates: CAST(<expr> AS DATE)
16 *
17 * Usage in DQL:
18 *   SELECT CAST_AS_DATE(e.orderDate) FROM ...
19 */
20final class CastAsDate extends FunctionNode
21{
22    private mixed $dateExpression = null;
23
24    public function parse(Parser $parser): void
25    {
26        $parser->match(TokenType::T_IDENTIFIER);
27        $parser->match(TokenType::T_OPEN_PARENTHESIS);
28        $this->dateExpression = $parser->ArithmeticPrimary();
29        $parser->match(TokenType::T_CLOSE_PARENTHESIS);
30    }
31
32    public function getSql(SqlWalker $sqlWalker): string
33    {
34        return 'CAST(' . $sqlWalker->walkArithmeticPrimary($this->dateExpression) . ' AS DATE)';
35    }
36}