From cda62bd5e43cd16dfcc0326509935e526d1febe6 Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Wed, 12 Jul 2023 09:49:08 +0200 Subject: [PATCH] method to delete a community --- .../community/CommunityApiController.java | 16 ++++++++++++++++ .../openaire/community/CommunityService.java | 12 ++++++++++++ .../repository/DbDatasourceRepository.java | 2 ++ .../repository/DbOrganizationRepository.java | 2 ++ .../repository/DbProjectRepository.java | 2 ++ .../repository/DbSubCommunityRepository.java | 2 ++ .../repository/DbSupportOrgRepository.java | 2 ++ 7 files changed, 38 insertions(+) diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityApiController.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityApiController.java index 373ced39..b98ad2c7 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityApiController.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityApiController.java @@ -111,6 +111,22 @@ public class CommunityApiController extends AbstractDnetController { communityService.setCommunity(id, properties); } + @RequestMapping(value = "/community/{id}", produces = { + "application/json" + }, method = RequestMethod.DELETE) + @Operation(summary = "delete a community", description = "delete a community", tags = { + C, W + }) + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "OK"), + @ApiResponse(responseCode = "404", description = "not found"), + @ApiResponse(responseCode = "500", description = "unexpected error") + }) + public void deleteCommunity(@PathVariable final String id, @RequestParam(required = false, defaultValue = "false") final boolean recursive) + throws CommunityException { + communityService.deleteCommunity(id, recursive); + } + @RequestMapping(value = "/community/{id}/projects/{page}/{size}", produces = { "application/json" }, method = RequestMethod.GET) diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityService.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityService.java index bacabd79..f6edb80a 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityService.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityService.java @@ -539,4 +539,16 @@ public class CommunityService { } } + @Transactional + public void deleteCommunity(final String id, final boolean recursive) { + if (recursive) { + dbProjectRepository.deleteByCommunity(id); + dbDatasourceRepository.deleteByCommunity(id); + dbOrganizationRepository.deleteByCommunity(id); + dbSupportOrgRepository.deleteByCommunity(id); + dbSubCommunityRepository.deleteByCommunity(id); + } + dbCommunityRepository.deleteById(id); + } + } diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbDatasourceRepository.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbDatasourceRepository.java index dc23cf31..6afbd38b 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbDatasourceRepository.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbDatasourceRepository.java @@ -12,4 +12,6 @@ import eu.dnetlib.openaire.community.model.DbDatasourcePK; public interface DbDatasourceRepository extends JpaRepository { List findByCommunity(String community); + + void deleteByCommunity(String id); } diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbOrganizationRepository.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbOrganizationRepository.java index 1335108c..105a4fa6 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbOrganizationRepository.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbOrganizationRepository.java @@ -13,4 +13,6 @@ public interface DbOrganizationRepository extends JpaRepository findByCommunity(String community); + void deleteByCommunity(String id); + } diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbProjectRepository.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbProjectRepository.java index f2747dad..6bc46910 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbProjectRepository.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbProjectRepository.java @@ -13,4 +13,6 @@ public interface DbProjectRepository extends JpaRepository findByCommunity(String community, Pageable page); + void deleteByCommunity(String id); + } diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbSubCommunityRepository.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbSubCommunityRepository.java index b81428e2..2b0dc7d3 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbSubCommunityRepository.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbSubCommunityRepository.java @@ -14,4 +14,6 @@ public interface DbSubCommunityRepository extends JpaRepository findByCommunityAndParent(String community, String parent); + void deleteByCommunity(String id); + } diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbSupportOrgRepository.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbSupportOrgRepository.java index fb92f935..78d8798c 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbSupportOrgRepository.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/repository/DbSupportOrgRepository.java @@ -13,4 +13,6 @@ public interface DbSupportOrgRepository extends JpaRepository findByCommunity(String community); + void deleteByCommunity(String id); + }