61 lines
1.8 KiB
PHP
61 lines
1.8 KiB
PHP
<?php
|
|
|
|
use Illuminate\Database\Migrations\Migration;
|
|
use Illuminate\Database\Schema\Blueprint;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Schema;
|
|
|
|
return new class extends Migration
|
|
{
|
|
public function up(): void
|
|
{
|
|
Schema::table('nodes', function (Blueprint $table) {
|
|
$table->text('tags');
|
|
});
|
|
|
|
DB::table('nodes')->update(['tags' => '[]']);
|
|
|
|
$nodesWithLocations = DB::table('nodes')
|
|
->select(['nodes.id', 'locations.short'])
|
|
->join('locations', 'locations.id', '=', 'nodes.location_id')
|
|
->get();
|
|
|
|
foreach ($nodesWithLocations as $node) {
|
|
DB::table('nodes')
|
|
->where('id', $node->id)
|
|
->update(['tags' => "[\"$node->short\"]"]);
|
|
}
|
|
|
|
Schema::table('nodes', function (Blueprint $table) {
|
|
$table->dropForeign('nodes_location_id_foreign');
|
|
$table->dropColumn('location_id');
|
|
});
|
|
|
|
Schema::drop('locations');
|
|
|
|
Schema::table('api_keys', function (Blueprint $table) {
|
|
$table->dropColumn('r_locations');
|
|
});
|
|
}
|
|
|
|
// Not really reversible, but...
|
|
public function down(): void
|
|
{
|
|
Schema::create('locations', function (Blueprint $table) {
|
|
$table->increments('id');
|
|
$table->string('short');
|
|
$table->text('long')->nullable();
|
|
$table->timestamps();
|
|
});
|
|
|
|
Schema::table('nodes', function (Blueprint $table) {
|
|
$table->unsignedInteger('location_id')->default(0);
|
|
$table->foreign('location_id')->references('id')->on('locations');
|
|
});
|
|
|
|
Schema::table('api_keys', function (Blueprint $table) {
|
|
$table->unsignedTinyInteger('r_locations')->default(0);
|
|
});
|
|
}
|
|
};
|