Passed
Push — main ( 4cfd43...9ceccf )
by Nobufumi
09:41
created

BaseModel   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
eloc 19
c 1
b 1
f 0
dl 0
loc 48
rs 10
wmc 6

6 Methods

Rating   Name   Duplication   Size   Complexity  
A getQuery() 0 3 1
A __construct() 0 9 1
A getTableName() 0 3 1
A getDeleteType() 0 3 1
A validate() 0 5 1
A getPostType() 0 3 1
1
<?php
2
3
namespace Jidaikobo\Kontiki\Models;
4
5
use Illuminate\Database\Connection;
6
use Illuminate\Database\Query\Builder;
7
8
use Jidaikobo\Kontiki\Core\Database;
9
use Jidaikobo\Kontiki\Models\BaseModelTraits;
10
use Jidaikobo\Kontiki\Services\ValidationService;
11
12
/**
13
 * BaseModel provides common CRUD operations for database interactions.
14
 * Extend this class to create specific models for different database tables.
15
 */
16
abstract class BaseModel implements ModelInterface
17
{
18
    use BaseModelTraits\FieldDefinitionTrait;
19
    use BaseModelTraits\SearchTrait;
20
    use BaseModelTraits\UtilsTrait;
0 ignored issues
show
Bug introduced by
The trait Jidaikobo\Kontiki\Models...eModelTraits\UtilsTrait requires the property $id which is not provided by Jidaikobo\Kontiki\Models\BaseModel.
Loading history...
21
22
    protected string $table;
23
    protected string $postType = '';
24
    protected string $deleteType = 'hardDelete';
25
    protected Connection $db;
26
    public ValidationService $validator;
27
28
    public function __construct(
29
        Database $db,
30
        ValidationService $validator,
31
    ) {
32
        $this->db = $db->getConnection();
33
        $this->validator = $validator;
34
        $this->validator->setModel($this);
35
        $this->initializeFields();
36
        $this->initializeMetaDataFields();
37
    }
38
39
    public function getQuery(): Builder
40
    {
41
        return $this->db->table($this->table);
42
    }
43
44
    public function getDeleteType(): string
45
    {
46
        return $this->deleteType;
47
    }
48
49
    public function getTableName(): string
50
    {
51
        return $this->table;
52
    }
53
54
    public function getPostType(): string
55
    {
56
        return $this->postType;
57
    }
58
59
    public function validate(
60
        array $data,
61
        array $context
62
    ): array {
63
        return $this->validator->validate($data, $context);
64
    }
65
}
66