SeedConfig::modify()   A
last analyzed

Complexity

Conditions 4
Paths 1

Size

Total Lines 31

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 31
rs 9.424
c 0
b 0
f 0
cc 4
nc 1
nop 1
1
<?php
2
3
namespace Scheduler\Web\Radar\Config;
4
5
use Aura\Di\Container;
6
use Aura\Di\ContainerConfig;
7
use Aura\Payload\Payload;
8
use Symfony\Component\Yaml\Parser;
9
10
class SeedConfig extends ContainerConfig
11
{
12
    public function modify(Container $di)
13
    {
14
        $adr = $di->get('radar/adr:adr');
15
16
        // For demonstration purposes, seed database using test fixtures
17
        $adr->get('seed', "/seed", function () use ($di) {
18
            $payload = new Payload();
19
20
            $di->get('db.schema')->drop();
21
            $di->get('db.schema')->create();
22
23
            $yaml = new Parser();
24
            $yamlFile = __DIR__ . "/../../../../tests/Infrastructure/DBAL/fixtures.yml";
25
            $fixtures = $yaml->parse(file_get_contents($yamlFile));
26
27
            if (! is_array($fixtures)) {
28
                throw new RuntimeException("Could not parse fixtures file");
29
            }
30
31
            foreach ($fixtures as $table => $rows) {
32
                foreach ($rows as $row) {
33
                    $di->get('db.connection')->insert($table, $row);
34
                }
35
            }
36
37
            $payload->setStatus($payload::SUCCESS);
38
            $payload->setOutput(["message" => "Database seeded"]);
39
40
            return $payload;
41
        });
42
    }
43
}
44