HummingBirdAnimeClient/migrations/20200423163646_anime_collec...

56 lines
1.4 KiB
PHP

<?php declare(strict_types=1);
use Phinx\Migration\AbstractMigration;
class AnimeCollectionRefactorCleanup extends AbstractMigration
{
protected array $newMediaTypes = [
'LaserDisc',
'VHS',
'Digital',
'Video CD',
'Betamax',
'UMD',
'Other',
];
public function up()
{
// Add some new media types
$moreMediaTypes = [];
foreach ($this->newMediaTypes as $id => $medium)
{
$moreMediaTypes[] = [
'id' => $id + 5,
'type' => $medium,
];
}
$this->table('media')->insert($moreMediaTypes)->save();
// Remove foreign key and media_id column from anime_set
$animeSet = $this->table('anime_set');
if ($animeSet->hasColumn('media_id'))
{
$animeSet->dropForeignKey('media_id')->save();
$animeSet->removeColumn('media_id')->save();
}
// Cleanup existing media types a bit
$this->execute("UPDATE media SET type='Bootleg' WHERE id=4");
$this->execute('DELETE FROM media WHERE id=1');
}
public function down()
{
// Restore the original values for existing media
$this->execute("INSERT INTO media (id, type) VALUES (1, 'DVD & Blu-ray')");
$this->execute("UPDATE media SET type='Bootleg DVD' WHERE id=4");
// Remove the new media types
$values = array_map(static fn ($medium) => "'{$medium}'", $this->newMediaTypes);
$valueList = implode(',', $values);
$this->execute("DELETE FROM media WHERE type IN ({$valueList})");
}
}