Skip to content

Commit daf43ee

Browse files
committed
Update datetime properties and implement TrackedEntity class in Package entity
Signed-off-by: Tim Goudriaan <tim@codedmonkey.com>
1 parent dac443d commit daf43ee

4 files changed

Lines changed: 27 additions & 29 deletions

File tree

migrations/Version20250715195941.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ public function up(Schema $schema): void
1919
$this->addSql(<<<'SQL'
2020
ALTER TABLE access_token ADD last_modified_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL
2121
SQL);
22+
$this->addSql(<<<'SQL'
23+
ALTER TABLE package ADD last_modified_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL
24+
SQL);
2225
$this->addSql(<<<'SQL'
2326
ALTER TABLE version ADD last_modified_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL
2427
SQL);
@@ -27,10 +30,13 @@ public function up(Schema $schema): void
2730
public function down(Schema $schema): void
2831
{
2932
$this->addSql(<<<'SQL'
30-
ALTER TABLE access_token DROP last_modified_at
33+
ALTER TABLE version DROP last_modified_at
3134
SQL);
3235
$this->addSql(<<<'SQL'
33-
ALTER TABLE version DROP last_modified_at
36+
ALTER TABLE package DROP last_modified_at
37+
SQL);
38+
$this->addSql(<<<'SQL'
39+
ALTER TABLE access_token DROP last_modified_at
3440
SQL);
3541
}
3642
}

src/Doctrine/Entity/Package.php

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
#[ORM\Entity(repositoryClass: PackageRepository::class)]
1414
#[ORM\UniqueConstraint(name: 'package_name_idx', columns: ['name'])]
1515
#[UniquePackage]
16-
class Package
16+
class Package extends TrackedEntity
1717
{
1818
#[ORM\Id]
1919
#[ORM\Column]
@@ -74,17 +74,14 @@ class Package
7474
#[ORM\OneToMany(targetEntity: Version::class, mappedBy: 'package', cascade: ['remove'])]
7575
private Collection $versions;
7676

77-
#[ORM\Column(type: Types::DATETIME_MUTABLE)]
78-
private \DateTimeInterface $createdAt;
79-
80-
#[ORM\Column(type: Types::DATETIME_MUTABLE, nullable: true)]
81-
private ?\DateTimeInterface $updatedAt = null;
77+
#[ORM\Column(nullable: true)]
78+
private ?\DateTimeImmutable $updatedAt = null;
8279

83-
#[ORM\Column(type: Types::DATETIME_MUTABLE, nullable: true)]
84-
private ?\DateTimeInterface $updateScheduledAt = null;
80+
#[ORM\Column(nullable: true)]
81+
private ?\DateTimeImmutable $updateScheduledAt = null;
8582

86-
#[ORM\Column(type: Types::DATETIME_MUTABLE, nullable: true)]
87-
private ?\DateTimeInterface $dumpedAt = null;
83+
#[ORM\Column(nullable: true)]
84+
private ?\DateTimeImmutable $dumpedAt = null;
8885

8986
/**
9087
* @var array<string, Version> lookup table for versions
@@ -95,7 +92,6 @@ public function __construct()
9592
{
9693
$this->installations = new PackageInstallations($this);
9794
$this->versions = new ArrayCollection();
98-
$this->createdAt = new \DateTime();
9995
}
10096

10197
public function getId(): ?int
@@ -308,37 +304,37 @@ public function getVersion(string $normalizedVersion): ?Version
308304
return $this->cachedVersions[strtolower($normalizedVersion)] ?? null;
309305
}
310306

311-
public function getCreatedAt(): \DateTimeInterface
307+
public function getCreatedAt(): \DateTimeImmutable
312308
{
313309
return $this->createdAt;
314310
}
315311

316-
public function getUpdatedAt(): ?\DateTimeInterface
312+
public function getUpdatedAt(): ?\DateTimeImmutable
317313
{
318314
return $this->updatedAt;
319315
}
320316

321-
public function setUpdatedAt(\DateTimeInterface $updatedAt): void
317+
public function setUpdatedAt(\DateTimeImmutable $updatedAt): void
322318
{
323319
$this->updatedAt = $updatedAt;
324320
}
325321

326-
public function getUpdateScheduledAt(): ?\DateTimeInterface
322+
public function getUpdateScheduledAt(): ?\DateTimeImmutable
327323
{
328324
return $this->updateScheduledAt;
329325
}
330326

331-
public function setUpdateScheduledAt(?\DateTimeInterface $updateScheduledAt): void
327+
public function setUpdateScheduledAt(?\DateTimeImmutable $updateScheduledAt): void
332328
{
333329
$this->updateScheduledAt = $updateScheduledAt;
334330
}
335331

336-
public function getDumpedAt(): ?\DateTimeInterface
332+
public function getDumpedAt(): ?\DateTimeImmutable
337333
{
338334
return $this->dumpedAt;
339335
}
340336

341-
public function setDumpedAt(?\DateTimeInterface $dumpedAt): void
337+
public function setDumpedAt(?\DateTimeImmutable $dumpedAt): void
342338
{
343339
$this->dumpedAt = $dumpedAt;
344340
}

src/Package/PackageMetadataResolver.php

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -197,10 +197,9 @@ private function updatePackage(Package $package, array $composerPackages, ?VcsDr
197197
}
198198

199199
if ($primaryVersionName) {
200-
$message = new Envelope(new UpdatePackageLinks($package->getId(), $primaryVersionName), [
201-
new DispatchAfterCurrentBusStamp(),
202-
new TransportNamesStamp('async'),
203-
]);
200+
$message = Envelope::wrap(new UpdatePackageLinks($package->getId(), $primaryVersionName))
201+
->with(new DispatchAfterCurrentBusStamp())
202+
->with(new TransportNamesStamp('async'));
204203
$this->messenger->dispatch($message);
205204
}
206205

@@ -211,10 +210,7 @@ private function updatePackage(Package $package, array $composerPackages, ?VcsDr
211210
$this->entityManager->remove($versionEntity);
212211
}
213212

214-
$updatedAt = new \DateTime();
215-
$package->setUpdatedAt($updatedAt);
216-
217-
$this->entityManager->persist($package);
213+
$package->setUpdatedAt(new \DateTimeImmutable());
218214
}
219215

220216
private function updateVersion(Package $package, Version $version, CompletePackageInterface $data, ?VcsDriverInterface $driver = null): void

src/Package/PackageProviderManager.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public function dump(Package $package): void
4141
$this->write($package->getName(), $releasePackages);
4242
$this->write($package->getName(), $devPackages, true);
4343

44-
$package->setDumpedAt(new \DateTime());
44+
$package->setDumpedAt(new \DateTimeImmutable());
4545
}
4646

4747
public function exists(string $packageName): bool

0 commit comments

Comments
 (0)