mirror of
https://github.com/flarum/framework.git
synced 2024-12-11 21:43:38 +08:00
Clean up migrations
* Make filenames and order more consistent * Split foreign keys into their own migrations, add statements to ensure data integrity prior to adding them * Add renameColumns helper, use other helpers where possible
This commit is contained in:
parent
39501f1dd0
commit
33973fdb78
|
@ -19,19 +19,27 @@ return [
|
|||
$table->renameColumn('lifetime', 'lifetime_seconds');
|
||||
$table->renameColumn('last_activity', 'last_activity_at');
|
||||
$table->dateTime('created_at');
|
||||
$table->integer('user_id')->unsigned()->change();
|
||||
});
|
||||
|
||||
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
// Use a separate schema instance because this column gets renamed
|
||||
// in the first one.
|
||||
$schema->table('access_tokens', function (Blueprint $table) {
|
||||
$table->dateTime('last_activity_at')->change();
|
||||
});
|
||||
},
|
||||
|
||||
'down' => function (Builder $schema) {
|
||||
$schema->table('access_tokens', function (Blueprint $table) {
|
||||
$table->integer('last_activity_at')->change();
|
||||
});
|
||||
|
||||
$schema->table('access_tokens', function (Blueprint $table) {
|
||||
$table->renameColumn('token', 'id');
|
||||
$table->renameColumn('lifetime_seconds', 'lifetime');
|
||||
$table->renameColumn('last_activity_at', 'last_activity');
|
||||
$table->dropColumn('created_at');
|
||||
$table->renameColumn('token', 'id');
|
||||
|
||||
$table->dropForeign(['user_id']);
|
||||
$table->integer('user_id')->change();
|
||||
});
|
||||
}
|
||||
];
|
|
@ -14,14 +14,23 @@ use Illuminate\Database\Schema\Builder;
|
|||
|
||||
return [
|
||||
'up' => function (Builder $schema) {
|
||||
// Delete rows with non-existent users so that we will be able to create
|
||||
// foreign keys without any issues.
|
||||
$schema->getConnection()
|
||||
->table('access_tokens')
|
||||
->whereNotExists(function ($query) {
|
||||
$query->selectRaw(1)->from('users')->whereRaw('id = user_id');
|
||||
})
|
||||
->delete();
|
||||
|
||||
$schema->table('access_tokens', function (Blueprint $table) {
|
||||
$table->dateTime('last_activity_at')->change();
|
||||
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
});
|
||||
},
|
||||
|
||||
'down' => function (Builder $schema) {
|
||||
$schema->table('access_tokens', function (Blueprint $table) {
|
||||
$table->integer('last_activity_at')->change();
|
||||
$table->dropForeign(['user_id']);
|
||||
});
|
||||
}
|
||||
];
|
|
@ -1,29 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Schema\Builder;
|
||||
|
||||
return [
|
||||
'up' => function (Builder $schema) {
|
||||
$schema->table('api_keys', function (Blueprint $table) {
|
||||
$table->renameColumn('id', 'key');
|
||||
$table->dropPrimary(['id', 'key']);
|
||||
});
|
||||
},
|
||||
|
||||
'down' => function (Builder $schema) {
|
||||
$schema->table('api_keys', function (Blueprint $table) {
|
||||
$table->renameColumn('key', 'id');
|
||||
$table->primary('id');
|
||||
});
|
||||
}
|
||||
];
|
|
@ -14,6 +14,12 @@ use Illuminate\Database\Schema\Builder;
|
|||
|
||||
return [
|
||||
'up' => function (Builder $schema) {
|
||||
$schema->table('api_keys', function (Blueprint $table) {
|
||||
$table->dropPrimary(['id']);
|
||||
$table->renameColumn('id', 'key');
|
||||
$table->unique('key');
|
||||
});
|
||||
|
||||
$schema->table('api_keys', function (Blueprint $table) {
|
||||
$table->increments('id');
|
||||
$table->string('allowed_ips')->nullable();
|
||||
|
@ -31,5 +37,11 @@ return [
|
|||
$table->dropForeign(['user_id']);
|
||||
$table->dropColumn('id', 'allowed_ips', 'user_id', 'scopes', 'created_at');
|
||||
});
|
||||
|
||||
$schema->table('api_keys', function (Blueprint $table) {
|
||||
$table->dropUnique(['key']);
|
||||
$table->renameColumn('key', 'id');
|
||||
$table->primary('id');
|
||||
});
|
||||
}
|
||||
];
|
|
@ -9,19 +9,6 @@
|
|||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Schema\Builder;
|
||||
use Flarum\Database\Migration;
|
||||
|
||||
return [
|
||||
'up' => function (Builder $schema) {
|
||||
$schema->table('registration_tokens', function (Blueprint $table) {
|
||||
$table->renameColumn('id', 'token');
|
||||
});
|
||||
},
|
||||
|
||||
'down' => function (Builder $schema) {
|
||||
$schema->table('registration_tokens', function (Blueprint $table) {
|
||||
$table->renameColumn('token', 'id');
|
||||
});
|
||||
}
|
||||
];
|
||||
return Migration::renameColumn('registration_tokens', 'id', 'token');
|
||||
|
|
|
@ -1,56 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Schema\Builder;
|
||||
|
||||
return [
|
||||
'up' => function (Builder $schema) {
|
||||
$schema->table('discussions', function (Blueprint $table) {
|
||||
$table->renameColumn('comments_count', 'comment_count');
|
||||
$table->renameColumn('participants_count', 'participant_count');
|
||||
$table->renameColumn('number_index', 'post_number_index');
|
||||
$table->renameColumn('start_time', 'created_at');
|
||||
$table->renameColumn('start_user_id', 'user_id');
|
||||
$table->renameColumn('start_post_id', 'first_post_id');
|
||||
$table->renameColumn('last_time', 'last_posted_at');
|
||||
$table->renameColumn('last_user_id', 'last_posted_user_id');
|
||||
$table->renameColumn('hide_time', 'hidden_at');
|
||||
$table->renameColumn('hide_user_id', 'hidden_user_id');
|
||||
|
||||
$table->foreign('user_id')->references('id')->on('users')->onDelete('set null');
|
||||
$table->foreign('last_posted_user_id')->references('id')->on('users')->onDelete('set null');
|
||||
$table->foreign('hidden_user_id')->references('id')->on('users')->onDelete('set null');
|
||||
$table->foreign('first_post_id')->references('id')->on('posts');
|
||||
$table->foreign('last_post_id')->references('id')->on('posts');
|
||||
});
|
||||
},
|
||||
|
||||
'down' => function (Builder $schema) {
|
||||
$schema->table('discussions', function (Blueprint $table) {
|
||||
$table->renameColumn('comment_count', 'comments_count');
|
||||
$table->renameColumn('participant_count', 'participants_count');
|
||||
$table->renameColumn('post_number_index', 'number_index');
|
||||
$table->renameColumn('created_at', 'start_time');
|
||||
$table->renameColumn('user_id', 'start_user_id');
|
||||
$table->renameColumn('first_post_id', 'start_post_id');
|
||||
$table->renameColumn('last_posted_at', 'last_time');
|
||||
$table->renameColumn('last_posted_user_id', 'last_user_id');
|
||||
$table->renameColumn('hidden_at', 'hide_time');
|
||||
$table->renameColumn('hidden_user_id', 'hide_user_id');
|
||||
|
||||
$table->dropForeign([
|
||||
'user_id', 'last_posted_user_id', 'hidden_user_id',
|
||||
'first_post_id', 'last_post_id'
|
||||
]);
|
||||
});
|
||||
}
|
||||
];
|
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Flarum\Database\Migration;
|
||||
|
||||
return Migration::renameColumns('discussions', [
|
||||
'comments_count' => 'comment_count',
|
||||
'participants_count' => 'participant_count',
|
||||
'number_index' => 'post_number_index',
|
||||
'start_time' => 'created_at',
|
||||
'start_user_id' => 'user_id',
|
||||
'start_post_id' => 'first_post_id',
|
||||
'last_time' => 'last_posted_at',
|
||||
'last_user_id' => 'last_posted_user_id',
|
||||
'hide_time' => 'hidden_at',
|
||||
'hide_user_id' => 'hidden_user_id'
|
||||
]);
|
|
@ -0,0 +1,53 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Illuminate\Database\Query\Expression;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Schema\Builder;
|
||||
|
||||
return [
|
||||
'up' => function (Builder $schema) {
|
||||
// Set non-existent entity IDs to NULL so that we will be able to create
|
||||
// foreign keys without any issues.
|
||||
$connection = $schema->getConnection();
|
||||
|
||||
$selectId = function ($table, $column) use ($connection) {
|
||||
return new Expression(
|
||||
'('.$connection->table($table)->whereRaw("id = $column")->select('id')->toSql().')'
|
||||
);
|
||||
};
|
||||
|
||||
$connection->table('discussions')->update([
|
||||
'user_id' => $selectId('users', 'user_id'),
|
||||
'last_posted_user_id' => $selectId('users', 'last_posted_user_id'),
|
||||
'hidden_user_id' => $selectId('users', 'hidden_user_id'),
|
||||
'first_post_id' => $selectId('posts', 'first_post_id'),
|
||||
'last_post_id' => $selectId('posts', 'last_post_id'),
|
||||
]);
|
||||
|
||||
$schema->table('discussions', function (Blueprint $table) {
|
||||
$table->foreign('user_id')->references('id')->on('users')->onDelete('set null');
|
||||
$table->foreign('last_posted_user_id')->references('id')->on('users')->onDelete('set null');
|
||||
$table->foreign('hidden_user_id')->references('id')->on('users')->onDelete('set null');
|
||||
$table->foreign('first_post_id')->references('id')->on('posts');
|
||||
$table->foreign('last_post_id')->references('id')->on('posts');
|
||||
});
|
||||
},
|
||||
|
||||
'down' => function (Builder $schema) {
|
||||
$schema->table('discussions', function (Blueprint $table) {
|
||||
$table->dropForeign([
|
||||
'user_id', 'last_posted_user_id', 'hidden_user_id',
|
||||
'first_post_id', 'last_post_id'
|
||||
]);
|
||||
});
|
||||
}
|
||||
];
|
|
@ -11,4 +11,4 @@
|
|||
|
||||
use Flarum\Database\Migration;
|
||||
|
||||
return Migration::renameTable('users_discussions', 'discussions_users');
|
||||
return Migration::renameTable('users_discussions', 'discussion_user');
|
|
@ -0,0 +1,17 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Flarum\Database\Migration;
|
||||
|
||||
return Migration::renameColumns('discussion_user', [
|
||||
'read_time' => 'last_read_at',
|
||||
'read_number' => 'last_read_post_number'
|
||||
]);
|
|
@ -1,34 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Schema\Builder;
|
||||
|
||||
return [
|
||||
'up' => function (Builder $schema) {
|
||||
$schema->table('discussions_users', function (Blueprint $table) {
|
||||
$table->renameColumn('read_time', 'last_read_at');
|
||||
$table->renameColumn('read_number', 'last_read_post_number');
|
||||
|
||||
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
$table->foreign('discussion_id')->references('id')->on('discussions')->onDelete('cascade');
|
||||
});
|
||||
},
|
||||
|
||||
'down' => function (Builder $schema) {
|
||||
$schema->table('discussions_users', function (Blueprint $table) {
|
||||
$table->renameColumn('last_read_at', 'read_time');
|
||||
$table->renameColumn('last_read_post_number', 'read_number');
|
||||
|
||||
$table->dropForeign(['users_user_id', 'users_discussion_id']);
|
||||
});
|
||||
}
|
||||
];
|
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Schema\Builder;
|
||||
|
||||
return [
|
||||
'up' => function (Builder $schema) {
|
||||
// Delete rows with non-existent entities so that we will be able to create
|
||||
// foreign keys without any issues.
|
||||
$connection = $schema->getConnection();
|
||||
$connection->table('discussion_user')
|
||||
->whereNotExists(function ($query) {
|
||||
$query->selectRaw(1)->from('users')->whereRaw('id = user_id');
|
||||
})
|
||||
->orWhereNotExists(function ($query) {
|
||||
$query->selectRaw(1)->from('discussions')->whereRaw('id = discussion_id');
|
||||
})
|
||||
->delete();
|
||||
|
||||
$schema->table('discussion_user', function (Blueprint $table) {
|
||||
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
$table->foreign('discussion_id')->references('id')->on('discussions')->onDelete('cascade');
|
||||
});
|
||||
},
|
||||
|
||||
'down' => function (Builder $schema) {
|
||||
$schema->table('discussion_user', function (Blueprint $table) {
|
||||
$table->dropForeign(['user_id', 'discussion_id']);
|
||||
});
|
||||
}
|
||||
];
|
|
@ -0,0 +1,14 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Flarum\Database\Migration;
|
||||
|
||||
return Migration::renameColumn('email_tokens', 'id', 'token');
|
|
@ -14,17 +14,22 @@ use Illuminate\Database\Schema\Builder;
|
|||
|
||||
return [
|
||||
'up' => function (Builder $schema) {
|
||||
$schema->table('email_tokens', function (Blueprint $table) {
|
||||
$table->renameColumn('id', 'token');
|
||||
// Delete rows with non-existent users so that we will be able to create
|
||||
// foreign keys without any issues.
|
||||
$schema->getConnection()
|
||||
->table('email_tokens')
|
||||
->whereNotExists(function ($query) {
|
||||
$query->selectRaw(1)->from('users')->whereRaw('id = user_id');
|
||||
})
|
||||
->delete();
|
||||
|
||||
$schema->table('email_tokens', function (Blueprint $table) {
|
||||
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
});
|
||||
},
|
||||
|
||||
'down' => function (Builder $schema) {
|
||||
$schema->table('email_tokens', function (Blueprint $table) {
|
||||
$table->renameColumn('token', 'id');
|
||||
|
||||
$table->dropForeign(['user_id']);
|
||||
});
|
||||
}
|
|
@ -14,6 +14,15 @@ use Illuminate\Database\Schema\Builder;
|
|||
|
||||
return [
|
||||
'up' => function (Builder $schema) {
|
||||
// Delete rows with non-existent groups so that we will be able to create
|
||||
// foreign keys without any issues.
|
||||
$schema->getConnection()
|
||||
->table('group_permission')
|
||||
->whereNotExists(function ($query) {
|
||||
$query->selectRaw(1)->from('groups')->whereRaw('id = group_id');
|
||||
})
|
||||
->delete();
|
||||
|
||||
$schema->table('group_permission', function (Blueprint $table) {
|
||||
$table->foreign('group_id')->references('id')->on('groups')->onDelete('cascade');
|
||||
});
|
|
@ -14,6 +14,18 @@ use Illuminate\Database\Schema\Builder;
|
|||
|
||||
return [
|
||||
'up' => function (Builder $schema) {
|
||||
// Delete rows with non-existent entities so that we will be able to create
|
||||
// foreign keys without any issues.
|
||||
$schema->getConnection()
|
||||
->table('group_user')
|
||||
->whereNotExists(function ($query) {
|
||||
$query->selectRaw(1)->from('users')->whereRaw('id = user_id');
|
||||
})
|
||||
->orWhereNotExists(function ($query) {
|
||||
$query->selectRaw(1)->from('groups')->whereRaw('id = group_id');
|
||||
})
|
||||
->delete();
|
||||
|
||||
$schema->table('group_user', function (Blueprint $table) {
|
||||
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
$table->foreign('group_id')->references('id')->on('groups')->onDelete('cascade');
|
|
@ -9,21 +9,16 @@
|
|||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Flarum\Database\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Schema\Builder;
|
||||
|
||||
return [
|
||||
'up' => function (Builder $schema) {
|
||||
$schema->create('notifications_from', function (Blueprint $table) {
|
||||
$table->integer('id')->unsigned();
|
||||
$table->integer('from_user_id')->unsigned();
|
||||
return Migration::createTable(
|
||||
'notifications_from',
|
||||
function (Blueprint $table) {
|
||||
$table->integer('id')->unsigned();
|
||||
$table->integer('from_user_id')->unsigned();
|
||||
|
||||
$table->foreign('id')->references('id')->on('notifications')->onDelete('cascade');
|
||||
$table->foreign('from_user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
});
|
||||
},
|
||||
|
||||
'down' => function (Builder $schema) {
|
||||
$schema->drop('notifications_from');
|
||||
$table->foreign('id')->references('id')->on('notifications')->onDelete('cascade');
|
||||
$table->foreign('from_user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
}
|
||||
];
|
||||
);
|
||||
|
|
|
@ -13,16 +13,19 @@ use Illuminate\Database\Schema\Builder;
|
|||
|
||||
return [
|
||||
'up' => function (Builder $schema) {
|
||||
$schema->getConnection()->table('notifications')->chunkById(100, function ($notifications) use ($schema) {
|
||||
foreach ($notifications as $notification) {
|
||||
$insert = [
|
||||
'id' => $notification->id,
|
||||
'from_user_id' => $notification->sender_id
|
||||
];
|
||||
$query = $schema->getConnection()->table('notifications')
|
||||
->whereExists(function ($query) {
|
||||
$query->selectRaw(1)->from('users')->whereRaw('id = sender_id');
|
||||
});
|
||||
|
||||
$schema->getConnection()->table('notifications_from')->updateOrInsert($insert, $insert);
|
||||
}
|
||||
});
|
||||
foreach ($query->cursor() as $notification) {
|
||||
$insert = [
|
||||
'id' => $notification->id,
|
||||
'from_user_id' => $notification->sender_id
|
||||
];
|
||||
|
||||
$schema->getConnection()->table('notifications_from')->updateOrInsert($insert, $insert);
|
||||
}
|
||||
},
|
||||
|
||||
'down' => function (Builder $schema) {
|
||||
|
|
|
@ -21,8 +21,6 @@ return [
|
|||
|
||||
$table->timestamp('read_at')->nullable();
|
||||
$table->timestamp('deleted_at')->nullable();
|
||||
|
||||
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
});
|
||||
|
||||
$schema->getConnection()->table('notifications')
|
||||
|
@ -48,13 +46,12 @@ return [
|
|||
|
||||
$table->boolean('is_read');
|
||||
$table->boolean('is_deleted');
|
||||
|
||||
$table->dropForeign(['user_id']);
|
||||
});
|
||||
|
||||
$schema->getConnection()->table('notifications')
|
||||
->whereNotNull('read_at')
|
||||
->update(['is_read' => 1]);
|
||||
|
||||
$schema->getConnection()->table('notifications')
|
||||
->whereNotNull('deleted_at')
|
||||
->update(['is_deleted' => 1]);
|
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Schema\Builder;
|
||||
|
||||
return [
|
||||
'up' => function (Builder $schema) {
|
||||
// Delete rows with non-existent users so that we will be able to create
|
||||
// foreign keys without any issues.
|
||||
$schema->getConnection()
|
||||
->table('notifications')
|
||||
->whereNotExists(function ($query) {
|
||||
$query->selectRaw(1)->from('users')->whereRaw('id = user_id');
|
||||
})
|
||||
->delete();
|
||||
|
||||
$schema->table('notifications', function (Blueprint $table) {
|
||||
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
});
|
||||
},
|
||||
|
||||
'down' => function (Builder $schema) {
|
||||
$schema->table('notifications', function (Blueprint $table) {
|
||||
$table->dropForeign(['user_id']);
|
||||
});
|
||||
}
|
||||
];
|
|
@ -14,6 +14,15 @@ use Illuminate\Database\Schema\Builder;
|
|||
|
||||
return [
|
||||
'up' => function (Builder $schema) {
|
||||
// Delete rows with non-existent users so that we will be able to create
|
||||
// foreign keys without any issues.
|
||||
$connection = $schema->getConnection();
|
||||
$connection->table('password_tokens')
|
||||
->whereNotExists(function ($query) {
|
||||
$query->selectRaw(1)->from('users')->whereRaw('id = user_id');
|
||||
})
|
||||
->delete();
|
||||
|
||||
$schema->table('password_tokens', function (Blueprint $table) {
|
||||
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
});
|
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Flarum\Database\Migration;
|
||||
|
||||
return Migration::renameColumns('posts', [
|
||||
'time' => 'created_at',
|
||||
'edit_time' => 'edited_at',
|
||||
'hide_time' => 'hidden_at',
|
||||
'edit_user_id' => 'edited_user_id',
|
||||
'hide_user_id' => 'hidden_user_id'
|
||||
]);
|
|
@ -9,21 +9,29 @@
|
|||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Illuminate\Database\Query\Expression;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Schema\Builder;
|
||||
|
||||
return [
|
||||
'up' => function (Builder $schema) {
|
||||
// Set non-existent entity IDs to NULL so that we will be able to create
|
||||
// foreign keys without any issues.
|
||||
$connection = $schema->getConnection();
|
||||
|
||||
$selectId = function ($table, $column) use ($connection) {
|
||||
return new Expression(
|
||||
'('.$connection->table($table)->whereRaw("id = $column")->select('id')->toSql().')'
|
||||
);
|
||||
};
|
||||
|
||||
$connection->table('posts')->update([
|
||||
'user_id' => $selectId('users', 'user_id'),
|
||||
'edited_user_id' => $selectId('users', 'edited_user_id'),
|
||||
'hidden_user_id' => $selectId('users', 'hidden_user_id'),
|
||||
]);
|
||||
|
||||
$schema->table('posts', function (Blueprint $table) {
|
||||
$table->renameColumn('time', 'created_at');
|
||||
$table->renameColumn('edit_time', 'edited_at');
|
||||
$table->renameColumn('hide_time', 'hidden_at');
|
||||
|
||||
$table->renameColumn('edit_user_id', 'edited_user_id');
|
||||
$table->renameColumn('hide_user_id', 'hidden_user_id');
|
||||
|
||||
$table->longText('content')->change();
|
||||
|
||||
$table->foreign('user_id')->references('id')->on('users')->onDelete('set null');
|
||||
$table->foreign('edited_user_id')->references('id')->on('users')->onDelete('set null');
|
||||
$table->foreign('hidden_user_id')->references('id')->on('users')->onDelete('set null');
|
||||
|
@ -32,15 +40,6 @@ return [
|
|||
|
||||
'down' => function (Builder $schema) {
|
||||
$schema->table('posts', function (Blueprint $table) {
|
||||
$table->renameColumn('created_at', 'time');
|
||||
$table->renameColumn('edited_at', 'edit_time');
|
||||
$table->renameColumn('hidden_at', 'hide_time');
|
||||
|
||||
$table->renameColumn('edited_user_id', 'edit_user_id');
|
||||
$table->renameColumn('edited_user_id', 'hidden_user_id');
|
||||
|
||||
$table->mediumText('content')->change();
|
||||
|
||||
$table->dropForeign([
|
||||
'user_id', 'discussion_id',
|
||||
'edited_user_id', 'hidden_user_id'
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Flarum\Database\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
|
||||
return Migration::createTable(
|
||||
'post_user',
|
||||
function (Blueprint $table) {
|
||||
$table->integer('post_id')->unsigned();
|
||||
$table->integer('user_id')->unsigned();
|
||||
|
||||
$table->primary(['post_id', 'user_id']);
|
||||
|
||||
$table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
|
||||
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
}
|
||||
);
|
|
@ -1,29 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Schema\Builder;
|
||||
|
||||
return [
|
||||
'up' => function (Builder $schema) {
|
||||
$schema->create('posts_users', function (Blueprint $table) {
|
||||
$table->integer('post_id')->unsigned();
|
||||
$table->integer('user_id')->unsigned();
|
||||
|
||||
$table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
|
||||
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
});
|
||||
},
|
||||
|
||||
'down' => function (Builder $schema) {
|
||||
$schema->drop('posts_users');
|
||||
}
|
||||
];
|
|
@ -1,41 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Schema\Builder;
|
||||
|
||||
return [
|
||||
'up' => function (Builder $schema) {
|
||||
$schema->table('users', function (Blueprint $table) {
|
||||
$table->renameColumn('is_activated', 'is_email_confirmed');
|
||||
$table->renameColumn('join_time', 'joined_at');
|
||||
$table->renameColumn('last_seen_time', 'last_seen_at');
|
||||
$table->renameColumn('discussions_count', 'discussion_count');
|
||||
$table->renameColumn('comments_count', 'comment_count');
|
||||
$table->renameColumn('read_time', 'marked_all_as_read_at');
|
||||
$table->renameColumn('notifications_read_time', 'read_notifications_at');
|
||||
$table->renameColumn('avatar_path', 'avatar_url');
|
||||
});
|
||||
},
|
||||
|
||||
'down' => function (Builder $schema) {
|
||||
$schema->table('users', function (Blueprint $table) {
|
||||
$table->renameColumn('is_email_confirmed', 'is_activated');
|
||||
$table->renameColumn('joined_at', 'join_time');
|
||||
$table->renameColumn('last_seen_at', 'last_seen_time');
|
||||
$table->renameColumn('discussion_count', 'discussions_count');
|
||||
$table->renameColumn('comment_count', 'comments_count');
|
||||
$table->renameColumn('marked_all_as_read_at', 'read_time');
|
||||
$table->renameColumn('read_notifications_at', 'notifications_read_time');
|
||||
$table->renameColumn('avatar_url', 'avatar_path');
|
||||
});
|
||||
}
|
||||
];
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Flarum\Database\Migration;
|
||||
|
||||
return Migration::renameColumns('users', [
|
||||
'is_activated' => 'is_email_confirmed',
|
||||
'join_time' => 'joined_at',
|
||||
'last_seen_time' => 'last_seen_at',
|
||||
'discussions_count' => 'discussion_count',
|
||||
'comments_count' => 'comment_count',
|
||||
'read_time' => 'marked_all_as_read_at',
|
||||
'notifications_read_time' => 'read_notifications_at',
|
||||
'avatar_path' => 'avatar_url'
|
||||
]);
|
|
@ -0,0 +1,24 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Flarum\Database\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
|
||||
return Migration::createTable(
|
||||
'user_user',
|
||||
function (Blueprint $table) {
|
||||
$table->integer('user_id')->unsigned();
|
||||
$table->integer('other_user_id')->unsigned();
|
||||
|
||||
$table->foreign('user_id')->references('id')->on('posts')->onDelete('cascade');
|
||||
$table->foreign('other_user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
}
|
||||
);
|
|
@ -1,29 +0,0 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Schema\Builder;
|
||||
|
||||
return [
|
||||
'up' => function (Builder $schema) {
|
||||
$schema->create('users_users', function (Blueprint $table) {
|
||||
$table->integer('user_id')->unsigned();
|
||||
$table->integer('other_user_id')->unsigned();
|
||||
|
||||
$table->foreign('user_id')->references('id')->on('posts')->onDelete('cascade');
|
||||
$table->foreign('other_user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
});
|
||||
},
|
||||
|
||||
'down' => function (Builder $schema) {
|
||||
$schema->drop('users_users');
|
||||
}
|
||||
];
|
|
@ -78,16 +78,28 @@ abstract class Migration
|
|||
* Rename a column.
|
||||
*/
|
||||
public static function renameColumn($tableName, $from, $to)
|
||||
{
|
||||
return static::renameColumns($tableName, [$from => $to]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename multiple columns.
|
||||
*/
|
||||
public static function renameColumns($tableName, array $columnNames)
|
||||
{
|
||||
return [
|
||||
'up' => function (Builder $schema) use ($tableName, $from, $to) {
|
||||
$schema->table($tableName, function (Blueprint $table) use ($from, $to) {
|
||||
$table->renameColumn($from, $to);
|
||||
'up' => function (Builder $schema) use ($tableName, $columnNames) {
|
||||
$schema->table($tableName, function (Blueprint $table) use ($columnNames) {
|
||||
foreach ($columnNames as $from => $to) {
|
||||
$table->renameColumn($from, $to);
|
||||
}
|
||||
});
|
||||
},
|
||||
'down' => function (Builder $schema) use ($tableName, $from, $to) {
|
||||
$schema->table($tableName, function (Blueprint $table) use ($from, $to) {
|
||||
$table->renameColumn($to, $from);
|
||||
'down' => function (Builder $schema) use ($tableName, $columnNames) {
|
||||
$schema->table($tableName, function (Blueprint $table) use ($columnNames) {
|
||||
foreach ($columnNames as $to => $from) {
|
||||
$table->renameColumn($from, $to);
|
||||
}
|
||||
});
|
||||
}
|
||||
];
|
||||
|
|
Loading…
Reference in New Issue
Block a user