introduced eh-cache as a caching provider instead of caffeine to be used in hibernate (only ram cache is currently possible)

added caching configuration for 2nd level caching in hibernate
added command to clear hibernate caches
changed some interfaces so the api looks a bit more consistent (return the created/updated value)
split user management and user in server management
added try catch block to message received listener execution, to make them independent
moved some feature flag methods to the feature flag service bean instead of the management service, as they used the FeatureEnum directly
fixed feature disable text always rendering
removed some non embed logging
fixed message embed template
added exception logging to message embedding
This commit is contained in:
Sheldan
2020-05-01 22:42:12 +02:00
parent 59dc8c602a
commit f2ce402256
117 changed files with 1125 additions and 288 deletions

View File

@@ -4,8 +4,10 @@ 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;
import javax.persistence.*;
import java.util.Objects;
@Entity
@Table(name="embedded_message")
@@ -14,6 +16,8 @@ import javax.persistence.*;
@NoArgsConstructor
@Getter
@Setter
@Cacheable
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class EmbeddedMessage {
@Getter
@@ -52,4 +56,24 @@ public class EmbeddedMessage {
@Column
@Id
private Long embeddingMessageId;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
EmbeddedMessage that = (EmbeddedMessage) o;
return Objects.equals(embeddedUser, that.embeddedUser) &&
Objects.equals(embeddingUser, that.embeddingUser) &&
Objects.equals(embeddedServer, that.embeddedServer) &&
Objects.equals(embeddedChannel, that.embeddedChannel) &&
Objects.equals(embeddedMessageId, that.embeddedMessageId) &&
Objects.equals(embeddingServer, that.embeddingServer) &&
Objects.equals(embeddingChannel, that.embeddingChannel) &&
Objects.equals(embeddingMessageId, that.embeddingMessageId);
}
@Override
public int hashCode() {
return Objects.hash(embeddedUser, embeddingUser, embeddedServer, embeddedChannel, embeddedMessageId, embeddingServer, embeddingChannel, embeddingMessageId);
}
}

View File

@@ -4,9 +4,11 @@ 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;
import javax.persistence.*;
import java.time.Instant;
import java.util.Objects;
@Entity
@Table(name="reminder")
@@ -15,6 +17,8 @@ import java.time.Instant;
@NoArgsConstructor
@Getter
@Setter
@Cacheable
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Reminder {
@Id
@@ -52,4 +56,24 @@ public class Reminder {
@Getter
private boolean reminded;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Reminder reminder = (Reminder) o;
return reminded == reminder.reminded &&
Objects.equals(id, reminder.id) &&
Objects.equals(remindedUser, reminder.remindedUser) &&
Objects.equals(messageId, reminder.messageId) &&
Objects.equals(channel, reminder.channel) &&
Objects.equals(server, reminder.server) &&
Objects.equals(reminderDate, reminder.reminderDate) &&
Objects.equals(targetDate, reminder.targetDate) &&
Objects.equals(text, reminder.text);
}
@Override
public int hashCode() {
return Objects.hash(id, remindedUser, messageId, channel, server, reminderDate, targetDate, text, reminded);
}
}

View File

@@ -3,10 +3,12 @@ package dev.sheldan.abstracto.utility.models.database;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AUser;
import lombok.*;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import javax.persistence.*;
import java.time.Instant;
import java.util.List;
import java.util.Objects;
@Entity
@Table(name="starboard_post")
@@ -15,6 +17,8 @@ import java.util.List;
@NoArgsConstructor
@Getter
@Setter
@Cacheable
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class StarboardPost {
@Id
@@ -52,6 +56,7 @@ public class StarboardPost {
orphanRemoval = true,
cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name="postId")
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
private List<StarboardPostReaction> reactions;
@Column
@@ -66,4 +71,26 @@ public class StarboardPost {
}
return this.reactions.size();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
StarboardPost post = (StarboardPost) o;
return ignored == post.ignored &&
Objects.equals(id, post.id) &&
Objects.equals(author, post.author) &&
Objects.equals(starboardMessageId, post.starboardMessageId) &&
Objects.equals(postMessageId, post.postMessageId) &&
Objects.equals(starboardChannel, post.starboardChannel) &&
Objects.equals(sourceChanel, post.sourceChanel) &&
Objects.equals(reactionCount, post.reactionCount) &&
Objects.equals(reactions, post.reactions) &&
Objects.equals(starredDate, post.starredDate);
}
@Override
public int hashCode() {
return Objects.hash(id, author, starboardMessageId, postMessageId, starboardChannel, sourceChanel, reactionCount, reactions, starredDate, ignored);
}
}

View File

@@ -2,8 +2,10 @@ package dev.sheldan.abstracto.utility.models.database;
import dev.sheldan.abstracto.core.models.database.AUser;
import lombok.*;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import javax.persistence.*;
import java.util.Objects;
@Entity
@Table(name="starboard_post_reaction")
@@ -12,6 +14,8 @@ import javax.persistence.*;
@NoArgsConstructor
@Getter
@Setter
@Cacheable
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class StarboardPostReaction {
@Id
@@ -26,4 +30,18 @@ public class StarboardPostReaction {
@JoinColumn(name = "postId", nullable = false)
private StarboardPost starboardPost;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
StarboardPostReaction that = (StarboardPostReaction) o;
return Objects.equals(id, that.id) &&
Objects.equals(reactor, that.reactor) &&
Objects.equals(starboardPost, that.starboardPost);
}
@Override
public int hashCode() {
return Objects.hash(id, reactor, starboardPost);
}
}

View File

@@ -8,13 +8,15 @@ import lombok.*;
import javax.persistence.*;
import java.time.Instant;
import java.util.Objects;
@Entity
@Table(name="suggestion")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter @Setter
@Getter
@Setter
public class Suggestion {
@Id
@@ -48,4 +50,22 @@ public class Suggestion {
@Enumerated(EnumType.STRING)
private SuggestionState state;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Suggestion that = (Suggestion) o;
return Objects.equals(id, that.id) &&
Objects.equals(suggester, that.suggester) &&
Objects.equals(messageId, that.messageId) &&
Objects.equals(channel, that.channel) &&
Objects.equals(server, that.server) &&
Objects.equals(suggestionDate, that.suggestionDate) &&
state == that.state;
}
@Override
public int hashCode() {
return Objects.hash(id, suggester, messageId, channel, server, suggestionDate, state);
}
}