diff --git a/migrations/Version20240711145906.php b/migrations/Version20240711162405.php similarity index 89% rename from migrations/Version20240711145906.php rename to migrations/Version20240711162405.php index 4cec8b8..c2f2f15 100644 --- a/migrations/Version20240711145906.php +++ b/migrations/Version20240711162405.php @@ -10,7 +10,7 @@ use Doctrine\Migrations\AbstractMigration; /** * Auto-generated Migration: Please modify to your needs! */ -final class Version20240711145906 extends AbstractMigration +final class Version20240711162405 extends AbstractMigration { public function getDescription(): string { @@ -32,6 +32,9 @@ final class Version20240711145906 extends AbstractMigration , PRIMARY KEY("action", domain_id), CONSTRAINT FK_E8D52271115F0EE5 FOREIGN KEY (domain_id) REFERENCES domain (handle) NOT DEFERRABLE INITIALLY IMMEDIATE)'); $this->addSql('CREATE INDEX IDX_E8D52271115F0EE5 ON domain_event (domain_id)'); $this->addSql('CREATE TABLE entity (handle VARCHAR(255) NOT NULL, PRIMARY KEY(handle))'); + $this->addSql('CREATE TABLE event (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, entity_id VARCHAR(255) NOT NULL, "action" VARCHAR(255) NOT NULL, date DATETIME NOT NULL --(DC2Type:datetime_immutable) + , CONSTRAINT FK_3BAE0AA781257D5D FOREIGN KEY (entity_id) REFERENCES entity (handle) NOT DEFERRABLE INITIALLY IMMEDIATE)'); + $this->addSql('CREATE INDEX IDX_3BAE0AA781257D5D ON event (entity_id)'); $this->addSql('CREATE TABLE nameserver (handle VARCHAR(255) NOT NULL, ldh_name VARCHAR(255) NOT NULL, status CLOB NOT NULL --(DC2Type:simple_array) , PRIMARY KEY(handle))'); $this->addSql('CREATE TABLE nameserver_entity (nameserver_id VARCHAR(255) NOT NULL, entity_id VARCHAR(255) NOT NULL, roles CLOB NOT NULL --(DC2Type:simple_array) @@ -39,9 +42,6 @@ final class Version20240711145906 extends AbstractMigration , PRIMARY KEY(nameserver_id, entity_id), CONSTRAINT FK_A269AFB41A555619 FOREIGN KEY (nameserver_id) REFERENCES nameserver (handle) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_A269AFB481257D5D FOREIGN KEY (entity_id) REFERENCES entity (handle) NOT DEFERRABLE INITIALLY IMMEDIATE)'); $this->addSql('CREATE INDEX IDX_A269AFB41A555619 ON nameserver_entity (nameserver_id)'); $this->addSql('CREATE INDEX IDX_A269AFB481257D5D ON nameserver_entity (entity_id)'); - $this->addSql('CREATE TABLE nameserver_event ("action" VARCHAR(255) NOT NULL, nameserver_id VARCHAR(255) NOT NULL, date DATETIME NOT NULL --(DC2Type:datetime_immutable) - , PRIMARY KEY(nameserver_id, "action"), CONSTRAINT FK_C6BC968C1A555619 FOREIGN KEY (nameserver_id) REFERENCES nameserver (handle) NOT DEFERRABLE INITIALLY IMMEDIATE)'); - $this->addSql('CREATE INDEX IDX_C6BC968C1A555619 ON nameserver_event (nameserver_id)'); $this->addSql('CREATE TABLE user (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, email VARCHAR(180) NOT NULL, roles CLOB NOT NULL --(DC2Type:json) , password VARCHAR(255) NOT NULL)'); $this->addSql('CREATE UNIQUE INDEX UNIQ_IDENTIFIER_EMAIL ON user (email)'); @@ -62,9 +62,9 @@ final class Version20240711145906 extends AbstractMigration $this->addSql('DROP TABLE domain_entity'); $this->addSql('DROP TABLE domain_event'); $this->addSql('DROP TABLE entity'); + $this->addSql('DROP TABLE event'); $this->addSql('DROP TABLE nameserver'); $this->addSql('DROP TABLE nameserver_entity'); - $this->addSql('DROP TABLE nameserver_event'); $this->addSql('DROP TABLE user'); $this->addSql('DROP TABLE messenger_messages'); } diff --git a/src/Controller/TestController.php b/src/Controller/TestController.php deleted file mode 100644 index 3f62823..0000000 --- a/src/Controller/TestController.php +++ /dev/null @@ -1,8 +0,0 @@ - + */ + #[ORM\OneToMany(targetEntity: Event::class, mappedBy: 'entity', orphanRemoval: true)] + private Collection $events; + public function __construct() { $this->domainEntities = new ArrayCollection(); $this->nameserverEntities = new ArrayCollection(); + $this->events = new ArrayCollection(); } public function getHandle(): ?string @@ -103,4 +111,35 @@ class Entity return $this; } + + /** + * @return Collection + */ + public function getEvents(): Collection + { + return $this->events; + } + + public function addEvent(Event $event): static + { + if (!$this->events->contains($event)) { + $this->events->add($event); + $event->setEntity($this); + } + + return $this; + } + + public function removeEvent(Event $event): static + { + if ($this->events->removeElement($event)) { + // set the owning side to null (unless already changed) + if ($event->getEntity() === $this) { + $event->setEntity(null); + } + } + + return $this; + } + } diff --git a/src/Entity/NameserverEvent.php b/src/Entity/Event.php similarity index 61% rename from src/Entity/NameserverEvent.php rename to src/Entity/Event.php index e3d06cb..2c16aa5 100644 --- a/src/Entity/NameserverEvent.php +++ b/src/Entity/Event.php @@ -3,46 +3,31 @@ namespace App\Entity; use App\Config\EventAction; -use App\Repository\NameserverEventRepository; +use App\Repository\EventRepository; use Doctrine\ORM\Mapping as ORM; -#[ORM\Entity(repositoryClass: NameserverEventRepository::class)] -class NameserverEvent +#[ORM\Entity(repositoryClass: EventRepository::class)] +class Event { + #[ORM\Id] + #[ORM\GeneratedValue] #[ORM\Column] - private ?\DateTimeImmutable $date = null; + private ?int $id = null; - #[ORM\Id] - #[ORM\ManyToOne(inversedBy: 'nameserverEvents')] - #[ORM\JoinColumn(referencedColumnName: 'handle', nullable: false)] - private ?Nameserver $nameserver = null; - - #[ORM\Id] #[ORM\Column(enumType: EventAction::class)] private ?EventAction $action = null; - public function getDate(): ?\DateTimeImmutable + #[ORM\Column] + private ?\DateTimeImmutable $date = null; + + #[ORM\ManyToOne(targetEntity: Entity::class, inversedBy: 'events')] + #[ORM\JoinColumn(referencedColumnName: 'handle', nullable: false)] + private ?Entity $entity = null; + + + public function getId(): ?int { - return $this->date; - } - - public function setDate(\DateTimeImmutable $date): static - { - $this->date = $date; - - return $this; - } - - public function getNameserver(): ?Nameserver - { - return $this->nameserver; - } - - public function setNameserver(?Nameserver $nameserver): static - { - $this->nameserver = $nameserver; - - return $this; + return $this->id; } public function getAction(): ?EventAction @@ -56,4 +41,29 @@ class NameserverEvent return $this; } + + public function getDate(): ?\DateTimeImmutable + { + return $this->date; + } + + public function setDate(\DateTimeImmutable $date): static + { + $this->date = $date; + + return $this; + } + + public function getEntity(): ?Entity + { + return $this->entity; + } + + public function setEntity(?Entity $entity): static + { + $this->entity = $entity; + + return $this; + } + } diff --git a/src/Entity/Nameserver.php b/src/Entity/Nameserver.php index 0150e82..8871451 100644 --- a/src/Entity/Nameserver.php +++ b/src/Entity/Nameserver.php @@ -28,16 +28,9 @@ class Nameserver #[ORM\Column(type: Types::SIMPLE_ARRAY, enumType: DomainStatus::class)] private array $status = []; - /** - * @var Collection - */ - #[ORM\OneToMany(targetEntity: NameserverEvent::class, mappedBy: 'nameserver', orphanRemoval: true)] - private Collection $nameserverEvents; - public function __construct() { $this->nameserverEntities = new ArrayCollection(); - $this->nameserverEvents = new ArrayCollection(); } public function getHandle(): ?string @@ -109,34 +102,4 @@ class Nameserver return $this; } - /** - * @return Collection - */ - public function getNameserverEvents(): Collection - { - return $this->nameserverEvents; - } - - public function addNameserverEvent(NameserverEvent $nameserverEvent): static - { - if (!$this->nameserverEvents->contains($nameserverEvent)) { - $this->nameserverEvents->add($nameserverEvent); - $nameserverEvent->setNameserver($this); - } - - return $this; - } - - public function removeNameserverEvent(NameserverEvent $nameserverEvent): static - { - if ($this->nameserverEvents->removeElement($nameserverEvent)) { - // set the owning side to null (unless already changed) - if ($nameserverEvent->getNameserver() === $this) { - $nameserverEvent->setNameserver(null); - } - } - - return $this; - } - } diff --git a/src/Repository/NameserverEventRepository.php b/src/Repository/EventRepository.php similarity index 51% rename from src/Repository/NameserverEventRepository.php rename to src/Repository/EventRepository.php index 86f3c92..ec63e8e 100644 --- a/src/Repository/NameserverEventRepository.php +++ b/src/Repository/EventRepository.php @@ -2,39 +2,39 @@ namespace App\Repository; -use App\Entity\NameserverEvent; +use App\Entity\Event; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; /** - * @extends ServiceEntityRepository + * @extends ServiceEntityRepository */ -class NameserverEventRepository extends ServiceEntityRepository +class EventRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { - parent::__construct($registry, NameserverEvent::class); + parent::__construct($registry, Event::class); } // /** - // * @return NameserverEvent[] Returns an array of NameserverEvent objects + // * @return Event[] Returns an array of Event objects // */ // public function findByExampleField($value): array // { - // return $this->createQueryBuilder('n') - // ->andWhere('n.exampleField = :val') + // return $this->createQueryBuilder('e') + // ->andWhere('e.exampleField = :val') // ->setParameter('val', $value) - // ->orderBy('n.id', 'ASC') + // ->orderBy('e.id', 'ASC') // ->setMaxResults(10) // ->getQuery() // ->getResult() // ; // } - // public function findOneBySomeField($value): ?NameserverEvent + // public function findOneBySomeField($value): ?Event // { - // return $this->createQueryBuilder('n') - // ->andWhere('n.exampleField = :val') + // return $this->createQueryBuilder('e') + // ->andWhere('e.exampleField = :val') // ->setParameter('val', $value) // ->getQuery() // ->getOneOrNullResult()