From 67811f2ac0ec68ca3c948366d9a5a6a038f2b1b7 Mon Sep 17 00:00:00 2001 From: Simon Forsberg Date: Thu, 2 Apr 2026 10:26:40 +0200 Subject: [PATCH 1/4] Refine `Ticket` entity: adjust column definitions, enforce `updatable` constraints, and specify ID generation strategy --- src/main/java/org/example/alfs/entities/Ticket.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/example/alfs/entities/Ticket.java b/src/main/java/org/example/alfs/entities/Ticket.java index 70646b3..b159aaa 100644 --- a/src/main/java/org/example/alfs/entities/Ticket.java +++ b/src/main/java/org/example/alfs/entities/Ticket.java @@ -4,7 +4,6 @@ import lombok.*; import org.example.alfs.enums.TicketStatus; - import java.time.LocalDateTime; import java.util.List; import java.util.UUID; @@ -23,14 +22,14 @@ public class Ticket { @Id - @GeneratedValue + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @Column(nullable = false, length = 255) + @Column(nullable = false, length = 255, updatable = false) private String title; @Basic(fetch = FetchType.LAZY) - @Column(nullable = false, columnDefinition="TEXT") + @Column(nullable = false, columnDefinition = "TEXT", updatable = false) private String description; @Enumerated(EnumType.STRING) @@ -48,7 +47,8 @@ public class Ticket { public void prePersist() { createdAt = LocalDateTime.now(); if (status == null) status = TicketStatus.OPEN; - if (reporterToken == null || reporterToken.isBlank()) reporterToken = UUID.randomUUID().toString(); // Skapa token för anonyma anmälare + if (reporterToken == null || reporterToken.isBlank()) + reporterToken = UUID.randomUUID().toString(); // Skapa token för anonyma anmälare } @PreUpdate From 20e33fa81c74925b146823922811a79af64b144d Mon Sep 17 00:00:00 2001 From: Simon Forsberg Date: Thu, 2 Apr 2026 10:27:28 +0200 Subject: [PATCH 2/4] Update `AuditAction` enum: add new actions (`STATUS_CHANGED`, `UNASSIGNED`, `COMMENT_ADDED`, `ATTACHMENT_ADDED`) --- src/main/java/org/example/alfs/enums/AuditAction.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/example/alfs/enums/AuditAction.java b/src/main/java/org/example/alfs/enums/AuditAction.java index 36076c0..44f2fd3 100644 --- a/src/main/java/org/example/alfs/enums/AuditAction.java +++ b/src/main/java/org/example/alfs/enums/AuditAction.java @@ -2,7 +2,9 @@ public enum AuditAction { CREATED, - UPDATED, + STATUS_CHANGED, ASSIGNED, - COMMENTED + UNASSIGNED, + COMMENT_ADDED, + ATTACHMENT_ADDED } \ No newline at end of file From d6b822226d0036bd905a1eab04a741d86c646b04 Mon Sep 17 00:00:00 2001 From: Simon Forsberg Date: Thu, 2 Apr 2026 10:27:43 +0200 Subject: [PATCH 3/4] Refine `TicketComment` entity and repository: adjust ID generation strategy, define lazy fetching, update column definitions, and fix method naming in repository --- .../org/example/alfs/entities/TicketComment.java | 12 +++++++----- .../alfs/repositories/TicketCommentRepository.java | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/example/alfs/entities/TicketComment.java b/src/main/java/org/example/alfs/entities/TicketComment.java index ffb65fa..48e3727 100644 --- a/src/main/java/org/example/alfs/entities/TicketComment.java +++ b/src/main/java/org/example/alfs/entities/TicketComment.java @@ -19,16 +19,16 @@ public class TicketComment { @Id - @GeneratedValue + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Basic(fetch = FetchType.LAZY) - @Column(nullable = false, columnDefinition="TEXT") + @Column(nullable = false, columnDefinition = "TEXT") private String message; // Möjlighet att skriva internt meddelande (synligt för utredare/admin, inte för anmälare) @Column(nullable = false) - private boolean isInternalNote = false; + private boolean internalNote = false; private LocalDateTime createdAt; @@ -37,9 +37,11 @@ public void prePersist() { createdAt = LocalDateTime.now(); } - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "ticket_id", nullable = false) private Ticket ticket; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "author_id", nullable = true) private User author; } diff --git a/src/main/java/org/example/alfs/repositories/TicketCommentRepository.java b/src/main/java/org/example/alfs/repositories/TicketCommentRepository.java index 4d01ef8..bf4a4b4 100644 --- a/src/main/java/org/example/alfs/repositories/TicketCommentRepository.java +++ b/src/main/java/org/example/alfs/repositories/TicketCommentRepository.java @@ -11,5 +11,5 @@ public interface TicketCommentRepository extends JpaRepository findByTicketIdOrderByCreatedAtAsc(Long ticketId); // Ladda interna meddelanden för utredare/admins, äldst först - List findByTicketIdAndIsInternalNoteOrderByCreatedAtAsc(Long ticketId, boolean isInternalNote); + List findByTicketIdAndInternalNoteOrderByCreatedAtAsc(Long ticketId, boolean isInternalNote); } From 41d74fe215bc45e7be376032e139238a6377088e Mon Sep 17 00:00:00 2001 From: Simon Forsberg Date: Thu, 2 Apr 2026 10:28:04 +0200 Subject: [PATCH 4/4] Refine entity mappings and constraints: update ID generation strategy, enforce non-null constraints, define lazy fetching for relationships, and configure table mapping for `Attachment`. --- src/main/java/org/example/alfs/entities/Attachment.java | 6 ++++-- src/main/java/org/example/alfs/entities/AuditLog.java | 4 +++- src/main/java/org/example/alfs/entities/User.java | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/example/alfs/entities/Attachment.java b/src/main/java/org/example/alfs/entities/Attachment.java index 53bf491..f8fcc48 100644 --- a/src/main/java/org/example/alfs/entities/Attachment.java +++ b/src/main/java/org/example/alfs/entities/Attachment.java @@ -10,6 +10,7 @@ Stores metadata about the file and the file reference s3key. */ @Entity +@Table(name = "attachment") @Getter @Setter @AllArgsConstructor @@ -17,7 +18,7 @@ public class Attachment { @Id - @GeneratedValue + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) @@ -33,6 +34,7 @@ public void prePersist() { uploadedAt = LocalDateTime.now(); } - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "ticket_id", nullable = false) private Ticket ticket; } diff --git a/src/main/java/org/example/alfs/entities/AuditLog.java b/src/main/java/org/example/alfs/entities/AuditLog.java index 103bc9e..04360b3 100644 --- a/src/main/java/org/example/alfs/entities/AuditLog.java +++ b/src/main/java/org/example/alfs/entities/AuditLog.java @@ -20,13 +20,14 @@ public class AuditLog { @Id - @GeneratedValue + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Enumerated(EnumType.STRING) @Column(nullable = false, length = 50) private AuditAction action; + @Column(nullable = false) private String fieldName; @Column(length = 4000) @@ -35,6 +36,7 @@ public class AuditLog { @Column(length = 4000) private String newValue; + @Column(nullable = false) private LocalDateTime createdAt; @PrePersist diff --git a/src/main/java/org/example/alfs/entities/User.java b/src/main/java/org/example/alfs/entities/User.java index 43f85d3..1645d33 100644 --- a/src/main/java/org/example/alfs/entities/User.java +++ b/src/main/java/org/example/alfs/entities/User.java @@ -16,8 +16,8 @@ @NoArgsConstructor public class User { - @GeneratedValue @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false, unique = true, length = 100)