packages/ztd-query-mysql/src/Sql/Dml/DmlWhereClauseExtractor.php

1<?php
2
3declare(strict_types=1);
4
5namespace ZtdQuery\Platform\MySql\Sql\Dml;
6
7use ZtdQuery\Platform\MySql\Sql\MySqlLexerProfile;
8use ZtdQuery\Sql\SqlTokenStream;
9
10/**
11 * Implements the Dml Where Clause Extractor contract for MySQL.
12 */
13final class DmlWhereClauseExtractor
14{
15    /**
16     * Extract for the supplied MySQL input.
17     */
18    public function extract(string $sql): ?string
19    {
20        return SqlTokenStream::tokenize($sql, MySqlLexerProfile::create())->topLevelClause(
21            ['WHERE'],
22            [['ORDER', 'BY'], ['LIMIT'], ['RETURNING']],
23        );
24    }
25}
26