feat(documents): expose thumbnailAspect + pageCount on Document entity
Adds ThumbnailAspect enum (PORTRAIT | LANDSCAPE) and maps the two nullable columns from V53 as JPA fields so ThumbnailService can populate them and the API can return them unchanged to the frontend. Refs #305 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -50,6 +50,13 @@ public class Document {
|
|||||||
@Column(name = "thumbnail_generated_at")
|
@Column(name = "thumbnail_generated_at")
|
||||||
private LocalDateTime thumbnailGeneratedAt;
|
private LocalDateTime thumbnailGeneratedAt;
|
||||||
|
|
||||||
|
@Enumerated(EnumType.STRING)
|
||||||
|
@Column(name = "thumbnail_aspect", length = 16)
|
||||||
|
private ThumbnailAspect thumbnailAspect;
|
||||||
|
|
||||||
|
@Column(name = "page_count")
|
||||||
|
private Integer pageCount;
|
||||||
|
|
||||||
// Originaler Dateiname beim Upload (z.B. "Brief_Oma_1940.pdf")
|
// Originaler Dateiname beim Upload (z.B. "Brief_Oma_1940.pdf")
|
||||||
@Column(name = "original_filename", nullable = false)
|
@Column(name = "original_filename", nullable = false)
|
||||||
@Schema(requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package org.raddatz.familienarchiv.model;
|
||||||
|
|
||||||
|
public enum ThumbnailAspect {
|
||||||
|
PORTRAIT,
|
||||||
|
LANDSCAPE
|
||||||
|
}
|
||||||
@@ -8,6 +8,7 @@ import org.raddatz.familienarchiv.model.DocumentAnnotation;
|
|||||||
import org.raddatz.familienarchiv.model.DocumentStatus;
|
import org.raddatz.familienarchiv.model.DocumentStatus;
|
||||||
import org.raddatz.familienarchiv.model.Person;
|
import org.raddatz.familienarchiv.model.Person;
|
||||||
import org.raddatz.familienarchiv.model.Tag;
|
import org.raddatz.familienarchiv.model.Tag;
|
||||||
|
import org.raddatz.familienarchiv.model.ThumbnailAspect;
|
||||||
import org.raddatz.familienarchiv.model.TranscriptionBlock;
|
import org.raddatz.familienarchiv.model.TranscriptionBlock;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.jdbc.test.autoconfigure.AutoConfigureTestDatabase;
|
import org.springframework.boot.jdbc.test.autoconfigure.AutoConfigureTestDatabase;
|
||||||
@@ -65,6 +66,40 @@ class DocumentRepositoryTest {
|
|||||||
assertThat(found.get().getStatus()).isEqualTo(DocumentStatus.PLACEHOLDER);
|
assertThat(found.get().getStatus()).isEqualTo(DocumentStatus.PLACEHOLDER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ─── thumbnailAspect + pageCount round-trip ───────────────────────────────
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void save_persistsThumbnailAspectAndPageCount() {
|
||||||
|
Document document = Document.builder()
|
||||||
|
.title("Mit Aspekt")
|
||||||
|
.originalFilename("aspect.pdf")
|
||||||
|
.status(DocumentStatus.UPLOADED)
|
||||||
|
.thumbnailAspect(ThumbnailAspect.LANDSCAPE)
|
||||||
|
.pageCount(7)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
Document saved = documentRepository.save(document);
|
||||||
|
Document found = documentRepository.findById(saved.getId()).orElseThrow();
|
||||||
|
|
||||||
|
assertThat(found.getThumbnailAspect()).isEqualTo(ThumbnailAspect.LANDSCAPE);
|
||||||
|
assertThat(found.getPageCount()).isEqualTo(7);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void save_thumbnailAspectAndPageCount_defaultToNull() {
|
||||||
|
Document document = Document.builder()
|
||||||
|
.title("Ohne Aspekt")
|
||||||
|
.originalFilename("no_aspect.pdf")
|
||||||
|
.status(DocumentStatus.PLACEHOLDER)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
Document saved = documentRepository.save(document);
|
||||||
|
Document found = documentRepository.findById(saved.getId()).orElseThrow();
|
||||||
|
|
||||||
|
assertThat(found.getThumbnailAspect()).isNull();
|
||||||
|
assertThat(found.getPageCount()).isNull();
|
||||||
|
}
|
||||||
|
|
||||||
// ─── findByStatus ─────────────────────────────────────────────────────────
|
// ─── findByStatus ─────────────────────────────────────────────────────────
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user