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