Model   A
last analyzed

Complexity

Total Complexity 18

Size/Duplication

Total Lines 88
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 21
c 1
b 0
f 0
dl 0
loc 88
rs 10
wmc 18

16 Methods

Rating   Name   Duplication   Size   Complexity  
A name() 0 3 1
A pluralName() 0 3 1
A __construct() 0 3 1
A column() 0 3 1
A columns() 0 3 1
A usesSoftDeletes() 0 3 1
A enableSoftDeletes() 0 3 2
A timestampsDataType() 0 3 1
A hasColumn() 0 3 1
A addColumn() 0 3 1
A softDeletesDataType() 0 3 1
A disableTimestamps() 0 3 1
A primaryKey() 0 3 1
A tableName() 0 3 1
A enableTimestamps() 0 3 2
A usesTimestamps() 0 3 1
1
<?php
2
3
namespace PrismX\Generators\Support;
4
5
use Illuminate\Support\Str;
6
7
class Model
8
{
9
    private $name;
10
    private $timestamps = 'timestamps';
11
    private $softDeletes = false;
12
    private $columns = [];
13
14
    /**
15
     * @param $name
16
     */
17
    public function __construct($name)
18
    {
19
        $this->name = $name;
20
    }
21
22
    public function name(): string
23
    {
24
        return Str::studly($this->name);
25
    }
26
27
    public function pluralName(): string
28
    {
29
        return Str::pluralStudly($this->name);
30
    }
31
32
    public function addColumn(Column $column)
33
    {
34
        $this->columns[$column->name()] = $column;
35
    }
36
37
    public function columns(): array
38
    {
39
        return $this->columns;
40
    }
41
42
    public function primaryKey()
43
    {
44
        return 'id';
45
    }
46
47
    public function tableName()
48
    {
49
        return Str::snake(Str::pluralStudly($this->name));
50
    }
51
52
    public function timestampsDataType(): string
53
    {
54
        return $this->timestamps;
55
    }
56
57
    public function usesTimestamps(): bool
58
    {
59
        return $this->timestamps !== false;
60
    }
61
62
    public function disableTimestamps()
63
    {
64
        $this->timestamps = false;
65
    }
66
67
    public function enableTimestamps(bool $withTimezone = false)
68
    {
69
        $this->timestamps = $withTimezone ? 'timestampsTz' : 'timestamps';
70
    }
71
72
    public function softDeletesDataType(): string
73
    {
74
        return $this->softDeletes;
75
    }
76
77
    public function usesSoftDeletes(): bool
78
    {
79
        return $this->softDeletes !== false;
80
    }
81
82
    public function enableSoftDeletes(bool $withTimezone = false)
83
    {
84
        $this->softDeletes = $withTimezone ? 'softDeletesTz' : 'softDeletes';
85
    }
86
87
    public function hasColumn(string $name)
88
    {
89
        return isset($this->columns[$name]);
90
    }
91
92
    public function column(string $name)
93
    {
94
        return $this->columns[$name];
95
    }
96
}
97