Skip to content

Commit

Permalink
perf: Missing node_parent_position composite index
Browse files Browse the repository at this point in the history
  • Loading branch information
roadiz-ci committed Mar 5, 2024
1 parent d55f328 commit 420a3cc
Show file tree
Hide file tree
Showing 39 changed files with 511 additions and 484 deletions.
31 changes: 31 additions & 0 deletions migrations/Version20240305124809.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php

declare(strict_types=1);

namespace RZ\Roadiz\Migrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20240305124809 extends AbstractMigration
{
public function getDescription(): string
{
return 'Set realm_id as not nullable in realms_nodes table';
}

public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE realms_nodes CHANGE realm_id realm_id INT NOT NULL');
}

public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE realms_nodes CHANGE realm_id realm_id INT DEFAULT NULL');
}
}
31 changes: 31 additions & 0 deletions migrations/Version20240305125653.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php

declare(strict_types=1);

namespace RZ\Roadiz\Migrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20240305125653 extends AbstractMigration
{
public function getDescription(): string
{
return 'Set nodes_sources_documents relation columns to not-nullable';
}

public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE nodes_sources_documents CHANGE ns_id ns_id INT NOT NULL, CHANGE document_id document_id INT NOT NULL, CHANGE node_type_field_id node_type_field_id INT NOT NULL');
}

public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE nodes_sources_documents CHANGE ns_id ns_id INT DEFAULT NULL, CHANGE document_id document_id INT DEFAULT NULL, CHANGE node_type_field_id node_type_field_id INT DEFAULT NULL');
}
}
31 changes: 31 additions & 0 deletions migrations/Version20240305132609.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php

declare(strict_types=1);

namespace RZ\Roadiz\Migrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20240305132609 extends AbstractMigration
{
public function getDescription(): string
{
return 'Set nodes_to_nodes relation columns to not-nullable';
}

public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE nodes_to_nodes CHANGE node_a_id node_a_id INT NOT NULL, CHANGE node_b_id node_b_id INT NOT NULL, CHANGE node_type_field_id node_type_field_id INT NOT NULL');
}

public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE nodes_to_nodes CHANGE node_a_id node_a_id INT DEFAULT NULL, CHANGE node_b_id node_b_id INT DEFAULT NULL, CHANGE node_type_field_id node_type_field_id INT DEFAULT NULL');
}
}
31 changes: 31 additions & 0 deletions migrations/Version20240305133122.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php

declare(strict_types=1);

namespace RZ\Roadiz\Migrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20240305133122 extends AbstractMigration
{
public function getDescription(): string
{
return 'Set nodes_custom_forms relation columns to not-nullable';
}

public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE nodes_custom_forms CHANGE node_id node_id INT NOT NULL, CHANGE custom_form_id custom_form_id INT NOT NULL, CHANGE node_type_field_id node_type_field_id INT NOT NULL');
}

public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE nodes_custom_forms CHANGE node_id node_id INT DEFAULT NULL, CHANGE custom_form_id custom_form_id INT DEFAULT NULL, CHANGE node_type_field_id node_type_field_id INT DEFAULT NULL');
}
}
31 changes: 31 additions & 0 deletions migrations/Version20240305133641.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php

declare(strict_types=1);

namespace RZ\Roadiz\Migrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20240305133641 extends AbstractMigration
{
public function getDescription(): string
{
return 'Set nodes_sources node_id and translation_id columns not-nullable';
}

public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE nodes_sources CHANGE node_id node_id INT NOT NULL, CHANGE translation_id translation_id INT NOT NULL');
}

public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE nodes_sources CHANGE node_id node_id INT DEFAULT NULL, CHANGE translation_id translation_id INT DEFAULT NULL');
}
}
37 changes: 37 additions & 0 deletions migrations/Version20240305134734.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php

declare(strict_types=1);

namespace RZ\Roadiz\Migrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20240305134734 extends AbstractMigration
{
public function getDescription(): string
{
return 'Set translations tables foreign key columns not-nullable';
}

public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE documents_translations CHANGE translation_id translation_id INT NOT NULL, CHANGE document_id document_id INT NOT NULL');
$this->addSql('ALTER TABLE folders_translations CHANGE folder_id folder_id INT NOT NULL, CHANGE translation_id translation_id INT NOT NULL');
$this->addSql('ALTER TABLE tags_translations CHANGE tag_id tag_id INT NOT NULL, CHANGE translation_id translation_id INT NOT NULL');
$this->addSql('ALTER TABLE tags_translations_documents CHANGE tag_translation_id tag_translation_id INT NOT NULL, CHANGE document_id document_id INT NOT NULL');
}

public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE documents_translations CHANGE translation_id translation_id INT DEFAULT NULL, CHANGE document_id document_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE folders_translations CHANGE folder_id folder_id INT DEFAULT NULL, CHANGE translation_id translation_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE tags_translations CHANGE tag_id tag_id INT DEFAULT NULL, CHANGE translation_id translation_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE tags_translations_documents CHANGE tag_translation_id tag_translation_id INT DEFAULT NULL, CHANGE document_id document_id INT DEFAULT NULL');
}
}
62 changes: 62 additions & 0 deletions migrations/Version20240305142243.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<?php

declare(strict_types=1);

namespace RZ\Roadiz\Migrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20240305142243 extends AbstractMigration
{
public function getDescription(): string
{
return 'Set composite tables foreign key columns not-nullable';
}

public function up(Schema $schema): void
{
$this->addSql('ALTER TABLE attribute_group_translations CHANGE attribute_group_id attribute_group_id INT NOT NULL, CHANGE translation_id translation_id INT NOT NULL');
$this->addSql('ALTER TABLE attribute_translations CHANGE attribute_id attribute_id INT NOT NULL, CHANGE translation_id translation_id INT NOT NULL');
$this->addSql('ALTER TABLE attribute_value_translations CHANGE translation_id translation_id INT NOT NULL, CHANGE attribute_value attribute_value INT NOT NULL');
$this->addSql('ALTER TABLE attribute_values CHANGE attribute_id attribute_id INT NOT NULL, CHANGE node_id node_id INT NOT NULL');
$this->addSql('ALTER TABLE attributes_documents CHANGE attribute_id attribute_id INT NOT NULL, CHANGE document_id document_id INT NOT NULL');
$this->addSql('ALTER TABLE custom_form_answers CHANGE custom_form_id custom_form_id INT NOT NULL');
$this->addSql('ALTER TABLE custom_form_field_attributes CHANGE custom_form_answer_id custom_form_answer_id INT NOT NULL, CHANGE custom_form_field_id custom_form_field_id INT NOT NULL');
$this->addSql('ALTER TABLE custom_form_fields CHANGE custom_form_id custom_form_id INT NOT NULL');

// Remove all node_type_fields where node_type_id is null before changing it to not-nullable
$this->addSql('DELETE FROM node_type_fields WHERE node_type_id IS NULL');
$this->addSql('ALTER TABLE node_type_fields CHANGE node_type_id node_type_id INT NOT NULL');

// Remove all nodes where nodeType_id is null before changing it to not-nullable
$this->addSql('DELETE FROM nodes WHERE nodeType_id IS NULL');
$this->addSql('ALTER TABLE nodes CHANGE nodeType_id nodeType_id INT NOT NULL');

// Remove all url_aliases where ns_id is null before changing it to not-nullable
$this->addSql('DELETE FROM url_aliases WHERE ns_id IS NULL');
$this->addSql('ALTER TABLE url_aliases DROP FOREIGN KEY FK_E261ED65AA2D61');
$this->addSql('ALTER TABLE url_aliases CHANGE ns_id ns_id INT NOT NULL');
$this->addSql('ALTER TABLE url_aliases ADD CONSTRAINT FK_E261ED65AA2D61 FOREIGN KEY (ns_id) REFERENCES nodes_sources (id) ON DELETE CASCADE');
}

public function down(Schema $schema): void
{
$this->addSql('ALTER TABLE attribute_group_translations CHANGE translation_id translation_id INT DEFAULT NULL, CHANGE attribute_group_id attribute_group_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE attribute_translations CHANGE translation_id translation_id INT DEFAULT NULL, CHANGE attribute_id attribute_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE attribute_value_translations CHANGE translation_id translation_id INT DEFAULT NULL, CHANGE attribute_value attribute_value INT DEFAULT NULL');
$this->addSql('ALTER TABLE attribute_values CHANGE node_id node_id INT DEFAULT NULL, CHANGE attribute_id attribute_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE attributes_documents CHANGE attribute_id attribute_id INT DEFAULT NULL, CHANGE document_id document_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE custom_form_answers CHANGE custom_form_id custom_form_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE custom_form_field_attributes CHANGE custom_form_answer_id custom_form_answer_id INT DEFAULT NULL, CHANGE custom_form_field_id custom_form_field_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE custom_form_fields CHANGE custom_form_id custom_form_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE node_type_fields CHANGE node_type_id node_type_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE nodes CHANGE nodeType_id nodeType_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE url_aliases DROP FOREIGN KEY FK_E261ED65AA2D61');
$this->addSql('ALTER TABLE url_aliases CHANGE ns_id ns_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE url_aliases ADD CONSTRAINT FK_E261ED65AA2D61 FOREIGN KEY (ns_id) REFERENCES nodes_sources (id) ON UPDATE NO ACTION ON DELETE NO ACTION');
}
}
31 changes: 31 additions & 0 deletions migrations/Version20240305143443.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php

declare(strict_types=1);

namespace RZ\Roadiz\Migrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20240305143443 extends AbstractMigration
{
public function getDescription(): string
{
return 'Added composite index on nodes parent_node_id and position columns';
}

public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE INDEX node_parent_position ON nodes (parent_node_id, position)');
}

public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('DROP INDEX node_parent_position ON nodes');
}
}
1 change: 0 additions & 1 deletion src/Api/Breadcrumbs/NodesSourcesBreadcrumbsFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ public function create(?PersistableInterface $entity): ?BreadcrumbsInterface
}

if (
null === $entity->getNode()->getNodeType() ||
!$entity->isReachable()
) {
return null;
Expand Down
44 changes: 9 additions & 35 deletions src/Entity/AttributeDocuments.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,13 @@ class AttributeDocuments extends AbstractPositioned
ORM\JoinColumn(
name: "attribute_id",
referencedColumnName: "id",
nullable: false,
onDelete: "CASCADE"
),
Serializer\Exclude(),
SymfonySerializer\Ignore()
]
protected ?Attribute $attribute = null;
protected Attribute $attribute;

#[
ORM\ManyToOne(
Expand All @@ -49,72 +50,45 @@ class AttributeDocuments extends AbstractPositioned
ORM\JoinColumn(
name: "document_id",
referencedColumnName: "id",
nullable: false,
onDelete: "CASCADE"
),
Serializer\Groups(["attribute"]),
SymfonySerializer\Groups(["attribute"]),
Serializer\Type(Document::class)
]
protected ?Document $document = null;
protected Document $document;

/**
* @param Attribute|null $attribute
* @param Document|null $document
*/
public function __construct(Attribute $attribute = null, Document $document = null)
public function __construct(Attribute $attribute, Document $document)
{
$this->document = $document;
$this->attribute = $attribute;
}

/**
*
*/
public function __clone()
{
if ($this->id) {
$this->id = null;
$this->attribute = null;
}
}

/**
* Gets the value of document.
*
* @return Document|null
*/
public function getDocument(): ?Document
public function getDocument(): Document
{
return $this->document;
}

/**
* Sets the value of document.
*
* @param Document|null $document the document
*
* @return AttributeDocuments
*/
public function setDocument(?Document $document): AttributeDocuments
public function setDocument(Document $document): AttributeDocuments
{
$this->document = $document;

return $this;
}

/**
* @return Attribute|null
*/
public function getAttribute(): ?Attribute
public function getAttribute(): Attribute
{
return $this->attribute;
}

/**
* @param Attribute|null $attribute
* @return AttributeDocuments
*/
public function setAttribute(?Attribute $attribute): AttributeDocuments
public function setAttribute(Attribute $attribute): AttributeDocuments
{
$this->attribute = $attribute;
return $this;
Expand Down
Loading

0 comments on commit 420a3cc

Please sign in to comment.