From cdac3accf735ebc597c651b727900854cab41bd4 Mon Sep 17 00:00:00 2001 From: Alexander Strizhak Date: Sat, 26 Apr 2025 17:31:48 +0300 Subject: [PATCH 1/9] Field::$obsolete --- src/Definition/Field.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/Definition/Field.php b/src/Definition/Field.php index 75d34cf..4c5b061 100644 --- a/src/Definition/Field.php +++ b/src/Definition/Field.php @@ -37,6 +37,11 @@ final class Field private bool $referenced = false; private ?string $entityClass = null; + /** + * Must be removed from schema render. + */ + private bool $obsolete = false; + public function __construct() { $this->options = new OptionMap(); @@ -173,6 +178,16 @@ public function setEntityClass(?string $entityClass): self return $this; } + public function isObsolete(): bool + { + return $this->obsolete; + } + + public function setObsolete(bool $obsolete): void + { + $this->obsolete = $obsolete; + } + public function __clone() { $this->options = clone $this->options; From 8385916653423976ed14932d50fba805aefbd5d7 Mon Sep 17 00:00:00 2001 From: Alexander Strizhak Date: Sat, 26 Apr 2025 21:51:36 +0300 Subject: [PATCH 2/9] Relation::$obsolete --- src/Definition/Relation.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Definition/Relation.php b/src/Definition/Relation.php index b8fc1a4..92a5c5b 100644 --- a/src/Definition/Relation.php +++ b/src/Definition/Relation.php @@ -27,6 +27,9 @@ final class Relation /** @var int|null */ private $inverseLoad = null; + /** @var bool */ + private $obsolete = false; + /** * Relation constructor. */ @@ -108,6 +111,16 @@ public function getInverseLoad(): ?int return $this->inverseLoad; } + public function isObsolete(): bool + { + return $this->obsolete; + } + + public function setObsolete(bool $obsolete): void + { + $this->obsolete = $obsolete; + } + /** * Cloning. */ From 31c16f504a67e02ae3e7fd68047f694d1b9f8dc4 Mon Sep 17 00:00:00 2001 From: Alexander Strizhak Date: Sat, 26 Apr 2025 22:10:06 +0300 Subject: [PATCH 3/9] up --- src/Generator/GenerateRelations.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Generator/GenerateRelations.php b/src/Generator/GenerateRelations.php index 52bbc8a..415139c 100644 --- a/src/Generator/GenerateRelations.php +++ b/src/Generator/GenerateRelations.php @@ -110,6 +110,10 @@ protected function register(Registry $registry, Entity $entity): void \assert($role !== null); foreach ($entity->getRelations() as $name => $r) { + if ($r->isObsolete()) { + continue; + } + $schema = $this->initRelation($r->getType())->withContext( $name, $role, From fddbb2a30312249a316a302ff877ece203fc713e Mon Sep 17 00:00:00 2001 From: Alexander Strizhak Date: Sat, 26 Apr 2025 22:16:17 +0300 Subject: [PATCH 4/9] compile --- src/Compiler.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Compiler.php b/src/Compiler.php index 648b0d0..6e1bd1a 100644 --- a/src/Compiler.php +++ b/src/Compiler.php @@ -157,6 +157,9 @@ private function renderColumns(Entity $entity): array $fieldGroups = []; // Collect and group fields by column name foreach ($entity->getFields() as $name => $field) { + if ($field->isObsolete()) { + continue; + } $fieldGroups[$field->getColumn()][$name] = $field; } foreach ($fieldGroups as $fields) { @@ -182,6 +185,9 @@ private function renderColumns(Entity $entity): array $schema = []; foreach ($entity->getFields() as $name => $field) { + if ($field->isObsolete()) { + continue; + } $schema[$name] = $field->getColumn(); } @@ -204,7 +210,7 @@ private function renderTypecast(Entity $entity): array { $schema = []; foreach ($entity->getFields() as $name => $field) { - if ($field->hasTypecast()) { + if ($field->hasTypecast() && !$field->isObsolete()) { $schema[$name] = $field->getTypecast(); } } From d85fa13d1dea12e36c200a1ac172b8f1a7a66d7f Mon Sep 17 00:00:00 2001 From: Alexander Strizhak Date: Sun, 27 Apr 2025 14:04:02 +0300 Subject: [PATCH 5/9] up --- composer.json | 2 +- src/Compiler.php | 6 +++--- src/Definition/Field.php | 5 ----- src/Definition/Relation.php | 13 ------------- src/Generator/GenerateRelations.php | 2 +- 5 files changed, 5 insertions(+), 23 deletions(-) diff --git a/composer.json b/composer.json index 85e415c..50c31c4 100644 --- a/composer.json +++ b/composer.json @@ -38,7 +38,7 @@ "require-dev": { "phpunit/phpunit": "^9.5", "spiral/tokenizer": "^2.8", - "vimeo/psalm": "^5.12", + "vimeo/psalm": "^5.12 || ^6.10", "symfony/console": "^6.0 || ^7.0", "spiral/code-style": "^2.2" }, diff --git a/src/Compiler.php b/src/Compiler.php index 6e1bd1a..bb0ab89 100644 --- a/src/Compiler.php +++ b/src/Compiler.php @@ -157,7 +157,7 @@ private function renderColumns(Entity $entity): array $fieldGroups = []; // Collect and group fields by column name foreach ($entity->getFields() as $name => $field) { - if ($field->isObsolete()) { + if ($field->getOptions()->get('obsolete')) { continue; } $fieldGroups[$field->getColumn()][$name] = $field; @@ -185,7 +185,7 @@ private function renderColumns(Entity $entity): array $schema = []; foreach ($entity->getFields() as $name => $field) { - if ($field->isObsolete()) { + if ($field->getOptions()->get('obsolete')) { continue; } $schema[$name] = $field->getColumn(); @@ -210,7 +210,7 @@ private function renderTypecast(Entity $entity): array { $schema = []; foreach ($entity->getFields() as $name => $field) { - if ($field->hasTypecast() && !$field->isObsolete()) { + if ($field->hasTypecast() && !$field->getOptions()->get('obsolete')) { $schema[$name] = $field->getTypecast(); } } diff --git a/src/Definition/Field.php b/src/Definition/Field.php index 4c5b061..a284250 100644 --- a/src/Definition/Field.php +++ b/src/Definition/Field.php @@ -37,11 +37,6 @@ final class Field private bool $referenced = false; private ?string $entityClass = null; - /** - * Must be removed from schema render. - */ - private bool $obsolete = false; - public function __construct() { $this->options = new OptionMap(); diff --git a/src/Definition/Relation.php b/src/Definition/Relation.php index 92a5c5b..b8fc1a4 100644 --- a/src/Definition/Relation.php +++ b/src/Definition/Relation.php @@ -27,9 +27,6 @@ final class Relation /** @var int|null */ private $inverseLoad = null; - /** @var bool */ - private $obsolete = false; - /** * Relation constructor. */ @@ -111,16 +108,6 @@ public function getInverseLoad(): ?int return $this->inverseLoad; } - public function isObsolete(): bool - { - return $this->obsolete; - } - - public function setObsolete(bool $obsolete): void - { - $this->obsolete = $obsolete; - } - /** * Cloning. */ diff --git a/src/Generator/GenerateRelations.php b/src/Generator/GenerateRelations.php index 415139c..1dbc337 100644 --- a/src/Generator/GenerateRelations.php +++ b/src/Generator/GenerateRelations.php @@ -110,7 +110,7 @@ protected function register(Registry $registry, Entity $entity): void \assert($role !== null); foreach ($entity->getRelations() as $name => $r) { - if ($r->isObsolete()) { + if (true === $r->getOptions()->get('obsolete')) { continue; } From c5d5fc55d2125405f42d85ab1eb05998b417e82d Mon Sep 17 00:00:00 2001 From: github-actions Date: Sun, 27 Apr 2025 11:04:25 +0000 Subject: [PATCH 6/9] style(php-cs-fixer): fix coding standards --- src/Generator/GenerateRelations.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Generator/GenerateRelations.php b/src/Generator/GenerateRelations.php index 1dbc337..76cd9b1 100644 --- a/src/Generator/GenerateRelations.php +++ b/src/Generator/GenerateRelations.php @@ -110,7 +110,7 @@ protected function register(Registry $registry, Entity $entity): void \assert($role !== null); foreach ($entity->getRelations() as $name => $r) { - if (true === $r->getOptions()->get('obsolete')) { + if ($r->getOptions()->get('obsolete') === true) { continue; } From 880655bd6e5aec1f11fc55ace69bf487dfa7bfa4 Mon Sep 17 00:00:00 2001 From: Alexander Strizhak Date: Sun, 27 Apr 2025 19:28:26 +0300 Subject: [PATCH 7/9] up --- src/Generator/GenerateRelations.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Generator/GenerateRelations.php b/src/Generator/GenerateRelations.php index 76cd9b1..77e601c 100644 --- a/src/Generator/GenerateRelations.php +++ b/src/Generator/GenerateRelations.php @@ -43,6 +43,7 @@ final class GenerateRelations implements GeneratorInterface 'indexCreate' => RelationSchema::INDEX_CREATE, 'morphKeyLength' => RelationSchema::MORPH_KEY_LENGTH, 'embeddedPrefix' => RelationSchema::EMBEDDED_PREFIX, + 'obsolete' => RelationSchema::OBSOLETE, // deprecated 'though' => Relation::THROUGH_ENTITY, From 2205cf29139e5802e716ce249af9115af38f649f Mon Sep 17 00:00:00 2001 From: Alexander Strizhak Date: Sun, 27 Apr 2025 19:36:48 +0300 Subject: [PATCH 8/9] up --- src/Generator/GenerateRelations.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Generator/GenerateRelations.php b/src/Generator/GenerateRelations.php index 77e601c..3bd2e8c 100644 --- a/src/Generator/GenerateRelations.php +++ b/src/Generator/GenerateRelations.php @@ -43,7 +43,7 @@ final class GenerateRelations implements GeneratorInterface 'indexCreate' => RelationSchema::INDEX_CREATE, 'morphKeyLength' => RelationSchema::MORPH_KEY_LENGTH, 'embeddedPrefix' => RelationSchema::EMBEDDED_PREFIX, - 'obsolete' => RelationSchema::OBSOLETE, + 'obsolete' => Relation::OBSOLETE, // deprecated 'though' => Relation::THROUGH_ENTITY, From d1157ee79a1b41bd36f474c6f026fa7eadbf3995 Mon Sep 17 00:00:00 2001 From: Alexander Strizhak Date: Sun, 27 Apr 2025 19:39:36 +0300 Subject: [PATCH 9/9] up --- src/Compiler.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Compiler.php b/src/Compiler.php index bb0ab89..49d017c 100644 --- a/src/Compiler.php +++ b/src/Compiler.php @@ -157,7 +157,7 @@ private function renderColumns(Entity $entity): array $fieldGroups = []; // Collect and group fields by column name foreach ($entity->getFields() as $name => $field) { - if ($field->getOptions()->get('obsolete')) { + if ($field->getAttributes()->get('obsolete')) { continue; } $fieldGroups[$field->getColumn()][$name] = $field; @@ -185,7 +185,7 @@ private function renderColumns(Entity $entity): array $schema = []; foreach ($entity->getFields() as $name => $field) { - if ($field->getOptions()->get('obsolete')) { + if ($field->getAttributes()->get('obsolete')) { continue; } $schema[$name] = $field->getColumn(); @@ -210,7 +210,7 @@ private function renderTypecast(Entity $entity): array { $schema = []; foreach ($entity->getFields() as $name => $field) { - if ($field->hasTypecast() && !$field->getOptions()->get('obsolete')) { + if ($field->hasTypecast() && !$field->getAttributes()->get('obsolete')) { $schema[$name] = $field->getTypecast(); } }