File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 44
55use CodedMonkey \Dirigent \Doctrine \Entity \Package ;
66use CodedMonkey \Dirigent \Doctrine \Repository \PackageRepository ;
7+ use CodedMonkey \Dirigent \Message \RemovePackageProvider ;
78use Doctrine \Bundle \DoctrineBundle \Attribute \AsEntityListener ;
89use Doctrine \ORM \Event \PreRemoveEventArgs ;
910use Doctrine \ORM \Events ;
11+ use Symfony \Component \Messenger \MessageBusInterface ;
1012
1113#[AsEntityListener(Events::preRemove, entity: Package::class)]
12- class PackageListener
14+ readonly class PackageListener
1315{
16+ public function __construct (
17+ private MessageBusInterface $ messenger ,
18+ ) {
19+ }
20+
1421 public function preRemove (Package $ package , PreRemoveEventArgs $ event ): void
1522 {
1623 /** @var PackageRepository $repository */
1724 $ repository = $ event ->getObjectManager ()->getRepository (Package::class);
1825
1926 // Delete existing package links
2027 $ repository ->deletePackageLinks ($ package );
28+
29+ // Remove package provider
30+ $ this ->messenger ->dispatch (new RemovePackageProvider ($ package ->getId ()));
2131 }
2232}
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace CodedMonkey \Dirigent \Message ;
4+
5+ use Symfony \Component \Messenger \Attribute \AsMessage ;
6+
7+ #[AsMessage]
8+ readonly class RemovePackageProvider
9+ {
10+ public function __construct (
11+ public int $ packageId ,
12+ ) {
13+ }
14+ }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace CodedMonkey \Dirigent \Message ;
4+
5+ use CodedMonkey \Dirigent \Doctrine \Repository \PackageRepository ;
6+ use CodedMonkey \Dirigent \Package \PackageProviderManager ;
7+ use Symfony \Component \Messenger \Attribute \AsMessageHandler ;
8+
9+ #[AsMessageHandler]
10+ readonly class RemovePackageProviderHandler
11+ {
12+ use PackageHandlerTrait;
13+
14+ public function __construct (
15+ private PackageRepository $ packageRepository ,
16+ private PackageProviderManager $ providerManager ,
17+ ) {
18+ }
19+
20+ public function __invoke (RemovePackageProvider $ message ): void
21+ {
22+ $ package = $ this ->getPackage ($ this ->packageRepository , $ message ->packageId );
23+
24+ $ this ->providerManager ->remove ($ package );
25+ }
26+ }
Original file line number Diff line number Diff line change @@ -44,6 +44,14 @@ public function dump(Package $package): void
4444 $ package ->setDumpedAt (new \DateTimeImmutable ());
4545 }
4646
47+ public function remove (Package $ package ): void
48+ {
49+ $ packageName = $ package ->getName ();
50+
51+ $ this ->filesystem ->remove ($ this ->path ($ packageName ));
52+ $ this ->filesystem ->remove ($ this ->path ("$ packageName~dev " ));
53+ }
54+
4755 public function exists (string $ packageName ): bool
4856 {
4957 return $ this ->filesystem ->exists ($ this ->path ($ packageName ));
You can’t perform that action at this time.
0 commit comments