Skip to content

Commit 6bd58b7

Browse files
committed
Display the new column type when logging altered table columns.
1 parent f6895e2 commit 6bd58b7

File tree

7 files changed

+77
-13
lines changed

7 files changed

+77
-13
lines changed

src/Audit/AlterAuditTable.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ private function compareTable(string $tableName): void
9898
*/
9999
private function compareTableColumns(TableMetadata $dataTable, TableMetadata $auditTable): void
100100
{
101-
$diff = TableColumnsMetadata::differentColumnTypes($dataTable->getColumns(), $auditTable->getColumns());
101+
$diff = TableColumnsMetadata::differentColumnTypes($auditTable->getColumns(), $dataTable->getColumns());
102102

103103
if (!empty($diff->getColumns()))
104104
{

src/Metadata/TableColumnsMetadata.php

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -57,27 +57,27 @@ public static function combine(TableColumnsMetadata $columns1, TableColumnsMetad
5757

5858
//--------------------------------------------------------------------------------------------------------------------
5959
/**
60-
* Compares two lists of table columns and returns a list of table columns the are in both lists but have different
61-
* metadata
60+
* Compares two lists of table columns and returns a list of table columns that are in both lists but have different
61+
* metadata.
6262
*
63-
* @param TableColumnsMetadata $columns1 The first list of table columns.
64-
* @param TableColumnsMetadata $columns2 The second list of table columns.
65-
* @param string[] $ignore The properties to be ignored.
63+
* @param TableColumnsMetadata $oldColumns The old metadata of the table columns.
64+
* @param TableColumnsMetadata $newColumns The new metadata of the table columns.
65+
* @param string[] $ignore The properties to be ignored.
6666
*
6767
* @return TableColumnsMetadata
6868
*/
69-
public static function differentColumnTypes(TableColumnsMetadata $columns1,
70-
TableColumnsMetadata $columns2,
71-
array $ignore = []): TableColumnsMetadata
69+
public static function differentColumnTypes(TableColumnsMetadata $oldColumns,
70+
TableColumnsMetadata $newColumns,
71+
array $ignore = []): TableColumnsMetadata
7272
{
7373
$diff = new TableColumnsMetadata();
74-
foreach ($columns1->columns as $columnName => $column1)
74+
foreach ($oldColumns->columns as $columnName => $oldColumn)
7575
{
76-
if (isset($columns2->columns[$columnName]))
76+
if (isset($newColumns->columns[$columnName]))
7777
{
78-
if (!ColumnMetadata::compare($column1, $columns2->columns[$columnName], $ignore))
78+
if (!ColumnMetadata::compare($oldColumn, $newColumns->columns[$columnName], $ignore))
7979
{
80-
$diff->appendTableColumn($column1);
80+
$diff->appendTableColumn($newColumns->columns[$columnName]);
8181
}
8282
}
8383
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace SetBased\Audit\Test\MySql\AuditCommand\AlterColumn;
5+
6+
use SetBased\Audit\MySql\AuditDataLayer;
7+
use SetBased\Audit\Test\MySql\AuditCommand\AuditCommandTestCase;
8+
9+
/**
10+
* Tests for running audit with an altered table column.
11+
*/
12+
class AlterColumnTest extends AuditCommandTestCase
13+
{
14+
//--------------------------------------------------------------------------------------------------------------------
15+
/**
16+
* @inheritdoc
17+
*/
18+
public static function setUpBeforeClass(): void
19+
{
20+
self::$dir = __DIR__;
21+
22+
parent::setUpBeforeClass();
23+
}
24+
25+
//--------------------------------------------------------------------------------------------------------------------
26+
public function test01(): void
27+
{
28+
$this->runAudit();
29+
30+
AuditDataLayer::$dl->executeMulti(file_get_contents(__DIR__.'/config/alter_column.sql'));
31+
32+
$output = $this->runAudit();
33+
self::assertSame('Type of TABLE1.c2 has been altered to varchar(80)', trim($output));
34+
}
35+
36+
//--------------------------------------------------------------------------------------------------------------------
37+
}
38+
39+
//----------------------------------------------------------------------------------------------------------------------
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
alter table `TABLE1` modify `c2` varchar(80);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"database": {
3+
"credentials": "credentials.ini"
4+
},
5+
"tables": {
6+
"TABLE1": {
7+
"audit": true,
8+
"skip": null,
9+
"alias": "t1"
10+
}
11+
}
12+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[database]
2+
host = 127.0.0.1
3+
user = test
4+
password = test
5+
data_schema = test_data
6+
audit_schema = test_audit
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
create table `TABLE1` (
2+
c1 tinyint,
3+
c2 varchar(40),
4+
c4 int
5+
);
6+

0 commit comments

Comments
 (0)