Passed
Push — master ( 8387eb...5a11dc )
by Janko
07:59
created

UserMapRepository::truncateAllUserMaps()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 6
nc 1
nop 0
dl 0
loc 9
ccs 0
cts 7
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Stu\Orm\Repository;
6
7
use Doctrine\ORM\EntityRepository;
8
use Override;
0 ignored issues
show
Bug introduced by
The type Override 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...
9
use Stu\Orm\Entity\Layer;
10
use Stu\Orm\Entity\User;
11
use Stu\Orm\Entity\UserLayer;
12
use Stu\Orm\Entity\UserMap;
13
14
/**
15
 * @extends EntityRepository<UserMap>
16
 */
17
final class UserMapRepository extends EntityRepository implements UserMapRepositoryInterface
18
{
19 1
    #[Override]
20
    public function insertMapFieldsForUser(int $userId, int $layerId, int $cx, int $cy, int $range): void
21
    {
22 1
        $this->getEntityManager()->getConnection()->executeQuery(
23 1
            sprintf(
24 1
                'INSERT INTO stu_user_map (user_id, layer_id, cx, cy, map_id)
25
                SELECT %d as user_id, l.layer_id, l.cx, l.cy, m.id as map_id
26
                FROM stu_map m
27
                JOIN stu_location l
28
                ON m.id = l.id
29
                WHERE l.cx BETWEEN %d AND %d
30
                AND l.cy BETWEEN %d AND %d
31
                AND l.layer_id = %d
32
                AND NOT EXISTS (SELECT * FROM stu_user_map um
33
                                WHERE um.cx = l.cx
34
                                AND um.cy = l.cy
35
                                AND um.user_id = %d
36 1
                                AND um.layer_id = l.layer_id)',
37 1
                $userId,
38 1
                $cx - $range,
39 1
                $cx + $range,
40 1
                $cy - $range,
41 1
                $cy + $range,
42 1
                $layerId,
43 1
                $userId,
44 1
            )
45 1
        );
46
    }
47
48
    #[Override]
49
    public function getAmountByUser(User $user, Layer $layer): int
50
    {
51
        return (int)$this->getEntityManager()->createQuery(
52
            sprintf(
53
                'SELECT COUNT(um)
54
                FROM %s um
55
                WHERE um.user = :user
56
                AND um.layer = :layer',
57
                UserMap::class
58
            )
59
        )->setParameters([
60
            'user' => $user,
61
            'layer' => $layer
62
        ])->getSingleScalarResult();
63
    }
64
65
    #[Override]
66
    public function truncateByUser(User $user): void
67
    {
68
        $this->getEntityManager()->createQuery(
69
            sprintf(
70
                'DELETE FROM %s um
71
                WHERE um.user = :user',
72
                UserMap::class
73
            )
74
        )->setParameters([
75
            'user' => $user
76
        ])->execute();
77
    }
78
79
    #[Override]
80
    public function truncateByUserAndLayer(UserLayer $userLayer): void
81
    {
82
        $this->getEntityManager()->createQuery(
83
            sprintf(
84
                'DELETE FROM %s um
85
                WHERE um.user = :user
86
                AND um.layer = :layer',
87
                UserMap::class
88
            )
89
        )->setParameters([
90
            'user' => $userLayer->getUser(),
91
            'layer' => $userLayer->getLayer()
92
        ])->execute();
93
    }
94
}
95