[AB-161] fixed composite foreign keys for multiple tables

This commit is contained in:
Sheldan
2020-11-22 18:38:51 +01:00
parent 1d9f2595db
commit b05a834b59
12 changed files with 36 additions and 60 deletions

View File

@@ -103,7 +103,7 @@ public class SuggestionServiceBean implements SuggestionService {
Long channelId = suggestion.getChannel().getId();
Long originalMessageId = suggestion.getMessageId();
Long serverId = suggestion.getServer().getId();
log.info("Updated posted suggestion {} in server {}.", suggestion.getId(), suggestion.getServer().getId());
log.info("Updated posted suggestion {} in server {}.", suggestion.getSuggestionId().getId(), suggestion.getServer().getId());
suggestionLog.setOriginalChannelId(channelId);
suggestionLog.setOriginalMessageId(originalMessageId);
@@ -112,7 +112,7 @@ public class SuggestionServiceBean implements SuggestionService {
TextChannel textChannelById = botService.getTextChannelFromServer(serverId, channelId);
CompletableFuture<Member> memberById = botService.getMemberInServerAsync(serverId, suggester.getUserReference().getId());
suggestionLog.setState(suggestion.getState());
suggestionLog.setSuggestionId(suggestion.getId());
suggestionLog.setSuggestionId(suggestion.getSuggestionId().getId());
CompletableFuture<Void> finalFuture = new CompletableFuture<>();
memberById.whenComplete((member, throwable) -> {
if(throwable == null) {

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.utility.service.management;
import dev.sheldan.abstracto.core.models.ServerSpecificId;
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
@@ -47,7 +48,7 @@ public class SuggestionManagementServiceBean implements SuggestionManagementServ
.builder()
.state(SuggestionState.NEW)
.suggester(suggester)
.id(suggestionId)
.suggestionId(new ServerSpecificId(suggester.getServerReference().getId(), suggestionId))
.server(suggester.getServerReference())
.suggestionDate(Instant.now())
.channel(channel)
@@ -68,7 +69,7 @@ public class SuggestionManagementServiceBean implements SuggestionManagementServ
@Override
public void setSuggestionState(Suggestion suggestion, SuggestionState newState) {
suggestion.setState(newState);
log.info("Setting suggestion {} to state {}.", suggestion.getId(), newState);
log.info("Setting suggestion {} in server {} to state {}.", suggestion.getSuggestionId().getId(), suggestion.getSuggestionId().getServerId(), newState);
suggestionRepository.save(suggestion);
}
}

View File

@@ -8,9 +8,7 @@
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="suggestion-table">
<createTable tableName="suggestion">
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="suggestion_pkey"/>
</column>
<column autoIncrement="true" name="id" type="BIGINT"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="message_id" type="BIGINT"/>
<column name="state" type="VARCHAR(255)"/>
@@ -22,6 +20,7 @@
<constraints nullable="false"/>
</column>
</createTable>
<addPrimaryKey columnNames="server_id, id" tableName="suggestion" constraintName="pk_suggestion" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="suggestion-fk_suggestion_channel">
<addForeignKeyConstraint baseColumnNames="channel_id" baseTableName="suggestion" constraintName="fk_suggestion_channel" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel" validate="true"/>

View File

@@ -1,6 +1,7 @@
package dev.sheldan.abstracto.utility.service;
import dev.sheldan.abstracto.core.exception.ChannelNotFoundException;
import dev.sheldan.abstracto.core.models.ServerSpecificId;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUser;
@@ -150,7 +151,7 @@ public class SuggestionServiceBeanTest {
.builder()
.channel(channel)
.server(server)
.id(SUGGESTION_ID)
.suggestionId(new ServerSpecificId(server.getId(), SUGGESTION_ID))
.suggester(suggester)
.messageId(messageId)
.build();
@@ -235,7 +236,7 @@ public class SuggestionServiceBeanTest {
.builder()
.channel(channel)
.server(server)
.id(SUGGESTION_ID)
.suggestionId(new ServerSpecificId(server.getId(), SUGGESTION_ID))
.suggester(suggester)
.messageId(messageId)
.build();

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.utility.service.management;
import dev.sheldan.abstracto.core.models.ServerSpecificId;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
@@ -89,11 +90,11 @@ public class SuggestionManagementServiceBeanTest {
@Test
public void testGetSuggestion() {
Long suggestionId = 5L;
Suggestion foundSuggestion = Suggestion.builder().id(suggestionId).build();
Suggestion foundSuggestion = Suggestion.builder().suggestionId(new ServerSpecificId(0L, suggestionId)).build();
when(suggestionRepository.findById(suggestionId)).thenReturn(Optional.of(foundSuggestion));
Optional<Suggestion> suggestionOptional = testUnit.getSuggestion(suggestionId);
Assert.assertTrue(suggestionOptional.isPresent());
suggestionOptional.ifPresent(suggestion -> Assert.assertEquals(suggestionId, suggestion.getId()));
suggestionOptional.ifPresent(suggestion -> Assert.assertEquals(suggestionId, suggestion.getSuggestionId().getId()));
}
@Test
@@ -107,7 +108,7 @@ public class SuggestionManagementServiceBeanTest {
@Test
public void setSuggestionState() {
Suggestion suggestion = Suggestion.builder().build();
Suggestion suggestion = Suggestion.builder().suggestionId(new ServerSpecificId(0L, 4L)).build();
testUnit.setSuggestionState(suggestion, SuggestionState.ACCEPTED);
Assert.assertEquals(suggestion.getState(), SuggestionState.ACCEPTED);
verify(suggestionRepository, times(1)).save(suggestion);