mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-09-18 15:26:06 +00:00
65 lines
1.8 KiB
PHP
65 lines
1.8 KiB
PHP
<?php
|
|
|
|
use Illuminate\Database\Migrations\Migration;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class UpdatePolymorphicTypes extends Migration
|
|
{
|
|
/**
|
|
* Mapping of old polymorphic types to new simpler values.
|
|
*/
|
|
protected $changeMap = [
|
|
'BookStack\\Bookshelf' => 'bookshelf',
|
|
'BookStack\\Book' => 'book',
|
|
'BookStack\\Chapter' => 'chapter',
|
|
'BookStack\\Page' => 'page',
|
|
];
|
|
|
|
/**
|
|
* Mapping of tables and columns that contain polymorphic types.
|
|
*/
|
|
protected $columnsByTable = [
|
|
'activities' => 'entity_type',
|
|
'comments' => 'entity_type',
|
|
'deletions' => 'deletable_type',
|
|
'entity_permissions' => 'restrictable_type',
|
|
'favourites' => 'favouritable_type',
|
|
'joint_permissions' => 'entity_type',
|
|
'search_terms' => 'entity_type',
|
|
'tags' => 'entity_type',
|
|
'views' => 'viewable_type',
|
|
];
|
|
|
|
/**
|
|
* Run the migrations.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function up()
|
|
{
|
|
foreach ($this->columnsByTable as $table => $column) {
|
|
foreach ($this->changeMap as $oldVal => $newVal) {
|
|
DB::table($table)
|
|
->where([$column => $oldVal])
|
|
->update([$column => $newVal]);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Reverse the migrations.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function down()
|
|
{
|
|
foreach ($this->columnsByTable as $table => $column) {
|
|
foreach ($this->changeMap as $oldVal => $newVal) {
|
|
DB::table($table)
|
|
->where([$column => $newVal])
|
|
->update([$column => $oldVal]);
|
|
}
|
|
}
|
|
}
|
|
}
|