PageRepositorySql   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 29
c 1
b 0
f 0
dl 0
loc 49
rs 10
wmc 8

4 Methods

Rating   Name   Duplication   Size   Complexity  
A get() 0 7 2
A save() 0 9 2
A search() 0 10 2
A getByIds() 0 15 2
1
<?php
2
3
4
namespace App\Src\UseCases\Infra\Sql;
5
6
7
use App\Src\UseCases\Domain\Context\Model\Page;
8
use App\Src\UseCases\Domain\Ports\PageRepository;
9
use App\Src\UseCases\Infra\Sql\Model\CharacteristicsModel;
10
use App\Src\UseCases\Infra\Sql\Model\PageModel;
11
12
class PageRepositorySql implements PageRepository
13
{
14
    public function get(string $pageId): ?Page
15
    {
16
        $pageModel = PageModel::where('page_id', $pageId)->first();
17
        if(!isset($pageModel)){
18
            return null;
19
        }
20
        return new Page($pageModel->page_id, $pageModel->dry);
21
    }
22
23
    public function getByIds(array $pagesIds): array
24
    {
25
        $pageModels = PageModel::query()
26
            ->whereIn('page_id', $pagesIds)
27
            ->get();
28
        foreach ($pageModels as $pageModel) {
29
            $pages[] = new Page(
30
                $pageModel->page_id,
31
                $pageModel->dry,
32
                $pageModel->title,
33
                $pageModel->type,
34
                $pageModel->icon
35
            );
36
        }
37
        return $pages ?? [];
38
    }
39
40
    public function save(Page $page)
41
    {
42
        $pageModel = PageModel::where('page_id', $page->pageId())->first();
43
        if(!isset($pageModel)){
44
            $pageModel = new PageModel();
45
        }
46
        $pageModel->page_id = $page->pageId();
47
        $pageModel->fill($page->toArray());
48
        $pageModel->save();
49
    }
50
51
    public function search(string $type, string $search):array
52
    {
53
        $pageModel = PageModel::query()
54
            ->where('title','LIKE', '%'.$search.'%')
55
            ->where('type', $type)
56
            ->get();
57
        if(!isset($pageModel)){
58
            return [];
59
        }
60
        return $pageModel->toArray();
61
    }
62
63
}
64