Skip to content

Commit 195e26c

Browse files
committed
Refactor RegistryPackageMirroring enum
1 parent a0831c4 commit 195e26c

10 files changed

Lines changed: 59 additions & 42 deletions

File tree

src/Controller/Dashboard/DashboardRegistryController.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
namespace CodedMonkey\Dirigent\Controller\Dashboard;
66

77
use CodedMonkey\Dirigent\Doctrine\Entity\Registry;
8-
use CodedMonkey\Dirigent\Doctrine\Entity\RegistryPackageMirroring;
98
use CodedMonkey\Dirigent\Doctrine\Repository\RegistryRepository;
109
use CodedMonkey\Dirigent\EasyAdmin\DateIntervalField;
10+
use CodedMonkey\Dirigent\Entity\RegistryPackageMirroring;
1111
use EasyCorp\Bundle\EasyAdminBundle\Attribute\AdminRoute;
1212
use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
1313
use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
@@ -71,10 +71,8 @@ public function configureFields(string $pageName): iterable
7171

7272
yield ChoiceField::new('packageMirroring')
7373
->setSortable(false)
74-
->setTemplatePath('dashboard/fields/registry_package_mirroring.html.twig')
7574
->setRequired(true)
7675
->setChoices(RegistryPackageMirroring::cases())
77-
->setFormTypeOption('choice_label', static fn (RegistryPackageMirroring $choice): string => "registry.package-mirroring.{$choice->value}")
7876
->renderExpanded();
7977

8078
yield DateIntervalField::new('dynamicUpdateDelay')

src/Doctrine/DataFixtures/AppFixtures.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
namespace CodedMonkey\Dirigent\Doctrine\DataFixtures;
66

77
use CodedMonkey\Dirigent\Doctrine\Entity\Registry;
8-
use CodedMonkey\Dirigent\Doctrine\Entity\RegistryPackageMirroring;
98
use CodedMonkey\Dirigent\Doctrine\Entity\User;
9+
use CodedMonkey\Dirigent\Entity\RegistryPackageMirroring;
1010
use CodedMonkey\Dirigent\Entity\UserRole;
1111
use Doctrine\Bundle\FixturesBundle\Fixture;
1212
use Doctrine\Persistence\ObjectManager;

src/Doctrine/Entity/Registry.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace CodedMonkey\Dirigent\Doctrine\Entity;
66

77
use CodedMonkey\Dirigent\Doctrine\Repository\RegistryRepository;
8+
use CodedMonkey\Dirigent\Entity\RegistryPackageMirroring;
89
use Doctrine\DBAL\Types\Types;
910
use Doctrine\ORM\Mapping as ORM;
1011

@@ -30,7 +31,7 @@ class Registry implements \Stringable
3031
private ?Credentials $credentials = null;
3132

3233
#[ORM\Column(type: Types::STRING, enumType: RegistryPackageMirroring::class)]
33-
private RegistryPackageMirroring|string $packageMirroring = RegistryPackageMirroring::Automatic;
34+
private RegistryPackageMirroring $packageMirroring = RegistryPackageMirroring::Automatic;
3435

3536
#[ORM\Column]
3637
private ?int $mirroringPriority = null;
@@ -88,12 +89,12 @@ public function setCredentials(?Credentials $credentials): void
8889
$this->credentials = $credentials;
8990
}
9091

91-
public function getPackageMirroring(): RegistryPackageMirroring|string
92+
public function getPackageMirroring(): RegistryPackageMirroring
9293
{
9394
return $this->packageMirroring;
9495
}
9596

96-
public function setPackageMirroring(RegistryPackageMirroring|string $packageMirroring): void
97+
public function setPackageMirroring(RegistryPackageMirroring $packageMirroring): void
9798
{
9899
$this->packageMirroring = $packageMirroring;
99100
}

src/Doctrine/Entity/RegistryPackageMirroring.php

Lines changed: 0 additions & 12 deletions
This file was deleted.

src/Doctrine/Repository/RegistryRepository.php

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace CodedMonkey\Dirigent\Doctrine\Repository;
66

77
use CodedMonkey\Dirigent\Doctrine\Entity\Registry;
8-
use CodedMonkey\Dirigent\Doctrine\Entity\RegistryPackageMirroring;
8+
use CodedMonkey\Dirigent\Entity\RegistryPackageMirroring;
99
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
1010
use Doctrine\ORM\QueryBuilder;
1111
use Doctrine\Persistence\ManagerRegistry;
@@ -25,27 +25,22 @@ public function __construct(ManagerRegistry $registry)
2525
parent::__construct($registry, Registry::class);
2626
}
2727

28-
public function createPackageMirroringQueryBuilder(RegistryPackageMirroring|string $packageMirroring): QueryBuilder
28+
public function createPackageMirroringQueryBuilder(RegistryPackageMirroring $packageMirroring): QueryBuilder
2929
{
30-
$builder = $this->createQueryBuilder('registry');
31-
32-
if (is_string($packageMirroring)) {
33-
$packageMirroring = RegistryPackageMirroring::from($packageMirroring);
34-
}
30+
$values = match ($packageMirroring) {
31+
RegistryPackageMirroring::Manual => [
32+
RegistryPackageMirroring::Manual->value,
33+
RegistryPackageMirroring::Automatic->value,
34+
],
35+
RegistryPackageMirroring::Automatic => [
36+
RegistryPackageMirroring::Automatic->value,
37+
],
38+
default => throw new \LogicException(),
39+
};
3540

36-
if (RegistryPackageMirroring::Manual === $packageMirroring) {
37-
$builder->andWhere($builder->expr()->orX(
38-
$builder->expr()->eq('registry.packageMirroring', $builder->expr()->literal('manual')),
39-
$builder->expr()->eq('registry.packageMirroring', $builder->expr()->literal('auto')),
40-
));
41-
} elseif (RegistryPackageMirroring::Automatic === $packageMirroring) {
42-
$builder->andWhere($builder->expr()->orX(
43-
$builder->expr()->eq('registry.packageMirroring', $builder->expr()->literal('auto')),
44-
));
45-
} else {
46-
throw new \LogicException();
47-
}
41+
$builder = $this->createQueryBuilder('registry');
4842

43+
$builder->andWhere($builder->expr()->in('registry.packageMirroring', $values));
4944
$builder->addOrderBy('registry.mirroringPriority', 'ASC');
5045

5146
return $builder;
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace CodedMonkey\Dirigent\Entity;
6+
7+
use Symfony\Contracts\Translation\TranslatableInterface;
8+
use Symfony\Contracts\Translation\TranslatorInterface;
9+
10+
enum RegistryPackageMirroring: string implements TranslatableInterface
11+
{
12+
case Disabled = 'none';
13+
case Manual = 'manual';
14+
case Automatic = 'auto';
15+
16+
public function isDisabled(): bool
17+
{
18+
return self::Disabled === $this;
19+
}
20+
21+
public function isManual(): bool
22+
{
23+
return self::Manual === $this;
24+
}
25+
26+
public function isAutomatic(): bool
27+
{
28+
return self::Automatic === $this;
29+
}
30+
31+
public function trans(TranslatorInterface $translator, ?string $locale = null): string
32+
{
33+
return $translator->trans("registry.package-mirroring.$this->value");
34+
}
35+
}

src/Form/PackageAddMirroringFormType.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use CodedMonkey\Dirigent\Doctrine\Entity\Registry;
88
use CodedMonkey\Dirigent\Doctrine\Repository\RegistryRepository;
9+
use CodedMonkey\Dirigent\Entity\RegistryPackageMirroring;
910
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
1011
use Symfony\Component\Form\AbstractType;
1112
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
@@ -19,7 +20,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
1920
->add('packages', TextareaType::class)
2021
->add('registry', EntityType::class, [
2122
'class' => Registry::class,
22-
'query_builder' => static fn (RegistryRepository $repository) => $repository->createPackageMirroringQueryBuilder('manual'),
23+
'query_builder' => static fn (RegistryRepository $repository) => $repository->createPackageMirroringQueryBuilder(RegistryPackageMirroring::Manual),
2324
]);
2425
}
2526
}

src/Package/PackageMetadataResolver.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010
use CodedMonkey\Dirigent\Doctrine\Entity\MetadataKeyword;
1111
use CodedMonkey\Dirigent\Doctrine\Entity\Package;
1212
use CodedMonkey\Dirigent\Doctrine\Entity\Registry;
13-
use CodedMonkey\Dirigent\Doctrine\Entity\RegistryPackageMirroring;
1413
use CodedMonkey\Dirigent\Doctrine\Entity\Version;
1514
use CodedMonkey\Dirigent\Doctrine\Repository\KeywordRepository;
1615
use CodedMonkey\Dirigent\Doctrine\Repository\PackageRepository;
1716
use CodedMonkey\Dirigent\Doctrine\Repository\RegistryRepository;
1817
use CodedMonkey\Dirigent\Entity\MetadataLinkType;
1918
use CodedMonkey\Dirigent\Entity\PackageFetchStrategy;
19+
use CodedMonkey\Dirigent\Entity\RegistryPackageMirroring;
2020
use CodedMonkey\Dirigent\Message\DumpPackageProvider;
2121
use CodedMonkey\Dirigent\Message\UpdatePackageLinks;
2222
use Composer\Package\AliasPackage;

templates/dashboard/fields/registry_package_mirroring.html.twig

Lines changed: 0 additions & 1 deletion
This file was deleted.

tests/FunctionalTests/Controller/ApiControllerPublicTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
use CodedMonkey\Dirigent\Doctrine\Entity\Package;
88
use CodedMonkey\Dirigent\Doctrine\Entity\Registry;
9-
use CodedMonkey\Dirigent\Doctrine\Entity\RegistryPackageMirroring;
9+
use CodedMonkey\Dirigent\Entity\RegistryPackageMirroring;
1010
use CodedMonkey\Dirigent\Tests\FunctionalTests\PublicKernel;
1111
use CodedMonkey\Dirigent\Tests\Helper\EntityManagerTestTrait;
1212
use CodedMonkey\Dirigent\Tests\Helper\KernelTestCaseTrait;

0 commit comments

Comments
 (0)