Passed
Pull Request — master (#6)
by Harry
03:44 queued 01:03
created

MysqlTableSeeder::seed()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 19
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 13
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 12
nc 2
nop 3
dl 0
loc 19
ccs 13
cts 13
cp 1
crap 2
rs 9.8666
c 0
b 0
f 0
1
<?php
2
/**
3
 * This file is part of graze/sprout.
4
 *
5
 * Copyright © 2018 Nature Delivered Ltd. <https://www.graze.com>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 *
10
 * @license https://github.com/graze/sprout/blob/master/LICENSE.md
11
 * @link    https://github.com/graze/sprout
12
 */
13
14
namespace Graze\Sprout\Db\Mysql;
15
16
use Graze\ParallelProcess\Pool;
17
use Graze\Sprout\Config\ConnectionConfigInterface;
18
use Graze\Sprout\Seed\TableSeederInterface;
19
use InvalidArgumentException;
20
use League\Flysystem\AdapterInterface;
21
use Symfony\Component\Process\Process;
22
23
class MysqlTableSeeder implements TableSeederInterface
24
{
25
    /** @var ConnectionConfigInterface */
26
    private $connection;
27
    /** @var Pool */
28
    private $pool;
29
    /** @var AdapterInterface */
30
    private $fileSystem;
31
32
    /**
33
     * MysqlTableDumper constructor.
34
     *
35
     * @param Pool                      $pool
36
     * @param ConnectionConfigInterface $connection
37
     * @param AdapterInterface          $fileSystem
38
     */
39 4
    public function __construct(Pool $pool, ConnectionConfigInterface $connection, AdapterInterface $fileSystem)
40
    {
41 4
        $this->pool = $pool;
42 4
        $this->connection = $connection;
43 4
        $this->fileSystem = $fileSystem;
44 4
    }
45
46
    /**
47
     * @param string $file
48
     * @param string $schema
49
     * @param string $table
50
     */
51 2
    public function seed(string $file, string $schema, string $table)
0 ignored issues
show
Coding Style introduced by
Unknown type hint "string" found for $file
Loading history...
Coding Style introduced by
Unknown type hint "string" found for $schema
Loading history...
Coding Style introduced by
Unknown type hint "string" found for $table
Loading history...
52
    {
53 2
        if ($this->fileSystem->has($file) === false) {
54 1
            throw new InvalidArgumentException("seed: The file: {$file} does not exist");
55
        }
56
57 1
        $process = new Process('');
58 1
        $process->setCommandLine(
59 1
            sprintf(
60 1
                'mysql -h%1$s -u%2$s -p%3$s --default-character-set=utf8 %4$s < %5$s',
61 1
                escapeshellarg($this->connection->getHost()),
62 1
                escapeshellarg($this->connection->getUser()),
63 1
                escapeshellarg($this->connection->getPassword()),
64 1
                escapeshellarg($schema),
65 1
                escapeshellarg($file)
66
            )
67
        );
68
69 1
        $this->pool->add($process, ['seed', 'schema' => $schema, 'table' => $table]);
70 1
    }
71
}
72