mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-13 19:41:38 +00:00
added commands to create/delete/list usernotes
This commit is contained in:
@@ -0,0 +1,62 @@
|
|||||||
|
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.core.models.database.AUserInAServer;
|
||||||
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
|
import dev.sheldan.abstracto.moderation.config.ModerationModule;
|
||||||
|
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
||||||
|
import dev.sheldan.abstracto.moderation.service.management.UserNoteManagementService;
|
||||||
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class DeleteNote extends AbstractConditionableCommand {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserNoteManagementService userNoteManagementService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private TemplateService templateService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommandResult execute(CommandContext commandContext) {
|
||||||
|
Long id = (Long) commandContext.getParameters().getParameters().get(0);
|
||||||
|
if(userNoteManagementService.noteExists(id)) {
|
||||||
|
userNoteManagementService.deleteNote(id);
|
||||||
|
} else {
|
||||||
|
return CommandResult.fromError(templateService.renderSimpleTemplate("note_not_found_exception"));
|
||||||
|
}
|
||||||
|
return CommandResult.fromSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommandConfiguration getConfiguration() {
|
||||||
|
List<Parameter> parameters = new ArrayList<>();
|
||||||
|
parameters.add(Parameter.builder().name("id").type(Long.class).templated(true).build());
|
||||||
|
HelpInfo helpInfo = HelpInfo.builder().templated(true).build();
|
||||||
|
return CommandConfiguration.builder()
|
||||||
|
.name("deleteNote")
|
||||||
|
.module(ModerationModule.MODERATION)
|
||||||
|
.templated(true)
|
||||||
|
.causesReaction(true)
|
||||||
|
.parameters(parameters)
|
||||||
|
.help(helpInfo)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FeatureEnum getFeature() {
|
||||||
|
return ModerationFeatures.USER_NOTES;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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.core.models.database.AUserInAServer;
|
||||||
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
|
import dev.sheldan.abstracto.moderation.config.ModerationModule;
|
||||||
|
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
||||||
|
import dev.sheldan.abstracto.moderation.service.management.UserNoteManagementService;
|
||||||
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class UserNoteCommand extends AbstractConditionableCommand {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserNoteManagementService userNoteManagementService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserInServerManagementService userInServerManagementService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommandResult execute(CommandContext commandContext) {
|
||||||
|
List<Object> parameters = commandContext.getParameters().getParameters();
|
||||||
|
Member member = (Member) parameters.get(0);
|
||||||
|
String text = (String) parameters.get(1);
|
||||||
|
AUserInAServer userInAServer = userInServerManagementService.loadUser(member);
|
||||||
|
userNoteManagementService.createUserNote(userInAServer, text);
|
||||||
|
return CommandResult.fromSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommandConfiguration getConfiguration() {
|
||||||
|
List<Parameter> parameters = new ArrayList<>();
|
||||||
|
parameters.add(Parameter.builder().name("user").type(Member.class).templated(true).build());
|
||||||
|
parameters.add(Parameter.builder().name("text").type(String.class).templated(true).remainder(true).build());
|
||||||
|
HelpInfo helpInfo = HelpInfo.builder().templated(true).build();
|
||||||
|
return CommandConfiguration.builder()
|
||||||
|
.name("userNote")
|
||||||
|
.module(ModerationModule.MODERATION)
|
||||||
|
.templated(true)
|
||||||
|
.causesReaction(true)
|
||||||
|
.parameters(parameters)
|
||||||
|
.help(helpInfo)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FeatureEnum getFeature() {
|
||||||
|
return ModerationFeatures.USER_NOTES;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
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.command.execution.ContextConverter;
|
||||||
|
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||||
|
import dev.sheldan.abstracto.core.models.FullUser;
|
||||||
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
|
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||||
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
|
import dev.sheldan.abstracto.moderation.config.ModerationModule;
|
||||||
|
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
||||||
|
import dev.sheldan.abstracto.moderation.converter.UserNotesConverter;
|
||||||
|
import dev.sheldan.abstracto.moderation.models.database.UserNote;
|
||||||
|
import dev.sheldan.abstracto.moderation.models.template.commands.ListNotesModel;
|
||||||
|
import dev.sheldan.abstracto.moderation.service.management.UserNoteManagementService;
|
||||||
|
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||||
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class UserNotes extends AbstractConditionableCommand {
|
||||||
|
@Autowired
|
||||||
|
private UserNoteManagementService userNoteManagementService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private TemplateService templateService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserInServerManagementService userInServerManagementService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ChannelService channelService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserNotesConverter userNotesConverter;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommandResult execute(CommandContext commandContext) {
|
||||||
|
List<Object> parameters = commandContext.getParameters().getParameters();
|
||||||
|
List<UserNote> userNotes;
|
||||||
|
|
||||||
|
ListNotesModel model = (ListNotesModel) ContextConverter.fromCommandContext(commandContext, ListNotesModel.class);
|
||||||
|
if(parameters.size() == 1) {
|
||||||
|
Member member = (Member) parameters.get(0);
|
||||||
|
AUserInAServer userInAServer = userInServerManagementService.loadUser(member);
|
||||||
|
userNotes = userNoteManagementService.loadNotesForUser(userInAServer);
|
||||||
|
FullUser specifiedUser = FullUser
|
||||||
|
.builder()
|
||||||
|
.aUserInAServer(userInAServer)
|
||||||
|
.member(member)
|
||||||
|
.build();
|
||||||
|
model.setSpecifiedUser(specifiedUser);
|
||||||
|
} else {
|
||||||
|
userNotes = userNoteManagementService.loadNotesForServer(commandContext.getUserInitiatedContext().getServer());
|
||||||
|
}
|
||||||
|
model.setUserNotes(userNotesConverter.fromNotes(userNotes));
|
||||||
|
channelService.sendTemplateInChannel("user_notes_response", model, commandContext.getChannel());
|
||||||
|
return CommandResult.fromSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommandConfiguration getConfiguration() {
|
||||||
|
List<Parameter> parameters = new ArrayList<>();
|
||||||
|
Parameter user = Parameter.builder().name("user").type(Member.class).optional(true).templated(true).build();
|
||||||
|
parameters.add(user);
|
||||||
|
HelpInfo helpInfo = HelpInfo.builder().templated(true).build();
|
||||||
|
return CommandConfiguration.builder()
|
||||||
|
.name("userNotes")
|
||||||
|
.module(ModerationModule.MODERATION)
|
||||||
|
.templated(true)
|
||||||
|
.causesReaction(true)
|
||||||
|
.parameters(parameters)
|
||||||
|
.help(helpInfo)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FeatureEnum getFeature() {
|
||||||
|
return ModerationFeatures.USER_NOTES;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
package dev.sheldan.abstracto.moderation.converter;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.models.FullUser;
|
||||||
|
import dev.sheldan.abstracto.core.service.BotService;
|
||||||
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
|
import dev.sheldan.abstracto.moderation.models.database.UserNote;
|
||||||
|
import dev.sheldan.abstracto.moderation.models.template.commands.NoteEntryModel;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class UserNotesConverter {
|
||||||
|
@Autowired
|
||||||
|
private UserInServerManagementService userInServerManagementService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private BotService botService;
|
||||||
|
|
||||||
|
public List<NoteEntryModel> fromNotes(List<UserNote> userNotes){
|
||||||
|
List<NoteEntryModel> entryModels = new ArrayList<>();
|
||||||
|
userNotes.forEach(userNote -> {
|
||||||
|
FullUser fullUser = FullUser
|
||||||
|
.builder()
|
||||||
|
.member(botService.getMemberInServer(userNote.getUser()))
|
||||||
|
.aUserInAServer(userNote.getUser())
|
||||||
|
.build();
|
||||||
|
NoteEntryModel entryModel = NoteEntryModel
|
||||||
|
.builder()
|
||||||
|
.fullUser(fullUser)
|
||||||
|
.note(userNote)
|
||||||
|
.build();
|
||||||
|
entryModels.add(entryModel);
|
||||||
|
});
|
||||||
|
return entryModels;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package dev.sheldan.abstracto.moderation.repository;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
|
import dev.sheldan.abstracto.moderation.models.database.UserNote;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface UserNoteRepository extends JpaRepository<UserNote, Long> {
|
||||||
|
List<UserNote> findByUser(AUserInAServer aUserInAServer);
|
||||||
|
List<UserNote> findByUser_ServerReference(AServer server);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
package dev.sheldan.abstracto.moderation.service.management;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
|
import dev.sheldan.abstracto.moderation.models.database.UserNote;
|
||||||
|
import dev.sheldan.abstracto.moderation.repository.UserNoteRepository;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class UserNoteManagementServiceBean implements UserNoteManagementService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserNoteRepository userNoteRepository;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public UserNote createUserNote(AUserInAServer aUserInAServer, String note) {
|
||||||
|
UserNote newNote = UserNote
|
||||||
|
.builder()
|
||||||
|
.note(note)
|
||||||
|
.user(aUserInAServer)
|
||||||
|
.build();
|
||||||
|
userNoteRepository.save(newNote);
|
||||||
|
return newNote;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteNote(Long id) {
|
||||||
|
userNoteRepository.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean noteExists(Long id) {
|
||||||
|
return userNoteRepository.existsById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<UserNote> loadNotesForUser(AUserInAServer aUserInAServer) {
|
||||||
|
return userNoteRepository.findByUser(aUserInAServer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<UserNote> loadNotesForServer(AServer server) {
|
||||||
|
return userNoteRepository.findByUser_ServerReference(server);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,6 +4,7 @@ abstracto.features.warnings.enabled=false
|
|||||||
abstracto.features.warnDecay.enabled=false
|
abstracto.features.warnDecay.enabled=false
|
||||||
abstracto.features.logging.enabled=false
|
abstracto.features.logging.enabled=false
|
||||||
abstracto.features.muting.enabled=false
|
abstracto.features.muting.enabled=false
|
||||||
|
abstracto.features.userNotes.enabled=false
|
||||||
abstracto.warnings.warnDecay.days=90
|
abstracto.warnings.warnDecay.days=90
|
||||||
|
|
||||||
abstracto.scheduling.jobs.unMuteJob.name=unMuteJob
|
abstracto.scheduling.jobs.unMuteJob.name=unMuteJob
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"author": {
|
||||||
|
<#if specifiedUser??>
|
||||||
|
"name": "${specifiedUser.member.effectiveName}",
|
||||||
|
"avatar": "${specifiedUser.member.user.effectiveAvatarUrl}"
|
||||||
|
<#else>
|
||||||
|
"name": "${member.effectiveName}",
|
||||||
|
"avatar": "${member.user.effectiveAvatarUrl}"
|
||||||
|
</#if>
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
<#if specifiedUser??>
|
||||||
|
<#assign user>${specifiedUser.member.effectiveName}</#assign>
|
||||||
|
"title": "<#include "user_notes_embed_user_title">"
|
||||||
|
<#else>
|
||||||
|
"title": "<#include "user_notes_embed_title">"
|
||||||
|
</#if>
|
||||||
|
},
|
||||||
|
"color" : {
|
||||||
|
"r": 200,
|
||||||
|
"g": 0,
|
||||||
|
"b": 255
|
||||||
|
},
|
||||||
|
"description": "<#list userNotes as note>
|
||||||
|
<#assign user>${note.fullUser.member.asMention}</#assign>
|
||||||
|
<#assign noteText>${note.note.note}</#assign>
|
||||||
|
<#assign noteId>${note.note.id}</#assign>
|
||||||
|
<#assign date>${formatInstant(note.note.created, "yyyy-MM-dd HH:mm:ss")}</#assign>
|
||||||
|
<#include "user_notes_note_entry"><#else><#include "user_notes_no_notes">
|
||||||
|
</#list>"
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
<#include "note_not_found_exception_message">
|
||||||
@@ -5,7 +5,7 @@ import lombok.Getter;
|
|||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
public enum ModerationFeatures implements FeatureEnum {
|
public enum ModerationFeatures implements FeatureEnum {
|
||||||
MODERATION("moderation"), WARNING("warnings"), LOGGING("logging"), MUTING("muting"), AUTOMATIC_WARN_DECAY("warnDecay");
|
MODERATION("moderation"), WARNING("warnings"), LOGGING("logging"), MUTING("muting"), AUTOMATIC_WARN_DECAY("warnDecay"), USER_NOTES("userNotes");
|
||||||
|
|
||||||
private String key;
|
private String key;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package dev.sheldan.abstracto.moderation.config.features;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.config.FeatureConfig;
|
||||||
|
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class UserNoteFeature implements FeatureConfig {
|
||||||
|
@Override
|
||||||
|
public FeatureEnum getFeature() {
|
||||||
|
return ModerationFeatures.USER_NOTES;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
package dev.sheldan.abstracto.moderation.models.database;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import javax.persistence.*;
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table(name="user_notes")
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class UserNote {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "noteUser", nullable = false)
|
||||||
|
private AUserInAServer user;
|
||||||
|
|
||||||
|
@Column(length = 2000)
|
||||||
|
private String note;
|
||||||
|
|
||||||
|
@Column(name = "created")
|
||||||
|
private Instant created;
|
||||||
|
|
||||||
|
@PrePersist
|
||||||
|
private void onInsert() {
|
||||||
|
this.created = Instant.now();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.models.FullUser;
|
||||||
|
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@SuperBuilder
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class ListNotesModel extends UserInitiatedServerContext {
|
||||||
|
private List<NoteEntryModel> userNotes;
|
||||||
|
private FullUser specifiedUser;
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.models.FullUser;
|
||||||
|
import dev.sheldan.abstracto.moderation.models.database.UserNote;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@Builder
|
||||||
|
public class NoteEntryModel {
|
||||||
|
private UserNote note;
|
||||||
|
private FullUser fullUser;
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package dev.sheldan.abstracto.moderation.service.management;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
|
import dev.sheldan.abstracto.moderation.models.database.UserNote;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface UserNoteManagementService {
|
||||||
|
UserNote createUserNote(AUserInAServer aUserInAServer, String note);
|
||||||
|
void deleteNote(Long id);
|
||||||
|
boolean noteExists(Long id);
|
||||||
|
List<UserNote> loadNotesForUser(AUserInAServer aUserInAServer);
|
||||||
|
List<UserNote> loadNotesForServer(AServer server);
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Shows all user notes/user notes from a user
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Lists all the user notes or only the user notes from a singular user from this server. The output contains the text of the note, the date it was created and the id of the user note.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
The user to retrieve the user notes for.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
listNotes [user]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
User notes on this server
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
User notes for user ${user}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
No notes.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
${user} has note ${noteId} with text ${noteText} on ${date}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
User notes
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Note not found.
|
||||||
@@ -169,6 +169,11 @@ public class TemplateServiceBean implements TemplateService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String renderSimpleTemplate(String key) {
|
||||||
|
return renderTemplate(key, new Object());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String renderTemplatable(Templatable templatable) {
|
public String renderTemplatable(Templatable templatable) {
|
||||||
return renderTemplate(templatable.getTemplateName(), templatable.getTemplateModel());
|
return renderTemplate(templatable.getTemplateName(), templatable.getTemplateModel());
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ public interface TemplateService {
|
|||||||
* @return The template rendered as string.
|
* @return The template rendered as string.
|
||||||
*/
|
*/
|
||||||
String renderTemplate(String key, Object model);
|
String renderTemplate(String key, Object model);
|
||||||
|
String renderSimpleTemplate(String key);
|
||||||
|
|
||||||
String renderTemplatable(Templatable templatable);
|
String renderTemplatable(Templatable templatable);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user