From fee8523c8c19371a8f7fc14a29354ceffc15f6af Mon Sep 17 00:00:00 2001
From: Jacques Bodin-Hullin <j.bodinhullin@monsieurbiz.com>
Date: Wed, 15 Sep 2021 23:03:33 +0200
Subject: [PATCH 1/2] Update symfony.lock

---
 symfony.lock | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/symfony.lock b/symfony.lock
index 46e52e6..ba834de 100644
--- a/symfony.lock
+++ b/symfony.lock
@@ -91,6 +91,9 @@
     "doctrine/dbal": {
         "version": "2.12.0"
     },
+    "doctrine/deprecations": {
+        "version": "v0.5.3"
+    },
     "doctrine/doctrine-bundle": {
         "version": "1.12",
         "recipe": {

From 5356484ae46e270f4e10f6dee453d9f28c83c2da Mon Sep 17 00:00:00 2001
From: Jacques Bodin-Hullin <j.bodinhullin@monsieurbiz.com>
Date: Wed, 15 Sep 2021 23:05:20 +0200
Subject: [PATCH 2/2] On shipment deletion cascade slot deletion & remove
 orphan slots.

---
 src/Migrations/Version20210915210206.php   | 38 ++++++++++++++++++++++
 src/Resources/config/doctrine/Slot.orm.xml |  2 +-
 2 files changed, 39 insertions(+), 1 deletion(-)
 create mode 100644 src/Migrations/Version20210915210206.php

diff --git a/src/Migrations/Version20210915210206.php b/src/Migrations/Version20210915210206.php
new file mode 100644
index 0000000..3076023
--- /dev/null
+++ b/src/Migrations/Version20210915210206.php
@@ -0,0 +1,38 @@
+<?php
+
+/*
+ * This file is part of Monsieur Biz' Shipping Slot plugin for Sylius.
+ *
+ * (c) Monsieur Biz <sylius@monsieurbiz.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+declare(strict_types=1);
+
+namespace MonsieurBiz\SyliusShippingSlotPlugin\Migrations;
+
+use Doctrine\DBAL\Schema\Schema;
+use Doctrine\Migrations\AbstractMigration;
+
+final class Version20210915210206 extends AbstractMigration
+{
+    public function getDescription(): string
+    {
+        return 'Cascade shipment deletion to slot deletion. Also remove slots without shipment.';
+    }
+
+    public function up(Schema $schema): void
+    {
+        $this->addSql('DELETE FROM monsieurbiz_shipping_slot_slot WHERE shipment_id IS NULL');
+        $this->addSql('ALTER TABLE monsieurbiz_shipping_slot_slot DROP FOREIGN KEY FK_3BD6F1F67BE036FC');
+        $this->addSql('ALTER TABLE monsieurbiz_shipping_slot_slot ADD CONSTRAINT FK_3BD6F1F67BE036FC FOREIGN KEY (shipment_id) REFERENCES sylius_shipment (id) ON DELETE CASCADE');
+    }
+
+    public function down(Schema $schema): void
+    {
+        $this->addSql('ALTER TABLE monsieurbiz_shipping_slot_slot DROP FOREIGN KEY FK_3BD6F1F67BE036FC');
+        $this->addSql('ALTER TABLE monsieurbiz_shipping_slot_slot ADD CONSTRAINT FK_3BD6F1F67BE036FC FOREIGN KEY (shipment_id) REFERENCES sylius_shipment (id) ON DELETE SET NULL');
+    }
+}
diff --git a/src/Resources/config/doctrine/Slot.orm.xml b/src/Resources/config/doctrine/Slot.orm.xml
index 00bd5f4..a7b9b5f 100644
--- a/src/Resources/config/doctrine/Slot.orm.xml
+++ b/src/Resources/config/doctrine/Slot.orm.xml
@@ -16,7 +16,7 @@
             <gedmo:timestampable on="update"/>
         </field>
         <one-to-one field="shipment" target-entity="Sylius\Component\Shipping\Model\ShipmentInterface" inversed-by="slot">
-            <join-column name="shipment_id" referenced-column-name="id" nullable="true" on-delete="SET NULL" />
+            <join-column name="shipment_id" referenced-column-name="id" nullable="true" on-delete="CASCADE" />
         </one-to-one>
     </entity>
 </doctrine-mapping>