Passed
Push — stable ( 29e605...f45ff8 )
by Nuno
02:26
created

ComponentProvider::isAvailable()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace LaravelZero\Framework\Commands\Component\Illuminate\Database;
4
5
use LaravelZero\Framework\Commands\Component\AbstractComponentProvider;
6
7
/**
8
 * This is the Laravel Zero Framework illuminate/database component provider class.
9
 *
10
 * @author Nuno Maduro <[email protected]>
11
 */
12
class ComponentProvider extends AbstractComponentProvider
13
{
14
    /**
15
     * {@inheritdoc}
16
     */
17 57
    public function isAvailable(): bool
18
    {
19 57
        return class_exists(\Illuminate\Database\DatabaseServiceProvider::class);
20
    }
21
22
    /**
23
     * {@inheritdoc}
24
     */
25 57
    public function register(): void
26
    {
27 57
        if (file_exists(config_path('database.php'))) {
28
            $this->mergeConfigFrom(config_path('database.php'), 'database');
29
        }
30
31 57
        $this->registerDatabaseService();
32
33 57
        $this->registerMigrationService();
34 57
    }
35
36
    /**
37
     * Registers the database service.
38
     *
39
     * Makes this Capsule instance available globally via static methods.
40
     *
41
     * @return void
42
     */
43 57
    protected function registerDatabaseService(): void
44
    {
45 57
        $this->registerServiceProvider(\Illuminate\Database\DatabaseServiceProvider::class);
46
47 57
        $this->app->alias('db', \Illuminate\Database\DatabaseManager::class);
48 57
        $this->app->alias('db', \Illuminate\Database\ConnectionResolverInterface::class);
49 57
        $this->app->alias('db.connection', \Illuminate\Database\DatabaseManager::class);
50 57
        $this->app->alias('db.connection', \Illuminate\Database\ConnectionInterface::class);
51
52 57
        $this->app->make(\Illuminate\Database\Capsule\Manager::class)->setAsGlobal();
53
54 57
        if (config('database.with-seeds', true)) {
55
56 57
            if ($this->app->environment() !== 'production') {
57 57
                $this->commands([\Illuminate\Database\Console\Seeds\SeederMakeCommand::class]);
58
            }
59
60 57
            $this->commands([\Illuminate\Database\Console\Seeds\SeedCommand::class]);
61
62 57
            if (is_dir(database_path('seeds'))) {
63 19
                collect(
64 19
                    $this->app->make('files')->files(database_path('seeds'))
65 19
                )->each(
66 19
                    function ($file) {
67
                        $this->app->make('files')->requireOnce($file);
68 19
                    }
69
                );
70
            }
71
        }
72 57
    }
73
74
    /**
75
     * Registers the migration service.
76
     *
77
     * @return void
78
     */
79 57
    protected function registerMigrationService(): void
80
    {
81 57
        $config = $this->app->make('config');
82 57
        $config->set('database.migrations', $config->get('database.migrations') ?: 'migrations');
83 57
        $this->registerServiceProvider(\Illuminate\Database\MigrationServiceProvider::class);
84 57
        $this->app->alias(
85 57
            'migration.repository',
86 57
            \Illuminate\Database\Migrations\MigrationRepositoryInterface::class
87
        );
88
89 57
        if (config('database.with-migrations', true)) {
90
91 57
            if ($this->app->environment() !== 'production') {
92 57
                $this->commands([\Illuminate\Database\Console\Migrations\MigrateMakeCommand::class]);
93
            }
94
95 57
            $this->commands(
96
                [
97 57
                    \Illuminate\Database\Console\Migrations\FreshCommand::class,
98
                    \Illuminate\Database\Console\Migrations\InstallCommand::class,
99
                    \Illuminate\Database\Console\Migrations\MigrateCommand::class,
100
                    \Illuminate\Database\Console\Migrations\RefreshCommand::class,
101
                    \Illuminate\Database\Console\Migrations\ResetCommand::class,
102
                    \Illuminate\Database\Console\Migrations\RollbackCommand::class,
103
                    \Illuminate\Database\Console\Migrations\StatusCommand::class,
104
                ]
105
            );
106
        }
107 57
    }
108
}
109