Skip to content

Commit

Permalink
Add DELETE '/consortia/<UUID>/publications/<UUID>/results' endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
bekhzodkurbonboev committed Jul 17, 2023
1 parent c3c925d commit ab2a6f1
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 1 deletion.
18 changes: 17 additions & 1 deletion descriptors/ModuleDescriptor-template.json
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,16 @@
],
"modulePermissions": []
},
{
"methods": [
"DELETE"
],
"pathPattern": "/consortia/{consortiumId}/publications/{publicationId}/results",
"permissionsRequired": [
"consortia.publications-results.item.delete"
],
"modulePermissions": []
},
{
"methods": [
"GET"
Expand Down Expand Up @@ -326,7 +336,8 @@
"consortia.sharing-instances.collection.get",
"consortia.publications.item.post",
"consortia.publications.item.get",
"consortia.publications-results.item.get"
"consortia.publications-results.item.get",
"consortia.publications-results.item.delete"
]
},
{
Expand Down Expand Up @@ -374,6 +385,11 @@
"displayName": "publish coordinator results",
"description": "publish coordinator results"
},
{
"permissionName": "consortia.publications-results.item.delete",
"displayName": "delete publish coordinator results",
"description": "Delete publish coordinator results"
},
{
"permissionName": "consortia.user-tenants.collection.get",
"displayName": "get user tenants",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.folio.consortia.controller;

import static org.springframework.http.HttpStatus.NO_CONTENT;

import java.util.UUID;

import org.folio.consortia.domain.dto.PublicationDetailsResponse;
Expand Down Expand Up @@ -34,4 +36,10 @@ public ResponseEntity<PublicationDetailsResponse> getPublicationDetails(UUID con
public ResponseEntity<PublicationResultCollection> getPublicationResults(UUID consortiumId, UUID publicationId) {
return ResponseEntity.ok(publishCoordinatorService.getPublicationResults(consortiumId, publicationId));
}

@Override
public ResponseEntity<Void> deletePublicationResultById(UUID consortiumId, UUID publicationId) {
publishCoordinatorService.deletePublicationResultById(consortiumId, publicationId);
return ResponseEntity.status(NO_CONTENT).build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,6 @@ public interface PublicationService {
PublicationDetailsResponse getPublicationDetails(UUID consortiumId, UUID publicationId);

PublicationResultCollection getPublicationResults(UUID consortiumId, UUID publicationId);

void deletePublicationResultById(UUID consortiumId, UUID publicationId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -293,4 +293,18 @@ public PublicationResultCollection getPublicationResults(UUID consortiumId, UUID
.totalRecords(ptrEntities.getSize());
}

@Override
public void deletePublicationResultById(UUID consortiumId, UUID publicationId) {
log.debug("deletePublicationResultById:: Trying to delete publication result by consortiumId: {} and publicationId id: {}", consortiumId, publicationId);

consortiumService.checkConsortiumExistsOrThrow(consortiumId);
var publicationStatusEntity = publicationStatusRepository.findById(publicationId)
.orElseThrow(() -> new ResourceNotFoundException("publicationId", String.valueOf(publicationId)));

var ptrEntities = publicationTenantRequestRepository.findByPcStateId(publicationId, PageRequest.of(0, Integer.MAX_VALUE));

publicationStatusRepository.delete(publicationStatusEntity);
publicationTenantRequestRepository.deleteAll(ptrEntities);
log.info("deletePublicationResultById:: Deleted {} of {} expected records for publication {}", ptrEntities.getTotalElements(), publicationStatusEntity.getTotalRecords(), publicationId);
}
}
15 changes: 15 additions & 0 deletions src/main/resources/swagger.api/publications.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,19 @@ paths:
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
delete:
summary: Delete publication result by Id
operationId: deletePublicationResultById
parameters:
- $ref: "#/components/parameters/consortiumId"
- $ref: "#/components/parameters/publicationId"
responses:
"204":
$ref: "#/components/responses/NoContent"
"404":
$ref: "#/components/responses/NotFound"
"500":
$ref: "#/components/responses/InternalServerError"
components:
requestBodies:
Publication:
Expand Down Expand Up @@ -81,6 +94,8 @@ components:
application/json:
schema:
$ref: "schemas/publication_schema.yaml#/PublicationResultCollection"
NoContent:
description: No content
Conflict:
description: Validation errors
content:
Expand Down

0 comments on commit ab2a6f1

Please sign in to comment.