Skip to content

Commit 6e31406

Browse files
Merge pull request #19171 from kamil-tekiela/Tracking-refactoring
Tracking refactoring
2 parents 78cd47e + 0773e5d commit 6e31406

6 files changed

Lines changed: 78 additions & 110 deletions

File tree

phpstan-baseline.neon

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5220,6 +5220,11 @@ parameters:
52205220
count: 2
52215221
path: src/Controllers/Table/TrackingController.php
52225222

5223+
-
5224+
message: "#^Cannot cast mixed to string\\.$#"
5225+
count: 1
5226+
path: src/Controllers/Table/TrackingController.php
5227+
52235228
-
52245229
message: "#^Parameter \\#1 \\$params of static method PhpMyAdmin\\\\Url\\:\\:getCommon\\(\\) expects array\\<string, bool\\|int\\|string\\>, mixed given\\.$#"
52255230
count: 1

src/Controllers/Table/TrackingController.php

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
use PhpMyAdmin\LanguageManager;
1818
use PhpMyAdmin\Message;
1919
use PhpMyAdmin\ResponseRenderer;
20-
use PhpMyAdmin\Tracking\LogTypeEnum;
20+
use PhpMyAdmin\Tracking\LogType;
21+
use PhpMyAdmin\Tracking\TrackedDataType;
2122
use PhpMyAdmin\Tracking\Tracker;
2223
use PhpMyAdmin\Tracking\Tracking;
2324
use PhpMyAdmin\Tracking\TrackingChecker;
@@ -30,7 +31,6 @@
3031
use function array_map;
3132
use function explode;
3233
use function htmlspecialchars;
33-
use function in_array;
3434
use function is_array;
3535
use function mb_strlen;
3636
use function sprintf;
@@ -107,7 +107,7 @@ public function __invoke(ServerRequest $request): Response|null
107107
/** @var string $tableParam */
108108
$tableParam = $request->getParsedBodyParam('table');
109109

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

112112
$message = '';
113113
$sqlDump = '';
@@ -162,7 +162,7 @@ public function __invoke(ServerRequest $request): Response|null
162162
Current::$table,
163163
$versionParam,
164164
$trackedData->ddlog,
165-
LogTypeEnum::DDL,
165+
TrackedDataType::DDL,
166166
(int) $request->getParsedBodyParam('delete_ddlog'),
167167
);
168168
// After deletion reload data from the database
@@ -173,7 +173,7 @@ public function __invoke(ServerRequest $request): Response|null
173173
Current::$table,
174174
$versionParam,
175175
$trackedData->dmlog,
176-
LogTypeEnum::DML,
176+
TrackedDataType::DML,
177177
(int) $request->getParsedBodyParam('delete_dmlog'),
178178
);
179179
// After deletion reload data from the database
@@ -273,12 +273,6 @@ public function __invoke(ServerRequest $request): Response|null
273273
return null;
274274
}
275275

276-
/** @psalm-return 'schema'|'data'|'schema_and_data' */
277-
private function validateLogTypeParam(mixed $param): string
278-
{
279-
return in_array($param, ['schema', 'data'], true) ? $param : 'schema_and_data';
280-
}
281-
282276
private function validateDateTimeParam(mixed $param): DateTimeImmutable
283277
{
284278
try {

src/Tracking/LogType.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace PhpMyAdmin\Tracking;
6+
7+
enum LogType: string
8+
{
9+
case Schema = 'schema';
10+
case Data = 'data';
11+
case SchemaAndData = 'schema_and_data';
12+
}
Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
use function __;
88

9-
enum LogTypeEnum
9+
enum TrackedDataType
1010
{
1111
case DDL;
1212
case DML;
@@ -15,42 +15,42 @@ enum LogTypeEnum
1515
public function getColumnName(): string
1616
{
1717
return match ($this) {
18-
LogTypeEnum::DDL => 'schema_sql',
19-
LogTypeEnum::DML => 'data_sql',
18+
TrackedDataType::DDL => 'schema_sql',
19+
TrackedDataType::DML => 'data_sql',
2020
};
2121
}
2222

2323
/** @psalm-return literal-string */
2424
public function getLogName(): string
2525
{
2626
return match ($this) {
27-
LogTypeEnum::DDL => 'ddlog',
28-
LogTypeEnum::DML => 'dmlog',
27+
TrackedDataType::DDL => 'ddlog',
28+
TrackedDataType::DML => 'dmlog',
2929
};
3030
}
3131

3232
public function getSuccessMessage(): string
3333
{
3434
return match ($this) {
35-
LogTypeEnum::DDL => __('Tracking data definition successfully deleted'),
36-
LogTypeEnum::DML => __('Tracking data manipulation successfully deleted'),
35+
TrackedDataType::DDL => __('Tracking data definition successfully deleted'),
36+
TrackedDataType::DML => __('Tracking data manipulation successfully deleted'),
3737
};
3838
}
3939

4040
public function getHeaderMessage(): string
4141
{
4242
return match ($this) {
43-
LogTypeEnum::DDL => __('Data definition statement'),
44-
LogTypeEnum::DML => __('Data manipulation statement'),
43+
TrackedDataType::DDL => __('Data definition statement'),
44+
TrackedDataType::DML => __('Data manipulation statement'),
4545
};
4646
}
4747

4848
/** @psalm-return literal-string */
4949
public function getTableId(): string
5050
{
5151
return match ($this) {
52-
LogTypeEnum::DDL => 'ddl_versions',
53-
LogTypeEnum::DML => 'dml_versions',
52+
TrackedDataType::DDL => 'ddl_versions',
53+
TrackedDataType::DML => 'dml_versions',
5454
};
5555
}
5656
}

0 commit comments

Comments
 (0)