Skip to content

Commit

Permalink
make an api to delete only stashed modifications (#337)
Browse files Browse the repository at this point in the history
  • Loading branch information
jamal-khey committed Oct 6, 2023
1 parent 62dacb2 commit fb83b68
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -149,8 +149,12 @@ public ResponseEntity<ModificationInfos> getNetworkModification(
@ApiResponse(responseCode = "200", description = "The network modifications were deleted")
public ResponseEntity<Void> deleteNetworkModifications(
@Parameter(description = "Network modification UUIDs") @RequestParam("uuids") List<UUID> networkModificationUuids,
@Parameter(description = "Group UUID") @RequestParam("groupUuid") UUID groupUuid) {
networkModificationService.deleteNetworkModifications(groupUuid, networkModificationUuids);
@Parameter(description = "Group UUID") @RequestParam("groupUuid") UUID groupUuid,
@Parameter(description = "delete only stashed modifications") @RequestParam(name = "onlyStashed", required = false, defaultValue = "false") Boolean onlyStashed){
if(!onlyStashed)
networkModificationService.deleteNetworkModifications(groupUuid, networkModificationUuids);
else
networkModificationService.deleteStashedNetworkModifications(groupUuid, networkModificationUuids);//TODO: make a unit test fot this method
return ResponseEntity.ok().build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,19 @@ public int deleteModifications(UUID groupUuid, List<UUID> uuids) {
return count;
}

@Transactional // To have the find and delete in the same transaction (atomic)
public int deleteStashedModifications(UUID groupUuid, List<UUID> uuids) {
ModificationGroupEntity groupEntity = getModificationGroup(groupUuid);
List<ModificationEntity> modifications = getModificationEntityStream(groupUuid)
.filter(m -> uuids.contains(m.getId()))
.filter(ModificationEntity::getStashed)
.collect(Collectors.toList());
modifications.forEach(groupEntity::removeModification);
int count = modifications.size();
this.modificationRepository.deleteAll(modifications);
return count;
}

private ModificationGroupEntity getModificationGroup(UUID groupUuid) {
return this.modificationGroupRepository.findById(groupUuid).orElseThrow(() -> new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, groupUuid.toString()));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,12 @@ public void deleteNetworkModifications(UUID groupUuid, List<UUID> modificationsU
}
}

public void deleteStashedNetworkModifications(UUID groupUuid, List<UUID> modificationsUuids) {
if (networkModificationRepository.deleteStashedModifications(groupUuid, modificationsUuids) == 0) {
throw new NetworkModificationException(MODIFICATION_NOT_FOUND);
}
}

@Transactional
public Optional<NetworkModificationResult> moveModifications(UUID groupUuid, UUID originGroupUuid,
UUID before, UUID networkUuid, String variantId,
Expand Down Expand Up @@ -293,4 +299,5 @@ public Optional<NetworkModificationResult> duplicateModificationsInGroup(UUID ta
public void deleteStashedModificationInGroup(UUID groupUuid, boolean errorOnGroupNotFound) {
networkModificationRepository.deleteStashedModificationInGroup(groupUuid, errorOnGroupNotFound);
}

}

0 comments on commit fb83b68

Please sign in to comment.