added rework of model split, not completely done, a lot of questions open (converters evaluate lazy evaluated properties (might need addition of different convert methods), hen egg problem with channel and server for converters, AModels still need to be exposed regardless, because else database cannot be used in same schema (jpa needs the objects), api need to be checked, to not convert all the time between objects for no reason)

This commit is contained in:
Sheldan
2020-04-09 23:59:47 +02:00
parent ef8dcb61d9
commit aa8ff9ddb5
211 changed files with 2067 additions and 1297 deletions

View File

@@ -17,6 +17,12 @@
<artifactId>moderation-int</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>dev.sheldan.abstracto.core</groupId>
<artifactId>core-db-models</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View File

@@ -5,9 +5,12 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo;
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
import dev.sheldan.abstracto.core.command.config.Parameter;
import dev.sheldan.abstracto.core.command.execution.*;
import dev.sheldan.abstracto.core.command.service.UserService;
import dev.sheldan.abstracto.core.converter.UserInServerModelConverter;
import dev.sheldan.abstracto.core.service.PostTargetService;
import dev.sheldan.abstracto.moderation.Moderation;
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
import dev.sheldan.abstracto.moderation.models.template.commands.BanLog;
import dev.sheldan.abstracto.moderation.models.template.commands.BanLogModel;
import dev.sheldan.abstracto.moderation.service.BanService;
import dev.sheldan.abstracto.templating.service.TemplateService;
import lombok.extern.slf4j.Slf4j;
@@ -28,6 +31,13 @@ public class Ban extends AbstractConditionableCommand {
@Autowired
private TemplateService templateService;
@Autowired
private PostTargetService postTargetService;
@Autowired
private UserInServerModelConverter userConverter;
@Override
public CommandResult execute(CommandContext commandContext) {
List<Object> parameters = commandContext.getParameters().getParameters();
@@ -35,11 +45,12 @@ public class Ban extends AbstractConditionableCommand {
String defaultReason = templateService.renderTemplateWithMap("ban_default_reason", null);
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
BanLog banLogModel = (BanLog) ContextConverter.fromCommandContext(commandContext, BanLog.class);
banLogModel.setBannedUser(member);
banLogModel.setBanningUser(commandContext.getAuthor());
BanLogModel banLogModel = (BanLogModel) ContextConverter.fromCommandContext(commandContext, BanLogModel.class);
banLogModel.setBannedUser(userConverter.fromMember(member));
banLogModel.setBanningUser(userConverter.fromUser(commandContext.getUserInitiatedContext().getAUserInAServer()));
banLogModel.setReason(reason);
banService.banMember(member, reason, banLogModel);
banService.banMember(member, reason);
banService.sendBanLog(banLogModel);
return CommandResult.fromSuccess();
}

View File

@@ -5,9 +5,11 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo;
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
import dev.sheldan.abstracto.core.command.config.Parameter;
import dev.sheldan.abstracto.core.command.execution.*;
import dev.sheldan.abstracto.core.converter.UserInServerModelConverter;
import dev.sheldan.abstracto.core.service.PostTargetService;
import dev.sheldan.abstracto.moderation.Moderation;
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
import dev.sheldan.abstracto.moderation.models.template.commands.BanIdLog;
import dev.sheldan.abstracto.moderation.models.template.commands.BanIdLogModel;
import dev.sheldan.abstracto.moderation.service.BanService;
import dev.sheldan.abstracto.templating.service.TemplateService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -25,17 +27,25 @@ public class BanId extends AbstractConditionableCommand {
@Autowired
private BanService banService;
@Autowired
private PostTargetService postTargetService;
@Autowired
private UserInServerModelConverter userConverter;
@Override
public CommandResult execute(CommandContext commandContext) {
List<Object> parameters = commandContext.getParameters().getParameters();
Long userId = (Long) parameters.get(0);
String defaultReason = templateService.renderTemplateWithMap("ban_default_reason", null);
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
BanIdLog banLogModel = (BanIdLog) ContextConverter.fromCommandContext(commandContext, BanIdLog.class);
BanIdLogModel banLogModel = (BanIdLogModel) ContextConverter.fromCommandContext(commandContext, BanIdLogModel.class);
banLogModel.setBannedUserId(userId);
banLogModel.setBanningUser(commandContext.getAuthor());
banLogModel.setBanningUser(userConverter.fromUser(commandContext.getUserInitiatedContext().getAUserInAServer()));
banLogModel.setReason(reason);
banService.banMember(userId, commandContext.getGuild().getIdLong(), reason, banLogModel);
banService.banMember(userId, commandContext.getGuild().getIdLong(), reason);
banService.sendBanIdLog(banLogModel);
return CommandResult.fromSuccess();
}

View File

@@ -5,6 +5,7 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo;
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
import dev.sheldan.abstracto.core.command.config.Parameter;
import dev.sheldan.abstracto.core.command.execution.*;
import dev.sheldan.abstracto.core.converter.UserInServerModelConverter;
import dev.sheldan.abstracto.moderation.Moderation;
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
import dev.sheldan.abstracto.moderation.models.template.commands.KickLogModel;
@@ -26,6 +27,9 @@ public class Kick extends AbstractConditionableCommand {
@Autowired
private KickServiceBean kickService;
@Autowired
private UserInServerModelConverter userConverter;
@Override
public CommandResult execute(CommandContext commandContext) {
@@ -35,10 +39,11 @@ public class Kick extends AbstractConditionableCommand {
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
KickLogModel kickLogModel = (KickLogModel) ContextConverter.fromCommandContext(commandContext, KickLogModel.class);
kickLogModel.setKickedUser(member);
kickLogModel.setKickingUser(commandContext.getAuthor());
kickLogModel.setKickedUser(userConverter.fromMember(member));
kickLogModel.setKickingUser(userConverter.fromUser(commandContext.getUserInitiatedContext().getAUserInAServer()));
kickLogModel.setReason(reason);
kickService.kickMember(member, reason, kickLogModel);
kickService.kickMember(member, reason);
kickService.sendKickLog(kickLogModel);
return CommandResult.fromSuccess();
}

View File

@@ -5,10 +5,11 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo;
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
import dev.sheldan.abstracto.core.command.config.Parameter;
import dev.sheldan.abstracto.core.command.execution.*;
import dev.sheldan.abstracto.core.service.management.UserManagementService;
import dev.sheldan.abstracto.moderation.Moderation;
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLog;
import dev.sheldan.abstracto.moderation.converter.WarnConverter;
import dev.sheldan.abstracto.moderation.models.dto.WarnDto;
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLogModel;
import dev.sheldan.abstracto.moderation.service.WarnService;
import dev.sheldan.abstracto.templating.service.TemplateService;
import lombok.extern.slf4j.Slf4j;
@@ -23,27 +24,26 @@ import java.util.List;
@Slf4j
public class Warn extends AbstractConditionableCommand {
@Autowired
private UserManagementService userManagementService;
@Autowired
private WarnService warnService;
@Autowired
private TemplateService templateService;
@Autowired
private WarnConverter warnConverter;
@Override
public CommandResult execute(CommandContext commandContext) {
List<Object> parameters = commandContext.getParameters().getParameters();
Member member = (Member) parameters.get(0);
String defaultReason = templateService.renderTemplateWithMap("warn_default_reason", null);
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
WarnLog warnLogModel = (WarnLog) ContextConverter.fromCommandContext(commandContext, WarnLog.class);
warnLogModel.setWarnedUser(member);
WarnLogModel warnLogModel = (WarnLogModel) ContextConverter.fromCommandContext(commandContext, WarnLogModel.class);
warnLogModel.setMessage(commandContext.getMessage());
warnLogModel.setReason(reason);
warnLogModel.setWarningUser(commandContext.getAuthor());
warnService.warnUser(member, commandContext.getAuthor(), reason, warnLogModel);
WarnDto warnDto = warnService.warnUser(member, commandContext.getAuthor(), reason);
warnLogModel.setWarning(warnConverter.convertFromWarnDto(warnDto));
warnService.sendWarnLog(warnLogModel);
return CommandResult.fromSuccess();
}

View File

@@ -0,0 +1,30 @@
package dev.sheldan.abstracto.moderation.converter;
import dev.sheldan.abstracto.core.utils.AbstractoDateUtils;
import dev.sheldan.abstracto.moderation.models.database.Warning;
import dev.sheldan.abstracto.moderation.models.dto.WarnDto;
import dev.sheldan.abstracto.moderation.models.template.commands.WarnModel;
import org.springframework.stereotype.Component;
@Component
public class WarnConverter {
public WarnDto convertFromAWarn(Warning warning) {
return WarnDto.builder()
.id(warning.getId())
.decayed(warning.getDecayed())
.reason(warning.getReason())
.decayDate(AbstractoDateUtils.convertInstant(warning.getDecayDate()))
.warnDate(AbstractoDateUtils.convertInstant(warning.getWarnDate()))
.build();
}
public WarnModel convertFromWarnDto(WarnDto warnDto) {
return WarnModel
.builder()
.decayDate(warnDto.getDecayDate())
.decayed(warnDto.getDecayed())
.warnDate(warnDto.getWarnDate())
.reason(warnDto.getReason())
.build();
}
}

View File

@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.moderation.listener;
import dev.sheldan.abstracto.core.listener.JoinListener;
import dev.sheldan.abstracto.core.service.PostTargetService;
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
import dev.sheldan.abstracto.templating.service.TemplateService;
import lombok.extern.slf4j.Slf4j;
@@ -23,9 +22,6 @@ public class JoinLogger implements JoinListener {
private static final String USER_JOIN_TEMPLATE = "user_join";
private static final String JOIN_LOG_TARGET = "joinLog";
@Autowired
private ServerManagementService serverManagementService;
@Autowired
private TemplateService templateService;

View File

@@ -2,7 +2,6 @@ package dev.sheldan.abstracto.moderation.listener;
import dev.sheldan.abstracto.core.listener.LeaveListener;
import dev.sheldan.abstracto.core.service.PostTargetService;
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
import dev.sheldan.abstracto.templating.service.TemplateService;
import lombok.extern.slf4j.Slf4j;
@@ -23,9 +22,6 @@ public class LeaveLogger implements LeaveListener {
private static final String USER_LEAVE_TEMPLATE = "user_leave";
private static final String LEAVE_LOG_TARGET = "leaveLog";
@Autowired
private ServerManagementService serverManagementService;
@Autowired
private TemplateService templateService;

View File

@@ -0,0 +1,47 @@
package dev.sheldan.abstracto.moderation.models.database;
import dev.sheldan.abstracto.core.models.AUserInAServer;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.time.Instant;
@Entity
@Table(name="warning")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Warning {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Getter
private Long id;
@Getter
@ManyToOne
@JoinColumn(name = "warnedUserId")
private AUserInAServer warnedUser;
@Getter
@ManyToOne
@JoinColumn(name = "warningUserId")
private AUserInAServer warningUser;
@Getter
private String reason;
@Getter
private Instant warnDate;
@Getter
private Boolean decayed;
@Getter
private Instant decayDate;
}

View File

@@ -4,6 +4,8 @@ import dev.sheldan.abstracto.core.exception.GuildException;
import dev.sheldan.abstracto.core.models.context.ServerContext;
import dev.sheldan.abstracto.core.service.Bot;
import dev.sheldan.abstracto.core.service.PostTargetService;
import dev.sheldan.abstracto.moderation.models.template.commands.BanIdLogModel;
import dev.sheldan.abstracto.moderation.models.template.commands.BanLogModel;
import dev.sheldan.abstracto.templating.service.TemplateService;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.entities.Guild;
@@ -18,8 +20,9 @@ import java.util.Optional;
public class BanServiceBean implements BanService {
private static final String BAN_LOG_TEMPLATE = "ban_log";
private static final String BAN_ID_LOG_TEMPLATE = "banid_log";
private static final String BAN_LOG_TARGET = "banLog";
private static final String BAN_ID_LOG_TEMPLATE = "banid_log";
@Autowired
private Bot bot;
@@ -30,17 +33,25 @@ public class BanServiceBean implements BanService {
private PostTargetService postTargetService;
@Override
public void banMember(Member member, String reason, ServerContext banLog) {
public void banMember(Member member, String reason) {
this.banUser(member.getGuild().getIdLong(), member.getIdLong(), reason);
String warnLogMessage = templateService.renderTemplate(BAN_LOG_TEMPLATE, banLog);
postTargetService.sendTextInPostTarget(warnLogMessage, BAN_LOG_TARGET, banLog.getServer().getId());
}
@Override
public void banMember(Long guildId, Long userId, String reason, ServerContext banIdLog) {
banUser(guildId, userId, reason);
String warnLogMessage = templateService.renderTemplate(BAN_ID_LOG_TEMPLATE, banIdLog);
postTargetService.sendTextInPostTarget(warnLogMessage, BAN_LOG_TARGET, guildId);
public void banMember(Long guildId, Long userId, String reason) {
this.banUser(guildId, userId, reason);
}
@Override
public void sendBanLog(BanLogModel banLogModel) {
String warnLogMessage = templateService.renderTemplate(BAN_LOG_TEMPLATE, banLogModel);
postTargetService.sendTextInPostTarget(warnLogMessage, BAN_LOG_TARGET, banLogModel.getGuild().getIdLong());
}
@Override
public void sendBanIdLog(BanIdLogModel banIdLogModel) {
String warnLogMessage = templateService.renderTemplate(BAN_ID_LOG_TEMPLATE, banIdLogModel);
postTargetService.sendTextInPostTarget(warnLogMessage, BAN_LOG_TARGET, banIdLogModel.getGuild().getIdLong());
}
private void banUser(Long guildId, Long userId, String reason) {

View File

@@ -29,18 +29,18 @@ public class KickServiceBean implements KickService {
private PostTargetService postTargetService;
@Override
public void kickMember(Member member, String reason, KickLogModel kickLogModel) {
Optional<Guild> guildById = bot.getGuildById(kickLogModel.getGuild().getIdLong());
public void kickMember(Member member, String reason) {
Optional<Guild> guildById = bot.getGuildById(member.getGuild().getIdLong());
if(guildById.isPresent()) {
guildById.get().kick(member, reason).queue();
this.sendKickLog(kickLogModel);
} else {
log.warn("Not able to kick. Guild {} not found.", kickLogModel.getGuild().getIdLong());
throw new GuildException(String.format("Not able to kick %s. Guild %s not found", kickLogModel.getMember().getIdLong(), kickLogModel.getGuild().getIdLong()));
log.warn("Not able to kick. Guild {} not found.", member.getGuild().getIdLong());
throw new GuildException(String.format("Not able to kick %s. Guild %s not found", member.getIdLong(), member.getGuild().getIdLong()));
}
}
private void sendKickLog(KickLogModel kickLogModel) {
@Override
public void sendKickLog(KickLogModel kickLogModel) {
String warnLogMessage = templateService.renderTemplate(KICK_LOG_TEMPLATE, kickLogModel);
postTargetService.sendTextInPostTarget(warnLogMessage, WARN_LOG_TARGET, kickLogModel.getServer().getId());
}

View File

@@ -1,7 +1,7 @@
package dev.sheldan.abstracto.moderation.service;
import dev.sheldan.abstracto.core.exception.ChannelException;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
import dev.sheldan.abstracto.core.service.Bot;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.entities.TextChannel;
@@ -28,7 +28,7 @@ public class SlowModeServiceBean implements SlowModeService {
}
@Override
public void setSlowMode(AChannel channel, Duration duration) {
public void setSlowMode(ChannelDto channel, Duration duration) {
Optional<TextChannel> textChannelOptional = bot.getTextChannelFromServer(channel.getServer().getId(), channel.getId());
if(textChannelOptional.isPresent()) {
TextChannel textChannel = textChannelOptional.get();

View File

@@ -1,17 +1,17 @@
package dev.sheldan.abstracto.moderation.service;
import dev.sheldan.abstracto.core.command.service.UserService;
import dev.sheldan.abstracto.core.exception.UserException;
import dev.sheldan.abstracto.core.models.context.ServerContext;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUser;
import dev.sheldan.abstracto.core.models.AUserInAServer;
import dev.sheldan.abstracto.core.models.dto.ServerDto;
import dev.sheldan.abstracto.core.models.dto.UserDto;
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
import dev.sheldan.abstracto.moderation.converter.WarnConverter;
import dev.sheldan.abstracto.moderation.models.dto.WarnDto;
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLogModel;
import dev.sheldan.abstracto.moderation.service.management.WarnManagementServiceBean;
import dev.sheldan.abstracto.templating.model.MessageToSend;
import dev.sheldan.abstracto.moderation.models.template.commands.WarnLog;
import dev.sheldan.abstracto.moderation.models.template.commands.WarnNotification;
import dev.sheldan.abstracto.moderation.models.database.Warning;
import dev.sheldan.abstracto.moderation.service.management.WarnManagementService;
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
import dev.sheldan.abstracto.core.service.management.UserManagementService;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.moderation.models.template.commands.WarnNotificationModel;
import dev.sheldan.abstracto.core.service.Bot;
import dev.sheldan.abstracto.core.service.PostTargetService;
import dev.sheldan.abstracto.templating.service.TemplateService;
@@ -33,13 +33,10 @@ public class WarnServiceBean implements WarnService {
public static final String WARN_LOG_TARGET = "warnLog";
@Autowired
private UserManagementService userManagementService;
private UserService userService;
@Autowired
private WarnManagementService warnManagementService;
@Autowired
private ServerManagementService serverManagementService;
private WarnManagementServiceBean warnManagementService;
@Autowired
private PostTargetService postTargetService;
@@ -53,13 +50,19 @@ public class WarnServiceBean implements WarnService {
private static final String WARN_LOG_TEMPLATE = "warn_log";
private static final String WARN_NOTIFICATION_TEMPLATE = "warn_notification";
@Autowired
private WarnConverter warnConverter;
@Override
public void warnUser(AUserInAServer warnedAUserInAServer, AUserInAServer warningAUserInAServer, String reason, WarnLog warnLog) {
AUser warningAUser = warningAUserInAServer.getUserReference();
AUser warnedAUser = warnedAUserInAServer.getUserReference();
AServer serverOfWarning = warnedAUserInAServer.getServerReference();
public WarnDto warnUser(UserInServerDto warnedAUserInAServer, UserInServerDto warningAUserInAServer, String reason) {
UserDto warningAUser = warningAUserInAServer.getUser();
UserDto warnedAUser = warnedAUserInAServer.getUser();
ServerDto serverOfWarning = warnedAUserInAServer.getServer();
log.info("User {} is warning {} in server {} because of {}", warningAUser.getId(), warnedAUser.getId(), serverOfWarning.getId(), reason);
Warning warning = warnManagementService.createWarning(warnedAUserInAServer, warningAUserInAServer, reason);
AUserInAServer warnedUserInAServerDb = AUserInAServer.builder().userInServerId(warnedAUserInAServer.getUserInServerId()).build();
AUserInAServer warningUserInAServerDb = AUserInAServer.builder().userInServerId(warnedAUserInAServer.getUserInServerId()).build();
WarnDto warning = warnManagementService.createWarning(warnedUserInAServerDb, warningUserInAServerDb, reason);
JDA instance = bot.getInstance();
User userBeingWarned = instance.getUserById(warnedAUser.getId());
Optional<Guild> guildById = bot.getGuildById(serverOfWarning.getId());
@@ -67,11 +70,9 @@ public class WarnServiceBean implements WarnService {
if(guildById.isPresent()) {
guildName = guildById.get().getName();
}
warnLog.setWarning(warning);
this.sendWarnLog(warnLog);
WarnNotification warnNotification = WarnNotification.builder().warning(warning).serverName(guildName).build();
WarnNotificationModel warnNotificationModel = WarnNotificationModel.builder().warning(warnConverter.convertFromWarnDto(warning)).serverName(guildName).build();
if(userBeingWarned != null) {
String warnLogMessage = templateService.renderTemplate(WARN_NOTIFICATION_TEMPLATE, warnNotification);
String warnLogMessage = templateService.renderTemplate(WARN_NOTIFICATION_TEMPLATE, warnNotificationModel);
CompletableFuture<Message> messageFuture = new CompletableFuture<>();
// TODO the person executing this, is unaware that the message failed
@@ -88,16 +89,18 @@ public class WarnServiceBean implements WarnService {
log.warn("Unable to find user {} in guild {} to warn.", warnedAUser.getId(), serverOfWarning.getId());
throw new UserException(String.format("Unable to find user %s.", warnedAUser.getId()));
}
return warning;
}
@Override
public void warnUser(Member warnedMember, Member warningMember, String reason, WarnLog warnLog) {
AUserInAServer warnedAUser = userManagementService.loadUser(warnedMember);
AUserInAServer warningAUser = userManagementService.loadUser(warningMember);
this.warnUser(warnedAUser, warningAUser, reason, warnLog);
public WarnDto warnUser(Member warnedMember, Member warningMember, String reason) {
UserInServerDto warnedAUser = userService.loadUser(warnedMember.getGuild().getIdLong(), warnedMember.getIdLong());
UserInServerDto warningAUser = userService.loadUser(warningMember.getGuild().getIdLong(), warningMember.getIdLong());
return this.warnUser(warnedAUser, warningAUser, reason);
}
private void sendWarnLog(ServerContext warnLogModel) {
@Override
public void sendWarnLog(WarnLogModel warnLogModel) {
String warnLogMessage = templateService.renderTemplate(WARN_LOG_TEMPLATE, warnLogModel);
postTargetService.sendTextInPostTarget(warnLogMessage, WARN_LOG_TARGET, warnLogModel.getServer().getId());
MessageToSend message = templateService.renderEmbedTemplate("warn_log", warnLogModel);

View File

@@ -1,21 +1,25 @@
package dev.sheldan.abstracto.moderation.service.management;
import dev.sheldan.abstracto.core.models.AUserInAServer;
import dev.sheldan.abstracto.moderation.converter.WarnConverter;
import dev.sheldan.abstracto.moderation.models.database.Warning;
import dev.sheldan.abstracto.moderation.models.dto.WarnDto;
import dev.sheldan.abstracto.moderation.repository.WarnRepository;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.Instant;
@Component
public class WarnManagementServiceBean implements WarnManagementService {
public class WarnManagementServiceBean {
@Autowired
private WarnRepository warnRepository;
@Override
public Warning createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason) {
@Autowired
private WarnConverter warnConverter;
public WarnDto createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason) {
Warning warning = Warning.builder()
.reason(reason)
.warnedUser(warnedAUser)
@@ -23,6 +27,6 @@ public class WarnManagementServiceBean implements WarnManagementService {
.warnDate(Instant.now())
.build();
warnRepository.save(warning);
return warning;
return warnConverter.convertFromAWarn(warning);
}
}

View File

@@ -1,4 +1,4 @@
abstracto.postTargets.moderation=joinLog,leaveLog,warnLog,kickLog,banLog,editLog,deleteLog
abstracto.postTargets.moderation=joinLog,leaveLog,warnLogModel,kickLog,banLog,editLog,deleteLog
abstracto.features.moderation=false
abstracto.features.warnings=false
abstracto.features.logging=true