From 45e218c3227c85988b1d577b3106aea9c0d032bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Gangloff?= Date: Sun, 29 Dec 2024 17:06:52 +0100 Subject: [PATCH] feat: add a date column on domain_status to better identify periods --- migrations/Version20241229155050.php | 37 ++++++++++++++++++++++++++++ src/Entity/DomainStatus.php | 23 ++++++++++++++--- src/Service/RDAPService.php | 3 ++- 3 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 migrations/Version20241229155050.php diff --git a/migrations/Version20241229155050.php b/migrations/Version20241229155050.php new file mode 100644 index 0000000..469a142 --- /dev/null +++ b/migrations/Version20241229155050.php @@ -0,0 +1,37 @@ +addSql('ALTER TABLE domain_status RENAME COLUMN date TO created_at'); + $this->addSql('ALTER TABLE domain_status ADD date TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NOW() NOT NULL'); + $this->addSql('UPDATE domain_status SET date = created_at'); + $this->addSql('ALTER TABLE domain_status ALTER COLUMN date DROP DEFAULT'); + + $this->addSql('COMMENT ON COLUMN domain_status.date IS \'(DC2Type:datetime_immutable)\''); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE domain_status DROP COLUMN date'); + $this->addSql('ALTER TABLE domain_status RENAME COLUMN created_at TO date'); + } +} diff --git a/src/Entity/DomainStatus.php b/src/Entity/DomainStatus.php index b96b9bc..4e616df 100644 --- a/src/Entity/DomainStatus.php +++ b/src/Entity/DomainStatus.php @@ -21,7 +21,11 @@ class DomainStatus #[ORM\Column] #[Groups(['domain:item'])] - private ?\DateTimeImmutable $date = null; + private \DateTimeImmutable $createdAt; + + #[ORM\Column] + #[Groups(['domain:item'])] + private \DateTimeImmutable $date; #[ORM\Column(type: Types::SIMPLE_ARRAY, nullable: true)] #[Groups(['domain:item'])] @@ -34,6 +38,7 @@ class DomainStatus public function __construct() { $this->date = new \DateTimeImmutable('now'); + $this->createdAt = new \DateTimeImmutable('now'); } public function getId(): ?int @@ -53,18 +58,30 @@ class DomainStatus return $this; } - public function getDate(): ?\DateTimeImmutable + public function getDate(): \DateTimeImmutable { return $this->date; } - public function setDate(\DateTimeImmutable $date): static + public function setDate(\DateTimeImmutable $date): self { $this->date = $date; return $this; } + public function getCreatedAt(): \DateTimeImmutable + { + return $this->createdAt; + } + + public function setCreatedAt(\DateTimeImmutable $createdAt): static + { + $this->createdAt = $createdAt; + + return $this; + } + public function getAddStatus(): array { return $this->addStatus; diff --git a/src/Service/RDAPService.php b/src/Service/RDAPService.php index 933f0c5..4e09d73 100644 --- a/src/Service/RDAPService.php +++ b/src/Service/RDAPService.php @@ -275,7 +275,8 @@ readonly class RDAPService if ($domain->getUpdatedAt() !== $domain->getCreatedAt()) { $this->em->persist((new DomainStatus()) ->setDomain($domain) - ->setDate(new \DateTimeImmutable('now')) + ->setCreatedAt(new \DateTimeImmutable('now')) + ->setDate($domain->getUpdatedAt()) ->setAddStatus($addedStatus) ->setDeleteStatus($deletedStatus)); }