55 lines
1.3 KiB
PHP
55 lines
1.3 KiB
PHP
|
<?php
|
||
|
|
||
|
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();
|
||
|
|
||
|
// Cleanup existing media types a bit
|
||
|
$this->execute("UPDATE media SET type='Bootleg' WHERE id=4");
|
||
|
$this->execute('DELETE FROM media WHERE id=1');
|
||
|
|
||
|
// 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();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
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(fn ($medium) => "'{$medium}'", $this->newMediaTypes);
|
||
|
$valueList = implode(',', $values);
|
||
|
$this->execute("DELETE FROM media WHERE type IN ({$valueList})");
|
||
|
}
|
||
|
}
|