PluginProbe
404 Solution / trunk
404 Solution vtrunk
4.3.5 4.3.4 4.3.3 4.3.2 4.3.1 4.3.0 4.2.0 4.1.19 4.1.18 4.1.17 4.1.16 4.1.15 4.1.13 4.1.12 4.1.11 4.1.10 4.1.9 4.1.8 4.1.7 4.1.6 4.1.5 4.1.4 4.1.3 trunk 2.30.0 All 109 releases
404-solution / includes / database / upgrades / DatabaseUpgradeComponentRegistry.php

DatabaseUpgradeComponentRegistry.php in 404 Solution trunk, at includes/database/upgrades/DatabaseUpgradeComponentRegistry.php

173 lines 7.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 if (!defined('ABSPATH')) {
4 exit;
5 }
6
7 /**
8 * Owns the set of database-upgrade components.
9 *
10 * Instantiates each upgrade component with the owning coordinator and the
11 * shared dependency map, exposes every component through a typed accessor, and
12 * re-pushes a refreshed dependency map to all of them when the coordinator's
13 * collaborators change (e.g. after a test swaps in a mock DataAccess).
14 *
15 * This isolates the 18-component instantiation/refresh lifecycle from
16 * {@see ABJ_404_Solution_DatabaseUpgradesEtc}, whose remaining job is to be the
17 * public upgrade facade. The registry IS the coordinator passed to each
18 * component, so components reach their siblings through it. Constructed by the
19 * facade only.
20 */
21 class ABJ_404_Solution_DatabaseUpgradeComponentRegistry implements ABJ_404_Solution_DatabaseUpgradeCoordinator {
22
23 /** @var ABJ_404_Solution_DatabaseUpgradeNGram */
24 private $nGramUpgrade;
25
26 /** @var ABJ_404_Solution_DatabaseUpgradeEngineNormalization */
27 private $engineNormalizationUpgrade;
28
29 /** @var ABJ_404_Solution_DatabaseUpgradeCollationDrift */
30 private $collationDriftUpgrade;
31
32 /** @var ABJ_404_Solution_DatabaseUpgradeSelfHeal */
33 private $selfHealUpgrade;
34
35 /** @var ABJ_404_Solution_DatabaseUpgradeCanonicalUrlBackfill */
36 private $canonicalUrlBackfillUpgrade;
37
38 /** @var ABJ_404_Solution_DatabaseUpgradeRedirectsDenormBackfill */
39 private $redirectsDenormBackfillUpgrade;
40
41 /** @var ABJ_404_Solution_DatabaseUpgradeAddedColumnBackfill */
42 private $addedColumnBackfillUpgrade;
43
44 /** @var ABJ_404_Solution_DatabaseUpgradeRedirectsSortKeyBackfill */
45 private $redirectsSortKeyBackfillUpgrade;
46
47 /** @var ABJ_404_Solution_DatabaseUpgradeRedirectsDenormReconcile */
48 private $redirectsDenormReconcileUpgrade;
49
50 /** @var ABJ_404_Solution_DatabaseUpgradeDailyMaintenance */
51 private $dailyMaintenanceUpgrade;
52
53 /** @var ABJ_404_Solution_DatabaseUpgradePluginUpdate */
54 private $pluginUpdateUpgrade;
55
56 /** @var ABJ_404_Solution_DatabaseUpgradeTableRepair */
57 private $tableRepairUpgrade;
58
59 /** @var ABJ_404_Solution_DatabaseUpgradeDropStagedViewTables */
60 private $dropStagedViewTablesUpgrade;
61
62 /** @var ABJ_404_Solution_DatabaseUpgradeIndexes */
63 private $indexesUpgrade;
64
65 /** @var ABJ_404_Solution_DatabaseUpgradeOrphanAdoption */
66 private $orphanAdoptionUpgrade;
67
68 /** @var ABJ_404_Solution_DatabaseUpgradeMultiSite */
69 private $multiSiteUpgrade;
70
71 /** @var ABJ_404_Solution_DatabaseUpgradeSchemaDiff */
72 private $schemaDiffUpgrade;
73
74 /** @var ABJ_404_Solution_DatabaseUpgradeBootstrap */
75 private $bootstrapUpgrade;
76
77 /**
78 * @param array<string, mixed> $deps Shared component dependency map.
79 */
80 public function __construct(array $deps) {
81 $this->nGramUpgrade = new ABJ_404_Solution_DatabaseUpgradeNGram($this, $deps);
82 $this->engineNormalizationUpgrade = new ABJ_404_Solution_DatabaseUpgradeEngineNormalization($this, $deps);
83 $this->collationDriftUpgrade = new ABJ_404_Solution_DatabaseUpgradeCollationDrift($this, $deps);
84 $this->selfHealUpgrade = new ABJ_404_Solution_DatabaseUpgradeSelfHeal($this, $deps);
85 $this->canonicalUrlBackfillUpgrade = new ABJ_404_Solution_DatabaseUpgradeCanonicalUrlBackfill($this, $deps);
86 $this->redirectsDenormBackfillUpgrade = new ABJ_404_Solution_DatabaseUpgradeRedirectsDenormBackfill($this, $deps);
87 $this->addedColumnBackfillUpgrade = new ABJ_404_Solution_DatabaseUpgradeAddedColumnBackfill($this, $deps);
88 $this->redirectsSortKeyBackfillUpgrade = new ABJ_404_Solution_DatabaseUpgradeRedirectsSortKeyBackfill($this, $deps);
89 $this->redirectsDenormReconcileUpgrade = new ABJ_404_Solution_DatabaseUpgradeRedirectsDenormReconcile($this, $deps);
90 $this->dailyMaintenanceUpgrade = new ABJ_404_Solution_DatabaseUpgradeDailyMaintenance($this, $deps);
91 $this->pluginUpdateUpgrade = new ABJ_404_Solution_DatabaseUpgradePluginUpdate($this, $deps);
92 $this->tableRepairUpgrade = new ABJ_404_Solution_DatabaseUpgradeTableRepair($this, $deps);
93 $this->dropStagedViewTablesUpgrade = new ABJ_404_Solution_DatabaseUpgradeDropStagedViewTables($this, $deps);
94 $this->indexesUpgrade = new ABJ_404_Solution_DatabaseUpgradeIndexes($this, $deps);
95 $this->orphanAdoptionUpgrade = new ABJ_404_Solution_DatabaseUpgradeOrphanAdoption($this, $deps);
96 $this->multiSiteUpgrade = new ABJ_404_Solution_DatabaseUpgradeMultiSite($this, $deps);
97 $this->schemaDiffUpgrade = new ABJ_404_Solution_DatabaseUpgradeSchemaDiff($this, $deps);
98 $this->bootstrapUpgrade = new ABJ_404_Solution_DatabaseUpgradeBootstrap($this, $deps);
99 }
100
101 /**
102 * Re-push a refreshed dependency map to every component.
103 *
104 * @param array<string, mixed> $deps
105 * @return void
106 */
107 public function refreshDependencies(array $deps): void {
108 foreach ($this->all() as $component) {
109 $component->replaceDatabaseUpgradeDependencies($deps);
110 }
111 }
112
113 /** @return ABJ_404_Solution_DatabaseUpgradeComponent[] */
114 private function all(): array {
115 return [
116 $this->nGramUpgrade,
117 $this->engineNormalizationUpgrade,
118 $this->collationDriftUpgrade,
119 $this->selfHealUpgrade,
120 $this->canonicalUrlBackfillUpgrade,
121 $this->redirectsDenormBackfillUpgrade,
122 $this->addedColumnBackfillUpgrade,
123 $this->redirectsSortKeyBackfillUpgrade,
124 $this->redirectsDenormReconcileUpgrade,
125 $this->dailyMaintenanceUpgrade,
126 $this->pluginUpdateUpgrade,
127 $this->tableRepairUpgrade,
128 $this->dropStagedViewTablesUpgrade,
129 $this->indexesUpgrade,
130 $this->orphanAdoptionUpgrade,
131 $this->multiSiteUpgrade,
132 $this->schemaDiffUpgrade,
133 $this->bootstrapUpgrade,
134 ];
135 }
136
137 public function nGramUpgrade(): ABJ_404_Solution_DatabaseUpgradeNGram { return $this->nGramUpgrade; }
138
139 public function engineNormalizationUpgrade(): ABJ_404_Solution_DatabaseUpgradeEngineNormalization { return $this->engineNormalizationUpgrade; }
140
141 public function collationDriftUpgrade(): ABJ_404_Solution_DatabaseUpgradeCollationDrift { return $this->collationDriftUpgrade; }
142
143 public function selfHealUpgrade(): ABJ_404_Solution_DatabaseUpgradeSelfHeal { return $this->selfHealUpgrade; }
144
145 public function canonicalUrlBackfillUpgrade(): ABJ_404_Solution_DatabaseUpgradeCanonicalUrlBackfill { return $this->canonicalUrlBackfillUpgrade; }
146
147 public function redirectsDenormBackfillUpgrade(): ABJ_404_Solution_DatabaseUpgradeRedirectsDenormBackfill { return $this->redirectsDenormBackfillUpgrade; }
148
149 public function addedColumnBackfillUpgrade(): ABJ_404_Solution_DatabaseUpgradeAddedColumnBackfill { return $this->addedColumnBackfillUpgrade; }
150
151 public function redirectsSortKeyBackfillUpgrade(): ABJ_404_Solution_DatabaseUpgradeRedirectsSortKeyBackfill { return $this->redirectsSortKeyBackfillUpgrade; }
152
153 public function redirectsDenormReconcileUpgrade(): ABJ_404_Solution_DatabaseUpgradeRedirectsDenormReconcile { return $this->redirectsDenormReconcileUpgrade; }
154
155 public function dailyMaintenanceUpgrade(): ABJ_404_Solution_DatabaseUpgradeDailyMaintenance { return $this->dailyMaintenanceUpgrade; }
156
157 public function pluginUpdateUpgrade(): ABJ_404_Solution_DatabaseUpgradePluginUpdate { return $this->pluginUpdateUpgrade; }
158
159 public function tableRepairUpgrade(): ABJ_404_Solution_DatabaseUpgradeTableRepair { return $this->tableRepairUpgrade; }
160
161 public function dropStagedViewTablesUpgrade(): ABJ_404_Solution_DatabaseUpgradeDropStagedViewTables { return $this->dropStagedViewTablesUpgrade; }
162
163 public function indexesUpgrade(): ABJ_404_Solution_DatabaseUpgradeIndexes { return $this->indexesUpgrade; }
164
165 public function orphanAdoptionUpgrade(): ABJ_404_Solution_DatabaseUpgradeOrphanAdoption { return $this->orphanAdoptionUpgrade; }
166
167 public function multiSiteUpgrade(): ABJ_404_Solution_DatabaseUpgradeMultiSite { return $this->multiSiteUpgrade; }
168
169 public function schemaDiffUpgrade(): ABJ_404_Solution_DatabaseUpgradeSchemaDiff { return $this->schemaDiffUpgrade; }
170
171 public function bootstrapUpgrade(): ABJ_404_Solution_DatabaseUpgradeBootstrap { return $this->bootstrapUpgrade; }
172 }
173