Skip to content

Commit

Permalink
Merge pull request #19171 from kamil-tekiela/Tracking-refactoring
Browse files Browse the repository at this point in the history
Tracking refactoring
  • Loading branch information
MauricioFauth committed May 19, 2024
2 parents 78cd47e + 0773e5d commit 6e31406
Show file tree
Hide file tree
Showing 6 changed files with 78 additions and 110 deletions.
5 changes: 5 additions & 0 deletions phpstan-baseline.neon
Original file line number Diff line number Diff line change
Expand Up @@ -5220,6 +5220,11 @@ parameters:
count: 2
path: src/Controllers/Table/TrackingController.php

-
message: "#^Cannot cast mixed to string\\.$#"
count: 1
path: src/Controllers/Table/TrackingController.php

-
message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\<string, bool\\|int\\|string\\>, mixed given\\.$#"
count: 1
Expand Down
16 changes: 5 additions & 11 deletions src/Controllers/Table/TrackingController.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
use PhpMyAdmin\LanguageManager;
use PhpMyAdmin\Message;
use PhpMyAdmin\ResponseRenderer;
use PhpMyAdmin\Tracking\LogTypeEnum;
use PhpMyAdmin\Tracking\LogType;
use PhpMyAdmin\Tracking\TrackedDataType;
use PhpMyAdmin\Tracking\Tracker;
use PhpMyAdmin\Tracking\Tracking;
use PhpMyAdmin\Tracking\TrackingChecker;
Expand All @@ -30,7 +31,6 @@
use function array_map;
use function explode;
use function htmlspecialchars;
use function in_array;
use function is_array;
use function mb_strlen;
use function sprintf;
Expand Down Expand Up @@ -107,7 +107,7 @@ public function __invoke(ServerRequest $request): Response|null
/** @var string $tableParam */
$tableParam = $request->getParsedBodyParam('table');

$logType = $this->validateLogTypeParam($request->getParsedBodyParam('log_type'));
$logType = LogType::tryFrom((string) $request->getParsedBodyParam('log_type')) ?? LogType::SchemaAndData;

Check warning on line 110 in src/Controllers/Table/TrackingController.php

View workflow job for this annotation

GitHub Actions / Infection (8.2, ubuntu-latest)

Escaped Mutant for Mutator "Coalesce": --- Original +++ New @@ @@ $versionParam = $request->getParsedBodyParam('version'); /** @var string $tableParam */ $tableParam = $request->getParsedBodyParam('table'); - $logType = LogType::tryFrom((string) $request->getParsedBodyParam('log_type')) ?? LogType::SchemaAndData; + $logType = LogType::SchemaAndData ?? LogType::tryFrom((string) $request->getParsedBodyParam('log_type')); $message = ''; $sqlDump = ''; $deleteVersion = '';

$message = '';
$sqlDump = '';
Expand Down Expand Up @@ -162,7 +162,7 @@ public function __invoke(ServerRequest $request): Response|null
Current::$table,
$versionParam,
$trackedData->ddlog,
LogTypeEnum::DDL,
TrackedDataType::DDL,
(int) $request->getParsedBodyParam('delete_ddlog'),
);
// After deletion reload data from the database
Expand All @@ -173,7 +173,7 @@ public function __invoke(ServerRequest $request): Response|null
Current::$table,
$versionParam,
$trackedData->dmlog,
LogTypeEnum::DML,
TrackedDataType::DML,
(int) $request->getParsedBodyParam('delete_dmlog'),
);
// After deletion reload data from the database
Expand Down Expand Up @@ -273,12 +273,6 @@ public function __invoke(ServerRequest $request): Response|null
return null;
}

/** @psalm-return 'schema'|'data'|'schema_and_data' */
private function validateLogTypeParam(mixed $param): string
{
return in_array($param, ['schema', 'data'], true) ? $param : 'schema_and_data';
}

private function validateDateTimeParam(mixed $param): DateTimeImmutable
{
try {
Expand Down
12 changes: 12 additions & 0 deletions src/Tracking/LogType.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

declare(strict_types=1);

namespace PhpMyAdmin\Tracking;

enum LogType: string
{
case Schema = 'schema';
case Data = 'data';
case SchemaAndData = 'schema_and_data';
}
22 changes: 11 additions & 11 deletions src/Tracking/LogTypeEnum.php → src/Tracking/TrackedDataType.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

use function __;

enum LogTypeEnum
enum TrackedDataType
{
case DDL;
case DML;
Expand All @@ -15,42 +15,42 @@ enum LogTypeEnum
public function getColumnName(): string
{
return match ($this) {
LogTypeEnum::DDL => 'schema_sql',
LogTypeEnum::DML => 'data_sql',
TrackedDataType::DDL => 'schema_sql',
TrackedDataType::DML => 'data_sql',
};
}

/** @psalm-return literal-string */
public function getLogName(): string
{
return match ($this) {
LogTypeEnum::DDL => 'ddlog',
LogTypeEnum::DML => 'dmlog',
TrackedDataType::DDL => 'ddlog',
TrackedDataType::DML => 'dmlog',
};
}

public function getSuccessMessage(): string
{
return match ($this) {
LogTypeEnum::DDL => __('Tracking data definition successfully deleted'),
LogTypeEnum::DML => __('Tracking data manipulation successfully deleted'),
TrackedDataType::DDL => __('Tracking data definition successfully deleted'),
TrackedDataType::DML => __('Tracking data manipulation successfully deleted'),
};
}

public function getHeaderMessage(): string
{
return match ($this) {
LogTypeEnum::DDL => __('Data definition statement'),
LogTypeEnum::DML => __('Data manipulation statement'),
TrackedDataType::DDL => __('Data definition statement'),
TrackedDataType::DML => __('Data manipulation statement'),
};
}

/** @psalm-return literal-string */
public function getTableId(): string
{
return match ($this) {
LogTypeEnum::DDL => 'ddl_versions',
LogTypeEnum::DML => 'dml_versions',
TrackedDataType::DDL => 'ddl_versions',
TrackedDataType::DML => 'dml_versions',
};
}
}

0 comments on commit 6e31406

Please sign in to comment.