From 71ba624a11ca0bf8a0a0745333e0bf08d0b26c19 Mon Sep 17 00:00:00 2001 From: Nicola Fulvio Calabria <nicola.calabria@inaf.it> Date: Thu, 23 Mar 2023 21:56:18 +0100 Subject: [PATCH] added delete collection --- .../ia2/vospace/ui/client/VOSpaceClient.java | 2 +- .../controller/NodeCollectionsController.java | 17 +++++++++++++++++ vospace-ui-frontend/src/api/server/index.js | 2 +- .../src/components/Collections.vue | 10 ++++++++-- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/client/VOSpaceClient.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/client/VOSpaceClient.java index fd0b92c..20d2b6d 100644 --- a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/client/VOSpaceClient.java +++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/client/VOSpaceClient.java @@ -160,7 +160,7 @@ public class VOSpaceClient { public void deleteCollection(Long id, Optional<String> token) { - HttpRequest request = getRequest("/collections?id="+id, token) + HttpRequest request = getRequest("/collections/"+id, token) .header("Accept", useJson ? "application/json" : "text/xml") .header("Content-Type", useJson ? "application/json" : "text/xml") .DELETE() diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/NodeCollectionsController.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/NodeCollectionsController.java index a4773f2..3277dc6 100644 --- a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/NodeCollectionsController.java +++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/controller/NodeCollectionsController.java @@ -17,7 +17,9 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; 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.RestController; @@ -61,4 +63,19 @@ public class NodeCollectionsController extends BaseController { return ResponseEntity.noContent().build(); } + @DeleteMapping(value = "/collections/{collectionId}", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity<?> deleteNodeCollection(User principal, + @PathVariable Long collectionId) + throws Exception + { + + LOG.debug("delete collection {} for user {}", + collectionId, principal.getName()); + + // Call creation logic + client.deleteCollection(collectionId, tokenProvider.getToken()); + + return ResponseEntity.noContent().build(); + } + } diff --git a/vospace-ui-frontend/src/api/server/index.js b/vospace-ui-frontend/src/api/server/index.js index c75aa26..7dde1a2 100644 --- a/vospace-ui-frontend/src/api/server/index.js +++ b/vospace-ui-frontend/src/api/server/index.js @@ -128,7 +128,7 @@ export default { }); }, deleteCollection(collectionId) { - let url = BASE_API_URL + 'collections?id='+collectionId; + let url = BASE_API_URL + 'collections/'+collectionId; return apiRequest({ method: 'DELETE', url: url, diff --git a/vospace-ui-frontend/src/components/Collections.vue b/vospace-ui-frontend/src/components/Collections.vue index c946e92..a6a07de 100644 --- a/vospace-ui-frontend/src/components/Collections.vue +++ b/vospace-ui-frontend/src/components/Collections.vue @@ -13,16 +13,17 @@ <div v-if="collections.length > 0" class="mb-3"> <table class="table b-table table-striped table-hover"> <thead> + <tr> <th>Id</th> <th>Title</th> - <th></th> + <th>Actions</th> </tr> </thead> <tbody> <tr v-for="collection in collections" :key="collection.id"> <td>{{collection.id}}</td> <td>{{collection.title}}</td> - <td></td> + <td><b-icon-trash color="red" @click="deleteCollection(collection.id)"/></td> </tr> </tbody> </table> @@ -41,11 +42,13 @@ </template> <script> +import { BIconTrash } from 'bootstrap-vue' import FAQModal from './modal/FAQModal.vue' import CreateCollectionModal from './modal/CreateCollectionModal.vue' export default { components: { + BIconTrash, FAQModal, CreateCollectionModal }, @@ -60,6 +63,9 @@ export default { methods: { loadCollections() { this.$store.dispatch('loadCollections'); + }, + deleteCollection(id) { + this.$store.dispatch('deleteCollection', id); } } } -- GitLab