Skip to content

Commit

Permalink
implement delete all modifications
Browse files Browse the repository at this point in the history
  • Loading branch information
jamal-khey committed Oct 6, 2023
1 parent 46f952d commit e11b993
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -160,13 +160,15 @@ public ResponseEntity<List<ModificationInfos>> getAllNetworkModification(
@Operation(summary = "Delete network modifications")
@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 = "Network modification UUIDs") @RequestParam(name = "uuids", required = false) List<UUID> 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)
if(networkModificationUuids == null || networkModificationUuids.isEmpty())
networkModificationService.deleteAllNetworkModifications(groupUuid);
else if(!onlyStashed)
networkModificationService.deleteNetworkModifications(groupUuid, networkModificationUuids);
else
networkModificationService.deleteStashedNetworkModifications(groupUuid, networkModificationUuids);//TODO: make a unit test fot this method
networkModificationService.deleteAllStashedNetworkModifications(groupUuid);
return ResponseEntity.ok().build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ public enum Type {
GROOVY_SCRIPT_ERROR(HttpStatus.BAD_REQUEST),
NETWORK_NOT_FOUND(HttpStatus.NOT_FOUND),
VARIANT_NOT_FOUND(HttpStatus.NOT_FOUND),
NOTHING_TO_DELETE(HttpStatus.BAD_REQUEST),
MODIFICATION_GROUP_NOT_FOUND(HttpStatus.NOT_FOUND),
MODIFICATION_NOT_FOUND(HttpStatus.NOT_FOUND),
SWITCH_NOT_FOUND(HttpStatus.NOT_FOUND),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,27 @@ public void deleteModificationGroup(UUID groupUuid, boolean errorOnGroupNotFound
}
}

@Transactional
public int deleteAllModifications(UUID groupUuid) {
ModificationGroupEntity groupEntity = getModificationGroup(groupUuid);
List<ModificationEntity> modifications = getModificationEntityStream(groupUuid).collect(Collectors.toList());
modifications.forEach(groupEntity::removeModification);
int count = modifications.size();
this.modificationRepository.deleteAll(modifications);
return count;
}
@Transactional
public int deleteAllStashedModifications(UUID groupUuid) {
ModificationGroupEntity groupEntity = getModificationGroup(groupUuid);
List<ModificationEntity> modifications = getModificationEntityStream(groupUuid)
.filter(ModificationEntity::getStashed)
.collect(Collectors.toList());
modifications.forEach(groupEntity::removeModification);
int count = modifications.size();
this.modificationRepository.deleteAll(modifications);
return count;
}

@Transactional // To have the find and delete in the same transaction (atomic)
public int deleteModifications(UUID groupUuid, List<UUID> uuids) {
ModificationGroupEntity groupEntity = getModificationGroup(groupUuid);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,17 @@ public void stopBuildRequest(String receiver) {
notificationService.emitCancelBuildMessage(receiver);
}

public void deleteAllNetworkModifications(UUID groupUuid) {
if(networkModificationRepository.deleteAllModifications(groupUuid) == 0) {
throw new NetworkModificationException(NOTHING_TO_DELETE);
}
}

public void deleteAllStashedNetworkModifications(UUID groupUuid) {
if(networkModificationRepository.deleteAllStashedModifications(groupUuid) == 0) {
throw new NetworkModificationException(NOTHING_TO_DELETE);
}
}
public void deleteNetworkModifications(UUID groupUuid, List<UUID> modificationsUuids) {
if (networkModificationRepository.deleteModifications(groupUuid, modificationsUuids) == 0) {
throw new NetworkModificationException(MODIFICATION_NOT_FOUND);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,32 @@ public void testDeleteModification() throws Exception {
mockMvc.perform(delete("/v1/groups/" + TEST_GROUP_ID).queryParam("errorOnGroupNotFound", "false")).andExpect(status().isOk());
}

//test delete all modifications
@Test
public void testDeleteAllModification() throws Exception {
List<ModificationInfos> modificationList = createSomeSwitchModifications(TEST_GROUP_ID, 3);

assertEquals(3, modificationRepository.getModifications(TEST_GROUP_ID, false, true).size());
mockMvc.perform(delete(URI_NETWORK_MODIF_BASE)
.queryParam("groupUuid", TEST_GROUP_ID.toString()))
.andExpect(status().isOk());
assertEquals(0, modificationRepository.getModifications(TEST_GROUP_ID, false, true).size());
}

// @Test
// public void testDeleteAllStashedModification() throws Exception {
// List<ModificationInfos> modificationList = createSomeSwitchModifications(TEST_GROUP_ID, 3);
//
//
// assertEquals(3, modificationRepository.getModifications(TEST_GROUP_ID, false, true).size());
// mockMvc.perform(delete(URI_NETWORK_MODIF_BASE)
// .queryParam("groupUuid", TEST_GROUP_ID.toString())
// .queryParam("stashed", "true"))
// .andExpect(status().isOk());
// assertEquals(0, modificationRepository.getModifications(TEST_GROUP_ID, false, true).size());
// }


@Test
public void testNetworkModificationsWithErrorOnNetworkFlush() throws Exception {
String uriString = URI_NETWORK_MODIF_BASE + "?networkUuid=" + TEST_NETWORK_WITH_FLUSH_ERROR_ID + URI_NETWORK_MODIF_PARAMS;
Expand Down

0 comments on commit e11b993

Please sign in to comment.