[AB-62] adding server id to more tables for easier joins and fixing structure at more places

This commit is contained in:
Sheldan
2021-02-08 01:58:35 +01:00
parent 1352fac40f
commit ea12d67e5f
46 changed files with 188 additions and 150 deletions

View File

@@ -12,6 +12,7 @@ import dev.sheldan.abstracto.assignableroles.models.templates.*;
import dev.sheldan.abstracto.assignableroles.service.management.AssignableRoleManagementService;
import dev.sheldan.abstracto.assignableroles.service.management.AssignableRolePlaceManagementService;
import dev.sheldan.abstracto.assignableroles.service.management.AssignableRolePlacePostManagementService;
import dev.sheldan.abstracto.assignableroles.service.management.AssignableRolePlacePostManagementServiceBean;
import dev.sheldan.abstracto.core.command.exception.AbstractoTemplatedException;
import dev.sheldan.abstracto.core.command.exception.CommandParameterKeyValueWrongTypeException;
import dev.sheldan.abstracto.core.exception.ChannelNotInGuildException;
@@ -92,6 +93,9 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
@Autowired
private AssignableRoleService roleService;
@Autowired
private AssignableRolePlacePostManagementServiceBean assignableRolePlacePostManagementServiceBean;
@Override
public void createAssignableRolePlace(AServer server, String name, AChannel channel, String text) {
if(rolePlaceManagementService.doesPlaceExist(server, name)) {
@@ -241,14 +245,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
emote.setChangeable(false);
log.trace("Setting emote {} to not changeable, because it is part of an assignable role place {} in server {}.", emote.getId(), placeId, serverId);
AssignableRolePlacePost newPost = AssignableRolePlacePost
.builder()
.id(message.getIdLong())
.usedChannel(loadedPlace.getChannel())
.assignablePlace(loadedPlace)
.build();
loadedPlace.getMessagePosts().add(newPost);
AssignableRolePlacePost newPost = assignableRolePlacePostManagementServiceBean.createAssignableRolePlacePost(loadedPlace, message.getIdLong());
assignableRoleManagementServiceBean.addRoleToPlace(loadedPlace, emote, role, description, newPost);
}
@@ -789,16 +786,10 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
log.trace("Storing post {} with {} fields.", message.getId(), embed.getFields().size());
List<AssignableRole> firstRoles = rolesToAdd.subList(usedEmotes, usedEmotes + embed.getFields().size());
usedEmotes += embed.getFields().size();
AssignableRolePlacePost post = AssignableRolePlacePost
.builder()
.id(message.getIdLong())
.usedChannel(updatedPlace.getChannel())
.assignablePlace(updatedPlace)
.build();
AssignableRolePlacePost post = assignableRolePlacePostManagementServiceBean.createAssignableRolePlacePost(updatedPlace, message.getIdLong());
firstRoles.forEach(assignableRole ->
assignableRole.setAssignableRolePlacePost(post)
);
updatedPlace.getMessagePosts().add(post);
} catch (Exception e) {
log.error("Failed to get future.", e);
}

View File

@@ -51,6 +51,7 @@ public class AssignableRoleManagementServiceBean implements AssignableRoleManage
.emote(emote)
.role(role)
.requiredLevel(0)
.server(place.getServer())
.position(maxPosition)
.description(description)
.assignableRolePlacePost(post)

View File

@@ -1,6 +1,7 @@
package dev.sheldan.abstracto.assignableroles.service.management;
import dev.sheldan.abstracto.assignableroles.exceptions.AssignablePlacePostNotFoundException;
import dev.sheldan.abstracto.assignableroles.models.database.AssignableRolePlace;
import dev.sheldan.abstracto.assignableroles.models.database.AssignableRolePlacePost;
import dev.sheldan.abstracto.assignableroles.repository.AssignableRolePlacePostRepository;
import org.springframework.beans.factory.annotation.Autowired;
@@ -14,7 +15,6 @@ public class AssignableRolePlacePostManagementServiceBean implements AssignableR
@Autowired
private AssignableRolePlacePostRepository repository;
@Override
public Optional<AssignableRolePlacePost> findByMessageIdOptional(Long messageId) {
return repository.findById(messageId);
@@ -25,4 +25,17 @@ public class AssignableRolePlacePostManagementServiceBean implements AssignableR
return findByMessageIdOptional(messageId).orElseThrow(() -> new AssignablePlacePostNotFoundException(messageId));
}
@Override
public AssignableRolePlacePost createAssignableRolePlacePost(AssignableRolePlace updatedPlace, Long messageId) {
AssignableRolePlacePost post = AssignableRolePlacePost
.builder()
.id(messageId)
.usedChannel(updatedPlace.getChannel())
.server(updatedPlace.getServer())
.assignablePlace(updatedPlace)
.build();
repository.save(post);
return post;
}
}

View File

@@ -20,6 +20,9 @@
<column name="assignable_place_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="place_post_id" type="BIGINT">
<constraints nullable="true"/>
</column>
@@ -37,6 +40,7 @@
<addForeignKeyConstraint baseColumnNames="role_id" baseTableName="assignable_role" constraintName="fk_assignable_role_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="role" validate="true"/>
<addForeignKeyConstraint baseColumnNames="assignable_place_id" baseTableName="assignable_role" constraintName="fk_assignable_role_place" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="assignable_role_place" validate="true"/>
<addForeignKeyConstraint baseColumnNames="place_post_id" baseTableName="assignable_role" constraintName="fk_assignable_role_post" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="assignable_role_place_post" validate="true"/>
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="assignable_role" constraintName="fk_assignable_role_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS assignable_role_update_trigger ON assignable_role;
CREATE TRIGGER assignable_role_update_trigger BEFORE UPDATE ON assignable_role FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();

View File

@@ -17,12 +17,16 @@
<column name="channel_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
</createTable>
<addForeignKeyConstraint baseColumnNames="assignable_place_id" baseTableName="assignable_role_place_post" constraintName="fk_assignable_role_place_post_place_id" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="assignable_role_place" validate="true"/>
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="assignable_role_place_post" constraintName="fk_assignable_role_place_post_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<addForeignKeyConstraint baseColumnNames="channel_id" baseTableName="assignable_role_place_post" constraintName="fk_assignable_role_place_post_channel" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS assignable_role_place_post_update_trigger ON assignable_role_place_post;

View File

@@ -31,12 +31,12 @@
<column name="assigned_role_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="user_id" type="BIGINT">
<column name="user_in_server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
<addForeignKeyConstraint baseColumnNames="assigned_role_id" baseTableName="assigned_role_in_user" constraintName="fk_assigned_role_in_user_assignable_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="assignable_role" validate="true"/>
<addForeignKeyConstraint baseColumnNames="user_id" baseTableName="assigned_role_in_user" constraintName="fk_assigned_role_in_user_assigned_user" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="assigned_role_user" validate="true"/>
<addForeignKeyConstraint baseColumnNames="user_in_server_id" baseTableName="assigned_role_in_user" constraintName="fk_assigned_role_in_user_assigned_user" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="assigned_role_user" validate="true"/>
</changeSet>
</databaseChangeLog>

View File

@@ -2,6 +2,7 @@ package dev.sheldan.abstracto.assignableroles.models.database;
import dev.sheldan.abstracto.core.models.database.AEmote;
import dev.sheldan.abstracto.core.models.database.ARole;
import dev.sheldan.abstracto.core.models.database.AServer;
import lombok.*;
import org.hibernate.annotations.CacheConcurrencyStrategy;
@@ -35,20 +36,18 @@ public class AssignableRole implements Serializable {
@JoinColumn(name = "role_id", nullable = false)
private ARole role;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@Getter
@Setter
@JoinColumn(name = "assignable_place_id", nullable = false)
private AssignableRolePlace assignablePlace;
@Getter
@Setter
@ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "place_post_id")
private AssignableRolePlacePost assignableRolePlacePost;
@Getter
@Setter
@ManyToMany(mappedBy = "roles")
@Builder.Default
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)

View File

@@ -31,12 +31,12 @@ public class AssignableRolePlace implements Serializable {
@Column(name = "id")
private Long id;
@OneToOne
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name="channel_id")
private AChannel channel;
@OneToOne
@JoinColumn(name="server_id")
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@Column(name = "key")

View File

@@ -1,6 +1,7 @@
package dev.sheldan.abstracto.assignableroles.models.database;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AServer;
import lombok.*;
import org.hibernate.annotations.CacheConcurrencyStrategy;
@@ -26,7 +27,7 @@ public class AssignableRolePlacePost implements Serializable {
@Column(name = "id")
private Long id;
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "channel_id")
private AChannel usedChannel;
@@ -36,9 +37,11 @@ public class AssignableRolePlacePost implements Serializable {
@Column(name = "updated")
private Instant updated;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@Getter
@Setter
@JoinColumn(name = "assignable_place_id", nullable = false)
private AssignableRolePlace assignablePlace;

View File

@@ -33,7 +33,7 @@ public class AssignedRoleUser implements Serializable {
@ManyToMany
@JoinTable(
name = "assigned_role_in_user",
joinColumns = @JoinColumn(name = "user_id"),
joinColumns = @JoinColumn(name = "user_in_server_id"),
inverseJoinColumns = @JoinColumn(name = "assigned_role_id"))
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@Builder.Default

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.assignableroles.service.management;
import dev.sheldan.abstracto.assignableroles.models.database.AssignableRolePlace;
import dev.sheldan.abstracto.assignableroles.models.database.AssignableRolePlacePost;
import java.util.Optional;
@@ -7,4 +8,5 @@ import java.util.Optional;
public interface AssignableRolePlacePostManagementService {
Optional<AssignableRolePlacePost> findByMessageIdOptional(Long messageId);
AssignableRolePlacePost findByMessageId(Long messageId);
AssignableRolePlacePost createAssignableRolePlacePost(AssignableRolePlace updatedPlace, Long messageId);
}

View File

@@ -55,6 +55,7 @@ public class UserExperienceManagementServiceBean implements UserExperienceManage
.builder()
.experience(0L)
.messageCount(0L)
.server(aUserInAServer.getServerReference())
.experienceGainDisabled(false)
.user(aUserInAServer)
.id(aUserInAServer.getUserInServerId())

View File

@@ -28,9 +28,13 @@
<column name="level_id" type="INTEGER">
<constraints nullable="false"/>
</column>
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
<addForeignKeyConstraint baseColumnNames="level_id" baseTableName="user_experience" constraintName="fk_user_experience_level" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="level" referencedTableName="experience_level" validate="true"/>
<addForeignKeyConstraint baseColumnNames="role_id" baseTableName="user_experience" constraintName="fk_user_experience_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="experience_role" validate="true"/>
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="user_experience" constraintName="fk_user_experience_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS user_experience_update_trigger ON user_experience;
CREATE TRIGGER user_experience_update_trigger BEFORE UPDATE ON user_experience FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.experience.models.database;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import lombok.*;
import org.hibernate.annotations.CacheConcurrencyStrategy;
@@ -36,6 +37,10 @@ public class AUserExperience implements Serializable {
@PrimaryKeyJoinColumn
private AUserInAServer user;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
/**
* The total amount of experience the user has in the guild
*/

View File

@@ -27,7 +27,7 @@ public class AllowedInviteLink {
@Column(name = "code")
private String code;
@OneToOne(fetch = FetchType.LAZY)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;

View File

@@ -27,7 +27,7 @@ public class FilteredInviteLink {
@Column(name = "code")
private String code;
@OneToOne(fetch = FetchType.LAZY)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;

View File

@@ -40,14 +40,14 @@ public class Mute implements Serializable {
/**
* The {@link AUserInAServer} which was muted
*/
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "muted_user_in_server_id", nullable = false)
private AUserInAServer mutedUser;
/**
* The {@link AUserInAServer} which casted the mute
*/
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "muting_user_in_server_id", nullable = false)
private AUserInAServer mutingUser;
@@ -84,7 +84,7 @@ public class Mute implements Serializable {
/**
* The channel in which this mute was cast
*/
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "mutingChannel", nullable = false)
private AChannel mutingChannel;

View File

@@ -30,7 +30,7 @@ public class UserNote implements Serializable {
@JoinColumn(name = "server_id", referencedColumnName = "id", nullable = false)
private AServer server;
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_in_server_id", nullable = false)
private AUserInAServer user;

View File

@@ -41,7 +41,7 @@ public class Warning implements Serializable {
*/
@Getter
@Setter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "warned_user_in_server_id", nullable = false)
private AUserInAServer warnedUser;
@@ -50,7 +50,7 @@ public class Warning implements Serializable {
*/
@Getter
@Setter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "warning_user_in_server_id", nullable = false)
private AUserInAServer warningUser;

View File

@@ -28,6 +28,7 @@ public class ModMailMessageManagementServiceBean implements ModMailMessageManage
.author(author)
.messageId(userPostedMessage.getIdLong())
.createdMessageInDM(dmId)
.server(modMailThread.getServer())
.createdMessageInChannel(channelMessageId)
.dmChannel(dmChannel)
.threadReference(modMailThread)

View File

@@ -32,6 +32,7 @@ public class ModMailSubscriberManagementServiceBean implements ModMailSubscriber
ModMailThreadSubscriber subscriber = ModMailThreadSubscriber
.builder()
.server(modMailThread.getServer())
.subscriber(aUserInAServer)
.threadReference(modMailThread)
.build();

View File

@@ -11,8 +11,15 @@
<column name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="mod_mail_message_pkey"/>
</column>
<column name="created_message_in_dm" type="BIGINT" />
<column name="created_message_in_channel" type="BIGINT" />
<column name="created_message_in_dm" type="BIGINT" >
<constraints nullable="true"/>
</column>
<column name="created_message_in_channel" type="BIGINT" >
<constraints nullable="true"/>
</column>
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="anonymous" type="BOOLEAN">
<constraints nullable="true"/>
</column>
@@ -33,6 +40,7 @@
<createIndex indexName="idx_mod_mail_message_thread" tableName="mod_mail_message">
<column name="thread_id"/>
</createIndex>
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="mod_mail_message" constraintName="fk_mod_mail_message_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<addForeignKeyConstraint baseColumnNames="thread_id" baseTableName="mod_mail_message" constraintName="fk_mod_mail_message_thread" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="mod_mail_thread" validate="true"/>
<addForeignKeyConstraint baseColumnNames="author_user_in_server_id" baseTableName="mod_mail_message" constraintName="fk_mod_mail_message_author" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="user_in_server_id" referencedTableName="user_in_server" validate="true"/>
<sql>

View File

@@ -21,9 +21,13 @@
<column name="mod_mail_thread_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
<addForeignKeyConstraint baseColumnNames="user_in_server_id" baseTableName="mod_mail_subscriber" constraintName="fk_mod_mail_thread_subscriber_user" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="user_in_server_id" referencedTableName="user_in_server" validate="true"/>
<addForeignKeyConstraint baseColumnNames="mod_mail_thread_id" baseTableName="mod_mail_subscriber" constraintName="fk_mod_mail_thread_thread" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="mod_mail_thread" validate="true"/>
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="mod_mail_subscriber" constraintName="fk_mod_mail_subscriber_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS mod_mail_subscriber_update_trigger ON mod_mail_subscriber;
CREATE TRIGGER mod_mail_subscriber_update_trigger BEFORE UPDATE ON mod_mail_subscriber FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.modmail.models.database;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import lombok.*;
import org.hibernate.annotations.CacheConcurrencyStrategy;
@@ -42,6 +43,10 @@ public class ModMailMessage implements Serializable {
@Column(name = "created_message_in_channel")
private Long createdMessageInChannel;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
/**
* The {@link AUserInAServer} which authored this message
*/

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.modmail.models.database;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import lombok.*;
import org.hibernate.annotations.CacheConcurrencyStrategy;
@@ -35,6 +36,10 @@ public class ModMailThreadSubscriber {
@JoinColumn(name = "user_in_server_id", nullable = false)
private AUserInAServer subscriber;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
/**
* The thread for which the member is subscribed to
*/

View File

@@ -30,6 +30,7 @@ public class StarboardPostReactorManagementServiceBean implements StarboardPostR
.builder()
.starboardPost(post)
.reactor(user)
.server(user.getServerReference())
.build();
log.info("Persisting the reactor {} for starboard post {} in server {}.", user.getUserReference().getId(), post.getId(), user.getServerReference().getId());
repository.save(reactor);

View File

@@ -27,21 +27,21 @@
<column name="embedded_user_in_server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="embedding_channel" type="BIGINT">
<column name="embedding_channel_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="embedding_server" type="BIGINT">
<column name="embedding_server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="embedding_user_in_server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
<addForeignKeyConstraint baseColumnNames="embedding_channel" baseTableName="embedded_message" constraintName="fk_embed_channel_channel" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel" validate="true"/>
<addForeignKeyConstraint baseColumnNames="embedding_channel_id" baseTableName="embedded_message" constraintName="fk_embed_channel_channel" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel" validate="true"/>
<addForeignKeyConstraint baseColumnNames="embedded_channel_id" baseTableName="embedded_message" constraintName="fk_embed_embedded_channel_id_channel" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel" validate="true"/>
<addForeignKeyConstraint baseColumnNames="embedding_user_in_server_id" baseTableName="embedded_message" constraintName="fk_embedded_user_in_server_id_user" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="user_in_server_id" referencedTableName="user_in_server" validate="true"/>
<addForeignKeyConstraint baseColumnNames="embedded_user_in_server_id" baseTableName="embedded_message" constraintName="fk_embedding_user_in_server_id_user" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="user_in_server_id" referencedTableName="user_in_server" validate="true"/>
<addForeignKeyConstraint baseColumnNames="embedding_server" baseTableName="embedded_message" constraintName="fk_embedding_server_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<addForeignKeyConstraint baseColumnNames="embedding_server_id" baseTableName="embedded_message" constraintName="fk_embedding_server_id_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<addForeignKeyConstraint baseColumnNames="embedded_server_id" baseTableName="embedded_message" constraintName="fk_embed_embedded_server_id_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS embedded_message_update_trigger ON embedded_message;

View File

@@ -21,9 +21,13 @@
<column name="post_id" type="BIGINT">
<constraints nullable="true"/>
</column>
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
<addForeignKeyConstraint baseColumnNames="reactor_user_in_server_id" baseTableName="starboard_post_reaction" constraintName="fk_starboard_post_reaction_reactor" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="user_in_server_id" referencedTableName="user_in_server" validate="true"/>
<addForeignKeyConstraint baseColumnNames="post_id" baseTableName="starboard_post_reaction" constraintName="fk_starboard_post_reaction_post" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="starboard_post" validate="true"/>
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="starboard_post_reaction" constraintName="fk_starboard_post_reaction_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS starboard_post_reaction_update_trigger ON starboard_post_reaction;
CREATE TRIGGER starboard_post_reaction_update_trigger BEFORE UPDATE ON starboard_post_reaction FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();

View File

@@ -23,22 +23,22 @@ import java.time.Instant;
public class EmbeddedMessage implements Serializable {
@Getter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "embedded_user_in_server_id", nullable = false)
private AUserInAServer embeddedUser;
@Getter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "embedding_user_in_server_id", nullable = false)
private AUserInAServer embeddingUser;
@Getter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "embedded_server_id", nullable = false)
private AServer embeddedServer;
@Getter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "embedded_channel_id", nullable = false)
private AChannel embeddedChannel;
@@ -46,13 +46,13 @@ public class EmbeddedMessage implements Serializable {
private Long embeddedMessageId;
@Getter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "embedding_server_id", nullable = false)
private AServer embeddingServer;
@Getter
@ManyToOne
@JoinColumn(name = "embeddingChannel", nullable = false)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "embedding_channel_id", nullable = false)
private AChannel embeddingChannel;
@Column(name = "embedding_message_id")

View File

@@ -24,17 +24,17 @@ import java.util.List;
public class PostedImage {
@Getter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "author_user_in_server_id", nullable = false)
private AUserInAServer poster;
@Getter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@Getter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "posted_channel_id", nullable = false)
private AChannel postedChannel;

View File

@@ -29,7 +29,7 @@ public class Reminder implements Serializable {
private Long id;
@Getter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_in_server_id", nullable = false)
private AUserInAServer remindedUser;
@@ -38,12 +38,12 @@ public class Reminder implements Serializable {
private Long messageId;
@Getter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "channel_id", nullable = false)
private AChannel channel;
@Getter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;

View File

@@ -27,13 +27,13 @@ public class Repost {
private RepostIdentifier repostId;
@Getter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@MapsId("userInServerId")
@JoinColumn(name = "user_in_server_id", referencedColumnName = "user_in_server_id", nullable = false)
private AUserInAServer poster;
@Getter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;

View File

@@ -38,16 +38,16 @@ public class StarboardPost implements Serializable {
@Column(name = "post_message_id")
private Long postMessageId;
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "channel_id", nullable = false)
private AChannel starboardChannel;
@Getter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "source_channel_id", nullable = false)
private AChannel sourceChanel;

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.utility.models.database;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import lombok.*;
import org.hibernate.annotations.CacheConcurrencyStrategy;
@@ -25,15 +26,18 @@ public class StarboardPostReaction implements Serializable {
@Column(name = "id")
private Long id;
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "reactor_user_in_server_id", nullable = false)
private AUserInAServer reactor;
@OneToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "post_id")
private StarboardPost starboardPost;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@Column(name = "created")
private Instant created;

View File

@@ -30,7 +30,7 @@ public class Suggestion implements Serializable {
private ServerSpecificId suggestionId;
@Getter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "suggester_user_in_server_id")
private AUserInAServer suggester;
@@ -39,7 +39,7 @@ public class Suggestion implements Serializable {
private Long messageId;
@Getter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "channel_id")
private AChannel channel;

View File

@@ -63,6 +63,9 @@
<column name="enabled" type="BOOLEAN"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="command_id" type="BIGINT">
<constraints nullable="false"/>
</column>
@@ -71,6 +74,7 @@
</column>
</createTable>
<addForeignKeyConstraint baseColumnNames="group_id" baseTableName="channel_group_command" constraintName="fk_channel_group_command_channel_group" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel_group" validate="true"/>
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="channel_group_command" constraintName="fk_channel_group_command_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<addForeignKeyConstraint baseColumnNames="command_id" baseTableName="channel_group_command" constraintName="fk_channel_group_command_command" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="command" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS channel_group_command_update_trigger ON channel_group_command;

View File

@@ -66,54 +66,30 @@
CREATE TRIGGER command_in_server_insert_trigger BEFORE INSERT ON command_in_server FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
<changeSet author="Sheldan" id="command_in_server_immune_roles-table">
<createTable tableName="command_in_server_immune_roles">
<column name="command_in_server_command_in_server_id" type="BIGINT">
<changeSet author="Sheldan" id="command_in_server_immune_role-table">
<createTable tableName="command_in_server_immune_role">
<column name="command_in_server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="immune_roles_id" type="BIGINT">
<column name="role_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
<addForeignKeyConstraint baseColumnNames="command_in_server_command_in_server_id" baseTableName="command_in_server_immune_roles" constraintName="fk_command_immune_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="command_in_server_id" referencedTableName="command_in_server" validate="true"/>
<addForeignKeyConstraint baseColumnNames="immune_roles_id" baseTableName="command_in_server_immune_roles" constraintName="fk_immune_role_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="role" validate="true"/>
<addForeignKeyConstraint baseColumnNames="command_in_server_id" baseTableName="command_in_server_immune_role" constraintName="fk_command_immune_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="command_in_server_id" referencedTableName="command_in_server" validate="true"/>
<addForeignKeyConstraint baseColumnNames="role_id" baseTableName="command_in_server_immune_role" constraintName="fk_immune_role_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="role" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="command_in_server_allowed_roles-table">
<createTable tableName="command_in_server_allowed_roles">
<column name="command_in_server_command_in_server_id" type="BIGINT">
<changeSet author="Sheldan" id="command_in_server_allowed_role-table">
<createTable tableName="command_in_server_allowed_role">
<column name="command_in_server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="allowed_roles_id" type="BIGINT">
<column name="role_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
<addForeignKeyConstraint baseColumnNames="command_in_server_command_in_server_id" baseTableName="command_in_server_allowed_roles" constraintName="fk_command_allowed_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="command_in_server_id" referencedTableName="command_in_server" validate="true"/>
<addForeignKeyConstraint baseColumnNames="allowed_roles_id" baseTableName="command_in_server_allowed_roles" constraintName="fk_role_allowed_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="role" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="command-fk_command_feature">
</changeSet>
<changeSet author="Sheldan" id="command_in_server-command_in_server_immune_roles">
</changeSet>
<changeSet author="Sheldan" id="command_in_server-command_in_server_allowed_roles">
</changeSet>
<changeSet author="Sheldan" id="command_in_server_immune_roles-command_in_server_allowed_roles">
</changeSet>
<changeSet author="Sheldan" id="command-fk_command_module">
</changeSet>
<changeSet author="Sheldan" id="command_in_server-fk_command_command">
</changeSet>
<changeSet author="Sheldan" id="command_in_server_allowed_roles-fk_immune_role_role">
</changeSet>
<changeSet author="Sheldan" id="command_in_server-fk_command_server">
</changeSet>
<changeSet author="Sheldan" id="command_triggers">
</changeSet>
<changeSet author="Sheldan" id="command_in_server_triggers">
<addForeignKeyConstraint baseColumnNames="command_in_server_id" baseTableName="command_in_server_allowed_role" constraintName="fk_command_allowed_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="command_in_server_id" referencedTableName="command_in_server" validate="true"/>
<addForeignKeyConstraint baseColumnNames="role_id" baseTableName="command_in_server_allowed_role" constraintName="fk_role_allowed_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="role" validate="true"/>
</changeSet>
</databaseChangeLog>

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.core.command.models.database;
import dev.sheldan.abstracto.core.models.database.AChannelGroupCommand;
import dev.sheldan.abstracto.core.models.database.AFeature;
import lombok.*;
import org.hibernate.annotations.CacheConcurrencyStrategy;
@@ -7,6 +8,7 @@ import org.hibernate.annotations.CacheConcurrencyStrategy;
import javax.persistence.*;
import java.io.Serializable;
import java.time.Instant;
import java.util.List;
@Entity
@Table(name = "command")
@@ -14,6 +16,7 @@ import java.time.Instant;
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@Cacheable
@EqualsAndHashCode
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@@ -23,17 +26,17 @@ public class ACommand implements Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@ManyToOne(fetch = FetchType.LAZY)
@Getter
@Setter
@JoinColumn(name = "module_id", nullable = false)
private AModule module;
@Getter
@Setter
@ManyToOne
@OneToMany(mappedBy = "command", fetch = FetchType.LAZY)
private List<AChannelGroupCommand> channelGroupCommands;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "feature_id", nullable = false)
private AFeature feature;

View File

@@ -34,15 +34,21 @@ public class ACommandInAServer implements Serializable {
@JoinColumn(name = "server_id", nullable = false)
private AServer serverReference;
@ManyToMany(fetch = FetchType.LAZY)
@ManyToMany
@JoinTable(
name = "command_in_server_allowed_role",
joinColumns = @JoinColumn(name = "command_in_server_id", referencedColumnName = "command_in_server_id"),
inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"))
@Getter
@JoinColumn(name = "allowed_role_id")
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
private List<ARole> allowedRoles;
@ManyToMany(fetch = FetchType.LAZY)
@ManyToMany
@JoinTable(
name = "command_in_server_immune_role",
joinColumns = @JoinColumn(name = "command_in_server_id", referencedColumnName = "command_in_server_id"),
inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"))
@Getter
@JoinColumn(name = "immune_role_id")
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
private List<ARole> immuneRoles;

View File

@@ -14,6 +14,7 @@ import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@EqualsAndHashCode
@Cacheable
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@@ -21,22 +22,23 @@ public class AChannelGroup implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "group_name")
@Setter
private String groupName;
@ManyToOne(fetch = FetchType.LAZY)
@Setter
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@ManyToOne(fetch = FetchType.LAZY)
@Setter
@JoinColumn(name = "group_type_id")
private ChannelGroupType channelGroupType;
@OneToMany(mappedBy = "group", fetch = FetchType.LAZY)
private List<AChannelGroupCommand> channelGroupCommands;
@Column(name = "created")
private Instant created;

View File

@@ -24,12 +24,16 @@ public class AChannelGroupCommand implements Serializable {
@Column(name = "command_in_group_id")
private Long commandInGroupId;
@OneToOne(fetch = FetchType.LAZY)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "command_id", nullable = false)
@Setter
private ACommand command;
@OneToOne(fetch = FetchType.LAZY)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="server_id")
private AServer server;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "group_id", nullable = false)
@Setter
private AChannelGroup group;

View File

@@ -13,34 +13,31 @@ import java.time.Instant;
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@EqualsAndHashCode
@Cacheable
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class AConfig implements Serializable {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column
@Column(name = "name")
private String name;
@Column
@Setter
@Column(name = "string_value")
private String stringValue;
@Column
@Setter
@Column(name = "double_value")
private Double doubleValue;
@Column
@Setter
@Column(name = "long_value")
private Long longValue;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
@Getter
@Setter
private AServer server;
@Column(name = "created")

View File

@@ -11,6 +11,8 @@ import java.util.List;
@Entity
@Table(name="feature_flag")
@Builder
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@@ -20,30 +22,21 @@ public class AFeatureFlag implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Getter
@Column(name = "id")
public Long id;
@ManyToOne(fetch = FetchType.LAZY)
@Getter
@Setter
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@Getter
@Setter
@OneToOne
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "feature_id", nullable = false)
private AFeature feature;
@Getter
@Setter
@OneToMany(fetch = FetchType.LAZY, mappedBy = "featureFlag")
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
private List<AFeatureMode> modes;
@Getter
@Setter
@Column(name = "enabled")
private boolean enabled;

View File

@@ -10,6 +10,8 @@ import java.time.Instant;
@Entity
@Table(name="feature_mode")
@Builder
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@@ -18,31 +20,22 @@ import java.time.Instant;
public class AFeatureMode implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Getter
@Column(name = "id")
public Long id;
@Getter
@Setter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "feature_flag_id", nullable = false)
private AFeatureFlag featureFlag;
@Getter
@Setter
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "feature_mode_id", nullable = false)
private DefaultFeatureMode featureMode;
@Getter
@Setter
@OneToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@Column(name = "enabled")
@Getter
@Setter
private Boolean enabled;
@Column(name = "created")

View File

@@ -25,7 +25,7 @@ public class DefaultFeatureFlag implements Serializable {
@Getter
@Setter
@OneToOne
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "feature_id", nullable = false)
private AFeature feature;

View File

@@ -26,7 +26,7 @@ public class DefaultFeatureMode implements Serializable {
@Getter
@Setter
@OneToOne
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "feature_id", nullable = false)
private AFeature feature;