Merge remote-tracking branch 'origin/next' into v5-parallel-inertia-react

This commit is contained in:
Andras Bacsai committed 2026-07-11 10:06:49 +02:00
commit 772093928f
241 files changed
+22765 -1087

No files matched your search

@@ -13,6 +13,11 @@ class CloudProviderTokenFactory extends Factory
{
protected $model = CloudProviderToken::class;
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
@@ -0,0 +1,44 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
if (! Schema::hasColumn('servers', 'vultr_instance_id')) {
Schema::table('servers', function (Blueprint $table) {
$table->string('vultr_instance_id')->nullable()->after('hetzner_server_status');
});
}
if (! Schema::hasColumn('servers', 'vultr_instance_status')) {
Schema::table('servers', function (Blueprint $table) {
$table->string('vultr_instance_status')->nullable()->after('vultr_instance_id');
});
}
}
/**
* Reverse the migrations.
*/
public function down(): void
{
if (Schema::hasColumn('servers', 'vultr_instance_status')) {
Schema::table('servers', function (Blueprint $table) {
$table->dropColumn('vultr_instance_status');
});
}
if (Schema::hasColumn('servers', 'vultr_instance_id')) {
Schema::table('servers', function (Blueprint $table) {
$table->dropColumn('vultr_instance_id');
});
}
}
};
@@ -0,0 +1,76 @@
<?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
{
/**
* Run the migrations.
*/
public function up(): void
{
if ($this->indexExists()) {
return;
}
DB::table('tags')
->select('team_id', 'name', DB::raw('MIN(id) as keep_id'), DB::raw('COUNT(*) as tag_count'))
->whereNotNull('team_id')
->groupBy('team_id', 'name')
->havingRaw('COUNT(*) > 1')
->orderBy('keep_id')
->cursor()
->each(function ($duplicate): void {
DB::table('tags')
->select('id')
->where('team_id', $duplicate->team_id)
->where('name', $duplicate->name)
->where('id', '!=', $duplicate->keep_id)
->orderBy('id')
->cursor()
->each(function ($duplicateTag) use ($duplicate): void {
DB::table('taggables')
->where('tag_id', $duplicateTag->id)
->orderBy('taggable_id')
->cursor()
->each(function ($taggable) use ($duplicate): void {
DB::table('taggables')->updateOrInsert([
'tag_id' => $duplicate->keep_id,
'taggable_id' => $taggable->taggable_id,
'taggable_type' => $taggable->taggable_type,
]);
});
DB::table('taggables')->where('tag_id', $duplicateTag->id)->delete();
DB::table('tags')->where('id', $duplicateTag->id)->delete();
});
});
Schema::table('tags', function (Blueprint $table) {
$table->unique(['team_id', 'name'], 'tags_team_id_name_unique');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
if (! $this->indexExists()) {
return;
}
Schema::table('tags', function (Blueprint $table) {
$table->dropUnique('tags_team_id_name_unique');
});
}
private function indexExists(): bool
{
return collect(Schema::getIndexes('tags'))
->contains(fn (array $index): bool => $index['name'] === 'tags_team_id_name_unique');
}
};
@@ -0,0 +1,40 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('servers', function (Blueprint $table) {
if (! Schema::hasColumn('servers', 'digitalocean_droplet_id')) {
$table->bigInteger('digitalocean_droplet_id')->nullable()->after('hetzner_server_status');
}
if (! Schema::hasColumn('servers', 'digitalocean_droplet_status')) {
$table->string('digitalocean_droplet_status')->nullable()->after('digitalocean_droplet_id');
}
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('servers', function (Blueprint $table) {
if (Schema::hasColumn('servers', 'digitalocean_droplet_status')) {
$table->dropColumn('digitalocean_droplet_status');
}
if (Schema::hasColumn('servers', 'digitalocean_droplet_id')) {
$table->dropColumn('digitalocean_droplet_id');
}
});
}
};
@@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('cloud_provider_tokens', function (Blueprint $table) {
$table->text('description')->nullable()->after('name');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('cloud_provider_tokens', function (Blueprint $table) {
$table->dropColumn('description');
});
}
};
@@ -0,0 +1,33 @@
<?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('cloud_init_scripts', function (Blueprint $table) {
$table->string('uuid')->nullable()->unique()->after('id');
});
DB::table('cloud_init_scripts')
->whereNull('uuid')
->orderBy('id')
->each(function (object $script): void {
DB::table('cloud_init_scripts')
->where('id', $script->id)
->update(['uuid' => new_public_id()]);
});
}
public function down(): void
{
Schema::table('cloud_init_scripts', function (Blueprint $table) {
$table->dropUnique(['uuid']);
$table->dropColumn('uuid');
});
}
};