[AB-103] adding triggers to update created and updating attributes on tables

fixing error handling in installer
merging change sets to larger operations
adding check constraints
fixing suggestion id handling
applying naming conventions to various columns
adding indices to tables
adding user in server and user locking
This commit is contained in:
Sheldan
2021-02-07 03:06:48 +01:00
parent dac3b0887f
commit 038d5c3832
126 changed files with 1416 additions and 986 deletions

View File

@@ -24,30 +24,30 @@ public class EmbeddedMessage implements Serializable {
@Getter
@ManyToOne
@JoinColumn(name = "embeddedUser", nullable = false)
@JoinColumn(name = "embedded_user_in_server_id", nullable = false)
private AUserInAServer embeddedUser;
@Getter
@ManyToOne
@JoinColumn(name = "embeddingUser", nullable = false)
@JoinColumn(name = "embedding_user_in_server_id", nullable = false)
private AUserInAServer embeddingUser;
@Getter
@ManyToOne
@JoinColumn(name = "originalServer", nullable = false)
@JoinColumn(name = "embedded_server_id", nullable = false)
private AServer embeddedServer;
@Getter
@ManyToOne
@JoinColumn(name = "originalChannel", nullable = false)
@JoinColumn(name = "embedded_channel_id", nullable = false)
private AChannel embeddedChannel;
@Column
@Column(name = "embedded_message_id")
private Long embeddedMessageId;
@Getter
@ManyToOne
@JoinColumn(name = "embeddingServer", nullable = false)
@JoinColumn(name = "embedding_server_id", nullable = false)
private AServer embeddingServer;
@Getter
@@ -55,15 +55,14 @@ public class EmbeddedMessage implements Serializable {
@JoinColumn(name = "embeddingChannel", nullable = false)
private AChannel embeddingChannel;
@Column
@Column(name = "embedding_message_id")
@Id
private Long embeddingMessageId;
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
}

View File

@@ -25,7 +25,7 @@ public class PostedImage {
@Getter
@ManyToOne
@JoinColumn(name = "posting_user_id", nullable = false)
@JoinColumn(name = "author_user_in_server_id", nullable = false)
private AUserInAServer poster;
@Getter
@@ -49,6 +49,9 @@ public class PostedImage {
@Column(name = "created")
private Instant created;
@Column(name = "updated")
private Instant updated;
@Getter
@OneToMany(fetch = FetchType.LAZY,
orphanRemoval = true,
@@ -57,8 +60,4 @@ public class PostedImage {
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
private List<Repost> reposts;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
}

View File

@@ -25,53 +25,49 @@ public class Reminder implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Getter
@Column(name = "id")
private Long id;
@Getter
@ManyToOne
@JoinColumn(name = "remindedUser", nullable = false)
@JoinColumn(name = "user_in_server_id", nullable = false)
private AUserInAServer remindedUser;
@Getter
@Column(name = "message_id")
private Long messageId;
@Getter
@ManyToOne
@JoinColumn(name = "channelId", nullable = false)
@JoinColumn(name = "channel_id", nullable = false)
private AChannel channel;
@Getter
@ManyToOne
@JoinColumn(name = "serverId", nullable = false)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@Column(name = "created")
private Instant reminderDate;
@PrePersist
private void onInsert() {
this.reminderDate = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@PreUpdate
private void onUpdate() {
this.updated = Instant.now();
}
@Getter
@Column(name = "target_date")
private Instant targetDate;
@Getter
@Column(name = "text")
private String text;
@Getter
@Column(name = "reminded")
private boolean reminded;
@Getter
@Setter
@Column(name = "job_trigger_key")
private String jobTriggerKey;
}

View File

@@ -51,17 +51,7 @@ public class Repost {
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@PreUpdate
private void onUpdate() {
this.updated = Instant.now();
}
}

View File

@@ -20,6 +20,7 @@ import java.time.Instant;
public class RepostCheckChannelGroup {
@Id
@Column(name = "id")
private Long id;
@OneToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@@ -32,16 +33,7 @@ public class RepostCheckChannelGroup {
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@PreUpdate
private void onUpdate() {
this.updated = Instant.now();
}
}

View File

@@ -1,6 +1,7 @@
package dev.sheldan.abstracto.utility.models.database;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import lombok.*;
import org.hibernate.annotations.CacheConcurrencyStrategy;
@@ -24,24 +25,30 @@ public class StarboardPost implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "poster", nullable = false)
@JoinColumn(name = "author_user_in_server_id", nullable = false)
private AUserInAServer author;
@Column
@Column(name = "starboard_message_id")
private Long starboardMessageId;
@Column
@Column(name = "post_message_id")
private Long postMessageId;
@ManyToOne
@JoinColumn(name = "channelId", nullable = false)
@JoinColumn(name = "channel_id", nullable = false)
private AChannel starboardChannel;
@Getter
@ManyToOne
@JoinColumn(name = "sourceChannelId", nullable = false)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@ManyToOne
@JoinColumn(name = "source_channel_id", nullable = false)
private AChannel sourceChanel;
@Transient
@@ -50,19 +57,9 @@ public class StarboardPost implements Serializable {
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@PreUpdate
private void onUpdate() {
this.updated = Instant.now();
}
@PostLoad
private void onLoad() {
this.reactionCount = this.reactions.size();
@@ -76,10 +73,10 @@ public class StarboardPost implements Serializable {
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
private List<StarboardPostReaction> reactions;
@Column
@Column(name = "starred_date")
private Instant starredDate;
@Column
@Column(name = "ignored")
private boolean ignored;
public int getReactionCount() {

View File

@@ -22,10 +22,11 @@ public class StarboardPostReaction implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@ManyToOne
@JoinColumn(name = "reactorId", nullable = false)
@JoinColumn(name = "reactor_user_in_server_id", nullable = false)
private AUserInAServer reactor;
@OneToOne
@@ -36,9 +37,7 @@ public class StarboardPostReaction implements Serializable {
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
}

View File

@@ -31,16 +31,16 @@ public class Suggestion implements Serializable {
@Getter
@ManyToOne
@JoinColumn(name = "suggesterId",
nullable = false)
@JoinColumn(name = "suggester_user_in_server_id")
private AUserInAServer suggester;
@Getter
@Column(name = "message_id")
private Long messageId;
@Getter
@ManyToOne
@JoinColumn(name = "channelId")
@JoinColumn(name = "channel_id")
private AChannel channel;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@@ -49,26 +49,18 @@ public class Suggestion implements Serializable {
private AServer server;
@Getter
@Column(name = "suggestion_date")
private Instant suggestionDate;
@Getter
@Enumerated(EnumType.STRING)
@Column(name = "state")
private SuggestionState state;
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@PreUpdate
private void onUpdate() {
this.updated = Instant.now();
}
}

View File

@@ -11,6 +11,6 @@ import java.util.Optional;
public interface SuggestionManagementService {
Suggestion createSuggestion(Member suggester, String text, Message message, Long suggestionId);
Suggestion createSuggestion(AUserInAServer suggester, String text, Message message, Long suggestionId);
Optional<Suggestion> getSuggestion(Long suggestionId);
Optional<Suggestion> getSuggestion(Long suggestionId, Long serverId);
void setSuggestionState(Suggestion suggestion, SuggestionState newState);
}