diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Ban.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Ban.java index c78282e92..c527980a3 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Ban.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Ban.java @@ -2,18 +2,14 @@ package dev.sheldan.abstracto.moderation.command; import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.command.HelpInfo; -import dev.sheldan.abstracto.command.execution.CommandConfiguration; -import dev.sheldan.abstracto.command.execution.CommandContext; -import dev.sheldan.abstracto.command.execution.Parameter; -import dev.sheldan.abstracto.command.execution.Result; +import dev.sheldan.abstracto.command.execution.*; import dev.sheldan.abstracto.moderation.Moderation; -import dev.sheldan.abstracto.moderation.models.BanLog; -import dev.sheldan.abstracto.moderation.models.WarnLog; +import dev.sheldan.abstracto.moderation.models.template.BanLog; +import dev.sheldan.abstracto.moderation.models.template.WarnLog; import dev.sheldan.abstracto.moderation.service.BanService; import dev.sheldan.abstracto.templating.TemplateService; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Member; -import org.hibernate.sql.Template; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -36,15 +32,12 @@ public class Ban implements Command { Member member = (Member) parameters.get(0); String defaultReason = templateService.renderTemplate("ban_default_reason", null); String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason; - banService.banMember(member, reason); - BanLog banLogModel = BanLog - .parentBuilder() - .commandTemplateContext(commandContext.getCommandTemplateContext()) - .bannedUser(member) - .banningUser(commandContext.getAuthor()) - .reason(reason) - .build(); - banService.sendBanLog(banLogModel); + + BanLog banLogModel = (BanLog) ContextConverter.fromCommandContext(commandContext, BanLog.class); + banLogModel.setBannedUser(member); + banLogModel.setBanningUser(commandContext.getAuthor()); + banLogModel.setReason(reason); + banService.banMember(member, reason, banLogModel); return Result.fromSuccess(); } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/BanId.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/BanId.java new file mode 100644 index 000000000..158401b05 --- /dev/null +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/BanId.java @@ -0,0 +1,54 @@ +package dev.sheldan.abstracto.moderation.command; + +import dev.sheldan.abstracto.command.Command; +import dev.sheldan.abstracto.command.HelpInfo; +import dev.sheldan.abstracto.command.execution.*; +import dev.sheldan.abstracto.core.models.UserInitiatedServerContext; +import dev.sheldan.abstracto.moderation.Moderation; +import dev.sheldan.abstracto.moderation.models.template.BanIdLog; +import dev.sheldan.abstracto.moderation.service.BanService; +import dev.sheldan.abstracto.templating.TemplateService; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.ArrayList; +import java.util.List; + +public class BanId implements Command { + + @Autowired + private TemplateService templateService; + + @Autowired + private BanService banService; + + @Override + public Result execute(CommandContext commandContext) { + List parameters = commandContext.getParameters().getParameters(); + Long userId = (Long) parameters.get(0); + String defaultReason = templateService.renderTemplate("ban_default_reason", null); + String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason; + BanIdLog banLogModel = (BanIdLog) ContextConverter.fromCommandContext(commandContext, BanIdLog.class); + banLogModel.setBannedUserId(userId); + banLogModel.setBanningUser(commandContext.getAuthor()); + banLogModel.setReason(reason); + banService.banMember(userId, commandContext.getGuild().getIdLong(), reason, banLogModel); + + return Result.fromSuccess(); + } + + @Override + public CommandConfiguration getConfiguration() { + List parameters = new ArrayList<>(); + parameters.add(Parameter.builder().name("user").type(Long.class).optional(false).build()); + parameters.add(Parameter.builder().name("reason").type(String.class).optional(true).remainder(true).build()); + HelpInfo helpInfo = HelpInfo.builder().templated(true).build(); + return CommandConfiguration.builder() + .name("banid") + .module(Moderation.MODERATION) + .templated(true) + .causesReaction(true) + .parameters(parameters) + .help(helpInfo) + .build(); + } +} diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Kick.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Kick.java index 1d8080c81..219ac46a6 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Kick.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Kick.java @@ -2,13 +2,10 @@ package dev.sheldan.abstracto.moderation.command; import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.command.HelpInfo; -import dev.sheldan.abstracto.command.execution.CommandConfiguration; -import dev.sheldan.abstracto.command.execution.CommandContext; -import dev.sheldan.abstracto.command.execution.Parameter; -import dev.sheldan.abstracto.command.execution.Result; +import dev.sheldan.abstracto.command.execution.*; import dev.sheldan.abstracto.moderation.Moderation; -import dev.sheldan.abstracto.moderation.models.BanLog; -import dev.sheldan.abstracto.moderation.models.KickLogModel; +import dev.sheldan.abstracto.moderation.models.template.BanIdLog; +import dev.sheldan.abstracto.moderation.models.template.KickLogModel; import dev.sheldan.abstracto.moderation.service.KickServiceBean; import dev.sheldan.abstracto.templating.TemplateService; import net.dv8tion.jda.api.entities.Member; @@ -33,15 +30,12 @@ public class Kick implements Command { Member member = (Member) parameters.get(0); String defaultReason = templateService.renderTemplate("ban_default_reason", null); String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason; - kickService.kickMember(member, reason); - KickLogModel kickLogModel = KickLogModel - .parentBuilder() - .commandTemplateContext(commandContext.getCommandTemplateContext()) - .kickedUser(member) - .kickingUser(commandContext.getAuthor()) - .reason(reason) - .build(); - kickService.sendKickLog(kickLogModel); + + KickLogModel kickLogModel = (KickLogModel) ContextConverter.fromCommandContext(commandContext, KickLogModel.class); + kickLogModel.setKickedUser(member); + kickLogModel.setKickingUser(commandContext.getAuthor()); + kickLogModel.setReason(reason); + kickService.kickMember(member, reason, kickLogModel); return Result.fromSuccess(); } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Warn.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Warn.java index 3e6a2ca71..b4b1fd229 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Warn.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/command/Warn.java @@ -1,15 +1,13 @@ package dev.sheldan.abstracto.moderation.command; +import dev.sheldan.abstracto.command.execution.*; import dev.sheldan.abstracto.moderation.Moderation; -import dev.sheldan.abstracto.moderation.models.WarnLog; +import dev.sheldan.abstracto.moderation.models.template.BanIdLog; +import dev.sheldan.abstracto.moderation.models.template.WarnLog; import dev.sheldan.abstracto.moderation.models.Warning; import dev.sheldan.abstracto.moderation.service.WarnService; import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.command.HelpInfo; -import dev.sheldan.abstracto.command.execution.CommandContext; -import dev.sheldan.abstracto.command.execution.CommandConfiguration; -import dev.sheldan.abstracto.command.execution.Parameter; -import dev.sheldan.abstracto.command.execution.Result; import dev.sheldan.abstracto.core.management.UserManagementService; import dev.sheldan.abstracto.templating.TemplateService; import lombok.extern.slf4j.Slf4j; @@ -39,15 +37,11 @@ public class Warn implements Command { Member member = (Member) parameters.get(0); String defaultReason = templateService.renderTemplate("warn_default_reason", null); String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason; - Warning warning = warnService.warnUser(member, commandContext.getAuthor(), reason); - WarnLog warnLogModel = WarnLog - .parentBuilder() - .commandTemplateContext(commandContext.getCommandTemplateContext()) - .warnedUser(member) - .warningUser(commandContext.getAuthor()) - .warning(warning) - .build(); - warnService.sendWarnLog(warnLogModel); + WarnLog warnLogModel = (WarnLog) ContextConverter.fromCommandContext(commandContext, WarnLog.class); + warnLogModel.setWarnedUser(member); + warnLogModel.setReason(reason); + warnLogModel.setWarningUser(commandContext.getAuthor()); + warnService.warnUser(member, commandContext.getAuthor(), reason, warnLogModel); return Result.fromSuccess(); } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/BanServiceBean.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/BanServiceBean.java index 29db5a796..5266df592 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/BanServiceBean.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/BanServiceBean.java @@ -1,9 +1,11 @@ package dev.sheldan.abstracto.moderation.service; -import dev.sheldan.abstracto.core.models.PostTarget; +import dev.sheldan.abstracto.core.models.ServerContext; +import dev.sheldan.abstracto.core.models.database.PostTarget; import dev.sheldan.abstracto.core.service.Bot; import dev.sheldan.abstracto.core.service.PostTargetService; -import dev.sheldan.abstracto.moderation.models.BanLog; +import dev.sheldan.abstracto.moderation.models.template.BanIdLog; +import dev.sheldan.abstracto.moderation.models.template.BanLog; import dev.sheldan.abstracto.templating.TemplateService; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Guild; @@ -16,6 +18,7 @@ import org.springframework.stereotype.Component; public class BanServiceBean implements BanService { public static final String BAN_LOG_TEMPLATE = "ban_log"; + public static final String BAN_ID_LOG_TEMPLATE = "banid_log"; @Autowired private Bot bot; @@ -26,19 +29,26 @@ public class BanServiceBean implements BanService { private PostTargetService postTargetService; @Override - public void banMember(Member member, String reason) { - Guild guild = bot.getInstance().getGuildById(member.getGuild().getIdLong()); - if(guild != null) { - log.info("Banning user {} in guild {}.", member.getId(), guild.getIdLong()); - guild.ban(member, 0, reason).queue(); - } else { - log.warn("Guild id {} from member was not found.", member.getGuild().getIdLong()); - } + public void banMember(Member member, String reason, ServerContext banLog) { + this.banUser(member.getGuild().getIdLong(), member.getIdLong(), reason); + String warnLogMessage = templateService.renderContextAwareTemplate(BAN_LOG_TEMPLATE, banLog); + postTargetService.sendTextInPostTarget(warnLogMessage, PostTarget.BAN_LOG, banLog.getServer().getId()); } @Override - public void sendBanLog(BanLog banLog) { - String warnLogMessage = templateService.renderTemplate(BAN_LOG_TEMPLATE, banLog); - postTargetService.sendTextInPostTarget(warnLogMessage, PostTarget.BAN_LOG, banLog.getServer().getId()); + public void banMember(Long guildId, Long userId, String reason, ServerContext banIdLog) { + banUser(guildId, userId, reason); + String warnLogMessage = templateService.renderContextAwareTemplate(BAN_ID_LOG_TEMPLATE, banIdLog); + postTargetService.sendTextInPostTarget(warnLogMessage, PostTarget.BAN_LOG, guildId); + } + + private void banUser(Long guildId, Long userId, String reason) { + Guild guildById = bot.getInstance().getGuildById(guildId); + if(guildById != null) { + log.info("Banning user {} in guild {}.", userId, guildId); + guildById.ban(userId.toString(), 0, reason).queue(); + } else { + log.warn("Guild id {} from member was not found.", guildId); + } } } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/KickServiceBean.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/KickServiceBean.java index 6cbc29ffa..a669876c9 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/KickServiceBean.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/KickServiceBean.java @@ -1,9 +1,9 @@ package dev.sheldan.abstracto.moderation.service; -import dev.sheldan.abstracto.core.models.PostTarget; +import dev.sheldan.abstracto.core.models.database.PostTarget; import dev.sheldan.abstracto.core.service.Bot; import dev.sheldan.abstracto.core.service.PostTargetService; -import dev.sheldan.abstracto.moderation.models.KickLogModel; +import dev.sheldan.abstracto.moderation.models.template.KickLogModel; import dev.sheldan.abstracto.templating.TemplateService; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Guild; @@ -26,18 +26,18 @@ public class KickServiceBean implements KickService { private PostTargetService postTargetService; @Override - public void kickMember(Member member, String reason) { + public void kickMember(Member member, String reason, KickLogModel kickLogModel) { Guild guildById = bot.getInstance().getGuildById(member.getGuild().getIdLong()); if(guildById != null) { guildById.kick(member, reason).queue(); + this.sendKickLog(kickLogModel); } else { log.warn("Failed to kick member {} from guild {}. Guild was not found.", member.getId(), member.getGuild().getId()); } } - @Override - public void sendKickLog(KickLogModel kickLogModel) { - String warnLogMessage = templateService.renderTemplate(KICK_LOG_TEMPLATE, kickLogModel); + private void sendKickLog(KickLogModel kickLogModel) { + String warnLogMessage = templateService.renderContextAwareTemplate(KICK_LOG_TEMPLATE, kickLogModel); postTargetService.sendTextInPostTarget(warnLogMessage, PostTarget.WARN_LOG, kickLogModel.getServer().getId()); } } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeServiceBean.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeServiceBean.java index b31f663a0..050656e4f 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeServiceBean.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeServiceBean.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.moderation.service; -import dev.sheldan.abstracto.core.models.AChannel; +import dev.sheldan.abstracto.core.models.database.AChannel; import dev.sheldan.abstracto.core.service.Bot; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.JDA; diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/WarnServiceBean.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/WarnServiceBean.java index 39083d70a..a4d1f0d3b 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/WarnServiceBean.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/WarnServiceBean.java @@ -1,15 +1,17 @@ package dev.sheldan.abstracto.moderation.service; -import dev.sheldan.abstracto.core.models.AServer; -import dev.sheldan.abstracto.core.models.AUser; -import dev.sheldan.abstracto.moderation.models.WarnLog; -import dev.sheldan.abstracto.moderation.models.WarnNotification; +import dev.sheldan.abstracto.core.models.ServerContext; +import dev.sheldan.abstracto.core.models.UserInitiatedServerContext; +import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.database.AUser; +import dev.sheldan.abstracto.moderation.models.template.WarnLog; +import dev.sheldan.abstracto.moderation.models.template.WarnNotification; import dev.sheldan.abstracto.moderation.models.Warning; import dev.sheldan.abstracto.moderation.service.management.WarnManagementService; import dev.sheldan.abstracto.core.management.ServerManagementService; import dev.sheldan.abstracto.core.management.UserManagementService; -import dev.sheldan.abstracto.core.models.AUserInAServer; -import dev.sheldan.abstracto.core.models.PostTarget; +import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.models.database.PostTarget; import dev.sheldan.abstracto.core.service.Bot; import dev.sheldan.abstracto.core.service.PostTargetService; import dev.sheldan.abstracto.templating.TemplateService; @@ -47,7 +49,7 @@ public class WarnServiceBean implements WarnService { private static final String WARN_NOTIFICATION_TEMPLATE = "warn_notification"; @Override - public Warning warnUser(AUserInAServer warnedAUserInAServer, AUserInAServer warningAUserInAServer, String reason) { + public void warnUser(AUserInAServer warnedAUserInAServer, AUserInAServer warningAUserInAServer, String reason, ServerContext warnLog) { AUser warningAUser = warningAUserInAServer.getUserReference(); AUser warnedAUser = warnedAUserInAServer.getUserReference(); AServer serverOfWarning = warnedAUserInAServer.getServerReference(); @@ -70,19 +72,18 @@ public class WarnServiceBean implements WarnService { } else { log.warn("Unable to find user {} in guild {} to warn.", warnedAUser.getId(), serverOfWarning.getId()); } - return warning; + this.sendWarnLog(warnLog); } @Override - public Warning warnUser(Member warnedMember, Member warningMember, String reason) { + public void warnUser(Member warnedMember, Member warningMember, String reason, ServerContext warnLog) { AUserInAServer warnedAUser = userManagementService.loadUser(warnedMember); AUserInAServer warningAUser = userManagementService.loadUser(warningMember); - return this.warnUser(warnedAUser, warningAUser, reason); + this.warnUser(warnedAUser, warningAUser, reason, warnLog); } - @Override - public void sendWarnLog(WarnLog warnLogModel) { - String warnLogMessage = templateService.renderTemplate(WARN_LOG_TEMPLATE, warnLogModel); + public void sendWarnLog(ServerContext warnLogModel) { + String warnLogMessage = templateService.renderContextAwareTemplate(WARN_LOG_TEMPLATE, warnLogModel); postTargetService.sendTextInPostTarget(warnLogMessage, PostTarget.WARN_LOG, warnLogModel.getServer().getId()); } } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementServiceBean.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementServiceBean.java index ab39d9d56..0bf735da2 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementServiceBean.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementServiceBean.java @@ -2,7 +2,7 @@ package dev.sheldan.abstracto.moderation.service.management; import dev.sheldan.abstracto.moderation.models.Warning; import dev.sheldan.abstracto.moderation.repository.WarnRepository; -import dev.sheldan.abstracto.core.models.AUserInAServer; +import dev.sheldan.abstracto.core.models.database.AUserInAServer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/resources/templates/warn/warn_log_en_US.ftl b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/resources/templates/warn/warn_log_en_US.ftl index 208550e88..c143a6b4d 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/resources/templates/warn/warn_log_en_US.ftl +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/resources/templates/warn/warn_log_en_US.ftl @@ -1 +1 @@ -User ${warnedUser.effectiveName} (${warnedUser.asMention}) has been warned with reason ${warning.reason}. \ No newline at end of file +User ${warnedUser.effectiveName} (${warnedUser.asMention}) has been warned with reason ${reason}. \ No newline at end of file diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/BanLog.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/BanLog.java deleted file mode 100644 index 25e2fef1d..000000000 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/BanLog.java +++ /dev/null @@ -1,22 +0,0 @@ -package dev.sheldan.abstracto.moderation.models; - -import dev.sheldan.abstracto.command.execution.CommandTemplateContext; -import lombok.Builder; -import lombok.Getter; -import net.dv8tion.jda.api.entities.Member; - -@Getter -public class BanLog extends CommandTemplateContext { - - private String reason; - private Member banningUser; - private Member bannedUser; - - @Builder(builderMethodName = "parentBuilder") - public BanLog(CommandTemplateContext commandTemplateContext, Member bannedUser, Member banningUser, String reason) { - super(commandTemplateContext); - this.bannedUser = bannedUser; - this.banningUser = banningUser; - this.reason = reason; - } -} diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/KickLogModel.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/KickLogModel.java deleted file mode 100644 index 20f19ff08..000000000 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/KickLogModel.java +++ /dev/null @@ -1,21 +0,0 @@ -package dev.sheldan.abstracto.moderation.models; - -import dev.sheldan.abstracto.command.execution.CommandTemplateContext; -import lombok.Builder; -import lombok.Getter; -import net.dv8tion.jda.api.entities.Member; - -@Getter -public class KickLogModel extends CommandTemplateContext { - private String reason; - private Member kickingUser; - private Member kickedUser; - - @Builder(builderMethodName = "parentBuilder") - public KickLogModel(CommandTemplateContext commandTemplateContext, Member kickedUser, Member kickingUser, String reason) { - super(commandTemplateContext); - this.kickedUser = kickedUser; - this.kickingUser = kickingUser; - this.reason = reason; - } -} diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/WarnLog.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/WarnLog.java deleted file mode 100644 index ef4f9f07d..000000000 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/WarnLog.java +++ /dev/null @@ -1,23 +0,0 @@ -package dev.sheldan.abstracto.moderation.models; - -import dev.sheldan.abstracto.command.execution.CommandTemplateContext; -import lombok.Builder; -import lombok.Getter; -import net.dv8tion.jda.api.entities.Member; - - -@Getter -public class WarnLog extends CommandTemplateContext { - - private Warning warning; - private Member warnedUser; - private Member warningUser; - - @Builder(builderMethodName = "parentBuilder") - public WarnLog(CommandTemplateContext commandTemplateContext, Warning warning, Member warnedUser, Member warningUser) { - super(commandTemplateContext); - this.warning = warning; - this.warnedUser = warnedUser; - this.warningUser = warningUser; - } -} diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/Warning.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/Warning.java index c154a948d..498f4e04b 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/Warning.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/Warning.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.moderation.models; -import dev.sheldan.abstracto.core.models.AUserInAServer; +import dev.sheldan.abstracto.core.models.database.AUserInAServer; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/BanIdLog.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/BanIdLog.java new file mode 100644 index 000000000..ec071efca --- /dev/null +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/BanIdLog.java @@ -0,0 +1,19 @@ +package dev.sheldan.abstracto.moderation.models.template; + +import dev.sheldan.abstracto.core.models.UserInitiatedServerContext; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.SuperBuilder; +import net.dv8tion.jda.api.entities.Member; + +@Getter @SuperBuilder @Setter +public class BanIdLog extends UserInitiatedServerContext { + private String reason; + private Member banningUser; + private Long bannedUserId; + + @Override + public String getTemplateSuffix() { + return ""; + } +} diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/BanLog.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/BanLog.java new file mode 100644 index 000000000..468b01bae --- /dev/null +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/BanLog.java @@ -0,0 +1,15 @@ +package dev.sheldan.abstracto.moderation.models.template; + +import dev.sheldan.abstracto.core.models.UserInitiatedServerContext; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.SuperBuilder; +import net.dv8tion.jda.api.entities.Member; + +@Getter @SuperBuilder @Setter +public class BanLog extends UserInitiatedServerContext { + + private String reason; + private Member banningUser; + private Member bannedUser; +} diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/KickLogModel.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/KickLogModel.java new file mode 100644 index 000000000..5b11213d6 --- /dev/null +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/KickLogModel.java @@ -0,0 +1,14 @@ +package dev.sheldan.abstracto.moderation.models.template; + +import dev.sheldan.abstracto.core.models.UserInitiatedServerContext; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.SuperBuilder; +import net.dv8tion.jda.api.entities.Member; + +@Getter @SuperBuilder @Setter +public class KickLogModel extends UserInitiatedServerContext { + private String reason; + private Member kickingUser; + private Member kickedUser; +} diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/WarnLog.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/WarnLog.java new file mode 100644 index 000000000..6d3a9918b --- /dev/null +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/WarnLog.java @@ -0,0 +1,18 @@ +package dev.sheldan.abstracto.moderation.models.template; + +import dev.sheldan.abstracto.core.models.UserInitiatedServerContext; +import dev.sheldan.abstracto.moderation.models.Warning; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.SuperBuilder; +import net.dv8tion.jda.api.entities.Member; + + +@Getter @SuperBuilder @Setter +public class WarnLog extends UserInitiatedServerContext { + + private String reason; + private Member warnedUser; + private Member warningUser; + +} diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/WarnNotification.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/WarnNotification.java similarity index 57% rename from abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/WarnNotification.java rename to abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/WarnNotification.java index f05150247..a3e631692 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/WarnNotification.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/WarnNotification.java @@ -1,5 +1,6 @@ -package dev.sheldan.abstracto.moderation.models; +package dev.sheldan.abstracto.moderation.models.template; +import dev.sheldan.abstracto.moderation.models.Warning; import lombok.Builder; import lombok.Value; diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/BanService.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/BanService.java index 75d10740d..87b3aa008 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/BanService.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/BanService.java @@ -1,9 +1,9 @@ package dev.sheldan.abstracto.moderation.service; -import dev.sheldan.abstracto.moderation.models.BanLog; +import dev.sheldan.abstracto.core.models.ServerContext; import net.dv8tion.jda.api.entities.Member; public interface BanService { - void banMember(Member member, String reason); - void sendBanLog(BanLog banLog); + void banMember(Member member, String reason, ServerContext banLog); + void banMember(Long guildId, Long userId, String reason, ServerContext banIdLog); } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/KickService.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/KickService.java index 414a8e86a..895e3bb75 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/KickService.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/KickService.java @@ -1,9 +1,8 @@ package dev.sheldan.abstracto.moderation.service; -import dev.sheldan.abstracto.moderation.models.KickLogModel; +import dev.sheldan.abstracto.moderation.models.template.KickLogModel; import net.dv8tion.jda.api.entities.Member; public interface KickService { - void kickMember(Member member, String reason); - void sendKickLog(KickLogModel kickLogModel); + void kickMember(Member member, String reason, KickLogModel kickLogModel); } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeService.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeService.java index abf44c086..96c46944a 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeService.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeService.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.moderation.service; -import dev.sheldan.abstracto.core.models.AChannel; +import dev.sheldan.abstracto.core.models.database.AChannel; import net.dv8tion.jda.api.entities.TextChannel; import java.time.Duration; diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/WarnService.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/WarnService.java index 9fc4d4cc7..42034f412 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/WarnService.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/WarnService.java @@ -1,13 +1,12 @@ package dev.sheldan.abstracto.moderation.service; -import dev.sheldan.abstracto.moderation.models.WarnLog; -import dev.sheldan.abstracto.moderation.models.Warning; -import dev.sheldan.abstracto.core.models.AUserInAServer; +import dev.sheldan.abstracto.core.models.ServerContext; +import dev.sheldan.abstracto.moderation.models.template.WarnLog; +import dev.sheldan.abstracto.core.models.database.AUserInAServer; import net.dv8tion.jda.api.entities.Member; public interface WarnService { - Warning warnUser(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason); - Warning warnUser(Member warnedUser, Member warningUser, String reason); - void sendWarnLog(WarnLog warnLogModel); + void warnUser(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason, ServerContext warnLog); + void warnUser(Member warnedUser, Member warningUser, String reason, ServerContext warnLog); } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementService.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementService.java index 9cbc3dfb8..9de6c551f 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementService.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementService.java @@ -1,7 +1,7 @@ package dev.sheldan.abstracto.moderation.service.management; import dev.sheldan.abstracto.moderation.models.Warning; -import dev.sheldan.abstracto.core.models.AUserInAServer; +import dev.sheldan.abstracto.core.models.database.AUserInAServer; public interface WarnManagementService { Warning createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason); diff --git a/abstracto-application/command/command-int/src/main/java/dev/sheldan/abstracto/command/execution/CommandContext.java b/abstracto-application/command/command-int/src/main/java/dev/sheldan/abstracto/command/execution/CommandContext.java index c3aee0e75..bd154d8b3 100644 --- a/abstracto-application/command/command-int/src/main/java/dev/sheldan/abstracto/command/execution/CommandContext.java +++ b/abstracto-application/command/command-int/src/main/java/dev/sheldan/abstracto/command/execution/CommandContext.java @@ -1,5 +1,6 @@ package dev.sheldan.abstracto.command.execution; +import dev.sheldan.abstracto.core.models.UserInitiatedServerContext; import lombok.Builder; import lombok.Getter; import net.dv8tion.jda.api.JDA; @@ -12,7 +13,7 @@ public class CommandContext { private Guild guild; private Member author; private Message message; - private CommandTemplateContext commandTemplateContext; + private UserInitiatedServerContext userInitiatedContext; private Parameters parameters; private JDA jda; } diff --git a/abstracto-application/command/command-int/src/main/java/dev/sheldan/abstracto/command/execution/CommandTemplateContext.java b/abstracto-application/command/command-int/src/main/java/dev/sheldan/abstracto/command/execution/CommandTemplateContext.java deleted file mode 100644 index a648525ae..000000000 --- a/abstracto-application/command/command-int/src/main/java/dev/sheldan/abstracto/command/execution/CommandTemplateContext.java +++ /dev/null @@ -1,18 +0,0 @@ -package dev.sheldan.abstracto.command.execution; - -import dev.sheldan.abstracto.core.models.AChannel; -import dev.sheldan.abstracto.core.models.AServer; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; - -@Getter @Builder @AllArgsConstructor -public class CommandTemplateContext { - private AChannel channel; - private AServer server; - - public CommandTemplateContext(CommandTemplateContext commandTemplateContext) { - this.channel = commandTemplateContext.channel; - this.server = commandTemplateContext.server; - } -} diff --git a/abstracto-application/command/command-int/src/main/java/dev/sheldan/abstracto/command/execution/ContextConverter.java b/abstracto-application/command/command-int/src/main/java/dev/sheldan/abstracto/command/execution/ContextConverter.java new file mode 100644 index 000000000..0e68a6e0f --- /dev/null +++ b/abstracto-application/command/command-int/src/main/java/dev/sheldan/abstracto/command/execution/ContextConverter.java @@ -0,0 +1,31 @@ +package dev.sheldan.abstracto.command.execution; + +import dev.sheldan.abstracto.core.models.UserInitiatedServerContext; +import lombok.extern.slf4j.Slf4j; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +@Slf4j +public class ContextConverter { + + public static UserInitiatedServerContext fromCommandContext(CommandContext commandContext, Class clazz) { + Method m = null; + try { + m = clazz.getMethod("builder"); + UserInitiatedServerContext.UserInitiatedServerContextBuilder builder = (UserInitiatedServerContext.UserInitiatedServerContextBuilder) m.invoke(null, null); + return builder + .member(commandContext.getAuthor()) + .guild(commandContext.getGuild()) + .textChannel(commandContext.getChannel()) + .channel(commandContext.getUserInitiatedContext().getChannel()) + .server(commandContext.getUserInitiatedContext().getServer()) + .aUserInAServer(commandContext.getUserInitiatedContext().getAUserInAServer()) + .user(commandContext.getUserInitiatedContext().getUser()) + .build(); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + log.error("Failed to execute builder method", e); + } + throw new RuntimeException("Failed to create model from context"); + } +} diff --git a/abstracto-application/command/command-support/src/main/java/dev/sheldan/abstracto/commands/management/CommandReceivedHandler.java b/abstracto-application/command/command-support/src/main/java/dev/sheldan/abstracto/commands/management/CommandReceivedHandler.java index 482ad3112..6381581d0 100644 --- a/abstracto-application/command/command-support/src/main/java/dev/sheldan/abstracto/commands/management/CommandReceivedHandler.java +++ b/abstracto-application/command/command-support/src/main/java/dev/sheldan/abstracto/commands/management/CommandReceivedHandler.java @@ -5,12 +5,14 @@ import dev.sheldan.abstracto.command.PostCommandExecution; import dev.sheldan.abstracto.command.execution.*; import dev.sheldan.abstracto.command.meta.UnParsedCommandParameter; import dev.sheldan.abstracto.commands.management.exception.IncorrectParameterException; -import dev.sheldan.abstracto.commands.management.exception.InsufficientParametersException; import dev.sheldan.abstracto.core.management.ChannelManagementService; import dev.sheldan.abstracto.core.management.ServerManagementService; -import dev.sheldan.abstracto.core.models.AChannel; -import dev.sheldan.abstracto.core.models.AServer; -import net.dv8tion.jda.api.entities.GuildChannel; +import dev.sheldan.abstracto.core.management.UserManagementService; +import dev.sheldan.abstracto.core.models.database.AChannel; +import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.UserInitiatedServerContext; +import dev.sheldan.abstracto.core.models.database.AUser; +import dev.sheldan.abstracto.core.models.database.AUserInAServer; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.TextChannel; @@ -35,6 +37,9 @@ public class CommandReceivedHandler extends ListenerAdapter { @Autowired private ServerManagementService serverManagementService; + @Autowired + private UserManagementService userManagementService; + @Autowired private ChannelManagementService channelManagementService; @@ -53,7 +58,7 @@ public class CommandReceivedHandler extends ListenerAdapter { .channel(event.getTextChannel()) .message(event.getMessage()) .jda(event.getJDA()) - .commandTemplateContext(buildTemplateParameter(event)); + .userInitiatedContext(buildTemplateParameter(event)); Command foundCommand = null; try { List parameters = Arrays.asList(event.getMessage().getContentStripped().split(" ")); @@ -77,10 +82,20 @@ public class CommandReceivedHandler extends ListenerAdapter { } - private CommandTemplateContext buildTemplateParameter(MessageReceivedEvent event) { + private UserInitiatedServerContext buildTemplateParameter(MessageReceivedEvent event) { AChannel channel = channelManagementService.loadChannel(event.getChannel().getIdLong()); AServer server = serverManagementService.loadServer(event.getGuild().getIdLong()); - return CommandTemplateContext.builder().channel(channel).server(server).build(); + AUserInAServer user = userManagementService.loadUser(event.getMember()); + return UserInitiatedServerContext + .builder() + .channel(channel) + .server(server) + .member(event.getMember()) + .aUserInAServer(user) + .user(user.getUserReference()) + .textChannel(event.getTextChannel()) + .guild(event.getGuild()) + .build(); } public Parameters getParsedParameters(UnParsedCommandParameter unParsedCommandParameter, Command command, Message message){ diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/Echo.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/Echo.java index 73681c775..4c06ab50e 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/Echo.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/Echo.java @@ -28,7 +28,7 @@ public class Echo implements Command { commandContext.getParameters().getParameters().forEach(o -> { sb.append(o.toString()); }); - EchoModel model = EchoModel.parentBuilder().parent(commandContext.getCommandTemplateContext()).text(sb.toString()).build(); + EchoModel model = EchoModel.builder().text(sb.toString()).build(); commandContext.getChannel().sendMessage(templateService.renderTemplate(TEMPLATE_NAME, model)).queue(); return Result.fromSuccess(); } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/Ping.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/Ping.java index 6b2788c14..70672bfa7 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/Ping.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/Ping.java @@ -20,7 +20,7 @@ public class Ping implements Command { @Override public Result execute(CommandContext commandContext) { long ping = commandContext.getJda().getGatewayPing(); - PingModel model = PingModel.parentBuilder().parent(commandContext.getCommandTemplateContext()).latency(ping).build(); + PingModel model = PingModel.builder().latency(ping).build(); String text = templateService.renderTemplate(PING_TEMPLATE, model); commandContext.getChannel().sendMessage(text).queue(); return Result.fromSuccess(); diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/model/EchoModel.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/model/EchoModel.java index 8a1825e12..b577d0fc2 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/model/EchoModel.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/model/EchoModel.java @@ -1,17 +1,12 @@ package dev.sheldan.abstracto.core.commands.utility.model; -import dev.sheldan.abstracto.command.execution.CommandTemplateContext; +import dev.sheldan.abstracto.core.models.UserInitiatedServerContext; import lombok.Builder; import lombok.Getter; +import lombok.experimental.SuperBuilder; -@Getter -public class EchoModel extends CommandTemplateContext { +@Getter @SuperBuilder +public class EchoModel extends UserInitiatedServerContext { private String text; - - @Builder(builderMethodName = "parentBuilder") - private EchoModel(CommandTemplateContext parent, String text) { - super(parent); - this.text = text; - } } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/model/PingModel.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/model/PingModel.java index 17519db48..22cf95f5b 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/model/PingModel.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/model/PingModel.java @@ -1,16 +1,11 @@ package dev.sheldan.abstracto.core.commands.utility.model; -import dev.sheldan.abstracto.command.execution.CommandTemplateContext; +import dev.sheldan.abstracto.core.models.UserInitiatedServerContext; import lombok.Builder; import lombok.Getter; +import lombok.experimental.SuperBuilder; -@Getter -public class PingModel extends CommandTemplateContext { +@Getter @SuperBuilder +public class PingModel extends UserInitiatedServerContext { private Long latency; - - @Builder(builderMethodName = "parentBuilder") - private PingModel(CommandTemplateContext parent, Long latency) { - super(parent); - this.latency = latency; - } } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/ChannelServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/ChannelServiceBean.java index bd5d4dcc0..3751be53c 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/ChannelServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/ChannelServiceBean.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.core.service; -import dev.sheldan.abstracto.core.models.AChannel; +import dev.sheldan.abstracto.core.models.database.AChannel; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.TextChannel; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/PostTargetServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/PostTargetServiceBean.java index 4a04e5801..7c33f8287 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/PostTargetServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/PostTargetServiceBean.java @@ -2,7 +2,7 @@ package dev.sheldan.abstracto.core.service; import dev.sheldan.abstracto.core.management.PostTargetManagement; import dev.sheldan.abstracto.core.management.ServerManagementService; -import dev.sheldan.abstracto.core.models.PostTarget; +import dev.sheldan.abstracto.core.models.database.PostTarget; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.TextChannel; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/StartupManager.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/StartupManager.java index 6e92a2c59..c07e44389 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/StartupManager.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/StartupManager.java @@ -4,10 +4,10 @@ import dev.sheldan.abstracto.SnowflakeUtils; import dev.sheldan.abstracto.core.management.ChannelManagementService; import dev.sheldan.abstracto.core.management.RoleManagementService; import dev.sheldan.abstracto.core.management.ServerManagementService; -import dev.sheldan.abstracto.core.models.AChannel; +import dev.sheldan.abstracto.core.models.database.AChannel; import dev.sheldan.abstracto.core.models.AChannelType; -import dev.sheldan.abstracto.core.models.ARole; -import dev.sheldan.abstracto.core.models.AServer; +import dev.sheldan.abstracto.core.models.database.ARole; +import dev.sheldan.abstracto.core.models.database.AServer; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Guild; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/management/ChannelManagementServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ChannelManagementServiceBean.java similarity index 92% rename from abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/management/ChannelManagementServiceBean.java rename to abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ChannelManagementServiceBean.java index cb6999be3..dce61c799 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/management/ChannelManagementServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ChannelManagementServiceBean.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.core.service.management; -import dev.sheldan.abstracto.core.models.AChannel; +import dev.sheldan.abstracto.core.models.database.AChannel; import dev.sheldan.abstracto.core.models.AChannelType; import dev.sheldan.abstracto.core.management.ChannelManagementService; import dev.sheldan.abstracto.repository.ChannelRepository; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/management/PostTargetManagementBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/PostTargetManagementBean.java similarity index 94% rename from abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/management/PostTargetManagementBean.java rename to abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/PostTargetManagementBean.java index 879bf51af..e833ac4c3 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/management/PostTargetManagementBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/PostTargetManagementBean.java @@ -1,9 +1,9 @@ package dev.sheldan.abstracto.core.service.management; import dev.sheldan.abstracto.core.exception.PostTargetException; -import dev.sheldan.abstracto.core.models.AChannel; -import dev.sheldan.abstracto.core.models.AServer; -import dev.sheldan.abstracto.core.models.PostTarget; +import dev.sheldan.abstracto.core.models.database.AChannel; +import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.database.PostTarget; import dev.sheldan.abstracto.core.management.ChannelManagementService; import dev.sheldan.abstracto.core.management.PostTargetManagement; import dev.sheldan.abstracto.core.management.ServerManagementService; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/management/RoleManagementServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/RoleManagementServiceBean.java similarity index 90% rename from abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/management/RoleManagementServiceBean.java rename to abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/RoleManagementServiceBean.java index 68e285e8d..8e377ad35 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/management/RoleManagementServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/RoleManagementServiceBean.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.core.service.management; -import dev.sheldan.abstracto.core.models.ARole; +import dev.sheldan.abstracto.core.models.database.ARole; import dev.sheldan.abstracto.core.management.RoleManagementService; import dev.sheldan.abstracto.repository.RoleRepository; import org.springframework.beans.factory.annotation.Autowired; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/management/ServerManagementServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ServerManagementServiceBean.java similarity index 85% rename from abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/management/ServerManagementServiceBean.java rename to abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ServerManagementServiceBean.java index 38d37f6bf..d57685143 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/management/ServerManagementServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ServerManagementServiceBean.java @@ -1,6 +1,9 @@ -package dev.sheldan.abstracto.core.management; +package dev.sheldan.abstracto.core.service.management; -import dev.sheldan.abstracto.core.models.*; +import dev.sheldan.abstracto.core.management.ChannelManagementService; +import dev.sheldan.abstracto.core.management.PostTargetManagement; +import dev.sheldan.abstracto.core.management.ServerManagementService; +import dev.sheldan.abstracto.core.models.database.*; import dev.sheldan.abstracto.repository.ServerRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/management/UserManagementServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/UserManagementServiceBean.java similarity index 83% rename from abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/management/UserManagementServiceBean.java rename to abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/UserManagementServiceBean.java index 9d197e03c..6bbf03d06 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/management/UserManagementServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/UserManagementServiceBean.java @@ -1,8 +1,10 @@ -package dev.sheldan.abstracto.core.management; +package dev.sheldan.abstracto.core.service.management; -import dev.sheldan.abstracto.core.models.AServer; -import dev.sheldan.abstracto.core.models.AUser; -import dev.sheldan.abstracto.core.models.AUserInAServer; +import dev.sheldan.abstracto.core.management.ServerManagementService; +import dev.sheldan.abstracto.core.management.UserManagementService; +import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.database.AUser; +import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.repository.UserInServerRepository; import dev.sheldan.abstracto.repository.UserRepository; import net.dv8tion.jda.api.entities.Member; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/listener/ChannelListener.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/listener/ChannelListener.java index c39bdd61c..14c327e71 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/listener/ChannelListener.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/listener/ChannelListener.java @@ -1,7 +1,7 @@ package dev.sheldan.abstracto.listener; -import dev.sheldan.abstracto.core.models.AChannel; -import dev.sheldan.abstracto.core.models.AServer; +import dev.sheldan.abstracto.core.models.database.AChannel; +import dev.sheldan.abstracto.core.models.database.AServer; import dev.sheldan.abstracto.repository.ServerRepository; import net.dv8tion.jda.api.entities.TextChannel; import net.dv8tion.jda.api.events.channel.text.TextChannelCreateEvent; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/listener/JoinLeaveListener.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/listener/JoinLeaveListener.java index f635d2a7e..b23121674 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/listener/JoinLeaveListener.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/listener/JoinLeaveListener.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.listener; -import dev.sheldan.abstracto.core.models.PostTarget; +import dev.sheldan.abstracto.core.models.database.PostTarget; import dev.sheldan.abstracto.core.management.PostTargetManagement; import dev.sheldan.abstracto.core.service.PostTargetService; import dev.sheldan.abstracto.core.management.ServerManagementService; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/ChannelRepository.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/ChannelRepository.java index 6df9f3df0..dc3001acd 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/ChannelRepository.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/ChannelRepository.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.repository; -import dev.sheldan.abstracto.core.models.AChannel; +import dev.sheldan.abstracto.core.models.database.AChannel; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/PostTargetRepository.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/PostTargetRepository.java index a8106772a..d8e45c473 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/PostTargetRepository.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/PostTargetRepository.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.repository; -import dev.sheldan.abstracto.core.models.PostTarget; +import dev.sheldan.abstracto.core.models.database.PostTarget; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/RoleRepository.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/RoleRepository.java index 40b9c5b40..938bbd982 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/RoleRepository.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/RoleRepository.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.repository; -import dev.sheldan.abstracto.core.models.ARole; +import dev.sheldan.abstracto.core.models.database.ARole; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/ServerRepository.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/ServerRepository.java index 2e5382c7b..d7d0907c7 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/ServerRepository.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/ServerRepository.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.repository; -import dev.sheldan.abstracto.core.models.AServer; +import dev.sheldan.abstracto.core.models.database.AServer; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/UserInServerRepository.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/UserInServerRepository.java index dcf6854ac..365dfea39 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/UserInServerRepository.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/UserInServerRepository.java @@ -1,8 +1,8 @@ package dev.sheldan.abstracto.repository; -import dev.sheldan.abstracto.core.models.AServer; -import dev.sheldan.abstracto.core.models.AUser; -import dev.sheldan.abstracto.core.models.AUserInAServer; +import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.database.AUser; +import dev.sheldan.abstracto.core.models.database.AUserInAServer; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/UserRepository.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/UserRepository.java index d327a6b4a..3b411ee77 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/UserRepository.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/repository/UserRepository.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.repository; -import dev.sheldan.abstracto.core.models.AUser; +import dev.sheldan.abstracto.core.models.database.AUser; import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository { diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/ChannelManagementService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/ChannelManagementService.java index 70f3c030b..2491a14ac 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/ChannelManagementService.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/ChannelManagementService.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.core.management; -import dev.sheldan.abstracto.core.models.AChannel; +import dev.sheldan.abstracto.core.models.database.AChannel; import dev.sheldan.abstracto.core.models.AChannelType; public interface ChannelManagementService { diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/PostTargetManagement.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/PostTargetManagement.java index bd0e8243d..9e3f078ae 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/PostTargetManagement.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/PostTargetManagement.java @@ -1,8 +1,8 @@ package dev.sheldan.abstracto.core.management; -import dev.sheldan.abstracto.core.models.AChannel; -import dev.sheldan.abstracto.core.models.AServer; -import dev.sheldan.abstracto.core.models.PostTarget; +import dev.sheldan.abstracto.core.models.database.AChannel; +import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.database.PostTarget; public interface PostTargetManagement { void createPostTarget(String name, AChannel targetChanel, AServer server); diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/RoleManagementService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/RoleManagementService.java index 3309ebe75..0291ab7a1 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/RoleManagementService.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/RoleManagementService.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.core.management; -import dev.sheldan.abstracto.core.models.ARole; +import dev.sheldan.abstracto.core.models.database.ARole; public interface RoleManagementService { ARole createRole(Long id); diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/ServerManagementService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/ServerManagementService.java index f60d739d0..63bbf6be5 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/ServerManagementService.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/ServerManagementService.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.core.management; -import dev.sheldan.abstracto.core.models.*; +import dev.sheldan.abstracto.core.models.database.*; public interface ServerManagementService { AServer createServer(Long id); diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/UserManagementService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/UserManagementService.java index 80b7f52ad..747b69bf0 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/UserManagementService.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/management/UserManagementService.java @@ -1,8 +1,8 @@ package dev.sheldan.abstracto.core.management; -import dev.sheldan.abstracto.core.models.AServer; -import dev.sheldan.abstracto.core.models.AUser; -import dev.sheldan.abstracto.core.models.AUserInAServer; +import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.database.AUser; +import dev.sheldan.abstracto.core.models.database.AUserInAServer; import net.dv8tion.jda.api.entities.Member; public interface UserManagementService { diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/ContextAware.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/ContextAware.java new file mode 100644 index 000000000..6b1eed263 --- /dev/null +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/ContextAware.java @@ -0,0 +1,5 @@ +package dev.sheldan.abstracto.core.models; + +public interface ContextAware { + String getTemplateSuffix(); +} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/ServerContext.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/ServerContext.java new file mode 100644 index 000000000..0cf3207d1 --- /dev/null +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/ServerContext.java @@ -0,0 +1,24 @@ +package dev.sheldan.abstracto.core.models; + +import dev.sheldan.abstracto.core.models.database.AServer; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.experimental.SuperBuilder; +import net.dv8tion.jda.api.entities.Guild; + +@Getter +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor +@Setter +public class ServerContext implements ContextAware{ + private Guild guild; + private AServer server; + + @Override + public String getTemplateSuffix() { + return "server"; + } +} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/UserInitiatedServerContext.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/UserInitiatedServerContext.java new file mode 100644 index 000000000..1a41bb1e4 --- /dev/null +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/UserInitiatedServerContext.java @@ -0,0 +1,27 @@ +package dev.sheldan.abstracto.core.models; + +import dev.sheldan.abstracto.core.models.database.AChannel; +import dev.sheldan.abstracto.core.models.database.AUser; +import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.experimental.SuperBuilder; +import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.entities.TextChannel; + +@Getter @NoArgsConstructor +@Setter +@SuperBuilder +public class UserInitiatedServerContext extends ServerContext { + private AChannel channel; + private TextChannel textChannel; + private Member member; + private AUser user; + private AUserInAServer aUserInAServer; + + @Override + public String getTemplateSuffix() { + return ""; + } +} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AChannel.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AChannel.java similarity index 85% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AChannel.java rename to abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AChannel.java index 801e9432b..2dfc6bbad 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AChannel.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AChannel.java @@ -1,5 +1,7 @@ -package dev.sheldan.abstracto.core.models; +package dev.sheldan.abstracto.core.models.database; +import dev.sheldan.abstracto.core.models.AChannelType; +import dev.sheldan.abstracto.core.models.SnowFlake; import lombok.*; import net.dv8tion.jda.api.entities.ChannelType; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/ARole.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/ARole.java similarity index 78% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/ARole.java rename to abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/ARole.java index a1f568ec1..5c261959f 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/ARole.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/ARole.java @@ -1,5 +1,6 @@ -package dev.sheldan.abstracto.core.models; +package dev.sheldan.abstracto.core.models.database; +import dev.sheldan.abstracto.core.models.SnowFlake; import lombok.*; import javax.persistence.Column; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AServer.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AServer.java similarity index 88% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AServer.java rename to abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AServer.java index 2960aa561..801bf57f5 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AServer.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AServer.java @@ -1,5 +1,6 @@ -package dev.sheldan.abstracto.core.models; +package dev.sheldan.abstracto.core.models.database; +import dev.sheldan.abstracto.core.models.SnowFlake; import lombok.*; import javax.persistence.*; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AUser.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AUser.java similarity index 88% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AUser.java rename to abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AUser.java index 80c630857..77a2fd6b4 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AUser.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AUser.java @@ -1,4 +1,4 @@ -package dev.sheldan.abstracto.core.models; +package dev.sheldan.abstracto.core.models.database; import lombok.*; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AUserInAServer.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AUserInAServer.java similarity index 90% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AUserInAServer.java rename to abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AUserInAServer.java index c24753095..3cb2b4117 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AUserInAServer.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AUserInAServer.java @@ -1,4 +1,4 @@ -package dev.sheldan.abstracto.core.models; +package dev.sheldan.abstracto.core.models.database; import lombok.Builder; import lombok.Getter; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/ChannelGroup.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/ChannelGroup.java similarity index 91% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/ChannelGroup.java rename to abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/ChannelGroup.java index 232c9f568..4d79c9584 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/ChannelGroup.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/ChannelGroup.java @@ -1,4 +1,4 @@ -package dev.sheldan.abstracto.core.models; +package dev.sheldan.abstracto.core.models.database; import lombok.*; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/PostTarget.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/PostTarget.java similarity index 93% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/PostTarget.java rename to abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/PostTarget.java index 822f22768..5a4854e56 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/PostTarget.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/PostTarget.java @@ -1,9 +1,8 @@ -package dev.sheldan.abstracto.core.models; +package dev.sheldan.abstracto.core.models.database; import lombok.*; import javax.persistence.*; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/ChannelService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/ChannelService.java index b54ff59e2..19c77f6c2 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/ChannelService.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/ChannelService.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.core.service; -import dev.sheldan.abstracto.core.models.AChannel; +import dev.sheldan.abstracto.core.models.database.AChannel; public interface ChannelService { void sendTextInAChannel(String text, AChannel channel); diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/PostTargetService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/PostTargetService.java index c0c012181..ad8515056 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/PostTargetService.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/PostTargetService.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.core.service; -import dev.sheldan.abstracto.core.models.PostTarget; +import dev.sheldan.abstracto.core.models.database.PostTarget; public interface PostTargetService { void sendTextInPostTarget(String text, PostTarget target); diff --git a/abstracto-application/templating/templating-impl/src/main/java/dev/sheldan/abstracto/templating/loading/TemplateServiceBean.java b/abstracto-application/templating/templating-impl/src/main/java/dev/sheldan/abstracto/templating/loading/TemplateServiceBean.java index cf637ecb3..d69528bf4 100644 --- a/abstracto-application/templating/templating-impl/src/main/java/dev/sheldan/abstracto/templating/loading/TemplateServiceBean.java +++ b/abstracto-application/templating/templating-impl/src/main/java/dev/sheldan/abstracto/templating/loading/TemplateServiceBean.java @@ -1,5 +1,7 @@ package dev.sheldan.abstracto.templating.loading; +import dev.sheldan.abstracto.core.models.ContextAware; +import dev.sheldan.abstracto.core.models.ServerContext; import dev.sheldan.abstracto.templating.TemplateDto; import dev.sheldan.abstracto.templating.TemplateService; import freemarker.template.Configuration; @@ -30,6 +32,11 @@ public class TemplateServiceBean implements TemplateService { return repository.getOne(key); } + @Override + public boolean templateExists(String key) { + return getTemplateByKey(key) != null; + } + @Override public String renderTemplate(TemplateDto templateDto) { return null; @@ -55,6 +62,18 @@ public class TemplateServiceBean implements TemplateService { return ""; } + @Override + public String renderContextAwareTemplate(String key, ServerContext serverContext) { + return renderTemplate(getTemplateKey(key, serverContext), serverContext); + } + + private String getTemplateKey(String key, ContextAware contextAware) { + if(!contextAware.getTemplateSuffix().equals("")) { + return key + "_" + contextAware.getTemplateSuffix(); + } + return key; + } + @Override public void createTemplate(String key, String content) { repository.save(TemplateDto.builder().key(key).content(content).lastModified(Instant.now()).build()); diff --git a/abstracto-application/templating/templating-interface/pom.xml b/abstracto-application/templating/templating-interface/pom.xml index 4a89b9889..4c87a9d66 100644 --- a/abstracto-application/templating/templating-interface/pom.xml +++ b/abstracto-application/templating/templating-interface/pom.xml @@ -16,6 +16,13 @@ org.springframework.boot spring-boot-starter-data-jpa + + + dev.sheldan.abstracto.core + core-interface + ${project.version} + compile + \ No newline at end of file diff --git a/abstracto-application/templating/templating-interface/src/main/java/dev/sheldan/abstracto/templating/TemplateService.java b/abstracto-application/templating/templating-interface/src/main/java/dev/sheldan/abstracto/templating/TemplateService.java index 6725c41e0..bf39448c5 100644 --- a/abstracto-application/templating/templating-interface/src/main/java/dev/sheldan/abstracto/templating/TemplateService.java +++ b/abstracto-application/templating/templating-interface/src/main/java/dev/sheldan/abstracto/templating/TemplateService.java @@ -1,11 +1,15 @@ package dev.sheldan.abstracto.templating; +import dev.sheldan.abstracto.core.models.ServerContext; + import java.util.HashMap; public interface TemplateService { TemplateDto getTemplateByKey(String key); + boolean templateExists(String key); String renderTemplate(TemplateDto templateDto); String renderTemplate(String key, HashMap parameters); String renderTemplate(String key, Object model); + String renderContextAwareTemplate(String key, ServerContext serverContext); void createTemplate(String key, String content); }