diff --git a/extensions/messages/migrations/2024_10_19_000000_create_dialog_message_mentions_user_table.php b/extensions/messages/migrations/2024_10_19_000000_create_dialog_message_mentions_user_table.php index e31bd05f39..00ec82d384 100644 --- a/extensions/messages/migrations/2024_10_19_000000_create_dialog_message_mentions_user_table.php +++ b/extensions/messages/migrations/2024_10_19_000000_create_dialog_message_mentions_user_table.php @@ -11,14 +11,14 @@ use Illuminate\Database\Schema\Blueprint; return Migration::createTable( - 'dialog_message_mentions_user', + 'message_mentions_user', function (Blueprint $table) { - $table->unsignedInteger('dialog_message_id'); - $table->unsignedInteger('mentions_user_id'); + $table->unsignedInteger('message_id'); + $table->unsignedInteger('user_id'); $table->dateTime('created_at')->nullable()->useCurrent(); - $table->primary(['dialog_message_id', 'mentions_user_id']); - $table->foreign('dialog_message_id')->references('id')->on('dialog_messages')->cascadeOnDelete(); - $table->foreign('mentions_user_id')->references('id')->on('users')->cascadeOnDelete(); + $table->primary(['message_id', 'user_id']); + $table->foreign('message_id')->references('id')->on('dialog_messages')->cascadeOnDelete(); + $table->foreign('user_id')->references('id')->on('users')->cascadeOnDelete(); } ); diff --git a/extensions/messages/migrations/2024_10_19_000001_create_dialog_message_mentions_post_table.php b/extensions/messages/migrations/2024_10_19_000001_create_dialog_message_mentions_post_table.php index ae441750c0..a43b666671 100644 --- a/extensions/messages/migrations/2024_10_19_000001_create_dialog_message_mentions_post_table.php +++ b/extensions/messages/migrations/2024_10_19_000001_create_dialog_message_mentions_post_table.php @@ -11,14 +11,14 @@ use Illuminate\Database\Schema\Blueprint; return Migration::createTable( - 'dialog_message_mentions_post', + 'message_mentions_post', function (Blueprint $table) { - $table->unsignedInteger('dialog_message_id'); - $table->unsignedInteger('mentions_post_id'); + $table->unsignedInteger('message_id'); + $table->unsignedInteger('post_id'); $table->dateTime('created_at')->nullable()->useCurrent(); - $table->primary(['dialog_message_id', 'mentions_post_id']); - $table->foreign('dialog_message_id')->references('id')->on('dialog_messages')->cascadeOnDelete(); - $table->foreign('mentions_post_id')->references('id')->on('posts')->cascadeOnDelete(); + $table->primary(['message_id', 'post_id']); + $table->foreign('message_id')->references('id')->on('dialog_messages')->cascadeOnDelete(); + $table->foreign('post_id')->references('id')->on('posts')->cascadeOnDelete(); } ); diff --git a/extensions/messages/migrations/2024_10_19_000002_create_dialog_message_mentions_group_table.php b/extensions/messages/migrations/2024_10_19_000002_create_dialog_message_mentions_group_table.php index bb52d1a18f..a402fbe76f 100644 --- a/extensions/messages/migrations/2024_10_19_000002_create_dialog_message_mentions_group_table.php +++ b/extensions/messages/migrations/2024_10_19_000002_create_dialog_message_mentions_group_table.php @@ -11,14 +11,14 @@ use Illuminate\Database\Schema\Blueprint; return Migration::createTable( - 'dialog_message_mentions_group', + 'message_mentions_group', function (Blueprint $table) { - $table->unsignedInteger('dialog_message_id'); - $table->unsignedInteger('mentions_group_id'); + $table->unsignedInteger('message_id'); + $table->unsignedInteger('group_id'); $table->dateTime('created_at')->nullable()->useCurrent(); - $table->primary(['dialog_message_id', 'mentions_group_id']); - $table->foreign('dialog_message_id')->references('id')->on('dialog_messages')->cascadeOnDelete(); - $table->foreign('mentions_group_id')->references('id')->on('groups')->cascadeOnDelete(); + $table->primary(['message_id', 'group_id']); + $table->foreign('message_id')->references('id')->on('dialog_messages')->cascadeOnDelete(); + $table->foreign('group_id')->references('id')->on('groups')->cascadeOnDelete(); } ); diff --git a/extensions/messages/migrations/2024_10_19_000002_create_dialog_message_mentions_tag_table.php b/extensions/messages/migrations/2024_10_19_000002_create_dialog_message_mentions_tag_table.php index 17c3d9b69f..be786cbbac 100644 --- a/extensions/messages/migrations/2024_10_19_000002_create_dialog_message_mentions_tag_table.php +++ b/extensions/messages/migrations/2024_10_19_000002_create_dialog_message_mentions_tag_table.php @@ -12,17 +12,17 @@ use Illuminate\Database\Schema\Builder; return Migration::createTable( - 'dialog_message_mentions_tag', + 'message_mentions_tag', function (Blueprint $table, Builder $schema) { - $table->unsignedInteger('dialog_message_id'); - $table->unsignedInteger('mentions_tag_id'); + $table->unsignedInteger('message_id'); + $table->unsignedInteger('tag_id'); $table->dateTime('created_at')->nullable()->useCurrent(); - $table->primary(['dialog_message_id', 'mentions_tag_id']); - $table->foreign('dialog_message_id')->references('id')->on('dialog_messages')->cascadeOnDelete(); + $table->primary(['message_id', 'tag_id']); + $table->foreign('message_id')->references('id')->on('dialog_messages')->cascadeOnDelete(); if ($schema->hasTable('tags')) { - $table->foreign('mentions_tag_id')->references('id')->on('tags')->cascadeOnDelete(); + $table->foreign('tag_id')->references('id')->on('tags')->cascadeOnDelete(); } } ); diff --git a/extensions/messages/migrations/2026_08_22_000000_rename_message_mentions_tables.php b/extensions/messages/migrations/2026_08_22_000000_rename_message_mentions_tables.php new file mode 100644 index 0000000000..39f616588f --- /dev/null +++ b/extensions/messages/migrations/2026_08_22_000000_rename_message_mentions_tables.php @@ -0,0 +1,41 @@ + ['message_mentions_user', ['dialog_message_id' => 'message_id', 'mentions_user_id' => 'user_id']], + 'dialog_message_mentions_post' => ['message_mentions_post', ['dialog_message_id' => 'message_id', 'mentions_post_id' => 'post_id']], + 'dialog_message_mentions_group' => ['message_mentions_group', ['dialog_message_id' => 'message_id', 'mentions_group_id' => 'group_id']], + 'dialog_message_mentions_tag' => ['message_mentions_tag', ['dialog_message_id' => 'message_id', 'mentions_tag_id' => 'tag_id']], +]; + +return [ + 'up' => function (Builder $schema) use ($tables) { + foreach ($tables as $from => [$to, $columns]) { + if (! $schema->hasTable($from) || $schema->hasTable($to)) { + continue; + } + + $schema->rename($from, $to); + + $schema->table($to, function (Blueprint $table) use ($columns) { + foreach ($columns as $old => $new) { + $table->renameColumn($old, $new); + } + }); + } + }, + // Deliberately one-way. The migrations that created these tables drop them by their + // current name, and they roll back after this one, so restoring the old names here + // would leave that drop with nothing to remove. + 'down' => function (Builder $schema) { + }, +]; diff --git a/extensions/messages/src/DialogMessage.php b/extensions/messages/src/DialogMessage.php index 8a9e82ce23..9c186eb21c 100644 --- a/extensions/messages/src/DialogMessage.php +++ b/extensions/messages/src/DialogMessage.php @@ -121,21 +121,21 @@ public function user(): BelongsTo public function mentionsUsers(): BelongsToMany { - return $this->belongsToMany(User::class, 'dialog_message_mentions_user', 'dialog_message_id', 'mentions_user_id'); + return $this->belongsToMany(User::class, 'message_mentions_user', 'message_id', 'user_id'); } public function mentionsPosts(): BelongsToMany { - return $this->belongsToMany(Post::class, 'dialog_message_mentions_post', 'dialog_message_id', 'mentions_post_id'); + return $this->belongsToMany(Post::class, 'message_mentions_post', 'message_id', 'post_id'); } public function mentionsGroups(): BelongsToMany { - return $this->belongsToMany(Group::class, 'dialog_message_mentions_group', 'dialog_message_id', 'mentions_group_id'); + return $this->belongsToMany(Group::class, 'message_mentions_group', 'message_id', 'group_id'); } public function mentionsTags(): BelongsToMany { - return $this->belongsToMany(Tag::class, 'dialog_message_mentions_tag', 'dialog_message_id', 'mentions_tag_id'); + return $this->belongsToMany(Tag::class, 'message_mentions_tag', 'message_id', 'tag_id'); } }