diff --git a/src/main/java/dev/barboud/taglens/controller/ImageController.java b/src/main/java/dev/barboud/taglens/controller/ImageController.java index b8b4fd2..a6b976f 100644 --- a/src/main/java/dev/barboud/taglens/controller/ImageController.java +++ b/src/main/java/dev/barboud/taglens/controller/ImageController.java @@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import java.util.List; import java.util.Map; import java.util.UUID; @@ -52,4 +53,12 @@ public ResponseEntity deleteImage( return ResponseEntity.noContent().build(); } + @GetMapping("/my") + public ResponseEntity> getMyImages( + @CookieValue("session_id") UUID sessionId + ) { + List imageResponseDto = imageService.getMyImages(sessionId); + return ResponseEntity.ok(imageResponseDto); + } + } diff --git a/src/main/java/dev/barboud/taglens/repository/ImageRepository.java b/src/main/java/dev/barboud/taglens/repository/ImageRepository.java index 7debe8f..3edf766 100644 --- a/src/main/java/dev/barboud/taglens/repository/ImageRepository.java +++ b/src/main/java/dev/barboud/taglens/repository/ImageRepository.java @@ -1,5 +1,6 @@ package dev.barboud.taglens.repository; +import dev.barboud.taglens.dto.image.ImageResponseDto; import dev.barboud.taglens.model.Image; import lombok.RequiredArgsConstructor; import org.springframework.jdbc.core.JdbcTemplate; @@ -60,4 +61,24 @@ public void deleteImage(UUID imageId) { jdbcTemplate.update(sql, imageId); } + public List findImagesByUserId(UUID userId) { + String sql = """ + SELECT id, user_id, storage_key, content_type, file_size, created_at + FROM images + WHERE user_id = ? + """; + List results = jdbcTemplate.query(sql, (rs, rowNum) -> { + Image image = new Image(); + image.setId(UUID.fromString(rs.getString("id"))); + image.setUserId(UUID.fromString(rs.getString("user_id"))); + image.setStorageKey(rs.getString("storage_key")); + image.setContentType(rs.getString("content_type")); + image.setFileSize(rs.getLong("file_size")); + image.setCreatedAt(rs.getTimestamp("created_at").toInstant()); + return image; + }, userId); + + return results; + } + } \ 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 662aca8..99b399d 100644 --- a/src/main/java/dev/barboud/taglens/service/ImageService.java +++ b/src/main/java/dev/barboud/taglens/service/ImageService.java @@ -10,6 +10,7 @@ import org.springframework.web.multipart.MultipartFile; +import java.util.List; import java.util.UUID; @Service @@ -101,4 +102,21 @@ public void deleteImage(UUID imageId, UUID sessionId) { storageService.delete(image.getStorageKey()); imageRepository.deleteImage(imageId); } + + public List getMyImages(UUID sessionId){ + Session session = sessionRepository.findValidSession(sessionId) + .orElseThrow(() -> new RuntimeException("Unauthorized")); + + List images = imageRepository.findImagesByUserId(session.getUserId()); + + return images.stream() + .map(image -> new ImageResponseDto( + image.getId(), + image.getContentType(), + image.getFileSize(), + image.getStorageKey() + )) + .toList(); + + } }