mirror of
https://github.com/pelican-dev/panel.git
synced 2025-06-15 14:01:09 +02:00
Realism
This commit is contained in:
parent
c7bea4f024
commit
ff261f9c99
@ -1,5 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use App\Models\Objects\Endpoint;
|
||||||
|
use App\Models\Server;
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use Illuminate\Database\Migrations\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
@ -26,9 +28,19 @@ return new class extends Migration
|
|||||||
}
|
}
|
||||||
|
|
||||||
foreach ($portMappings as $serverId => $ports) {
|
foreach ($portMappings as $serverId => $ports) {
|
||||||
DB::table('servers')
|
/** @var Server $server */
|
||||||
->where('id', $serverId)
|
$server = Server::find($serverId);
|
||||||
->update(['ports' => json_encode($ports)]);
|
if (!$server) {
|
||||||
|
// Orphaned Allocations
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($ports as $port) {
|
||||||
|
$server->ports ??= collect();
|
||||||
|
$server->ports->add(new Endpoint($port));
|
||||||
|
}
|
||||||
|
$server->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -36,7 +48,7 @@ return new class extends Migration
|
|||||||
$table->dropForeign(['allocation_id']);
|
$table->dropForeign(['allocation_id']);
|
||||||
});
|
});
|
||||||
} catch (Throwable) {
|
} catch (Throwable) {
|
||||||
|
// pass for databases that don't support this like sqlite
|
||||||
}
|
}
|
||||||
|
|
||||||
Schema::table('servers', function (Blueprint $table) {
|
Schema::table('servers', function (Blueprint $table) {
|
||||||
@ -56,28 +68,6 @@ return new class extends Migration
|
|||||||
*/
|
*/
|
||||||
public function down(): void
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::table('nodes', function (Blueprint $table) {
|
// Too much time to ensure this works correctly, please take a backup if necessary
|
||||||
$table->dropColumn('strict_ports');
|
|
||||||
});
|
|
||||||
|
|
||||||
Schema::create('allocations', function (Blueprint $table) {
|
|
||||||
$table->id();
|
|
||||||
$table->unsignedInteger('node_id');
|
|
||||||
$table->string('ip');
|
|
||||||
$table->text('ip_alias');
|
|
||||||
$table->unsignedMediumInteger('port');
|
|
||||||
$table->unsignedInteger('server_id');
|
|
||||||
$table->string('notes')->default('');
|
|
||||||
$table->timestamps();
|
|
||||||
|
|
||||||
$table->unique(['node_id', 'ip', 'port']);
|
|
||||||
});
|
|
||||||
|
|
||||||
Schema::table('server_transfers', function (Blueprint $table) {
|
|
||||||
$table->integer('old_node');
|
|
||||||
$table->integer('new_node');
|
|
||||||
$table->json('old_additional_allocations')->nullable();
|
|
||||||
$table->json('new_additional_allocations')->nullable();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user