[AB-167] adding warning created events and infraction counter

adding disabling of post targets
adding some logging for message sending failure consumer
This commit is contained in:
Sheldan
2021-10-25 00:04:08 +02:00
parent 8909e8ebe5
commit 0514d355c7
69 changed files with 1197 additions and 158 deletions

View File

@@ -0,0 +1,27 @@
package dev.sheldan.abstracto.core.exception;
import dev.sheldan.abstracto.core.models.exception.PostTargetNotValidExceptionModel;
import dev.sheldan.abstracto.core.templating.Templatable;
public class PostTargetNotUsableException extends AbstractoRunTimeException implements Templatable {
private final PostTargetNotValidExceptionModel model;
public PostTargetNotUsableException(String key) {
super("The post target is not setup or has been disabled.");
this.model = PostTargetNotValidExceptionModel
.builder()
.postTargetKey(key)
.build();
}
@Override
public String getTemplateName() {
return "post_target_not_usable_exception";
}
@Override
public Object getTemplateModel() {
return model;
}
}

View File

@@ -36,6 +36,11 @@ public class PostTarget implements Serializable {
@Setter
private AServer serverReference;
@Column(name = "disabled")
@Getter
@Setter
private Boolean disabled;
@Column(name = "created", nullable = false, insertable = false, updatable = false)
private Instant created;

View File

@@ -12,4 +12,5 @@ import net.dv8tion.jda.api.entities.TextChannel;
public class PostTargetModelEntry {
private PostTarget postTarget;
private TextChannel channel;
private Boolean disabled;
}

View File

@@ -1,5 +1,7 @@
package dev.sheldan.abstracto.core.models.template.display;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.core.utils.MemberUtils;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@@ -21,4 +23,13 @@ public class MemberDisplay {
.userId(member.getIdLong())
.build();
}
public static MemberDisplay fromAUserInAServer(AUserInAServer aUserInAServer) {
return MemberDisplay
.builder()
.memberMention(MemberUtils.getAUserInAServerAsMention(aUserInAServer))
.serverId(aUserInAServer.getServerReference().getId())
.userId(aUserInAServer.getUserReference().getId())
.build();
}
}

View File

@@ -26,7 +26,11 @@ public interface PostTargetService {
void throwIfPostTargetIsNotDefined(PostTargetEnum name, Long serverId);
boolean postTargetDefinedInServer(PostTargetEnum name, Long serverId);
boolean validPostTarget(String name);
void validatePostTarget(PostTargetEnum name, Long serverId);
boolean postTargetUsableInServer(PostTargetEnum name, Long serverId);
List<PostTarget> getPostTargets(AServer server);
List<String> getAvailablePostTargets();
List<String> getPostTargetsOfEnabledFeatures(AServer server);
void disablePostTarget(String name, Long serverId);
void enablePostTarget(String name, Long serverId);
}

View File

@@ -0,0 +1,9 @@
package dev.sheldan.abstracto.core.utils;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
public class MemberUtils {
public static String getAUserInAServerAsMention(AUserInAServer aUserInAServer) {
return "<@" + aUserInAServer.getUserReference().getId() + ">";
}
}