uuid('id')->primary(); $table->foreignId('user_id')->constrained()->cascadeOnDelete(); $table->string('type', 32)->index(); // image, archive, etc. $table->string('status', 32)->default('draft')->index(); $table->string('title')->nullable(); $table->string('slug')->nullable()->unique(); $table->foreignId('category_id')->nullable()->constrained('categories')->nullOnDelete(); $table->text('description')->nullable(); $table->json('tags')->nullable(); $table->string('license', 64)->nullable(); $table->boolean('nsfw')->default(false); $table->boolean('is_scanned')->default(false)->index(); $table->boolean('has_tags')->default(false)->index(); $table->string('preview_path')->nullable(); $table->timestamp('published_at')->nullable()->index(); $table->string('final_path')->nullable(); $table->timestamp('expires_at')->nullable()->index(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down(): void { Schema::dropIfExists('uploads'); } };