2022-03-03 18:19:02 -05:00
|
|
|
<?php declare(strict_types=1);
|
2020-04-22 17:52:07 -04:00
|
|
|
|
|
|
|
use Phinx\Migration\AbstractMigration;
|
|
|
|
|
|
|
|
class ReorganizeAnimeCollectionMedia extends AbstractMigration
|
|
|
|
{
|
|
|
|
public function up()
|
|
|
|
{
|
|
|
|
// Create the new link table
|
|
|
|
if ( ! $this->hasTable('anime_set_media_link'))
|
|
|
|
{
|
|
|
|
$newLinkTable = $this->table('anime_set_media_link', [
|
|
|
|
'id' => FALSE,
|
2022-03-03 18:19:02 -05:00
|
|
|
'primary_key' => ['hummingbird_id', 'media_id'],
|
2020-04-22 17:52:07 -04:00
|
|
|
]);
|
|
|
|
|
|
|
|
$newLinkTable->addColumn('hummingbird_id', 'biginteger')
|
|
|
|
->addColumn('media_id', 'biginteger')
|
|
|
|
->addForeignKey('media_id', 'media', 'id')
|
|
|
|
->addForeignKey('hummingbird_id', 'anime_set', 'hummingbird_id')
|
|
|
|
->create();
|
|
|
|
}
|
|
|
|
|
|
|
|
// Get the old link entries
|
|
|
|
$insertRows = [];
|
2020-04-23 18:54:54 -04:00
|
|
|
$rows = ($this->table('anime_set')->hasColumn('media_id'))
|
|
|
|
? $this->fetchAll('SELECT hummingbird_id, media_id from anime_set')
|
|
|
|
: [];
|
2020-04-22 17:52:07 -04:00
|
|
|
|
|
|
|
// Filter the numeric keys out of the row results
|
|
|
|
foreach ($rows as $row)
|
|
|
|
{
|
|
|
|
$keys = array_keys($row);
|
2022-03-03 18:19:02 -05:00
|
|
|
|
2020-04-22 17:52:07 -04:00
|
|
|
foreach ($keys as $k)
|
|
|
|
{
|
|
|
|
if (is_numeric($k))
|
|
|
|
{
|
|
|
|
unset($row[$k]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$insertRows[] = $row;
|
|
|
|
}
|
|
|
|
|
|
|
|
// And put them in the new table
|
|
|
|
$linkTable = $this->table('anime_set_media_link');
|
|
|
|
$linkTable->insert($insertRows)->save();
|
|
|
|
|
|
|
|
// Get the rows where you have the combined media type (DVD & Bluray)
|
|
|
|
// and replace those rows with the individual entries
|
|
|
|
$linkRows = $this->fetchAll('SELECT hummingbird_id FROM anime_set_media_link WHERE media_id=1');
|
|
|
|
$insertRows = [];
|
2022-03-03 18:19:02 -05:00
|
|
|
|
2020-04-22 17:52:07 -04:00
|
|
|
foreach ($linkRows as $row)
|
|
|
|
{
|
|
|
|
$insertRows[] = [
|
|
|
|
'hummingbird_id' => $row['hummingbird_id'],
|
|
|
|
'media_id' => 2,
|
|
|
|
];
|
|
|
|
$insertRows[] = [
|
|
|
|
'hummingbird_id' => $row['hummingbird_id'],
|
|
|
|
'media_id' => 3,
|
|
|
|
];
|
|
|
|
}
|
|
|
|
$linkTable->insert($insertRows)->save();
|
|
|
|
|
|
|
|
// Finally, delete the old combined media type rows
|
|
|
|
$this->execute('DELETE FROM anime_set_media_link WHERE media_id=1');
|
|
|
|
}
|
|
|
|
|
|
|
|
public function down()
|
|
|
|
{
|
|
|
|
if ($this->hasTable('anime_set_media_link'))
|
|
|
|
{
|
|
|
|
$this->table('anime_set_media_link')->drop()->save();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|