Version 5.1 - All the GraphQL #32
@ -23,7 +23,9 @@ class ReorganizeAnimeCollectionMedia extends AbstractMigration
|
||||
|
||||
// Get the old link entries
|
||||
$insertRows = [];
|
||||
$rows = $this->fetchAll('SELECT hummingbird_id, media_id from anime_set');
|
||||
$rows = ($this->table('anime_set')->hasColumn('media_id'))
|
||||
? $this->fetchAll('SELECT hummingbird_id, media_id from anime_set')
|
||||
: [];
|
||||
|
||||
// Filter the numeric keys out of the row results
|
||||
foreach ($rows as $row)
|
||||
@ -39,7 +41,6 @@ class ReorganizeAnimeCollectionMedia extends AbstractMigration
|
||||
$insertRows[] = $row;
|
||||
}
|
||||
|
||||
|
||||
// And put them in the new table
|
||||
$linkTable = $this->table('anime_set_media_link');
|
||||
$linkTable->insert($insertRows)->save();
|
||||
|
@ -0,0 +1,54 @@
|
||||
<?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})");
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user