Skip to content

Commit

Permalink
fix code, update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
code2prog committed Nov 8, 2022
1 parent 0196b1b commit aeca7c0
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 10 deletions.
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,15 @@ $dumper->setTableLimits([
'posts' => 10
]);
```
You can also specify the limits as an array where the first value is the number of rows and the second is the offset

```php
$dumper = new \Druidfi\Mysqldump\Mysqldump('mysql:host=localhost;dbname=testdb', 'username', 'password');

$dumper->setTableLimits([
'users' => [20, 10], //MySql query equivalent "... LIMIT 20 OFFSET 10"
]);
```
## Dump Settings

Dump settings can be changed from default values with 4th argument for Mysqldump constructor:
Expand Down
5 changes: 2 additions & 3 deletions src/Mysqldump.php
Original file line number Diff line number Diff line change
Expand Up @@ -1041,20 +1041,19 @@ public function getTableLimit(string $tableName)
}

$limit = false;

if (is_numeric($this->tableLimits[$tableName])) {
$limit = $this->tableLimits[$tableName];
}

if (is_array($this->tableLimits[$tableName]) &&
count($this->tableLimits[$tableName]) === 2 &&
is_numeric(implode('', $this->tableLimits[$tableName])) &&
$this->tableLimits[$tableName][0] <= $this->tableLimits[$tableName][1]
is_numeric(implode('', $this->tableLimits[$tableName]))
) {
$limit = implode(',', $this->tableLimits[$tableName]);
}

return $limit;

}

/**
Expand Down
13 changes: 6 additions & 7 deletions tests/MysqldumpTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -98,22 +98,21 @@ public function testTableSpecificLimitsWork()
'users' => 200,
'logs' => 500,
'table_with_invalid_limit' => '41923, 42992',
'table_with_range_limit' => [41923, 42992],
'table_with_invalid_range_limit' => [41923],
'table_with_invalid_range_limit2' => [41923, 42992, 42999],
'table_with_invalid_range_limit3' => [2, 1],
'table_with_invalid_range_limit4' => [1, 1],
'table_with_range_limit' => [100, 300],
'table_with_range_limit2' => [1, 1],
'table_with_invalid_range_limit' => [100],
'table_with_invalid_range_limit2' => [100, 300, 400],

]);

$this->assertEquals(200, $dump->getTableLimit('users'));
$this->assertEquals(500, $dump->getTableLimit('logs'));
$this->assertFalse($dump->getTableLimit('table_with_invalid_limit'));
$this->assertFalse($dump->getTableLimit('table_name_with_no_limit'));
$this->assertEquals('41923,42992', $dump->getTableLimit('table_with_range_limit'));
$this->assertEquals('100,300', $dump->getTableLimit('table_with_range_limit'));
$this->assertFalse($dump->getTableLimit('table_with_invalid_range_limit'));
$this->assertFalse($dump->getTableLimit('table_with_invalid_range_limit2'));
$this->assertFalse($dump->getTableLimit('table_with_invalid_range_limit3'));
$this->assertEquals('1,1', $dump->getTableLimit('table_with_invalid_range_limit4'));
}

private function getPrivate(Mysqldump $dump, $var)
Expand Down

0 comments on commit aeca7c0

Please sign in to comment.