diff --git a/migrations/Version20241209071929.php b/migrations/Version20241209071929.php new file mode 100644 index 0000000..4243d7d --- /dev/null +++ b/migrations/Version20241209071929.php @@ -0,0 +1,50 @@ +addSql('CREATE TABLE item (id INT NOT NULL, uuid UUID NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_1F1B251ED17F50A6 ON item (uuid)'); + $this->addSql('COMMENT ON COLUMN item.uuid IS \'(DC2Type:uuid)\''); + $this->addSql('CREATE TABLE messenger_messages (id BIGSERIAL NOT NULL, body TEXT NOT NULL, headers TEXT NOT NULL, queue_name VARCHAR(190) NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, available_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, delivered_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE INDEX IDX_75EA56E0FB7336F0 ON messenger_messages (queue_name)'); + $this->addSql('CREATE INDEX IDX_75EA56E0E3BD61CE ON messenger_messages (available_at)'); + $this->addSql('CREATE INDEX IDX_75EA56E016BA31DB ON messenger_messages (delivered_at)'); + $this->addSql('COMMENT ON COLUMN messenger_messages.created_at IS \'(DC2Type:datetime_immutable)\''); + $this->addSql('COMMENT ON COLUMN messenger_messages.available_at IS \'(DC2Type:datetime_immutable)\''); + $this->addSql('COMMENT ON COLUMN messenger_messages.delivered_at IS \'(DC2Type:datetime_immutable)\''); + $this->addSql('CREATE OR REPLACE FUNCTION notify_messenger_messages() RETURNS TRIGGER AS $$ + BEGIN + PERFORM pg_notify(\'messenger_messages\', NEW.queue_name::text); + RETURN NEW; + END; + $$ LANGUAGE plpgsql;'); + $this->addSql('DROP TRIGGER IF EXISTS notify_trigger ON messenger_messages;'); + $this->addSql('CREATE TRIGGER notify_trigger AFTER INSERT OR UPDATE ON messenger_messages FOR EACH ROW EXECUTE PROCEDURE notify_messenger_messages();'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('CREATE SCHEMA public'); + $this->addSql('DROP TABLE item'); + $this->addSql('DROP TABLE messenger_messages'); + } +} diff --git a/src/Entity/Pf2e/Item.php b/src/Entity/Pf2e/Item.php new file mode 100644 index 0000000..6cef8eb --- /dev/null +++ b/src/Entity/Pf2e/Item.php @@ -0,0 +1,62 @@ +id; + } + + public function getUuid(): ?Uuid + { + return $this->uuid; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): static + { + $this->name = $name; + + return $this; + } + + public function getType(): ?ItemTypeEnum + { + return $this->type; + } + + public function setType(ItemTypeEnum $type): static + { + $this->type = $type; + + return $this; + } +} diff --git a/src/Entity/Pf2e/ItemTypeEnum.php b/src/Entity/Pf2e/ItemTypeEnum.php new file mode 100644 index 0000000..a1d2d26 --- /dev/null +++ b/src/Entity/Pf2e/ItemTypeEnum.php @@ -0,0 +1,18 @@ + + */ +class ItemRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Item::class); + } + + // /** + // * @return Item[] Returns an array of Item objects + // */ + // public function findByExampleField($value): array + // { + // return $this->createQueryBuilder('i') + // ->andWhere('i.exampleField = :val') + // ->setParameter('val', $value) + // ->orderBy('i.id', 'ASC') + // ->setMaxResults(10) + // ->getQuery() + // ->getResult() + // ; + // } + + // public function findOneBySomeField($value): ?Item + // { + // return $this->createQueryBuilder('i') + // ->andWhere('i.exampleField = :val') + // ->setParameter('val', $value) + // ->getQuery() + // ->getOneOrNullResult() + // ; + // } +}