From b8f30cfea67789361d8fe33ee4e4c56141998c66 Mon Sep 17 00:00:00 2001 From: Nicola Fulvio Calabria Date: Thu, 23 Mar 2023 21:55:00 +0100 Subject: [PATCH] added delete collection --- .../java/it/inaf/oats/vospace/CollectionsController.java | 8 +++++--- .../java/it/inaf/oats/vospace/CollectionsService.java | 5 +++-- .../it/inaf/oats/vospace/persistence/CollectionsDAO.java | 7 +++---- .../inaf/oats/vospace/persistence/CollectionsDAOTest.java | 2 +- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/main/java/it/inaf/oats/vospace/CollectionsController.java b/src/main/java/it/inaf/oats/vospace/CollectionsController.java index b28ce23..a28ff48 100644 --- a/src/main/java/it/inaf/oats/vospace/CollectionsController.java +++ b/src/main/java/it/inaf/oats/vospace/CollectionsController.java @@ -15,9 +15,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** @@ -59,14 +59,16 @@ public class CollectionsController { } // delete collection by id - @DeleteMapping(value = "/collections") + @DeleteMapping(value = "/collections/{collectionId}") public ResponseEntity deleteCollection( - @RequestParam("id") Long id, User principal) { + @PathVariable("collectionId") Long id, User principal) { LOG.debug("delete collection called with id {} for user {}", id, principal.getName()); collectionsService.deleteCollectionById(id, principal.getName()); + // TODO: manage case collection not found or request by someone who isn't + // the owner return ResponseEntity.ok("Collection deleted"); } diff --git a/src/main/java/it/inaf/oats/vospace/CollectionsService.java b/src/main/java/it/inaf/oats/vospace/CollectionsService.java index 79e8905..eaba3e0 100644 --- a/src/main/java/it/inaf/oats/vospace/CollectionsService.java +++ b/src/main/java/it/inaf/oats/vospace/CollectionsService.java @@ -52,8 +52,9 @@ public class CollectionsService { public void deleteCollectionById(Long collectionId, String userId) { if(isUserAuthenticated(userId)) { - // TODO: Implement delete - throw new UnsupportedOperationException("delete collection"); + collectionsDAO.deleteCollection(collectionId, userId); + // TODO: throw exceptions if collection not found or deletion requested + // by someone who is not the owner } else { throw new PermissionDeniedException("Authentication required"); } diff --git a/src/main/java/it/inaf/oats/vospace/persistence/CollectionsDAO.java b/src/main/java/it/inaf/oats/vospace/persistence/CollectionsDAO.java index d520bfc..66a0083 100644 --- a/src/main/java/it/inaf/oats/vospace/persistence/CollectionsDAO.java +++ b/src/main/java/it/inaf/oats/vospace/persistence/CollectionsDAO.java @@ -83,11 +83,10 @@ public class CollectionsDAO { return nc; } - public void deleteCollection(Long collectionId) { - // TODO: this is just a stub for development. - String sql = "DELETE FROM collections WHERE collection_id = ?"; + public void deleteCollection(Long collectionId, String userId) { + String sql = "DELETE FROM collections WHERE collection_id = ? AND owner_id = ?"; - jdbcTemplate.update(sql, collectionId); + jdbcTemplate.update(sql, collectionId, userId); } private NodeCollection getNodeCollectionFromResultset(ResultSet rs) diff --git a/src/test/java/it/inaf/oats/vospace/persistence/CollectionsDAOTest.java b/src/test/java/it/inaf/oats/vospace/persistence/CollectionsDAOTest.java index 5b2d527..7b92129 100644 --- a/src/test/java/it/inaf/oats/vospace/persistence/CollectionsDAOTest.java +++ b/src/test/java/it/inaf/oats/vospace/persistence/CollectionsDAOTest.java @@ -52,7 +52,7 @@ public class CollectionsDAOTest { for(NodeCollection nc : ncl) { collectionsDAO.deleteCollection( - nc.getId() + nc.getId(), "pippo" ); } -- GitLab