diff --git a/database/migrations/2026_03_02_000000_create_admin_roadmap_tables.php b/database/migrations/2026_03_02_000000_create_admin_roadmap_tables.php new file mode 100644 index 0000000..c786e5d --- /dev/null +++ b/database/migrations/2026_03_02_000000_create_admin_roadmap_tables.php @@ -0,0 +1,68 @@ +id(); + $table->string('title', 200); + $table->text('description')->nullable(); + $table->longText('content')->nullable(); + $table->string('category', 30)->default('general'); + $table->string('status', 20)->default('planned'); + $table->string('priority', 10)->default('medium'); + $table->string('phase', 30)->default('phase_1'); + $table->date('start_date')->nullable(); + $table->date('end_date')->nullable(); + $table->tinyInteger('progress')->unsigned()->default(0); + $table->string('color', 7)->default('#3B82F6'); + $table->integer('sort_order')->default(0); + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + $table->timestamps(); + $table->softDeletes(); + + $table->index('category'); + $table->index('status'); + $table->index('phase'); + $table->index('priority'); + }); + + Schema::create('admin_roadmap_milestones', function (Blueprint $table) { + $table->id(); + $table->unsignedBigInteger('plan_id'); + $table->string('title', 255); + $table->text('description')->nullable(); + $table->string('status', 20)->default('pending'); + $table->date('due_date')->nullable(); + $table->timestamp('completed_at')->nullable(); + $table->unsignedBigInteger('assignee_id')->nullable(); + $table->integer('sort_order')->default(0); + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + $table->timestamps(); + $table->softDeletes(); + + $table->foreign('plan_id') + ->references('id') + ->on('admin_roadmap_plans') + ->cascadeOnDelete(); + + $table->index('status'); + $table->index('due_date'); + }); + } + + public function down(): void + { + Schema::dropIfExists('admin_roadmap_milestones'); + Schema::dropIfExists('admin_roadmap_plans'); + } +};