3 use BookStack\Permissions\JointPermissionBuilder;
4 use Illuminate\Database\Migrations\Migration;
5 use Illuminate\Database\Schema\Blueprint;
6 use Illuminate\Support\Facades\DB;
7 use Illuminate\Support\Facades\Schema;
9 return new class extends Migration
18 // Truncate before schema changes to avoid performance issues
19 // since we'll need to rebuild anyway.
20 DB::table('joint_permissions')->truncate();
22 if (Schema::hasColumn('joint_permissions', 'owned_by')) {
23 Schema::table('joint_permissions', function (Blueprint $table) {
24 $table->dropColumn(['has_permission', 'has_permission_own', 'owned_by']);
26 $table->unsignedTinyInteger('status')->index();
27 $table->unsignedInteger('owner_id')->nullable()->index();
31 // Rebuild permissions
32 app(JointPermissionBuilder::class)->rebuildForAll();
36 * Reverse the migrations.
40 public function down()
42 DB::table('joint_permissions')->truncate();
44 Schema::table('joint_permissions', function (Blueprint $table) {
45 $table->dropColumn(['status', 'owner_id']);
47 $table->boolean('has_permission')->index();
48 $table->boolean('has_permission_own')->index();
49 $table->unsignedInteger('owned_by')->index();