From b71ac00de8997b12dbb02b2f286801e3156b5160 Mon Sep 17 00:00:00 2001 From: Leon Date: Wed, 7 Jan 2026 15:12:59 +0100 Subject: [PATCH] feat: user ids to uuids --- app/Models/User.php | 18 ++++++++++++++++-- .../0001_01_01_000000_create_users_table.php | 4 ++-- ...741_create_personal_access_tokens_table.php | 2 +- .../2025_12_18_092945_create_hunts_table.php | 2 +- ...9_113519_create_hunt_participants_table.php | 2 +- database/seeders/BordeauxHuntsSeeder.php | 6 +++--- 6 files changed, 24 insertions(+), 10 deletions(-) diff --git a/app/Models/User.php b/app/Models/User.php index 292c691..4114d6c 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -4,17 +4,31 @@ namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use App\Enums\UserRole; -use Illuminate\Database\Eloquent\Concerns\HasUlids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; +use Illuminate\Database\Eloquent\Concerns\HasUuids; class User extends Authenticatable { /** @use HasFactory<\Database\Factories\UserFactory> */ - use HasApiTokens, HasFactory, Notifiable, SoftDeletes; + use HasApiTokens, HasFactory, Notifiable, SoftDeletes, HasUuids; + + /** + * The primary key type. + * + * @var string + */ + protected $keyType = 'string'; + + /** + * Indicates if the IDs are auto-incrementing. + * + * @var bool + */ + public $incrementing = false; /** * The attributes that are mass assignable. diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php index a3fc05a..fbca46c 100644 --- a/database/migrations/0001_01_01_000000_create_users_table.php +++ b/database/migrations/0001_01_01_000000_create_users_table.php @@ -12,7 +12,7 @@ return new class extends Migration public function up(): void { Schema::create('users', function (Blueprint $table) { - $table->id(); + $table->uuid('id')->primary(); $table->string('username'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); @@ -29,7 +29,7 @@ return new class extends Migration Schema::create('sessions', function (Blueprint $table) { $table->string('id')->primary(); - $table->foreignId('user_id')->nullable()->index(); + $table->foreignUuid('user_id')->nullable()->index(); $table->string('ip_address', 45)->nullable(); $table->text('user_agent')->nullable(); $table->longText('payload'); diff --git a/database/migrations/2025_11_28_130741_create_personal_access_tokens_table.php b/database/migrations/2025_11_28_130741_create_personal_access_tokens_table.php index 40ff706..62a379f 100644 --- a/database/migrations/2025_11_28_130741_create_personal_access_tokens_table.php +++ b/database/migrations/2025_11_28_130741_create_personal_access_tokens_table.php @@ -13,7 +13,7 @@ return new class extends Migration { Schema::create('personal_access_tokens', function (Blueprint $table) { $table->id(); - $table->morphs('tokenable'); + $table->uuidMorphs('tokenable'); $table->text('name'); $table->string('token', 64)->unique(); $table->text('abilities')->nullable(); diff --git a/database/migrations/2025_12_18_092945_create_hunts_table.php b/database/migrations/2025_12_18_092945_create_hunts_table.php index 3bfbc3c..2b064a5 100644 --- a/database/migrations/2025_12_18_092945_create_hunts_table.php +++ b/database/migrations/2025_12_18_092945_create_hunts_table.php @@ -34,7 +34,7 @@ return new class extends Migration $table->string('image')->nullable(); - $table->foreignId('creator_id')->nullable()->constrained('users')->nullOnDelete(); + $table->foreignUuid('creator_id')->nullable()->constrained('users')->nullOnDelete(); $table->timestamps(); }); diff --git a/database/migrations/2025_12_19_113519_create_hunt_participants_table.php b/database/migrations/2025_12_19_113519_create_hunt_participants_table.php index 47d909b..0b4804f 100644 --- a/database/migrations/2025_12_19_113519_create_hunt_participants_table.php +++ b/database/migrations/2025_12_19_113519_create_hunt_participants_table.php @@ -14,7 +14,7 @@ return new class extends Migration { Schema::create('hunt_participants', function (Blueprint $table) { $table->id(); - $table->foreignId('user_id')->constrained()->cascadeOnDelete(); + $table->foreignUuid('user_id')->constrained()->cascadeOnDelete(); $table->foreignId('hunt_id')->constrained('hunts')->cascadeOnDelete(); $table->unsignedSmallInteger('current_step_number')->default(1); $table->string('status')->default(ParticipateStatus::Started->value); diff --git a/database/seeders/BordeauxHuntsSeeder.php b/database/seeders/BordeauxHuntsSeeder.php index 5e74700..cc8771c 100644 --- a/database/seeders/BordeauxHuntsSeeder.php +++ b/database/seeders/BordeauxHuntsSeeder.php @@ -38,8 +38,8 @@ class BordeauxHuntsSeeder extends Seeder 'title' => 'Place de la Bourse', 'description' => 'Rendez-vous sur cette place emblématique.', 'hint_text' => 'Miroir d\'eau', - 'latitude' => 44.8417, - 'longitude' => -0.5706, + 'latitude' => 44.8617, + 'longitude' => -0.5606, 'radius_m' => 50, ]); @@ -50,7 +50,7 @@ class BordeauxHuntsSeeder extends Seeder 'title' => 'Grand Théâtre', 'description' => 'Un opéra du XVIIIe siècle.', 'hint_text' => 'Douze colonnes corinthiennes', - 'latitude' => 44.8427, + 'latitude' => 44.8227, 'longitude' => -0.5746, 'radius_m' => 50, ]);