migrationPlanCalculator = $migrationPlanCalculator; $this->metadataStorage = $metadataStorage; } public function getExecutedUnavailableMigrations(): ExecutedMigrationsList { $executedMigrations = $this->metadataStorage->getExecutedMigrations(); $availableMigration = $this->migrationPlanCalculator->getMigrations(); return new ExecutedMigrationsList(array_filter($executedMigrations->getItems(), static function (ExecutedMigration $migrationInfo) use ($availableMigration): bool { return ! $availableMigration->hasMigration($migrationInfo->getVersion()); })); } public function getNewMigrations(): AvailableMigrationsList { $executedMigrations = $this->metadataStorage->getExecutedMigrations(); $availableMigration = $this->migrationPlanCalculator->getMigrations(); return new AvailableMigrationsList(array_filter($availableMigration->getItems(), static function (AvailableMigration $migrationInfo) use ($executedMigrations): bool { return ! $executedMigrations->hasMigration($migrationInfo->getVersion()); })); } }