QueriesRepositoryTrait   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 61
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
eloc 15
dl 0
loc 61
ccs 0
cts 13
cp 0
rs 10
c 0
b 0
f 0
wmc 7

5 Methods

Rating   Name   Duplication   Size   Complexity  
A commitRepositoryChanges() 0 3 1
A updateRepository() 0 3 1
A maybeCommitRepositoryChanges() 0 4 2
A maybeUpdateRepository() 0 4 2
A getModelFromRepository() 0 4 1
1
<?php
2
3
namespace WebTheory\Saveyour\Abstracts;
4
5
use Psr\Http\Message\ServerRequestInterface;
6
use WebTheory\Saveyour\Enum\ServerRequestLocation;
0 ignored issues
show
Bug introduced by
The type WebTheory\Saveyour\Enum\ServerRequestLocation was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
7
8
trait QueriesRepositoryTrait
9
{
10
    /**
11
     * Instance of model repository
12
     */
13
    protected object $repository;
14
15
    /**
16
     * Method on the repository to query for the model
17
     */
18
    protected string $queryMethod;
19
20
    /**
21
     * Optional method for updating the model in the repository
22
     */
23
    protected ?string $updateMethod = null;
24
25
    /**
26
     * Optional method for committing repository changes to database
27
     */
28
    protected ?string $commitMethod = null;
29
30
    /**
31
     * Parameter name to on the request that contains repository query data
32
     */
33
    protected string $lookup;
34
35
    /**
36
     * Place to look for repository query data in the request
37
     */
38
    protected ServerRequestLocation $location;
39
40
    protected function getModelFromRepository(ServerRequestInterface $request): ?object
41
    {
42
        return $this->repository->{$this->queryMethod}(
43
            $this->location->lookup($this->lookup, $request)
44
        );
45
    }
46
47
    protected function maybeUpdateRepository(object $model): void
48
    {
49
        if ($this->updateMethod) {
50
            $this->updateRepository($model);
51
        }
52
    }
53
54
    protected function maybeCommitRepositoryChanges(): void
55
    {
56
        if ($this->commitMethod) {
57
            $this->commitRepositoryChanges();
58
        }
59
    }
60
61
    protected function updateRepository(object $model): void
62
    {
63
        $this->repository->{$this->updateMethod}($model);
64
    }
65
66
    protected function commitRepositoryChanges(): void
67
    {
68
        $this->repository->{$this->commitMethod}();
69
    }
70
}
71