Skip to content

Commit 6495aea

Browse files
janpalackyJan Palacky
andauthored
Fix databases and tables check (#140)
Co-authored-by: Jan Palacky <jan.palacky@peoplepath.com>
1 parent 59c775a commit 6495aea

File tree

2 files changed

+40
-4
lines changed

2 files changed

+40
-4
lines changed

src/MySQLReplication/Config/Config.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,15 +105,23 @@ public function validate(): void
105105

106106
public function checkDataBasesOnly(string $database): bool
107107
{
108-
return ($this->databasesOnly !== [] && !in_array($database, $this->databasesOnly, true))
109-
|| ($this->databasesRegex !== [] && !self::matchNames($database, $this->databasesRegex));
108+
if ($this->databasesOnly === [] && $this->databasesRegex === []) {
109+
return false;
110+
}
111+
112+
return !in_array($database, $this->databasesOnly, true)
113+
&& !self::matchNames($database, $this->databasesRegex);
110114
}
111115

112116

113117
public function checkTablesOnly(string $table): bool
114118
{
115-
return ($this->tablesOnly !== [] && !in_array($table, $this->tablesOnly, true))
116-
|| ($this->tablesRegex !== [] && !self::matchNames($table, $this->tablesRegex));
119+
if ($this->tablesOnly === [] && $this->tablesRegex === []) {
120+
return false;
121+
}
122+
123+
return !in_array($table, $this->tablesOnly, true)
124+
&& !self::matchNames($table, $this->tablesRegex);
117125
}
118126

119127
public function checkEvent(int $type): bool

tests/Unit/Config/ConfigTest.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,20 @@ public function testShouldCheckDataBasesOnly(): void
102102
self::assertFalse($config->checkDataBasesOnly('foo_123'));
103103
}
104104

105+
public function testShouldCheckDataBasesOnlyListAndRegex(): void
106+
{
107+
$config = (new ConfigBuilder())
108+
->withDatabasesOnly(['foo'])
109+
->withDatabasesRegex(['/^instance\d+$/'])
110+
->build();
111+
self::assertFalse($config->checkDataBasesOnly('foo'));
112+
self::assertFalse($config->checkDataBasesOnly('instance1'));
113+
self::assertFalse($config->checkDataBasesOnly('instance123'));
114+
self::assertTrue($config->checkDataBasesOnly('bar'));
115+
self::assertTrue($config->checkDataBasesOnly('instance'));
116+
self::assertTrue($config->checkDataBasesOnly('instanceX'));
117+
}
118+
105119
public function testShouldCheckTablesOnly(): void
106120
{
107121
$config = (new ConfigBuilder())->build();
@@ -120,6 +134,20 @@ public function testShouldCheckTablesOnly(): void
120134
self::assertFalse($config->checkTablesOnly('foo_123'));
121135
}
122136

137+
public function testShouldCheckTablesOnlyListAndRegex(): void
138+
{
139+
$config = (new ConfigBuilder())
140+
->withTablesOnly(['foo'])
141+
->withTablesRegex(['/^instance\d+$/'])
142+
->build();
143+
self::assertFalse($config->checkTablesOnly('foo'));
144+
self::assertFalse($config->checkTablesOnly('instance1'));
145+
self::assertFalse($config->checkTablesOnly('instance123'));
146+
self::assertTrue($config->checkTablesOnly('bar'));
147+
self::assertTrue($config->checkTablesOnly('instance'));
148+
self::assertTrue($config->checkTablesOnly('instanceX'));
149+
}
150+
123151
public function testShouldCheckEvent(): void
124152
{
125153
$config = (new ConfigBuilder())->build();

0 commit comments

Comments
 (0)