Completed
Push — master ( 5a7252...b7e7e5 )
by Brent
01:20
created

UuidServiceProvider   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 4
dl 0
loc 28
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A boot() 0 7 1
A createGrammarFromConnection() 0 17 3
1
<?php
2
3
namespace Spatie\BinaryUuid;
4
5
use Exception;
6
use Illuminate\Database\Connection;
7
use Illuminate\Database\Schema\Grammars\Grammar;
8
use Illuminate\Support\ServiceProvider;
9
use Illuminate\Database\Query\Grammars\MySqlGrammar as IlluminateMySqlGrammar;
10
use Illuminate\Database\Query\Grammars\SQLiteGrammar as IlluminateSQLiteGrammar;
11
12
class UuidServiceProvider extends ServiceProvider
13
{
14
    public function boot()
15
    {
16
        /** @var \Illuminate\Database\Connection $connection */
17
        $connection = app('db')->connection();
18
19
        $connection->setSchemaGrammar($this->createGrammarFromConnection($connection));
20
    }
21
22
    protected function createGrammarFromConnection(Connection $connection): Grammar
23
    {
24
        $queryGrammar = $connection->getQueryGrammar();
25
26
        if (!in_array(
27
            get_class($queryGrammar),
28
            [IlluminateMySqlGrammar::class, IlluminateSQLiteGrammar::class]
29
        )) {
30
            throw new Exception("spatie/laravel-binary-uuid only supports MySql or SQLite connections. The current connection doesn't match those criteria.");
31
        }
32
33
        if ($queryGrammar instanceof IlluminateSQLiteGrammar) {
34
            return new SQLiteGrammar();
35
        }
36
37
        return new MySqlGrammar();
38
    }
39
}
40