From 3d858e3a70b02c813ae01d0854c74ac7510712d7 Mon Sep 17 00:00:00 2001 From: Salem Ba-Rabuod Date: Wed, 29 Jul 2026 20:05:50 +0200 Subject: [PATCH] feat: user able to delete thier images --- README.md | 2 +- .../barboud/taglens/controller/ImageController.java | 13 +++++++------ .../barboud/taglens/repository/ImageRepository.java | 8 ++++++++ .../dev/barboud/taglens/service/ImageService.java | 13 +++++++++++++ 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index bcf72fb..1137530 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,6 @@ - `POST /images/upload` Upload image - `GET /images/{id}` Get image link +- `DELETE /images/{id}` Delete my image - `GET /images/my` My uploaded images - `GET /images` Home / search images **_Public_** -- `DELETE /images/{id}` Delete my image \ No newline at end of file diff --git a/src/main/java/dev/barboud/taglens/controller/ImageController.java b/src/main/java/dev/barboud/taglens/controller/ImageController.java index 7cbb973..b8b4fd2 100644 --- a/src/main/java/dev/barboud/taglens/controller/ImageController.java +++ b/src/main/java/dev/barboud/taglens/controller/ImageController.java @@ -44,11 +44,12 @@ public ResponseEntity> getImageLink( } -// -// @DeleteMapping -// public ResponseEntity deleteImage(@RequestParam String key) { -// imageService.deleteImage(key); -// return ResponseEntity.noContent().build(); -// } + @DeleteMapping("/{id}") + public ResponseEntity deleteImage( + @PathVariable UUID id, + @CookieValue("session_id") UUID sessionId) { + imageService.deleteImage(id, sessionId); + return ResponseEntity.noContent().build(); + } } diff --git a/src/main/java/dev/barboud/taglens/repository/ImageRepository.java b/src/main/java/dev/barboud/taglens/repository/ImageRepository.java index ef9ceda..7debe8f 100644 --- a/src/main/java/dev/barboud/taglens/repository/ImageRepository.java +++ b/src/main/java/dev/barboud/taglens/repository/ImageRepository.java @@ -52,4 +52,12 @@ public Optional findImageById(UUID imageId) { return results.stream().findFirst(); } + public void deleteImage(UUID imageId) { + String sql = """ + DELETE FROM images + WHERE id = ? + """; + jdbcTemplate.update(sql, imageId); + } + } \ No newline at end of file diff --git a/src/main/java/dev/barboud/taglens/service/ImageService.java b/src/main/java/dev/barboud/taglens/service/ImageService.java index f42bd5b..662aca8 100644 --- a/src/main/java/dev/barboud/taglens/service/ImageService.java +++ b/src/main/java/dev/barboud/taglens/service/ImageService.java @@ -88,4 +88,17 @@ public String getImageLink(UUID imageId, UUID sessionId) { return storageService.getLink(image.getStorageKey(), 15); } + + public void deleteImage(UUID imageId, UUID sessionId) { + Session session = sessionRepository.findValidSession(sessionId) + .orElseThrow(() -> new RuntimeException("Unauthorized")); + Image image = imageRepository.findImageById(imageId) + .orElseThrow(() -> new RuntimeException("Not found")); + if (!image.getUserId().equals(session.getUserId())) { + throw new RuntimeException("Not found"); + } + + storageService.delete(image.getStorageKey()); + imageRepository.deleteImage(imageId); + } }