id(); $table->foreignId('scenario_id')->constrained()->cascadeOnDelete(); $table->foreignId('bucket_id')->nullable()->constrained()->nullOnDelete(); $table->string('name'); $table->boolean('is_active')->default(true); $table->decimal('amount', 12, 2); $table->enum('type', ['income', 'expense']); $table->enum('frequency', ['once', 'weekly', 'biweekly', 'monthly', 'quarterly', 'yearly']); $table->date('start_date'); $table->date('end_date')->nullable(); $table->text('description')->nullable(); $table->timestamps(); $table->index(['scenario_id', 'is_active']); $table->index('start_date'); }); } public function down(): void { Schema::dropIfExists('streams'); } };