diff --git a/database/migrations/2026_06_25_000400_create_carritos_table.php b/database/migrations/2026_06_25_000400_create_carritos_table.php new file mode 100644 index 0000000..e5bb069 --- /dev/null +++ b/database/migrations/2026_06_25_000400_create_carritos_table.php @@ -0,0 +1,30 @@ +id(); + $table->foreignId('user_id')->nullable()->constrained('users')->cascadeOnUpdate()->nullOnDelete(); + $table->string('guest_token')->nullable()->index(); + $table->enum('status', ['active', 'converted', 'abandoned'])->default('active'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('carritos'); + } +}; diff --git a/database/migrations/2026_06_25_000410_create_carrito_items_table.php b/database/migrations/2026_06_25_000410_create_carrito_items_table.php new file mode 100644 index 0000000..8410ad9 --- /dev/null +++ b/database/migrations/2026_06_25_000410_create_carrito_items_table.php @@ -0,0 +1,38 @@ +id(); + $table->foreignId('cart_id')->constrained('carritos')->cascadeOnUpdate()->cascadeOnDelete(); + $table->unsignedBigInteger('producto_variante_id'); + $table->unsignedInteger('cantidad'); + $table->timestamps(); + + $table->foreign('producto_variante_id') + ->references('id') + ->on('productos_variantes') + ->cascadeOnUpdate() + ->cascadeOnDelete(); + + $table->unique(['cart_id', 'producto_variante_id'], 'cart_item_cart_variant_unique'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('carrito_items'); + } +};