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

View File

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

View File

@@ -1,6 +1,7 @@
package dev.sheldan.abstracto.assignableroles.service.management; package dev.sheldan.abstracto.assignableroles.service.management;
import dev.sheldan.abstracto.assignableroles.exceptions.AssignablePlacePostNotFoundException; 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.models.database.AssignableRolePlacePost;
import dev.sheldan.abstracto.assignableroles.repository.AssignableRolePlacePostRepository; import dev.sheldan.abstracto.assignableroles.repository.AssignableRolePlacePostRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -14,7 +15,6 @@ public class AssignableRolePlacePostManagementServiceBean implements AssignableR
@Autowired @Autowired
private AssignableRolePlacePostRepository repository; private AssignableRolePlacePostRepository repository;
@Override @Override
public Optional<AssignableRolePlacePost> findByMessageIdOptional(Long messageId) { public Optional<AssignableRolePlacePost> findByMessageIdOptional(Long messageId) {
return repository.findById(messageId); return repository.findById(messageId);
@@ -25,4 +25,17 @@ public class AssignableRolePlacePostManagementServiceBean implements AssignableR
return findByMessageIdOptional(messageId).orElseThrow(() -> new AssignablePlacePostNotFoundException(messageId)); 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"> <column name="assignable_place_id" type="BIGINT">
<constraints nullable="false"/> <constraints nullable="false"/>
</column> </column>
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="place_post_id" type="BIGINT"> <column name="place_post_id" type="BIGINT">
<constraints nullable="true"/> <constraints nullable="true"/>
</column> </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="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="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="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> <sql>
DROP TRIGGER IF EXISTS assignable_role_update_trigger ON assignable_role; 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(); 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"> <column name="channel_id" type="BIGINT">
<constraints nullable="false"/> <constraints nullable="false"/>
</column> </column>
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"> <column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/> <constraints nullable="true"/>
</column> </column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/> <column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
</createTable> </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="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"/> <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> <sql>
DROP TRIGGER IF EXISTS assignable_role_place_post_update_trigger ON assignable_role_place_post; 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"> <column name="assigned_role_id" type="BIGINT">
<constraints nullable="false"/> <constraints nullable="false"/>
</column> </column>
<column name="user_id" type="BIGINT"> <column name="user_in_server_id" type="BIGINT">
<constraints nullable="false"/> <constraints nullable="false"/>
</column> </column>
</createTable> </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="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> </changeSet>
</databaseChangeLog> </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.AEmote;
import dev.sheldan.abstracto.core.models.database.ARole; import dev.sheldan.abstracto.core.models.database.ARole;
import dev.sheldan.abstracto.core.models.database.AServer;
import lombok.*; import lombok.*;
import org.hibernate.annotations.CacheConcurrencyStrategy; import org.hibernate.annotations.CacheConcurrencyStrategy;
@@ -35,20 +36,18 @@ public class AssignableRole implements Serializable {
@JoinColumn(name = "role_id", nullable = false) @JoinColumn(name = "role_id", nullable = false)
private ARole role; 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}) @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@Getter
@Setter
@JoinColumn(name = "assignable_place_id", nullable = false) @JoinColumn(name = "assignable_place_id", nullable = false)
private AssignableRolePlace assignablePlace; private AssignableRolePlace assignablePlace;
@Getter
@Setter
@ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE}) @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "place_post_id") @JoinColumn(name = "place_post_id")
private AssignableRolePlacePost assignableRolePlacePost; private AssignableRolePlacePost assignableRolePlacePost;
@Getter
@Setter
@ManyToMany(mappedBy = "roles") @ManyToMany(mappedBy = "roles")
@Builder.Default @Builder.Default
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE) @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -28,9 +28,13 @@
<column name="level_id" type="INTEGER"> <column name="level_id" type="INTEGER">
<constraints nullable="false"/> <constraints nullable="false"/>
</column> </column>
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable> </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="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="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> <sql>
DROP TRIGGER IF EXISTS user_experience_update_trigger ON user_experience; 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(); 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; package dev.sheldan.abstracto.experience.models.database;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import lombok.*; import lombok.*;
import org.hibernate.annotations.CacheConcurrencyStrategy; import org.hibernate.annotations.CacheConcurrencyStrategy;
@@ -36,6 +37,10 @@ public class AUserExperience implements Serializable {
@PrimaryKeyJoinColumn @PrimaryKeyJoinColumn
private AUserInAServer user; 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 * The total amount of experience the user has in the guild
*/ */

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -11,8 +11,15 @@
<column name="id" type="BIGINT"> <column name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="mod_mail_message_pkey"/> <constraints nullable="false" primaryKey="true" primaryKeyName="mod_mail_message_pkey"/>
</column> </column>
<column name="created_message_in_dm" type="BIGINT" /> <column name="created_message_in_dm" type="BIGINT" >
<column name="created_message_in_channel" 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"> <column name="anonymous" type="BOOLEAN">
<constraints nullable="true"/> <constraints nullable="true"/>
</column> </column>
@@ -33,6 +40,7 @@
<createIndex indexName="idx_mod_mail_message_thread" tableName="mod_mail_message"> <createIndex indexName="idx_mod_mail_message_thread" tableName="mod_mail_message">
<column name="thread_id"/> <column name="thread_id"/>
</createIndex> </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="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"/> <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> <sql>

View File

@@ -21,9 +21,13 @@
<column name="mod_mail_thread_id" type="BIGINT"> <column name="mod_mail_thread_id" type="BIGINT">
<constraints nullable="false"/> <constraints nullable="false"/>
</column> </column>
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable> </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="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="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> <sql>
DROP TRIGGER IF EXISTS mod_mail_subscriber_update_trigger ON mod_mail_subscriber; 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(); 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; package dev.sheldan.abstracto.modmail.models.database;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import lombok.*; import lombok.*;
import org.hibernate.annotations.CacheConcurrencyStrategy; import org.hibernate.annotations.CacheConcurrencyStrategy;
@@ -42,6 +43,10 @@ public class ModMailMessage implements Serializable {
@Column(name = "created_message_in_channel") @Column(name = "created_message_in_channel")
private Long createdMessageInChannel; private Long createdMessageInChannel;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
/** /**
* The {@link AUserInAServer} which authored this message * The {@link AUserInAServer} which authored this message
*/ */

View File

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

View File

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

View File

@@ -27,21 +27,21 @@
<column name="embedded_user_in_server_id" type="BIGINT"> <column name="embedded_user_in_server_id" type="BIGINT">
<constraints nullable="false"/> <constraints nullable="false"/>
</column> </column>
<column name="embedding_channel" type="BIGINT"> <column name="embedding_channel_id" type="BIGINT">
<constraints nullable="false"/> <constraints nullable="false"/>
</column> </column>
<column name="embedding_server" type="BIGINT"> <column name="embedding_server_id" type="BIGINT">
<constraints nullable="false"/> <constraints nullable="false"/>
</column> </column>
<column name="embedding_user_in_server_id" type="BIGINT"> <column name="embedding_user_in_server_id" type="BIGINT">
<constraints nullable="false"/> <constraints nullable="false"/>
</column> </column>
</createTable> </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="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="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="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"/> <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> <sql>
DROP TRIGGER IF EXISTS embedded_message_update_trigger ON embedded_message; DROP TRIGGER IF EXISTS embedded_message_update_trigger ON embedded_message;

View File

@@ -21,9 +21,13 @@
<column name="post_id" type="BIGINT"> <column name="post_id" type="BIGINT">
<constraints nullable="true"/> <constraints nullable="true"/>
</column> </column>
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable> </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="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="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> <sql>
DROP TRIGGER IF EXISTS starboard_post_reaction_update_trigger ON starboard_post_reaction; 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(); 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 { public class EmbeddedMessage implements Serializable {
@Getter @Getter
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "embedded_user_in_server_id", nullable = false) @JoinColumn(name = "embedded_user_in_server_id", nullable = false)
private AUserInAServer embeddedUser; private AUserInAServer embeddedUser;
@Getter @Getter
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "embedding_user_in_server_id", nullable = false) @JoinColumn(name = "embedding_user_in_server_id", nullable = false)
private AUserInAServer embeddingUser; private AUserInAServer embeddingUser;
@Getter @Getter
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "embedded_server_id", nullable = false) @JoinColumn(name = "embedded_server_id", nullable = false)
private AServer embeddedServer; private AServer embeddedServer;
@Getter @Getter
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "embedded_channel_id", nullable = false) @JoinColumn(name = "embedded_channel_id", nullable = false)
private AChannel embeddedChannel; private AChannel embeddedChannel;
@@ -46,13 +46,13 @@ public class EmbeddedMessage implements Serializable {
private Long embeddedMessageId; private Long embeddedMessageId;
@Getter @Getter
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "embedding_server_id", nullable = false) @JoinColumn(name = "embedding_server_id", nullable = false)
private AServer embeddingServer; private AServer embeddingServer;
@Getter @Getter
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "embeddingChannel", nullable = false) @JoinColumn(name = "embedding_channel_id", nullable = false)
private AChannel embeddingChannel; private AChannel embeddingChannel;
@Column(name = "embedding_message_id") @Column(name = "embedding_message_id")

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -63,6 +63,9 @@
<column name="enabled" type="BOOLEAN"/> <column name="enabled" type="BOOLEAN"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/> <column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="updated" 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"> <column name="command_id" type="BIGINT">
<constraints nullable="false"/> <constraints nullable="false"/>
</column> </column>
@@ -71,6 +74,7 @@
</column> </column>
</createTable> </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="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"/> <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> <sql>
DROP TRIGGER IF EXISTS channel_group_command_update_trigger ON channel_group_command; 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(); CREATE TRIGGER command_in_server_insert_trigger BEFORE INSERT ON command_in_server FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql> </sql>
</changeSet> </changeSet>
<changeSet author="Sheldan" id="command_in_server_immune_roles-table"> <changeSet author="Sheldan" id="command_in_server_immune_role-table">
<createTable tableName="command_in_server_immune_roles"> <createTable tableName="command_in_server_immune_role">
<column name="command_in_server_command_in_server_id" type="BIGINT"> <column name="command_in_server_id" type="BIGINT">
<constraints nullable="false"/> <constraints nullable="false"/>
</column> </column>
<column name="immune_roles_id" type="BIGINT"> <column name="role_id" type="BIGINT">
<constraints nullable="false"/> <constraints nullable="false"/>
</column> </column>
</createTable> </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="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="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="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>
<changeSet author="Sheldan" id="command_in_server_allowed_roles-table"> <changeSet author="Sheldan" id="command_in_server_allowed_role-table">
<createTable tableName="command_in_server_allowed_roles"> <createTable tableName="command_in_server_allowed_role">
<column name="command_in_server_command_in_server_id" type="BIGINT"> <column name="command_in_server_id" type="BIGINT">
<constraints nullable="false"/> <constraints nullable="false"/>
</column> </column>
<column name="allowed_roles_id" type="BIGINT"> <column name="role_id" type="BIGINT">
<constraints nullable="false"/> <constraints nullable="false"/>
</column> </column>
</createTable> </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="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="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"/> <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>
<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">
</changeSet> </changeSet>
</databaseChangeLog> </databaseChangeLog>

View File

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

View File

@@ -34,15 +34,21 @@ public class ACommandInAServer implements Serializable {
@JoinColumn(name = "server_id", nullable = false) @JoinColumn(name = "server_id", nullable = false)
private AServer serverReference; 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 @Getter
@JoinColumn(name = "allowed_role_id")
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE) @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
private List<ARole> allowedRoles; 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 @Getter
@JoinColumn(name = "immune_role_id")
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE) @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
private List<ARole> immuneRoles; private List<ARole> immuneRoles;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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