From a5b1539a80de5e37ae549d394c45631244004bfe Mon Sep 17 00:00:00 2001 From: ncoronel Date: Thu, 25 Jun 2026 10:08:29 -0300 Subject: [PATCH] feat(cart): create carritos and carrito_items tables with relationships --- ...026_06_25_000400_create_carritos_table.php | 30 +++++++++++++++ ...6_25_000410_create_carrito_items_table.php | 38 +++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 database/migrations/2026_06_25_000400_create_carritos_table.php create mode 100644 database/migrations/2026_06_25_000410_create_carrito_items_table.php 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'); + } +};