[AB-57] [AB-61] reworked commands and services to work with completable futures and moved the database operations to the very last operation so we have transaction safety in more areas

added some cache annotations to the default repository functions
reworked how the undo cations are processed within commands, they are executed in a post command listener when the state is error
added a counter id to generate ids to be unique within servers, changed a few tables to be unique within a server
added future utils class for wrapping a list of futures into one
moved abstracto tables to separate schema in the installer
refactored experience gain to work with more futures and delayed database access
This commit is contained in:
Sheldan
2020-09-20 11:11:20 +02:00
parent 552ecc26b8
commit 76adda90a3
220 changed files with 2691 additions and 1498 deletions

View File

@@ -2,7 +2,7 @@ package dev.sheldan.abstracto.utility.models.template.commands;
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.utility.models.database.Suggestion;
import dev.sheldan.abstracto.utility.models.SuggestionState;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
@@ -12,7 +12,8 @@ import net.dv8tion.jda.api.entities.Member;
@Setter
@SuperBuilder
public class SuggestionLog extends UserInitiatedServerContext {
private Suggestion suggestion;
private Long suggestionId;
private SuggestionState state;
private Member suggester;
private AUserInAServer suggesterUser;
private String text;

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.utility.models.template.commands;
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
import dev.sheldan.abstracto.core.models.context.SlimUserInitiatedServerContext;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
@@ -9,6 +9,6 @@ import net.dv8tion.jda.api.entities.Member;
@Getter
@Setter
@SuperBuilder
public class UserInfoModel extends UserInitiatedServerContext {
public class UserInfoModel extends SlimUserInitiatedServerContext {
private Member memberInfo;
}

View File

@@ -6,7 +6,7 @@ import net.dv8tion.jda.api.entities.Member;
import java.util.concurrent.CompletableFuture;
public interface SuggestionService {
CompletableFuture<Void> createSuggestion(Member member, String text, SuggestionLog log);
CompletableFuture<Void> createSuggestionMessage(Member member, String text, SuggestionLog log);
CompletableFuture<Void> acceptSuggestion(Long suggestionId, String text, SuggestionLog log);
CompletableFuture<Void> rejectSuggestion(Long suggestionId, String text, SuggestionLog log);
}

View File

@@ -9,9 +9,8 @@ import net.dv8tion.jda.api.entities.Message;
import java.util.Optional;
public interface SuggestionManagementService {
Suggestion createSuggestion(Member suggester, String text);
Suggestion createSuggestion(AUserInAServer suggester, String text);
Suggestion createSuggestion(Member suggester, String text, Message message, Long suggestionId);
Suggestion createSuggestion(AUserInAServer suggester, String text, Message message, Long suggestionId);
Optional<Suggestion> getSuggestion(Long suggestionId);
void setPostedMessage(Suggestion suggestion, Message message);
void setSuggestionState(Suggestion suggestion, SuggestionState newState);
}