33namespace CodedMonkey \Dirigent \Doctrine \Entity ;
44
55use CodedMonkey \Dirigent \Doctrine \Repository \MetadataRepository ;
6+ use CodedMonkey \Dirigent \Entity \MetadataLinkType ;
67use Composer \Package \Version \VersionParser ;
78use Composer \Pcre \Preg ;
89use Doctrine \Common \Collections \ArrayCollection ;
@@ -100,37 +101,43 @@ class Metadata extends TrackedEntity implements \Stringable
100101 * @var Collection<int, MetadataRequireLink>
101102 */
102103 #[ORM \OneToMany(targetEntity: MetadataRequireLink::class, mappedBy: 'metadata ' , cascade: ['persist ' , 'detach ' , 'remove ' ])]
103- private Collection $ require ;
104+ #[ORM \OrderBy(['index ' => 'ASC ' ])]
105+ private Collection $ requireLinks ;
104106
105107 /**
106108 * @var Collection<int, MetadataDevRequireLink>
107109 */
108110 #[ORM \OneToMany(targetEntity: MetadataDevRequireLink::class, mappedBy: 'metadata ' , cascade: ['persist ' , 'detach ' , 'remove ' ])]
109- private Collection $ devRequire ;
111+ #[ORM \OrderBy(['index ' => 'ASC ' ])]
112+ private Collection $ devRequireLinks ;
110113
111114 /**
112115 * @var Collection<int, MetadataConflictLink>
113116 */
114117 #[ORM \OneToMany(targetEntity: MetadataConflictLink::class, mappedBy: 'metadata ' , cascade: ['persist ' , 'detach ' , 'remove ' ])]
115- private Collection $ conflict ;
118+ #[ORM \OrderBy(['index ' => 'ASC ' ])]
119+ private Collection $ conflictLinks ;
116120
117121 /**
118122 * @var Collection<int, MetadataProvideLink>
119123 */
120124 #[ORM \OneToMany(targetEntity: MetadataProvideLink::class, mappedBy: 'metadata ' , cascade: ['persist ' , 'detach ' , 'remove ' ])]
121- private Collection $ provide ;
125+ #[ORM \OrderBy(['index ' => 'ASC ' ])]
126+ private Collection $ provideLinks ;
122127
123128 /**
124129 * @var Collection<int, MetadataReplaceLink>
125130 */
126131 #[ORM \OneToMany(targetEntity: MetadataReplaceLink::class, mappedBy: 'metadata ' , cascade: ['persist ' , 'detach ' , 'remove ' ])]
127- private Collection $ replace ;
132+ #[ORM \OrderBy(['index ' => 'ASC ' ])]
133+ private Collection $ replaceLinks ;
128134
129135 /**
130136 * @var Collection<int, MetadataSuggestLink>
131137 */
132138 #[ORM \OneToMany(targetEntity: MetadataSuggestLink::class, mappedBy: 'metadata ' , cascade: ['persist ' , 'detach ' , 'remove ' ])]
133- private Collection $ suggest ;
139+ #[ORM \OrderBy(['index ' => 'ASC ' ])]
140+ private Collection $ suggestLinks ;
134141
135142 /**
136143 * @var Collection<int, Keyword>
@@ -143,12 +150,12 @@ public function __construct(Version $version)
143150 $ this ->version = $ version ;
144151 $ this ->package = $ version ->getPackage ();
145152
146- $ this ->require = new ArrayCollection ();
147- $ this ->devRequire = new ArrayCollection ();
148- $ this ->conflict = new ArrayCollection ();
149- $ this ->provide = new ArrayCollection ();
150- $ this ->replace = new ArrayCollection ();
151- $ this ->suggest = new ArrayCollection ();
153+ $ this ->requireLinks = new ArrayCollection ();
154+ $ this ->devRequireLinks = new ArrayCollection ();
155+ $ this ->conflictLinks = new ArrayCollection ();
156+ $ this ->provideLinks = new ArrayCollection ();
157+ $ this ->replaceLinks = new ArrayCollection ();
158+ $ this ->suggestLinks = new ArrayCollection ();
152159 $ this ->keywords = new ArrayCollection ();
153160 }
154161
@@ -409,49 +416,49 @@ public function getPackage(): Package
409416 /**
410417 * @return Collection<int, MetadataRequireLink>
411418 */
412- public function getRequire (): Collection
419+ public function getRequireLinks (): Collection
413420 {
414- return $ this ->require ;
421+ return $ this ->requireLinks ;
415422 }
416423
417424 /**
418425 * @return Collection<int, MetadataDevRequireLink>
419426 */
420- public function getDevRequire (): Collection
427+ public function getDevRequireLinks (): Collection
421428 {
422- return $ this ->devRequire ;
429+ return $ this ->devRequireLinks ;
423430 }
424431
425432 /**
426433 * @return Collection<int, MetadataConflictLink>
427434 */
428- public function getConflict (): Collection
435+ public function getConflictLinks (): Collection
429436 {
430- return $ this ->conflict ;
437+ return $ this ->conflictLinks ;
431438 }
432439
433440 /**
434441 * @return Collection<int, MetadataProvideLink>
435442 */
436- public function getProvide (): Collection
443+ public function getProvideLinks (): Collection
437444 {
438- return $ this ->provide ;
445+ return $ this ->provideLinks ;
439446 }
440447
441448 /**
442449 * @return Collection<int, MetadataReplaceLink>
443450 */
444- public function getReplace (): Collection
451+ public function getReplaceLinks (): Collection
445452 {
446- return $ this ->replace ;
453+ return $ this ->replaceLinks ;
447454 }
448455
449456 /**
450457 * @return Collection<int, MetadataSuggestLink>
451458 */
452- public function getSuggest (): Collection
459+ public function getSuggestLinks (): Collection
453460 {
454- return $ this ->suggest ;
461+ return $ this ->suggestLinks ;
455462 }
456463
457464 /**
@@ -615,19 +622,10 @@ public function toComposerArray(): array
615622 ];
616623
617624 // Set links
618- $ supportedLinkTypes = [
619- 'require ' => $ this ->require ,
620- 'require-dev ' => $ this ->devRequire ,
621- 'suggest ' => $ this ->suggest ,
622- 'conflict ' => $ this ->conflict ,
623- 'provide ' => $ this ->provide ,
624- 'replace ' => $ this ->replace ,
625- ];
626-
627- foreach ($ supportedLinkTypes as $ linkType => $ linkCollection ) {
625+ foreach (MetadataLinkType::cases () as $ linkType ) {
628626 /** @var AbstractMetadataLink $link */
629- foreach ($ linkCollection as $ link ) {
630- $ data [$ linkType ][$ link ->getLinkedPackageName ()] = $ link ->getLinkedVersionConstraint ();
627+ foreach ($ linkType -> getMetadataLinks ( $ this ) as $ link ) {
628+ $ data [$ linkType-> value ][$ link ->getLinkedPackageName ()] = $ link ->getLinkedVersionConstraint ();
631629 }
632630 }
633631
0 commit comments