diff --git a/app/Models/CrewInvite.php b/app/Models/CrewInvite.php deleted file mode 100644 index cb7db64..0000000 --- a/app/Models/CrewInvite.php +++ /dev/null @@ -1,10 +0,0 @@ -string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); - $table-> + $table->enum('role', ['admin', 'member'])->default('admin'); $table->string('password'); $table->rememberToken(); $table->timestamps(); diff --git a/database/migrations/2026_02_15_215924_create_images_table.php b/database/migrations/2026_02_15_215924_create_images_table.php index 218e7a9..0945cd2 100644 --- a/database/migrations/2026_02_15_215924_create_images_table.php +++ b/database/migrations/2026_02_15_215924_create_images_table.php @@ -13,9 +13,45 @@ return new class extends Migration { Schema::create('images', function (Blueprint $table) { $table->id(); + + // Storage info + $table->string('disk')->default('s3'); // Laravel filesystem disk + $table->string('bucket')->nullable(); // optional if disk implies it + $table->string('path'); // S3 object key (unique) + + // File metadata + $table->string('original_name')->nullable(); + $table->string('mime_type'); + $table->unsignedBigInteger('size'); // bytes + $table->unsignedInteger('width')->nullable(); + $table->unsignedInteger('height')->nullable(); + + // Variants (thumb/web versions) + $table->json('variants')->nullable(); + // example: + // { + // "thumb": "crews/1/completions/4/thumb.webp", + // "web": "crews/1/completions/4/web.webp" + // } + + // Visibility + $table->string('visibility')->default('private'); // private | public + + // Security / dedupe + $table->string('checksum')->nullable(); // sha256 + $table->boolean('exif_stripped')->default(true); + + // Ownership + $table->foreignId('uploaded_by_user_id') + ->constrained('users') + ->cascadeOnDelete(); + $table->timestamps(); + + $table->unique(['disk', 'path']); }); + Schema::table('users', function (Blueprint $table) { $table->foreignId('avatar_image_id') ->nullable() diff --git a/database/migrations/2026_02_15_220527_create_crews_table.php b/database/migrations/2026_02_15_220527_create_crews_table.php index b4ad98d..3994451 100644 --- a/database/migrations/2026_02_15_220527_create_crews_table.php +++ b/database/migrations/2026_02_15_220527_create_crews_table.php @@ -13,6 +13,11 @@ return new class extends Migration { Schema::create('crews', function (Blueprint $table) { $table->id(); + $table->string('name'); + $table->string('description'); + $table->string('slug'); + $table->foreignId('image_id')->constrained()->cascadeOnDelete(); + $table->foreignId('cover_image_id')->constrained('images')->cascadeOnDelete(); $table->timestamps(); }); } diff --git a/database/migrations/2026_02_15_221505_create_patches_table.php b/database/migrations/2026_02_15_221505_create_patches_table.php index 47fd3d7..d5d8348 100644 --- a/database/migrations/2026_02_15_221505_create_patches_table.php +++ b/database/migrations/2026_02_15_221505_create_patches_table.php @@ -16,10 +16,8 @@ return new class extends Migration $table->string('name'); $table->string('description'); $table->string('slug'); - $table->int('difficulty')->default(0); + $table->integer('difficulty')->default(0); $table->foreignId('image_id')->nullable()->constrained()->cascadeOnDelete(); - $table->foreignId('category_id')->nullable()->constrained()->cascadeOnDelete(); - $table->string('icon')->nullable(); $table->timestamps(); }); } diff --git a/database/migrations/2026_02_15_221529_create_crew_patches_table.php b/database/migrations/2026_02_15_221529_create_crew_patches_table.php index 71a3747..bcf71b2 100644 --- a/database/migrations/2026_02_15_221529_create_crew_patches_table.php +++ b/database/migrations/2026_02_15_221529_create_crew_patches_table.php @@ -13,6 +13,8 @@ return new class extends Migration { Schema::create('crew_patches', function (Blueprint $table) { $table->id(); + $table->foreignId('user_id')->constrained()->cascadeOnDelete(); + $table->foreignId('crew_patch_id')->constrained()->cascadeOnDelete(); $table->timestamps(); }); } diff --git a/database/migrations/2026_02_15_221538_create_crew_invites_table.php b/database/migrations/2026_02_15_221538_create_crew_invites_table.php deleted file mode 100644 index 28d8447..0000000 --- a/database/migrations/2026_02_15_221538_create_crew_invites_table.php +++ /dev/null @@ -1,27 +0,0 @@ -id(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('crew_invites'); - } -}; diff --git a/database/migrations/2026_02_15_221553_create_crew_patch_completions_table.php b/database/migrations/2026_02_15_221553_create_crew_patch_completions_table.php index 5636a86..a65179b 100644 --- a/database/migrations/2026_02_15_221553_create_crew_patch_completions_table.php +++ b/database/migrations/2026_02_15_221553_create_crew_patch_completions_table.php @@ -13,6 +13,10 @@ return new class extends Migration { Schema::create('crew_patch_completions', function (Blueprint $table) { $table->id(); + $table->foreignId('user_id')->constrained()->cascadeOnDelete(); + $table->foreignId('crew_patch_id')->constrained()->cascadeOnDelete(); + $table->foreignId('image_id')->constrained()->cascadeOnDelete(); + $table->string('description'); $table->timestamps(); }); } diff --git a/database/migrations/2026_02_15_221606_create_crew_patch_completion_reactions_table.php b/database/migrations/2026_02_15_221606_create_crew_patch_completion_reactions_table.php index 8aa463c..a8700c8 100644 --- a/database/migrations/2026_02_15_221606_create_crew_patch_completion_reactions_table.php +++ b/database/migrations/2026_02_15_221606_create_crew_patch_completion_reactions_table.php @@ -13,6 +13,9 @@ return new class extends Migration { Schema::create('crew_patch_completion_reactions', function (Blueprint $table) { $table->id(); + $table->foreignId('crew_patch_completion_id')->constrained()->cascadeOnDelete(); + $table->string('reaction'); + $table->foreignId('user_id')->constrained()->cascadeOnDelete(); $table->timestamps(); }); } diff --git a/database/migrations/2026_02_15_222339_create_categories_table.php b/database/migrations/2026_02_15_222339_create_categories_table.php index 24c1532..3b316e6 100644 --- a/database/migrations/2026_02_15_222339_create_categories_table.php +++ b/database/migrations/2026_02_15_222339_create_categories_table.php @@ -13,8 +13,13 @@ return new class extends Migration { Schema::create('categories', function (Blueprint $table) { $table->id(); + $table->string('name'); $table->timestamps(); }); + + Schema::table('categories', function (Blueprint $table) { + $table->foreignId('category_id')->constrained()->cascadeOnDelete(); + }); } /**