Skip to content

Commit cfe3ef6

Browse files
committed
Add resume delete option
1 parent 5c0ef98 commit cfe3ef6

2 files changed

Lines changed: 30 additions & 2 deletions

File tree

src/main/java/org/bytefight/webserver/user/application/UserService.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public FileRecord uploadResume(MultipartFile file, UUID userUuid) throws IOExcep
112112

113113
String lower = fileName.toLowerCase();
114114

115-
Set<String> allowed_type = Set.of(".pdf", ".doc", ".docx");
115+
Set<String> allowed_type = Set.of(".pdf");
116116

117117
boolean valid = allowed_type.stream().anyMatch(lower::endsWith);
118118

@@ -133,6 +133,20 @@ public FileRecord uploadResume(MultipartFile file, UUID userUuid) throws IOExcep
133133
return newResume;
134134
}
135135

136+
@Transactional
137+
public void deleteResume(UUID userUuid) {
138+
User user = userRepository.findByUuid(userUuid).orElseThrow();
139+
FileRecord resume = user.getResume();
140+
141+
if (resume == null) {
142+
throw new NoSuchElementException("No resume found");
143+
}
144+
145+
user.setResume(null);
146+
userRepository.save(user);
147+
storageService.delete(resume.getUuid().toString());
148+
}
149+
136150
public ResumeDto getResume(UUID userUuid) {
137151
User user = userRepository.findByUuid(userUuid).orElseThrow();
138152
FileRecord resume = user.getResume();

src/main/java/org/bytefight/webserver/user/infra/UserController.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import lombok.RequiredArgsConstructor;
77

88
import java.io.IOException;
9+
import java.util.NoSuchElementException;
910

1011
import org.bytefight.webserver.storage.application.LocalStorageService;
1112
import org.bytefight.webserver.storage.domain.FileRecord;
@@ -44,12 +45,25 @@ public ResponseEntity<Void> uploadResume(
4445
}
4546
}
4647

48+
@DeleteMapping(value = "/resume")
49+
@Operation(
50+
operationId = "deleteResume",
51+
summary = "Delete the authenticated user's resume")
52+
public ResponseEntity<Void> deleteResume(@AuthenticationPrincipal User user) {
53+
userService.deleteResume(user.getUuid());
54+
return ResponseEntity.noContent().build();
55+
}
56+
4757
@GetMapping(value = "/resume")
4858
@Operation(
4959
operationId = "getResume",
5060
summary = "Get the authenticated user's resume + a short-lived download link")
5161
@Transactional
5262
public ResponseEntity<ResumeDto> getResume(@AuthenticationPrincipal User user) {
53-
return ResponseEntity.ok(userService.getResume(user.getUuid()));
63+
try {
64+
return ResponseEntity.ok(userService.getResume(user.getUuid()));
65+
} catch(NoSuchElementException e) {
66+
return ResponseEntity.notFound().build();
67+
}
5468
}
5569
}

0 commit comments

Comments
 (0)