diff --git a/backend/src/main/java/org/raddatz/familienarchiv/model/AppUser.java b/backend/src/main/java/org/raddatz/familienarchiv/model/AppUser.java index 99531d39..254b3c8f 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/model/AppUser.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/model/AppUser.java @@ -8,6 +8,7 @@ import org.raddatz.familienarchiv.dto.CreateUserRequest; import org.springframework.security.crypto.password.PasswordEncoder; import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.v3.oas.annotations.media.Schema; import java.time.LocalDateTime; import java.util.HashSet; @@ -24,9 +25,11 @@ public class AppUser { @Id @GeneratedValue(strategy = GenerationType.UUID) + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private UUID id; @Column(unique = true, nullable = false) + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private String username; @Column(nullable = false) @@ -36,15 +39,18 @@ public class AppUser { private String email; @Builder.Default + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private boolean enabled = true; // Um User zu sperren ohne sie zu löschen // Ein User kann in mehreren Gruppen sein @ManyToMany(fetch = FetchType.EAGER) @JoinTable(name = "users_groups", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "group_id")) @Builder.Default + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private Set groups = new HashSet<>(); @CreationTimestamp + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private LocalDateTime createdAt; public boolean hasPermission(String permission) { diff --git a/backend/src/main/java/org/raddatz/familienarchiv/model/Document.java b/backend/src/main/java/org/raddatz/familienarchiv/model/Document.java index 28099a43..7c0abb37 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/model/Document.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/model/Document.java @@ -6,6 +6,7 @@ import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.UpdateTimestamp; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import io.swagger.v3.oas.annotations.media.Schema; import java.time.LocalDate; import java.time.LocalDateTime; @@ -23,9 +24,11 @@ public class Document { @Id @GeneratedValue(strategy = GenerationType.UUID) + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private UUID id; @Column(nullable = false) + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private String title; // Der Dateiname im S3 (oder Pfad) @@ -38,11 +41,13 @@ public class Document { // Originaler Dateiname beim Upload (z.B. "Brief_Oma_1940.pdf") @Column(name = "original_filename", nullable = false) + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private String originalFilename; // Der Status hilft uns beim Excel-Import Workflow @Enumerated(EnumType.STRING) @Column(nullable = false) + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private DocumentStatus status; // Metadaten aus dem Brief @@ -70,9 +75,11 @@ public class Document { @CreationTimestamp @Column(updatable = false) + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private LocalDateTime createdAt; @UpdateTimestamp + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private LocalDateTime updatedAt; @ManyToMany(fetch = FetchType.EAGER) diff --git a/backend/src/main/java/org/raddatz/familienarchiv/model/Person.java b/backend/src/main/java/org/raddatz/familienarchiv/model/Person.java index 426265de..aa704a29 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/model/Person.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/model/Person.java @@ -1,5 +1,6 @@ package org.raddatz.familienarchiv.model; +import io.swagger.v3.oas.annotations.media.Schema; import jakarta.persistence.*; import lombok.*; @@ -14,12 +15,15 @@ public class Person { @Id @GeneratedValue(strategy = GenerationType.UUID) + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private UUID id; @Column(nullable = false) + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private String firstName; @Column(nullable = false) + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private String lastName; // Optional: Aliasse für die Suche (z.B. "Opa Hans") diff --git a/backend/src/main/java/org/raddatz/familienarchiv/model/Tag.java b/backend/src/main/java/org/raddatz/familienarchiv/model/Tag.java index dc5c1782..5063ffa3 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/model/Tag.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/model/Tag.java @@ -2,6 +2,7 @@ package org.raddatz.familienarchiv.model; import java.util.UUID; +import io.swagger.v3.oas.annotations.media.Schema; import jakarta.persistence.*; import lombok.*; @@ -13,8 +14,10 @@ import lombok.*; public class Tag { @Id @GeneratedValue(strategy = GenerationType.UUID) + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private UUID id; @Column(unique = true, nullable = false) + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private String name; } diff --git a/backend/src/main/java/org/raddatz/familienarchiv/model/UserGroup.java b/backend/src/main/java/org/raddatz/familienarchiv/model/UserGroup.java index 872cba2c..7b68087b 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/model/UserGroup.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/model/UserGroup.java @@ -1,5 +1,6 @@ package org.raddatz.familienarchiv.model; +import io.swagger.v3.oas.annotations.media.Schema; import jakarta.persistence.*; import lombok.*; @@ -17,9 +18,11 @@ public class UserGroup { @Id @GeneratedValue(strategy = GenerationType.UUID) + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private UUID id; @Column(unique = true, nullable = false) + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private String name; // z.B. "Admins", "Familie Müller" // Wir speichern Rechte als einfache Strings (z.B. "READ_ALL", "WRITE_DOCUMENTS") @@ -27,5 +30,6 @@ public class UserGroup { @CollectionTable(name = "group_permissions", joinColumns = @JoinColumn(name = "group_id")) @Column(name = "permission") @Builder.Default + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private Set permissions = new HashSet<>(); } diff --git a/frontend/src/lib/components/TagInput.svelte b/frontend/src/lib/components/TagInput.svelte index f9f08b37..63350213 100644 --- a/frontend/src/lib/components/TagInput.svelte +++ b/frontend/src/lib/components/TagInput.svelte @@ -80,6 +80,7 @@