fix: streamline migration for adding predefined server variables to existing servers

This commit is contained in:
Andras Bacsai 2026-01-02 19:51:16 +01:00
parent 5661c136f5
commit 54c28710d9

View file

@ -1,7 +1,8 @@
<?php
use App\Models\Server;
use App\Models\SharedEnvironmentVariable;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;
return new class extends Migration
{
@ -10,50 +11,37 @@
*/
public function up(): void
{
// Add predefined server variables to all existing servers
$servers = DB::table('servers')->get();
Server::query()->chunk(100, function ($servers) {
foreach ($servers as $server) {
$existingKeys = SharedEnvironmentVariable::where('type', 'server')
->where('server_id', $server->id)
->whereIn('key', ['COOLIFY_SERVER_UUID', 'COOLIFY_SERVER_NAME'])
->pluck('key')
->toArray();
foreach ($servers as $server) {
// Check if COOLIFY_SERVER_UUID already exists
$uuidExists = DB::table('shared_environment_variables')
->where('type', 'server')
->where('server_id', $server->id)
->where('key', 'COOLIFY_SERVER_UUID')
->exists();
if (! in_array('COOLIFY_SERVER_UUID', $existingKeys)) {
SharedEnvironmentVariable::create([
'key' => 'COOLIFY_SERVER_UUID',
'value' => $server->uuid,
'type' => 'server',
'server_id' => $server->id,
'team_id' => $server->team_id,
'is_literal' => true,
]);
}
if (! $uuidExists) {
DB::table('shared_environment_variables')->insert([
'key' => 'COOLIFY_SERVER_UUID',
'value' => $server->uuid,
'type' => 'server',
'server_id' => $server->id,
'team_id' => $server->team_id,
'is_literal' => true,
'created_at' => now(),
'updated_at' => now(),
]);
if (! in_array('COOLIFY_SERVER_NAME', $existingKeys)) {
SharedEnvironmentVariable::create([
'key' => 'COOLIFY_SERVER_NAME',
'value' => $server->name,
'type' => 'server',
'server_id' => $server->id,
'team_id' => $server->team_id,
'is_literal' => true,
]);
}
}
// Check if COOLIFY_SERVER_NAME already exists
$nameExists = DB::table('shared_environment_variables')
->where('type', 'server')
->where('server_id', $server->id)
->where('key', 'COOLIFY_SERVER_NAME')
->exists();
if (! $nameExists) {
DB::table('shared_environment_variables')->insert([
'key' => 'COOLIFY_SERVER_NAME',
'value' => $server->name,
'type' => 'server',
'server_id' => $server->id,
'team_id' => $server->team_id,
'is_literal' => true,
'created_at' => now(),
'updated_at' => now(),
]);
}
}
});
}
/**
@ -61,9 +49,7 @@ public function up(): void
*/
public function down(): void
{
// Remove predefined server variables
DB::table('shared_environment_variables')
->where('type', 'server')
SharedEnvironmentVariable::where('type', 'server')
->whereIn('key', ['COOLIFY_SERVER_UUID', 'COOLIFY_SERVER_NAME'])
->delete();
}