View file database/upgrades/20201207005554_change_composite_index_in_tables.php

File size: 2.52Kb
<?php

declare(strict_types=1);

use App\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;

final class ChangeCompositeIndexInTables extends Migration
{
    /**
     * Migrate Up.
     */
    public function up(): void
    {
        $this->schema->table('files', function (Blueprint $table) {
            $table->dropIndex('relate_type');
            $table->index(['relate_type', 'relate_id']);
        });

        $this->schema->table('comments', function (Blueprint $table) {
            $table->dropIndex('relate_type');
            $table->index(['relate_type', 'relate_id']);
        });

        $this->schema->table('pollings', function (Blueprint $table) {
            $table->dropIndex('relate_type');
            $table->index(['relate_type', 'relate_id', 'user_id']);
        });

        $this->schema->table('readers', function (Blueprint $table) {
            $table->dropIndex('relate_type');
            $table->index(['relate_type', 'relate_id', 'ip']);
        });

        $this->schema->table('spam', function (Blueprint $table) {
            $table->dropIndex('relate_type');
            $table->index(['relate_type', 'relate_id']);
        });

        $this->schema->table('posts', function (Blueprint $table) {
            $table->dropIndex('topic_time');
            $table->dropIndex('user_time');
            $table->dropIndex('rating_time');
            $table->index(['topic_id', 'created_at']);
            $table->index(['user_id', 'created_at']);
            $table->index(['rating', 'created_at']);
        });

        $this->schema->table('topics', function (Blueprint $table) {
            $table->dropIndex('count_posts_time');
            $table->dropIndex('user_time');
            $table->dropIndex('forum_time');
            $table->index(['count_posts', 'updated_at']);
            $table->index(['user_id', 'updated_at']);
            $table->index(['forum_id', 'locked', 'updated_at']);
        });

        $this->schema->table('errors', function (Blueprint $table) {
            $table->dropIndex('code');
            $table->index(['code', 'created_at']);
        });

        $this->schema->table('login', function (Blueprint $table) {
            $table->dropIndex('user_time');
            $table->index(['user_id', 'created_at']);
        });

        $this->schema->table('messages', function (Blueprint $table) {
            $table->dropIndex('user_id');
            $table->index(['user_id', 'author_id']);
        });
    }

    /**
     * Migrate Down.
     */
    public function down(): void
    {
    }
}