From 5bbe6fe9672617bae26f6faef30dcef8e8ae7c38 Mon Sep 17 00:00:00 2001
From: agoer <alexander.goerlitz@student.reutlingen-university.de>
Date: Sat, 15 Jun 2024 13:25:30 +0200
Subject: [PATCH] implemented delete for OPStaff.

---
 opp/core/src/main/java/OPStaff.java            |  5 ++++-
 opp/core/src/main/java/OPStaffServiceImpl.java | 11 ++++++++++-
 opp/core/src/main/java/Repository.java         |  2 ++
 .../src/main/java/JDBCRepository.java          | 12 ++++++++++++
 opp/jdbc-repo-impl/src/test/java/Tests.java    | 18 ++++++++++++++++--
 5 files changed, 44 insertions(+), 4 deletions(-)

diff --git a/opp/core/src/main/java/OPStaff.java b/opp/core/src/main/java/OPStaff.java
index c7d0851..3476a1e 100644
--- a/opp/core/src/main/java/OPStaff.java
+++ b/opp/core/src/main/java/OPStaff.java
@@ -13,7 +13,7 @@ public record OPStaff(
     /**
      * OPStaff commands
      */
-    public static sealed interface Command permits OPStaff.CreateOPStaff, OPStaff.UpdateOPStaff { } //OPStaff.DeleteOPStaff
+    public static sealed interface Command permits OPStaff.CreateOPStaff, OPStaff.DeleteOPStaff, OPStaff.UpdateOPStaff { }
 
     /**
      * Create command to create a new Operation
@@ -31,5 +31,8 @@ public record OPStaff(
             Optional<Specialty> specialty
     ) implements Command {}
 
+    public static record DeleteOPStaff(
+            Id<OPStaff> id
+    ) implements Command {}
 
 }
diff --git a/opp/core/src/main/java/OPStaffServiceImpl.java b/opp/core/src/main/java/OPStaffServiceImpl.java
index 51d90a5..2c62064 100644
--- a/opp/core/src/main/java/OPStaffServiceImpl.java
+++ b/opp/core/src/main/java/OPStaffServiceImpl.java
@@ -15,7 +15,7 @@ public class OPStaffServiceImpl implements OPStaffService{
         return switch (cmd){
             case OPStaff.CreateOPStaff cr -> createOPStaffimpl(cr);
             case OPStaff.UpdateOPStaff up -> updateOPStaffimpl(up);
-            //case OPStaff.Delete del -> delete(del);
+            case OPStaff.DeleteOPStaff del -> deleteOPStaffimpl(del);
         };
     }
 
@@ -47,6 +47,15 @@ public class OPStaffServiceImpl implements OPStaffService{
         return opStaff;
     }
 
+    public OPStaff deleteOPStaffimpl(OPStaff.DeleteOPStaff del) throws Exception{
+
+        OPStaff opStaff = repo.findOPStaff(del.id()).get();
+
+        repo.deleteOPStaff(del.id());
+
+        return opStaff;
+
+    }
 
     public Optional<OPStaff> getOPStaff(Id<OPStaff> id) {
         return repo.findOPStaff(id);
diff --git a/opp/core/src/main/java/Repository.java b/opp/core/src/main/java/Repository.java
index 39a7725..6b91ac7 100644
--- a/opp/core/src/main/java/Repository.java
+++ b/opp/core/src/main/java/Repository.java
@@ -73,4 +73,6 @@ public interface Repository {
 
     List<OPStaff> findOPStaffs();
 
+
+    void deleteOPStaff(Id<OPStaff> id) throws SQLException;
 }
diff --git a/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java b/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java
index 0253e0f..f4617e7 100644
--- a/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java
+++ b/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java
@@ -536,6 +536,18 @@ class JDBCRepository implements Repository
                     "WHERE id = " + sqlValue(opStaff.id().value()) + ";";
   }
 
+  @Override
+  public void deleteOPStaff(Id<OPStaff> id) throws SQLException{
+
+    var opStaff = findOPStaff(id);
+
+    if(opStaff.isPresent()) {
+      conn.createStatement().executeUpdate(
+              "DELETE FROM opstaff WHERE id = " + quoted(id.value()) + ";");
+
+    }
+  }
+
 }
 
 
diff --git a/opp/jdbc-repo-impl/src/test/java/Tests.java b/opp/jdbc-repo-impl/src/test/java/Tests.java
index 651a2a8..e8dadf8 100644
--- a/opp/jdbc-repo-impl/src/test/java/Tests.java
+++ b/opp/jdbc-repo-impl/src/test/java/Tests.java
@@ -226,7 +226,7 @@ public final class Tests
     //assertEquals(operation.date(), testDate);
   }
 
-  //@Test
+  //@Test //getting all the OPStaffs
   public void testGetOPStaffs() {
 
     try{
@@ -242,7 +242,7 @@ public final class Tests
     //assertEquals(operation.date(), testDate);
   }
 
-  @Test
+  //@Test
   public void testUpdateOPStaff() throws Exception{
 
     OPStaff.UpdateOPStaff updateCommand = new OPStaff.UpdateOPStaff(
@@ -254,6 +254,20 @@ public final class Tests
     OPStaff updateOPStaff = opStaffService.process(updateCommand);
 
   }
+
+  //@Test
+  public void testDeleteOPStaff() throws Exception{
+
+    var id = new Id<OPStaff>("b940de7b-a9a3-40e5-b465-12b018390061");
+
+    OPStaff.DeleteOPStaff deleteCommand = new OPStaff.DeleteOPStaff(
+            id
+    );
+
+    OPStaff deleteOPStaff = opStaffService.process(deleteCommand);
+
+  }
+
 }
 
 
-- 
GitLab