Daniel Bohry 1 місяць тому
батько
коміт
e75ba377e6

+ 2 - 2
src/main/java/com/lhamacorp/knotes/api/NoteController.java

@@ -28,8 +28,8 @@ public class NoteController {
 
     @GetMapping("{id}/metadata")
     public ResponseEntity<NoteMetadata> getMetadata(@PathVariable String id) {
-        Note note = service.findById(id);
-        return ResponseEntity.ok().body(NoteMetadata.from(note));
+        NoteMetadata metadata = service.findMetadataById(id);
+        return ResponseEntity.ok().body(metadata);
     }
 
     @PostMapping

+ 7 - 0
src/main/java/com/lhamacorp/knotes/repository/NoteRepository.java

@@ -1,9 +1,16 @@
 package com.lhamacorp.knotes.repository;
 
+import com.lhamacorp.knotes.api.dto.NoteMetadata;
 import com.lhamacorp.knotes.domain.Note;
 import org.springframework.data.mongodb.repository.MongoRepository;
+import org.springframework.data.mongodb.repository.Query;
 import org.springframework.stereotype.Repository;
 
+import java.util.Optional;
+
 @Repository
 public interface NoteRepository extends MongoRepository<Note, String> {
+
+    @Query(value = "{ '_id': ?0 }", fields = "{ 'createdAt': 1, 'modifiedAt': 1 }")
+    Optional<Note> findMetadataProjectionById(String id);
 }

+ 7 - 0
src/main/java/com/lhamacorp/knotes/service/NoteService.java

@@ -2,6 +2,7 @@ package com.lhamacorp.knotes.service;
 
 import com.github.f4b6a3.ulid.Ulid;
 import com.github.f4b6a3.ulid.UlidCreator;
+import com.lhamacorp.knotes.api.dto.NoteMetadata;
 import com.lhamacorp.knotes.domain.Note;
 import com.lhamacorp.knotes.exception.NotFoundException;
 import com.lhamacorp.knotes.repository.NoteRepository;
@@ -35,6 +36,12 @@ public class NoteService {
                 .orElseThrow(() -> new NotFoundException("Note with id " + id + " not found!"));
     }
 
+    public NoteMetadata findMetadataById(String id) {
+        Note noteProjection = repository.findMetadataProjectionById(id)
+                .orElseThrow(() -> new NotFoundException("Note with id " + id + " not found!"));
+        return NoteMetadata.from(noteProjection);
+    }
+
     public Note save(String content) {
         Ulid id = UlidCreator.getUlid();