added commands to create/delete/list usernotes

This commit is contained in:
Sheldan
2020-05-17 23:13:01 +02:00
parent 0260862e8e
commit 20f8e422a2
27 changed files with 463 additions and 1 deletions

View File

@@ -5,7 +5,7 @@ import lombok.Getter;
@Getter
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;

View File

@@ -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;
}
}

View File

@@ -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();
}
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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);
}