added command to delete a warning by id

This commit is contained in:
Sheldan
2020-05-10 19:34:35 +02:00
parent 860aa0eed7
commit 82186c8757
7 changed files with 79 additions and 2 deletions

View File

@@ -0,0 +1,61 @@
package dev.sheldan.abstracto.moderation.commands;
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
import dev.sheldan.abstracto.core.command.config.HelpInfo;
import dev.sheldan.abstracto.core.command.config.Parameter;
import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.core.config.FeatureEnum;
import dev.sheldan.abstracto.moderation.config.ModerationModule;
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
import dev.sheldan.abstracto.moderation.models.database.Warning;
import dev.sheldan.abstracto.moderation.service.management.WarnManagementService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
@Component
public class DeleteWarning extends AbstractConditionableCommand {
@Autowired
private WarnManagementService warnManagementService;
@Override
public CommandResult execute(CommandContext commandContext) {
Long warnId = (Long) commandContext.getParameters().getParameters().get(0);
Optional<Warning> optional = warnManagementService.findById(warnId);
optional.ifPresent(warning -> {
if(warning.getWarnedUser().getServerReference().getId().equals(commandContext.getUserInitiatedContext().getServer().getId())) {
warnManagementService.deleteWarning(warning);
}
});
return CommandResult.fromSuccess();
}
@Override
public CommandConfiguration getConfiguration() {
List<Parameter> parameters = new ArrayList<>();
parameters.add(Parameter.builder().name("warnId").type(Long.class).build());
HelpInfo helpInfo = HelpInfo.builder().templated(true).build();
List<String> aliases = Arrays.asList("delWarn");
return CommandConfiguration.builder()
.name("deleteWarning")
.module(ModerationModule.MODERATION)
.templated(true)
.aliases(aliases)
.causesReaction(true)
.parameters(parameters)
.help(helpInfo)
.build();
}
@Override
public FeatureEnum getFeature() {
return ModerationFeatures.WARNING;
}
}

View File

@@ -9,6 +9,7 @@ import org.springframework.stereotype.Component;
import java.time.Instant; import java.time.Instant;
import java.util.List; import java.util.List;
import java.util.Optional;
@Component @Component
public class WarnManagementServiceBean implements WarnManagementService { public class WarnManagementServiceBean implements WarnManagementService {
@@ -54,5 +55,15 @@ public class WarnManagementServiceBean implements WarnManagementService {
return warnRepository.countByWarnedUserAndDecayedFalse(aUserInAServer); return warnRepository.countByWarnedUserAndDecayedFalse(aUserInAServer);
} }
@Override
public Optional<Warning> findById(Long id) {
return warnRepository.findById(id);
}
@Override
public void deleteWarning(Warning warning) {
warnRepository.delete(warning);
}
} }

View File

@@ -1,12 +1,12 @@
package dev.sheldan.abstracto.moderation.service.management; package dev.sheldan.abstracto.moderation.service.management;
import dev.sheldan.abstracto.core.models.database.AServer; import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUser;
import dev.sheldan.abstracto.moderation.models.database.Warning; import dev.sheldan.abstracto.moderation.models.database.Warning;
import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import java.time.Instant; import java.time.Instant;
import java.util.List; import java.util.List;
import java.util.Optional;
public interface WarnManagementService { public interface WarnManagementService {
Warning createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason); Warning createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason);
@@ -15,4 +15,6 @@ public interface WarnManagementService {
List<Warning> getAllWarnsForUser(AUserInAServer aUserInAServer); List<Warning> getAllWarnsForUser(AUserInAServer aUserInAServer);
List<Warning> getAllWarningsOfServer(AServer server); List<Warning> getAllWarningsOfServer(AServer server);
Long getActiveWarnsForUser(AUserInAServer aUserInAServer); Long getActiveWarnsForUser(AUserInAServer aUserInAServer);
Optional<Warning> findById(Long id);
void deleteWarning(Warning warn);
} }

View File

@@ -1 +1 @@
Warnings #${warnId} with reason: ${reason} towards user ${warnedUserText} by user ${warningUserText} on `${warnDate}`. Warning #${warnId} with reason: ${reason} towards user ${warnedUserText} by user ${warningUserText} on `${warnDate}`.