Skip to content

Commit c3131f9

Browse files
committed
Remove obsolete metadata fields from version table
Signed-off-by: Tim Goudriaan <tim@codedmonkey.com>
1 parent a27935d commit c3131f9

2 files changed

Lines changed: 167 additions & 91 deletions

File tree

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace DoctrineMigrations;
6+
7+
use Doctrine\DBAL\Schema\Schema;
8+
use Doctrine\Migrations\AbstractMigration;
9+
10+
final class Version20260126160137 extends AbstractMigration
11+
{
12+
public function getDescription(): string
13+
{
14+
return 'Remove obsolete metadata fields from version table';
15+
}
16+
17+
public function up(Schema $schema): void
18+
{
19+
$this->addSql(<<<'SQL'
20+
ALTER TABLE version_keyword DROP CONSTRAINT fk_a65a946f4bbc2705
21+
SQL);
22+
$this->addSql(<<<'SQL'
23+
ALTER TABLE version_keyword DROP CONSTRAINT fk_a65a946f115d4552
24+
SQL);
25+
$this->addSql(<<<'SQL'
26+
DROP TABLE version_keyword
27+
SQL);
28+
$this->addSql(<<<'SQL'
29+
ALTER TABLE version DROP package_name
30+
SQL);
31+
$this->addSql(<<<'SQL'
32+
ALTER TABLE version DROP description
33+
SQL);
34+
$this->addSql(<<<'SQL'
35+
ALTER TABLE version DROP readme
36+
SQL);
37+
$this->addSql(<<<'SQL'
38+
ALTER TABLE version DROP homepage
39+
SQL);
40+
$this->addSql(<<<'SQL'
41+
ALTER TABLE version DROP license
42+
SQL);
43+
$this->addSql(<<<'SQL'
44+
ALTER TABLE version DROP type
45+
SQL);
46+
$this->addSql(<<<'SQL'
47+
ALTER TABLE version DROP target_dir
48+
SQL);
49+
$this->addSql(<<<'SQL'
50+
ALTER TABLE version DROP source
51+
SQL);
52+
$this->addSql(<<<'SQL'
53+
ALTER TABLE version DROP dist
54+
SQL);
55+
$this->addSql(<<<'SQL'
56+
ALTER TABLE version DROP autoload
57+
SQL);
58+
$this->addSql(<<<'SQL'
59+
ALTER TABLE version DROP binaries
60+
SQL);
61+
$this->addSql(<<<'SQL'
62+
ALTER TABLE version DROP include_paths
63+
SQL);
64+
$this->addSql(<<<'SQL'
65+
ALTER TABLE version DROP php_ext
66+
SQL);
67+
$this->addSql(<<<'SQL'
68+
ALTER TABLE version DROP authors
69+
SQL);
70+
$this->addSql(<<<'SQL'
71+
ALTER TABLE version DROP support
72+
SQL);
73+
$this->addSql(<<<'SQL'
74+
ALTER TABLE version DROP funding
75+
SQL);
76+
$this->addSql(<<<'SQL'
77+
ALTER TABLE version DROP extra
78+
SQL);
79+
$this->addSql(<<<'SQL'
80+
ALTER TABLE version DROP released_at
81+
SQL);
82+
}
83+
84+
public function down(Schema $schema): void
85+
{
86+
$this->addSql(<<<'SQL'
87+
CREATE TABLE version_keyword (
88+
version_id INT NOT NULL,
89+
keyword_id INT NOT NULL,
90+
PRIMARY KEY (version_id, keyword_id)
91+
)
92+
SQL);
93+
$this->addSql(<<<'SQL'
94+
CREATE INDEX idx_a65a946f115d4552 ON version_keyword (keyword_id)
95+
SQL);
96+
$this->addSql(<<<'SQL'
97+
CREATE INDEX idx_a65a946f4bbc2705 ON version_keyword (version_id)
98+
SQL);
99+
$this->addSql(<<<'SQL'
100+
ALTER TABLE
101+
version_keyword
102+
ADD
103+
CONSTRAINT fk_a65a946f4bbc2705 FOREIGN KEY (version_id) REFERENCES version (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE
104+
SQL);
105+
$this->addSql(<<<'SQL'
106+
ALTER TABLE
107+
version_keyword
108+
ADD
109+
CONSTRAINT fk_a65a946f115d4552 FOREIGN KEY (keyword_id) REFERENCES keyword (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE
110+
SQL);
111+
$this->addSql(<<<'SQL'
112+
ALTER TABLE version ADD package_name VARCHAR(255) NOT NULL
113+
SQL);
114+
$this->addSql(<<<'SQL'
115+
ALTER TABLE version ADD description TEXT DEFAULT NULL
116+
SQL);
117+
$this->addSql(<<<'SQL'
118+
ALTER TABLE version ADD readme TEXT DEFAULT NULL
119+
SQL);
120+
$this->addSql(<<<'SQL'
121+
ALTER TABLE version ADD homepage VARCHAR(255) DEFAULT NULL
122+
SQL);
123+
$this->addSql(<<<'SQL'
124+
ALTER TABLE version ADD license JSON NOT NULL
125+
SQL);
126+
$this->addSql(<<<'SQL'
127+
ALTER TABLE version ADD type VARCHAR(255) DEFAULT NULL
128+
SQL);
129+
$this->addSql(<<<'SQL'
130+
ALTER TABLE version ADD target_dir VARCHAR(255) DEFAULT NULL
131+
SQL);
132+
$this->addSql(<<<'SQL'
133+
ALTER TABLE version ADD source JSON DEFAULT NULL
134+
SQL);
135+
$this->addSql(<<<'SQL'
136+
ALTER TABLE version ADD dist JSON DEFAULT NULL
137+
SQL);
138+
$this->addSql(<<<'SQL'
139+
ALTER TABLE version ADD autoload JSON NOT NULL
140+
SQL);
141+
$this->addSql(<<<'SQL'
142+
ALTER TABLE version ADD binaries JSON DEFAULT NULL
143+
SQL);
144+
$this->addSql(<<<'SQL'
145+
ALTER TABLE version ADD include_paths JSON DEFAULT NULL
146+
SQL);
147+
$this->addSql(<<<'SQL'
148+
ALTER TABLE version ADD php_ext JSON DEFAULT NULL
149+
SQL);
150+
$this->addSql(<<<'SQL'
151+
ALTER TABLE version ADD authors JSON DEFAULT NULL
152+
SQL);
153+
$this->addSql(<<<'SQL'
154+
ALTER TABLE version ADD support JSON DEFAULT NULL
155+
SQL);
156+
$this->addSql(<<<'SQL'
157+
ALTER TABLE version ADD funding JSON DEFAULT NULL
158+
SQL);
159+
$this->addSql(<<<'SQL'
160+
ALTER TABLE version ADD extra JSON DEFAULT NULL
161+
SQL);
162+
$this->addSql(<<<'SQL'
163+
ALTER TABLE version ADD released_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL
164+
SQL);
165+
}
166+
}

src/Doctrine/Entity/Version.php

Lines changed: 1 addition & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
use CodedMonkey\Dirigent\Doctrine\Repository\VersionRepository;
66
use Doctrine\Common\Collections\ArrayCollection;
77
use Doctrine\Common\Collections\Collection;
8-
use Doctrine\DBAL\Types\Types;
98
use Doctrine\ORM\Mapping as ORM;
109

1110
#[ORM\Entity(repositoryClass: VersionRepository::class)]
@@ -18,102 +17,21 @@ class Version extends TrackedEntity
1817
#[ORM\GeneratedValue]
1918
private ?int $id = null;
2019

21-
#[ORM\Column]
22-
protected string $packageName;
23-
2420
#[ORM\Column]
2521
private string $name;
2622

2723
#[ORM\Column(length: 191)]
2824
private string $normalizedName;
2925

30-
#[ORM\Column(type: Types::TEXT, nullable: true)]
31-
protected ?string $description = null;
32-
33-
#[ORM\Column(type: Types::TEXT, nullable: true)]
34-
protected ?string $readme = null;
35-
36-
#[ORM\Column(nullable: true)]
37-
protected ?string $homepage = null;
38-
3926
#[ORM\Column]
4027
private bool $development;
4128

42-
#[ORM\Column]
43-
protected array $license = [];
44-
45-
#[ORM\Column(nullable: true)]
46-
protected ?string $type = null;
47-
48-
#[ORM\Column(nullable: true)]
49-
protected ?string $targetDir = null;
50-
51-
#[ORM\Column(nullable: true)]
52-
protected ?array $source = null;
53-
54-
#[ORM\Column(nullable: true)]
55-
protected ?array $dist = null;
56-
57-
#[ORM\OneToMany(mappedBy: 'version', targetEntity: VersionRequireLink::class, cascade: ['persist', 'detach', 'remove'])]
58-
protected Collection $require;
59-
60-
#[ORM\OneToMany(mappedBy: 'version', targetEntity: VersionDevRequireLink::class, cascade: ['persist', 'detach', 'remove'])]
61-
protected Collection $devRequire;
62-
63-
#[ORM\OneToMany(mappedBy: 'version', targetEntity: VersionConflictLink::class, cascade: ['persist', 'detach', 'remove'])]
64-
protected Collection $conflict;
65-
66-
#[ORM\OneToMany(mappedBy: 'version', targetEntity: VersionProvideLink::class, cascade: ['persist', 'detach', 'remove'])]
67-
protected Collection $provide;
68-
69-
#[ORM\OneToMany(mappedBy: 'version', targetEntity: VersionReplaceLink::class, cascade: ['persist', 'detach', 'remove'])]
70-
protected Collection $replace;
71-
72-
#[ORM\OneToMany(mappedBy: 'version', targetEntity: VersionSuggestLink::class, cascade: ['persist', 'detach', 'remove'])]
73-
protected Collection $suggest;
74-
75-
#[ORM\ManyToMany(targetEntity: Keyword::class, inversedBy: 'versions', cascade: ['persist', 'detach', 'remove'])]
76-
protected Collection $keywords;
77-
78-
#[ORM\Column]
79-
protected array $autoload = [];
80-
81-
/**
82-
* @var string[]|null
83-
*/
84-
#[ORM\Column(nullable: true)]
85-
protected ?array $binaries = null;
86-
87-
/**
88-
* @var string[]|null
89-
*/
90-
#[ORM\Column(nullable: true)]
91-
protected ?array $includePaths = null;
92-
93-
#[ORM\Column(nullable: true)]
94-
protected ?array $phpExt = null;
95-
96-
#[ORM\Column(nullable: true)]
97-
protected ?array $authors = null;
98-
99-
#[ORM\Column(nullable: true)]
100-
protected ?array $support = null;
101-
102-
#[ORM\Column(nullable: true)]
103-
protected ?array $funding = null;
104-
105-
#[ORM\Column(nullable: true)]
106-
protected ?array $extra = null;
107-
10829
#[ORM\Column]
10930
private bool $defaultBranch = false;
11031

11132
#[ORM\Column(nullable: true)]
11233
private ?\DateTimeImmutable $updatedAt = null;
11334

114-
#[ORM\Column(nullable: true)]
115-
protected ?\DateTimeImmutable $releasedAt = null;
116-
11735
#[ORM\ManyToOne(targetEntity: Package::class, inversedBy: 'versions')]
11836
#[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')]
11937
private Package $package;
@@ -130,15 +48,7 @@ class Version extends TrackedEntity
13048
public function __construct(Package $package)
13149
{
13250
$this->package = $package;
133-
$this->packageName = $package->getName();
134-
135-
$this->require = new ArrayCollection();
136-
$this->devRequire = new ArrayCollection();
137-
$this->conflict = new ArrayCollection();
138-
$this->provide = new ArrayCollection();
139-
$this->replace = new ArrayCollection();
140-
$this->suggest = new ArrayCollection();
141-
$this->keywords = new ArrayCollection();
51+
14252
$this->installations = new VersionInstallations($this);
14353
$this->metadata = new ArrayCollection();
14454
}

0 commit comments

Comments
 (0)