Hallo,
in einer Entity (Spring Boot) erstelle ich 2 Tabellen: comments und comment_unreads
Sobald ein Kommentar gelesen wird, wird der Eintrag aus der Tabelle comment_unreads gelöscht. Ich hätte nun gerne ein Script, das jede Stunde aufgerufen wird. Alle User, die in der Tabelle comment_unreads enthalten sind, sollen eine E-Mail erhalten, dass sie noch ungelesene Kommentare haben. Ich möchte aber nicht, dass der User jede Stunde diese E-Mail erhält. Die Tabelle comment_unreads enthält die Spalten comment_id und user_profile_id, aber wie füge ich eine neue Spalte (email_sent) hinzu?
in einer Entity (Spring Boot) erstelle ich 2 Tabellen: comments und comment_unreads
Java:
@Entity
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Comments {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long quotationId;
@ManyToOne
@JoinColumn(name = "uid", referencedColumnName = "uid", nullable = false)
private UserProfile user;
@Size(min = 5, max = 300)
private String comment;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "comment_likes", joinColumns = @JoinColumn(name = "comment_id"), inverseJoinColumns = @JoinColumn(name = "user_id"))
private Set<UserProfile> likedBy = new HashSet<>();
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "comment_unreads", joinColumns = @JoinColumn(name = "comment_id"), inverseJoinColumns = @JoinColumn(name = "user_profile_id"))
private Set<UserProfile> readBy = new HashSet<>();
@CreationTimestamp
private LocalDateTime createdAt;
// Update read status
public void markAsReadBy(UserProfile user) {
this.readBy.remove(user);
}
// Method to populate users who have commented on the same quotation
public void populateReadBy(Set<UserProfile> allUsersForQuotation, Long uid) {
allUsersForQuotation.forEach(user -> {
// Exclude the user who created the comment
if (user.getUser().getUid().equals(uid)) {
this.readBy.remove(user);
}
else {
this.readBy.add(user);
}
});
}
}
Sobald ein Kommentar gelesen wird, wird der Eintrag aus der Tabelle comment_unreads gelöscht. Ich hätte nun gerne ein Script, das jede Stunde aufgerufen wird. Alle User, die in der Tabelle comment_unreads enthalten sind, sollen eine E-Mail erhalten, dass sie noch ungelesene Kommentare haben. Ich möchte aber nicht, dass der User jede Stunde diese E-Mail erhält. Die Tabelle comment_unreads enthält die Spalten comment_id und user_profile_id, aber wie füge ich eine neue Spalte (email_sent) hinzu?