Skip to content

Commit a959e16

Browse files
committed
do not require twig extension
1 parent fbef8e3 commit a959e16

File tree

4 files changed

+55
-78
lines changed

4 files changed

+55
-78
lines changed

Collector/MigrationsCollector.php

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
namespace Doctrine\Bundle\MigrationsBundle\Collector;
66

77
use Doctrine\Migrations\DependencyFactory;
8+
use Doctrine\Migrations\Metadata\AvailableMigration;
89
use Doctrine\Migrations\Metadata\AvailableMigrationsList;
10+
use Doctrine\Migrations\Metadata\ExecutedMigration;
911
use Doctrine\Migrations\Metadata\ExecutedMigrationsList;
1012
use Doctrine\Migrations\Metadata\Storage\TableMetadataStorageConfiguration;
1113
use Symfony\Component\HttpFoundation\Request;
@@ -28,10 +30,14 @@ public function collect(Request $request, Response $response, \Throwable $except
2830
$planCalculator = $this->dependencyFactory->getMigrationPlanCalculator();
2931
$statusCalculator = $this->dependencyFactory->getMigrationStatusCalculator();
3032

31-
$this->data['available_migrations'] = $this->flattenMigrations($planCalculator->getMigrations());
32-
$this->data['executed_migrations'] = $this->flattenMigrations($metadataStorage->getExecutedMigrations());
33-
$this->data['new_migrations'] = $this->flattenMigrations($statusCalculator->getNewMigrations());
34-
$this->data['unavailable_migrations'] = $this->flattenMigrations($statusCalculator->getExecutedUnavailableMigrations());
33+
$executedMigrations = $metadataStorage->getExecutedMigrations();
34+
$availableMigrations = $planCalculator->getMigrations();
35+
36+
$this->data['available_migrations'] = $this->flattenAvailableMigrations($availableMigrations, $executedMigrations);
37+
$this->data['executed_migrations'] = $this->flattenExecutedMigrations($executedMigrations, $availableMigrations);
38+
39+
$this->data['new_migrations'] = $this->flattenAvailableMigrations($statusCalculator->getNewMigrations());
40+
$this->data['unavailable_migrations'] = $this->flattenExecutedMigrations($statusCalculator->getExecutedUnavailableMigrations());
3541

3642
$this->data['storage'] = get_class($metadataStorage);
3743
$configuration = $this->dependencyFactory->getConfiguration();
@@ -63,13 +69,42 @@ public function reset()
6369
$this->data = [];
6470
}
6571

66-
/**
67-
* @param AvailableMigrationsList|ExecutedMigrationsList $migrationsList
68-
*/
69-
private function flattenMigrations($migrationsList): array
72+
private function flattenAvailableMigrations(AvailableMigrationsList $migrationsList, ?ExecutedMigrationsList $executedMigrations = null): array
7073
{
71-
return array_map(static function ($migration) {
72-
return (string)$migration->getVersion();
74+
return array_map(static function (AvailableMigration $migration) use ($executedMigrations) {
75+
$executedMigration = $executedMigrations && $executedMigrations->hasMigration($migration->getVersion())
76+
? $executedMigrations->getMigration($migration->getVersion())
77+
: null;
78+
79+
return [
80+
'version' => (string)$migration->getVersion(),
81+
'is_new' => !$executedMigration,
82+
'is_unavailable' => false,
83+
'description' => $migration->getMigration()->getDescription(),
84+
'executed_at' => $executedMigration ? $executedMigration->getExecutedAt() : null,
85+
'execution_time' => $executedMigration ? $executedMigration->getExecutionTime() : null,
86+
'file' => (new \ReflectionClass($migration->getMigration()))->getFileName(),
87+
];
88+
}, $migrationsList->getItems());
89+
}
90+
91+
private function flattenExecutedMigrations(ExecutedMigrationsList $migrationsList, ?AvailableMigrationsList $availableMigrations = null): array
92+
{
93+
return array_map(static function (ExecutedMigration $migration) use ($availableMigrations) {
94+
95+
$availableMigration = $availableMigrations && $availableMigrations->hasMigration($migration->getVersion())
96+
? $availableMigrations->getMigration($migration->getVersion())->getMigration()
97+
: null;
98+
99+
return [
100+
'version' => (string)$migration->getVersion(),
101+
'is_new' => false,
102+
'is_unavailable' => !$availableMigration,
103+
'description' => $availableMigration ? $availableMigration->getDescription() : null,
104+
'executed_at' => $migration->getExecutedAt(),
105+
'execution_time' => $migration->getExecutionTime(),
106+
'file' => $availableMigration ? (new \ReflectionClass($availableMigration))->getFileName() : null,
107+
];
73108
}, $migrationsList->getItems());
74109
}
75110
}

Resources/config/services.xml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,10 +146,6 @@
146146
<tag name="data_collector" template="@DoctrineMigrations/Collector/migrations.html.twig" id="doctrine_migrations" priority="249" />
147147
</service>
148148

149-
<service id="doctrine_migrations.migrations_extension" class="Doctrine\Bundle\MigrationsBundle\Twig\MigrationsExtension">
150-
<argument type="service" id="doctrine.migrations.dependency_factory"/>
151-
<tag name="twig.extension" />
152-
</service>
153149
</services>
154150

155151
</container>

Resources/views/Collector/migrations.html.twig

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -145,31 +145,31 @@
145145
<th class="colored font-normal">Execution time</th>
146146
</tr>
147147
</thead>
148-
{% for name in collector.data.new_migrations %}
149-
{{ helper.render_migration(name, collector.data) }}
148+
{% for migration in collector.data.new_migrations %}
149+
{{ helper.render_migration(migration) }}
150150
{% endfor %}
151151

152-
{% for name in collector.data.executed_migrations|reverse %}
153-
{{ helper.render_migration(name, collector.data) }}
152+
{% for migration in collector.data.executed_migrations|reverse %}
153+
{{ helper.render_migration(migration) }}
154154
{% endfor %}
155155
</table>
156156
{% endblock %}
157157

158-
{% macro render_migration(name, data) %}
159-
{% set migration = migration_info(name) %}
158+
{% macro render_migration(migration) %}
159+
160160
<tr>
161161
<td class="font-normal">
162162
{% if migration.file %}
163-
<a href="{{ migration.file|file_link(1) }}" title="{{ migration.file }}">{{ name }}</a>
163+
<a href="{{ migration.file|file_link(1) }}" title="{{ migration.file }}">{{ migration.version }}</a>
164164
{% else %}
165-
{{ name }}
165+
{{ migration.version }}
166166
{% endif %}
167167
</td>
168168
<td class="font-normal">{{ migration.description }}</td>
169169
<td class="font-normal">
170-
{% if name in data.new_migrations %}
170+
{% if migration.is_new %}
171171
<span class="label status-error">NOT EXECUTED</span>
172-
{% elseif name in data.unavailable_migrations %}
172+
{% elseif migration.is_unavailable %}
173173
<span class="label status-warning">UNAVAILABLE</span>
174174
{% else %}
175175
<span class="label status-success">EXECUTED</span>

Twig/MigrationsExtension.php

Lines changed: 0 additions & 54 deletions
This file was deleted.

0 commit comments

Comments
 (0)