Code Coverage
 
Lines
Branches
Paths
Functions and Methods
Classes and Traits
Total
75.00% covered (warning)
75.00%
6 / 8
85.71% covered (warning)
85.71%
6 / 7
80.00% covered (warning)
80.00%
4 / 5
75.00% covered (warning)
75.00%
3 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
DoctrineUserRepository
75.00% covered (warning)
75.00%
6 / 8
85.71% covered (warning)
85.71%
6 / 7
80.00% covered (warning)
80.00%
4 / 5
75.00% covered (warning)
75.00%
3 / 4
5.20
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 findById
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 save
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
2
 findByIdentityId
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace App\User\Infrastructure\Persistence\Doctrine\Repository;
4
5use App\Shared\Domain\Model\EntityId;
6use App\Shared\Infrastructure\Persistence\Doctrine\Entity\DoctrineStoredFile;
7use App\User\Domain\Model\User;
8use App\User\Domain\Port\Driven\UserRepository;
9use App\User\Infrastructure\Persistence\Doctrine\Entity\DoctrineUser;
10use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
11use Doctrine\ORM\EntityManagerInterface;
12use Doctrine\Persistence\ManagerRegistry;
13
14/**
15 * @author Wilhelm Zwertvaegher
16 * @extends ServiceEntityRepository<DoctrineUser>
17 */
18class DoctrineUserRepository extends ServiceEntityRepository implements UserRepository
19{
20    public function __construct(ManagerRegistry $managerRegistry, private readonly EntityManagerInterface $entityManager)
21    {
22        parent::__construct($managerRegistry, DoctrineUser::class);
23    }
24
25    public function findById(EntityId $userId): ?User
26    {
27        $user = $this->find($userId->__toString());
28        return $user?->toDomain();
29    }
30
31    public function save(User $user): void
32    {
33        $doctrineUser = $this->find($user->getId()) ?? new DoctrineUser();
34        $doctrineUser->fromDomain($user, $user->getAvatar() ? $this->entityManager->find(DoctrineStoredFile::class, $user->getAvatar()->getId()) : null);
35        $this->entityManager->persist($doctrineUser);
36    }
37
38    public function findByIdentityId(EntityId $identityId): ?User
39    {
40        $user = parent::findOneBy(['identityId' => (string)$identityId]);
41        return $user?->toDomain();
42    }
43}