Extract ResponseRenderer from Sql

Uses DI instead.

Signed-off-by: Maurício Meneghini Fauth <mauricio@mfauth.net>
This commit is contained in:
Maurício Meneghini Fauth 2026-02-12 17:11:22 -03:00
parent 7e6248c796
commit ef2477bae2
No known key found for this signature in database
GPG Key ID: 6A16FD38AFC89CC8
9 changed files with 24 additions and 16 deletions

View File

@ -307,6 +307,7 @@ return [
Template::class,
BookmarkRepository::class,
Config::class,
ResponseRenderer::class,
],
],
SqlQueryForm::class => [

View File

@ -69,6 +69,7 @@ class Sql
private readonly Template $template,
private readonly BookmarkRepository $bookmarkRepository,
private readonly Config $config,
private readonly ResponseRenderer $responseRenderer,
) {
}
@ -486,16 +487,15 @@ class Sql
*/
private function handleQueryExecuteError(bool $isGotoFile, string $error, string $fullSqlQuery): never
{
$response = ResponseRenderer::getInstance();
if ($isGotoFile) {
$message = Message::rawError($error);
$response->setRequestStatus(false);
$response->addJSON('message', $message);
$this->responseRenderer->setRequestStatus(false);
$this->responseRenderer->addJSON('message', $message);
} else {
Generator::mysqlDie($error, $fullSqlQuery, false);
}
$response->callExit();
$this->responseRenderer->callExit();
}
/**
@ -746,8 +746,7 @@ class Sql
string $table,
string $sqlQueryForBookmark,
): array {
$response = ResponseRenderer::getInstance();
$response->getHeader()->getMenu()->setTable($table);
$this->responseRenderer->getHeader()->getMenu()->setTable($table);
Profiling::enable($this->dbi);
@ -982,9 +981,8 @@ class Sql
$extraData['indexes_list'] = $this->getIndexList($table, $db);
}
$response = ResponseRenderer::getInstance();
$response->addJSON($extraData);
$header = $response->getHeader();
$this->responseRenderer->addJSON($extraData);
$header = $this->responseRenderer->getHeader();
$scripts = $header->getScripts();
$scripts->addFile('sql.js');
@ -1060,8 +1058,7 @@ class Sql
$row[0] = bin2hex($row[0]);
}
$response = ResponseRenderer::getInstance();
$response->addJSON('value', $row[0]);
$this->responseRenderer->addJSON('value', $row[0]);
}
/**
@ -1289,14 +1286,13 @@ class Sql
// value of a transformed field, show it here
if ($request->hasBodyParam('grid_edit')) {
$this->getResponseForGridEdit($result);
ResponseRenderer::getInstance()->callExit();
$this->responseRenderer->callExit();
}
// Gets the list of fields properties
$fieldsMeta = $this->dbi->getFieldsMeta($result);
$response = ResponseRenderer::getInstance();
$header = $response->getHeader();
$header = $this->responseRenderer->getHeader();
$scripts = $header->getScripts();
$justOneTable = $this->resultSetHasJustOneTable($fieldsMeta);

View File

@ -96,6 +96,7 @@ class ImportControllerTest extends AbstractTestCase
$template,
$bookmarkRepository,
$config,
$responseRenderer,
);
$importController = new ImportController(

View File

@ -72,6 +72,7 @@ class EnumValuesControllerTest extends AbstractTestCase
$template,
$bookmarkRepository,
$config,
$responseRenderer,
);
$sqlController = new EnumValuesController($responseRenderer, $template, $sql);
@ -134,6 +135,7 @@ class EnumValuesControllerTest extends AbstractTestCase
$template,
$bookmarkRepository,
$config,
$responseRenderer,
);
$sqlController = new EnumValuesController($responseRenderer, $template, $sql);

View File

@ -72,6 +72,7 @@ class SetValuesControllerTest extends AbstractTestCase
$template,
$bookmarkRepository,
$config,
$responseRenderer,
);
$sqlController = new SetValuesController($responseRenderer, $template, $sql);
@ -134,6 +135,7 @@ class SetValuesControllerTest extends AbstractTestCase
$template,
$bookmarkRepository,
$config,
$responseRenderer,
);
$sqlController = new SetValuesController($responseRenderer, $template, $sql);

View File

@ -62,6 +62,7 @@ class DeleteRowsControllerTest extends AbstractTestCase
->withParsedBody(['original_sql_query' => 'SELECT * FROM `test_db`.`test_table`']);
$relation = new Relation($dbi, $config);
$response = new ResponseRenderer();
$sql = new Sql(
$dbi,
$relation,
@ -70,9 +71,9 @@ class DeleteRowsControllerTest extends AbstractTestCase
new Template($config),
new BookmarkRepository($dbi, $relation),
$config,
$response,
);
$response = new ResponseRenderer();
(new DeleteRowsController($response, $dbi, $sql))($request);
$actual = $response->getHTMLResult();
self::assertStringContainsString(

View File

@ -112,6 +112,7 @@ class ReplaceControllerTest extends AbstractTestCase
$template,
$bookmarkRepository,
$config,
$response,
),
$pageSettings,
$bookmarkRepository,

View File

@ -47,6 +47,7 @@ final class SearchControllerTest extends AbstractTestCase
$config = new Config();
$relation = new Relation($dbi, $config);
$template = new Template($config);
$responseRenderer = new ResponseRenderer();
$sql = new Sql(
$dbi,
$relation,
@ -55,9 +56,9 @@ final class SearchControllerTest extends AbstractTestCase
$template,
new BookmarkRepository($dbi, $relation),
$config,
$responseRenderer,
);
$responseRenderer = new ResponseRenderer();
$controller = new SearchController(
$responseRenderer,
$template,

View File

@ -16,6 +16,7 @@ use PhpMyAdmin\ParseAnalyze;
use PhpMyAdmin\Sql;
use PhpMyAdmin\Template;
use PhpMyAdmin\Tests\Stubs\DbiDummy;
use PhpMyAdmin\Tests\Stubs\ResponseRenderer;
use PhpMyAdmin\Transformations;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
@ -61,6 +62,7 @@ class SqlTest extends AbstractTestCase
new Template($config),
new BookmarkRepository($this->dbi, $relation),
$config,
new ResponseRenderer(),
);
}
@ -666,6 +668,7 @@ class SqlTest extends AbstractTestCase
new Template($config),
new BookmarkRepository($this->dbi, $relation),
$config,
new ResponseRenderer(),
);
$dbiDummy->removeDefaultResults();