Completed
Push — develop ( 3d0c4c...e7cba6 )
by Freddie
13:19 queued 12s
created

CreateDatabaseFileUseCase   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 11
c 1
b 0
f 0
dl 0
loc 26
rs 10
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A execute() 0 17 1
1
<?php declare(strict_types=1);
2
/*
3
 * This file is part of FlexPHP.
4
 *
5
 * (c) Freddie Gar <[email protected]>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 */
10
namespace FlexPHP\Generator\Domain\UseCases;
11
12
use FlexPHP\Database\Builder;
13
use FlexPHP\Generator\Domain\Messages\Requests\CreateDatabaseFileRequest;
14
use FlexPHP\Generator\Domain\Messages\Responses\CreateDatabaseFileResponse;
15
use FlexPHP\Generator\Domain\Writers\SqlWriter;
16
use FlexPHP\Schema\Schema;
17
use FlexPHP\UseCases\UseCase;
18
19
final class CreateDatabaseFileUseCase extends UseCase
20
{
21
    /**
22
     * Create database file
23
     *
24
     * @param CreateDatabaseFileRequest $request
25
     *
26
     * @return CreateDatabaseFileResponse
27
     */
28
    public function execute($request)
29
    {
30
        $this->throwExceptionIfRequestNotValid(__METHOD__, CreateDatabaseFileRequest::class, $request);
31
32
        $builder = new Builder($request->platform);
33
        $builder->createDatabase($request->dbname);
34
        $builder->createUser($request->username, $request->password);
35
36
        \array_map(function (string $schemafile) use ($builder): void {
37
            $builder->createTable(Schema::fromFile($schemafile));
38
        }, $request->yamls);
39
40
        $path = \sprintf('%1$s/../../tmp/skeleton/domain/Database/', __DIR__);
41
42
        $writer = new SqlWriter($builder->toSql(), 'database', $path);
43
44
        return new CreateDatabaseFileResponse($writer->save());
45
    }
46
}
47