mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-08-27 20:51:57 +00:00
![Dan Brown](/assets/img/avatar_default.png)
- Means we can use these simpler types in API response, As desired in #3377. Closes #3395
65 lines
1.7 KiB
PHP
65 lines
1.7 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]);
|
|
}
|
|
}
|
|
}
|
|
}
|