[AB-197] splitting utility maven module into separate maven modules

aligning some package names
removing some unnecessary computed values from liquibase
This commit is contained in:
Sheldan
2021-03-12 17:29:49 +01:00
parent e2da800d84
commit 2ed456c164
835 changed files with 12790 additions and 3310 deletions

View File

@@ -1,21 +0,0 @@
package dev.sheldan.abstracto.utility.config;
import dev.sheldan.abstracto.core.command.config.ModuleInfo;
import dev.sheldan.abstracto.core.command.config.ModuleInterface;
import org.springframework.stereotype.Component;
@Component
public class EntertainmentModuleInterface implements ModuleInterface {
public static final String ENTERTAINMENT = "entertainment";
@Override
public ModuleInfo getInfo() {
return ModuleInfo.builder().name(ENTERTAINMENT).templated(true).build();
}
@Override
public String getParentModule() {
return "default";
}
}

View File

@@ -1,22 +0,0 @@
package dev.sheldan.abstracto.utility.config;
import dev.sheldan.abstracto.core.command.UtilityModuleInterface;
import dev.sheldan.abstracto.core.command.config.ModuleInfo;
import dev.sheldan.abstracto.core.command.config.ModuleInterface;
import org.springframework.stereotype.Component;
@Component
public class RepostDetectionModuleInterface implements ModuleInterface {
public static final String REPOST_DETECTION = "repostDetection";
@Override
public ModuleInfo getInfo() {
return ModuleInfo.builder().name(REPOST_DETECTION).templated(true).build();
}
@Override
public String getParentModule() {
return UtilityModuleInterface.UTILITY;
}
}

View File

@@ -1,15 +1,15 @@
package dev.sheldan.abstracto.utility.config.features;
package dev.sheldan.abstracto.utility.config;
import dev.sheldan.abstracto.core.config.FeatureConfig;
import dev.sheldan.abstracto.core.config.FeatureEnum;
import dev.sheldan.abstracto.core.config.FeatureDefinition;
import org.springframework.stereotype.Component;
@Component
public class UtilitiesFeature implements FeatureConfig {
@Override
public FeatureEnum getFeature() {
return UtilityFeature.UTILITY;
public FeatureDefinition getFeature() {
return UtilityFeatureDefinition.UTILITY;
}
}

View File

@@ -0,0 +1,15 @@
package dev.sheldan.abstracto.utility.config;
import dev.sheldan.abstracto.core.config.FeatureDefinition;
import lombok.Getter;
@Getter
public enum UtilityFeatureDefinition implements FeatureDefinition {
UTILITY("utility");
private String key;
UtilityFeatureDefinition(String key) {
this.key = key;
}
}

View File

@@ -1,26 +0,0 @@
package dev.sheldan.abstracto.utility.config.features;
import dev.sheldan.abstracto.core.config.FeatureConfig;
import dev.sheldan.abstracto.core.config.FeatureEnum;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
import static dev.sheldan.abstracto.utility.config.features.UtilityFeature.ENTERTAINMENT;
@Component
public class EntertainmentFeature implements FeatureConfig {
public static final String ROULETTE_BULLETS_CONFIG_KEY = "rouletteBullets";
public static final String ROLL_DEFAULT_HIGH_KEY = "rollDefaultHigh";
@Override
public FeatureEnum getFeature() {
return ENTERTAINMENT;
}
@Override
public List<String> getRequiredSystemConfigKeys() {
return Arrays.asList(ROULETTE_BULLETS_CONFIG_KEY, ROLL_DEFAULT_HIGH_KEY);
}
}

View File

@@ -1,22 +0,0 @@
package dev.sheldan.abstracto.utility.config.features;
import dev.sheldan.abstracto.core.config.FeatureConfig;
import dev.sheldan.abstracto.core.config.FeatureEnum;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
@Component
public class LinkEmbedFeature implements FeatureConfig {
@Override
public FeatureEnum getFeature() {
return UtilityFeature.LINK_EMBEDS;
}
@Override
public List<String> getRequiredEmotes() {
return Arrays.asList("removeEmbed");
}
}

View File

@@ -1,15 +0,0 @@
package dev.sheldan.abstracto.utility.config.features;
import dev.sheldan.abstracto.core.config.FeatureConfig;
import dev.sheldan.abstracto.core.config.FeatureEnum;
import org.springframework.stereotype.Component;
@Component
public class RemindFeature implements FeatureConfig {
@Override
public FeatureEnum getFeature() {
return UtilityFeature.REMIND;
}
}

View File

@@ -1,21 +0,0 @@
package dev.sheldan.abstracto.utility.config.features;
import dev.sheldan.abstracto.core.config.FeatureConfig;
import dev.sheldan.abstracto.core.config.FeatureEnum;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
@Component
public class RepostDetectionFeature implements FeatureConfig {
@Override
public FeatureEnum getFeature() {
return UtilityFeature.REPOST_DETECTION;
}
@Override
public List<String> getRequiredEmotes() {
return Arrays.asList("repostMarker");
}
}

View File

@@ -1,15 +0,0 @@
package dev.sheldan.abstracto.utility.config.features;
import dev.sheldan.abstracto.core.config.FeatureMode;
import lombok.Getter;
@Getter
public enum RepostDetectionFeatureMode implements FeatureMode {
DOWNLOAD("download"), LEADERBOARD("leaderboard");
private final String key;
RepostDetectionFeatureMode(String key) {
this.key = key;
}
}

View File

@@ -1,62 +0,0 @@
package dev.sheldan.abstracto.utility.config.features;
import dev.sheldan.abstracto.core.config.FeatureConfig;
import dev.sheldan.abstracto.core.config.FeatureEnum;
import dev.sheldan.abstracto.core.config.PostTargetEnum;
import dev.sheldan.abstracto.core.service.management.DefaultConfigManagementService;
import dev.sheldan.abstracto.utility.config.posttargets.StarboardPostTarget;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@Component
public class StarboardFeature implements FeatureConfig {
public static final String STAR_LVL_CONFIG_PREFIX = "starLvl";
public static final String STAR_EMOTE_PREFIX = "star";
public static final String STAR_BADGE_EMOTE_PREFIX = "starboardBadge";
public static final String STAR_LEVELS_CONFIG_KEY = "starLvls";
@Autowired
private DefaultConfigManagementService defaultConfigManagementService;
@Override
public FeatureEnum getFeature() {
return UtilityFeature.STARBOARD;
}
@Override
public List<PostTargetEnum> getRequiredPostTargets() {
return Arrays.asList(StarboardPostTarget.STARBOARD);
}
@Override
public List<String> getRequiredSystemConfigKeys() {
List<String> configKeys = new ArrayList<>();
int maxLevels = getMaxLevels();
for(int i = maxLevels; i > 0; i--) {
configKeys.add(StarboardFeature.STAR_LVL_CONFIG_PREFIX + i);
}
return configKeys;
}
@Override
public List<String> getRequiredEmotes() {
List<String> emoteNames = new ArrayList<>();
int maxLevels = getMaxLevels();
for(int i = maxLevels; i > 0; i--) {
emoteNames.add(StarboardFeature.STAR_EMOTE_PREFIX + i);
}
emoteNames.add(StarboardFeature.STAR_BADGE_EMOTE_PREFIX + 1);
emoteNames.add(StarboardFeature.STAR_BADGE_EMOTE_PREFIX + 2);
emoteNames.add(StarboardFeature.STAR_BADGE_EMOTE_PREFIX + 3);
return emoteNames;
}
private int getMaxLevels() {
return defaultConfigManagementService.getDefaultConfig(STAR_LEVELS_CONFIG_KEY).getLongValue().intValue();
}
}

View File

@@ -1,29 +0,0 @@
package dev.sheldan.abstracto.utility.config.features;
import dev.sheldan.abstracto.core.config.FeatureConfig;
import dev.sheldan.abstracto.core.config.FeatureEnum;
import dev.sheldan.abstracto.core.config.PostTargetEnum;
import dev.sheldan.abstracto.utility.config.posttargets.SuggestionPostTarget;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
@Component
public class SuggestionFeature implements FeatureConfig {
@Override
public FeatureEnum getFeature() {
return UtilityFeature.SUGGEST;
}
@Override
public List<PostTargetEnum> getRequiredPostTargets() {
return Arrays.asList(SuggestionPostTarget.SUGGESTION);
}
@Override
public List<String> getRequiredEmotes() {
return Arrays.asList("suggestionYes", "suggestionNo");
}
}

View File

@@ -1,16 +0,0 @@
package dev.sheldan.abstracto.utility.config.features;
import dev.sheldan.abstracto.core.config.FeatureEnum;
import lombok.Getter;
@Getter
public enum UtilityFeature implements FeatureEnum {
REMIND("remind"), STARBOARD("starboard"), SUGGEST("suggestion"), UTILITY("utility"),
LINK_EMBEDS("linkEmbeds"), REPOST_DETECTION("repostDetection"), ENTERTAINMENT("entertainment");
private String key;
UtilityFeature(String key) {
this.key = key;
}
}

View File

@@ -1,15 +0,0 @@
package dev.sheldan.abstracto.utility.config.posttargets;
import dev.sheldan.abstracto.core.config.PostTargetEnum;
import lombok.Getter;
@Getter
public enum StarboardPostTarget implements PostTargetEnum {
STARBOARD("starboard");
private String key;
StarboardPostTarget(String key) {
this.key = key;
}
}

View File

@@ -1,15 +0,0 @@
package dev.sheldan.abstracto.utility.config.posttargets;
import dev.sheldan.abstracto.core.config.PostTargetEnum;
import lombok.Getter;
@Getter
public enum SuggestionPostTarget implements PostTargetEnum {
SUGGESTION("suggestions");
private String key;
SuggestionPostTarget(String key) {
this.key = key;
}
}

View File

@@ -1,9 +0,0 @@
package dev.sheldan.abstracto.utility.exception;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
public class CrossServerEmbedException extends AbstractoRunTimeException {
public CrossServerEmbedException(String message) {
super(message);
}
}

View File

@@ -1,10 +0,0 @@
package dev.sheldan.abstracto.utility.exception;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
public class PostedImageNotFoundException extends AbstractoRunTimeException {
public PostedImageNotFoundException(Long postedMessageId, Integer position) {
super(String.format("Posted message with id %s and position %s was not found.", postedMessageId, position));
}
}

View File

@@ -1,24 +0,0 @@
package dev.sheldan.abstracto.utility.exception;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import dev.sheldan.abstracto.core.templating.Templatable;
import dev.sheldan.abstracto.utility.models.exception.ReminderNotFoundExceptionModel;
public class ReminderNotFoundException extends AbstractoRunTimeException implements Templatable {
private final ReminderNotFoundExceptionModel model;
public ReminderNotFoundException(Long reminderId) {
super("Reminder does not exist");
this.model = ReminderNotFoundExceptionModel.builder().reminderId(reminderId).build();
}
@Override
public String getTemplateName() {
return "reminder_does_not_exist_exception";
}
@Override
public Object getTemplateModel() {
return model;
}
}

View File

@@ -1,21 +0,0 @@
package dev.sheldan.abstracto.utility.exception;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import dev.sheldan.abstracto.core.templating.Templatable;
public class RepostCheckChannelGroupNotFoundException extends AbstractoRunTimeException implements Templatable {
public RepostCheckChannelGroupNotFoundException(Long channelGroupId) {
super(String.format("Repost check channel with id %s does not exist", channelGroupId));
}
@Override
public String getTemplateName() {
return "repost_check_check_channel_not_found";
}
@Override
public Object getTemplateModel() {
return new Object();
}
}

View File

@@ -1,9 +0,0 @@
package dev.sheldan.abstracto.utility.exception;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
public class RepostNotFoundException extends AbstractoRunTimeException {
public RepostNotFoundException(Long originalPostId, Integer originalPositionId, Long userInServerId) {
super(String.format("Repost with image post id %s and position %s from user %s was not found.", originalPostId, originalPositionId, userInServerId));
}
}

View File

@@ -1,25 +0,0 @@
package dev.sheldan.abstracto.utility.exception;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import dev.sheldan.abstracto.core.templating.Templatable;
import dev.sheldan.abstracto.utility.models.exception.SuggestionNotFoundExceptionModel;
public class SuggestionNotFoundException extends AbstractoRunTimeException implements Templatable {
private final SuggestionNotFoundExceptionModel model;
public SuggestionNotFoundException(Long suggestionId) {
super("Suggestion not found");
this.model = SuggestionNotFoundExceptionModel.builder().suggestionId(suggestionId).build();
}
@Override
public String getTemplateName() {
return "suggestion_does_not_exist_exception";
}
@Override
public Object getTemplateModel() {
return model;
}
}

View File

@@ -1,20 +0,0 @@
package dev.sheldan.abstracto.utility.exception;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import dev.sheldan.abstracto.core.templating.Templatable;
public class SuggestionUpdateException extends AbstractoRunTimeException implements Templatable {
public SuggestionUpdateException() {
super("Not possible to update suggestion.");
}
@Override
public String getTemplateName() {
return "suggestion_update_exception";
}
@Override
public Object getTemplateModel() {
return new Object();
}
}

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.utility.models.template.commands.serverinfo;
package dev.sheldan.abstracto.utility.model;
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.utility.models.template.commands;
package dev.sheldan.abstracto.utility.model;
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.utility.models.template.commands;
package dev.sheldan.abstracto.utility.model;
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.utility.models.template.commands;
package dev.sheldan.abstracto.utility.model;
import dev.sheldan.abstracto.core.models.context.SlimUserInitiatedServerContext;
import lombok.Getter;

View File

@@ -1,15 +0,0 @@
package dev.sheldan.abstracto.utility.models;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Builder
public class MessageEmbedLink {
private Long serverId;
private Long channelId;
private Long messageId;
private String wholeUrl;
}

View File

@@ -1,18 +0,0 @@
package dev.sheldan.abstracto.utility.models;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import net.dv8tion.jda.api.entities.Member;
@Getter
@Setter
@Builder
public class RepostLeaderboardEntryModel {
private Member member;
private AUserInAServer user;
private Integer count;
private Integer rank;
}

View File

@@ -1,19 +0,0 @@
package dev.sheldan.abstracto.utility.models;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import java.util.List;
@Getter
@Setter
@Builder
public class RepostLeaderboardModel {
private List<RepostLeaderboardEntryModel> entries;
private Guild guild;
private RepostLeaderboardEntryModel userExecuting;
private Member member;
}

View File

@@ -1,5 +0,0 @@
package dev.sheldan.abstracto.utility.models;
public enum SuggestionState {
NEW, ACCEPTED, REJECTED
}

View File

@@ -1,65 +0,0 @@
package dev.sheldan.abstracto.utility.models.database;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import lombok.*;
import javax.persistence.*;
import java.io.Serializable;
import java.time.Instant;
@Entity
@Table(name="embedded_message")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@EqualsAndHashCode
public class EmbeddedMessage implements Serializable {
@Getter
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "embedded_user_in_server_id", nullable = false)
private AUserInAServer embeddedUser;
@Getter
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "embedding_user_in_server_id", nullable = false)
private AUserInAServer embeddingUser;
@Getter
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "embedded_server_id", nullable = false)
private AServer embeddedServer;
@Getter
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "embedded_channel_id", nullable = false)
private AChannel embeddedChannel;
@Column(name = "embedded_message_id")
private Long embeddedMessageId;
@Getter
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "embedding_server_id", nullable = false)
private AServer embeddingServer;
@Getter
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "embedding_channel_id", nullable = false)
private AChannel embeddingChannel;
@Column(name = "embedding_message_id")
@Id
private Long embeddingMessageId;
@Column(name = "created")
private Instant created;
@Column(name = "updated")
private Instant updated;
}

View File

@@ -1,59 +0,0 @@
package dev.sheldan.abstracto.utility.models.database;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.utility.models.database.embed.PostIdentifier;
import lombok.*;
import javax.persistence.*;
import java.time.Instant;
import java.util.List;
@Entity
@Table(name = "posted_image")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@EqualsAndHashCode
public class PostedImage {
@Getter
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "author_user_in_server_id", nullable = false)
private AUserInAServer poster;
@Getter
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@Getter
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "posted_channel_id", nullable = false)
private AChannel postedChannel;
@EmbeddedId
@Getter
@Setter
private PostIdentifier postId;
@Column(name = "image_hash")
private String imageHash;
@Column(name = "created")
private Instant created;
@Column(name = "updated")
private Instant updated;
@Getter
@OneToMany(fetch = FetchType.LAZY,
orphanRemoval = true,
cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE},
mappedBy = "originalPost")
private List<Repost> reposts;
}

View File

@@ -1,60 +0,0 @@
package dev.sheldan.abstracto.utility.models.database;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import lombok.*;
import javax.persistence.*;
import java.io.Serializable;
import java.time.Instant;
@Entity
@Table(name="reminder")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@EqualsAndHashCode
public class Reminder implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_in_server_id", nullable = false)
private AUserInAServer remindedUser;
@Column(name = "message_id")
private Long messageId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "channel_id", nullable = false)
private AChannel channel;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@Column(name = "created")
private Instant reminderDate;
@Column(name = "updated")
private Instant updated;
@Column(name = "target_date")
private Instant targetDate;
@Column(name = "text")
private String text;
@Column(name = "reminded")
private boolean reminded;
@Column(name = "job_trigger_key")
private String jobTriggerKey;
}

View File

@@ -1,54 +0,0 @@
package dev.sheldan.abstracto.utility.models.database;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.utility.models.database.embed.RepostIdentifier;
import lombok.*;
import javax.persistence.*;
import java.time.Instant;
@Entity
@Table(name = "repost")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@EqualsAndHashCode
public class Repost {
@EmbeddedId
@Getter
@Setter
private RepostIdentifier repostId;
@Getter
@ManyToOne(fetch = FetchType.LAZY)
@MapsId("userInServerId")
@JoinColumn(name = "user_in_server_id", referencedColumnName = "user_in_server_id", nullable = false)
private AUserInAServer poster;
@Getter
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@Column(name = "count")
private Integer count;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns(
{
@JoinColumn(updatable = false, insertable = false, name = "message_id", referencedColumnName = "message_id"),
@JoinColumn(updatable = false, insertable = false, name = "position", referencedColumnName = "position")
})
private PostedImage originalPost;
@Column(name = "created")
private Instant created;
@Column(name = "updated")
private Instant updated;
}

View File

@@ -1,36 +0,0 @@
package dev.sheldan.abstracto.utility.models.database;
import dev.sheldan.abstracto.core.models.database.AChannelGroup;
import lombok.*;
import javax.persistence.*;
import java.time.Instant;
@Builder
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "repost_check_channel_group")
@Getter
@Setter
@EqualsAndHashCode
public class RepostCheckChannelGroup {
@Id
@Column(name = "id")
private Long id;
@OneToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@PrimaryKeyJoinColumn
private AChannelGroup channelGroup;
@Column(name = "enabled")
private Boolean checkEnabled;
@Column(name = "created")
private Instant created;
@Column(name = "updated")
private Instant updated;
}

View File

@@ -1,85 +0,0 @@
package dev.sheldan.abstracto.utility.models.database;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import lombok.*;
import javax.persistence.*;
import java.io.Serializable;
import java.time.Instant;
import java.util.List;
@Entity
@Table(name="starboard_post")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@EqualsAndHashCode
public class StarboardPost implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "author_user_in_server_id", nullable = false)
private AUserInAServer author;
@Column(name = "starboard_message_id")
private Long starboardMessageId;
@Column(name = "post_message_id")
private Long postMessageId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "channel_id", nullable = false)
private AChannel starboardChannel;
@Getter
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "source_channel_id", nullable = false)
private AChannel sourceChannel;
@Transient
private Integer reactionCount;
@Column(name = "created")
private Instant created;
@Column(name = "updated")
private Instant updated;
@PostLoad
private void onLoad() {
this.reactionCount = this.reactions.size();
}
@Getter
@OneToMany(fetch = FetchType.LAZY,
orphanRemoval = true,
cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE},
mappedBy = "starboardPost")
private List<StarboardPostReaction> reactions;
@Column(name = "starred_date")
private Instant starredDate;
@Column(name = "ignored")
private boolean ignored;
public int getReactionCount() {
if(this.reactions == null) {
return 0;
}
return this.reactions.size();
}
}

View File

@@ -1,44 +0,0 @@
package dev.sheldan.abstracto.utility.models.database;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import lombok.*;
import javax.persistence.*;
import java.io.Serializable;
import java.time.Instant;
@Entity
@Table(name="starboard_post_reaction")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@EqualsAndHashCode
public class StarboardPostReaction implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "reactor_user_in_server_id", nullable = false)
private AUserInAServer reactor;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "post_id")
private StarboardPost starboardPost;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@Column(name = "created")
private Instant created;
@Column(name = "updated")
private Instant updated;
}

View File

@@ -1,63 +0,0 @@
package dev.sheldan.abstracto.utility.models.database;
import dev.sheldan.abstracto.core.models.ServerSpecificId;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.utility.models.SuggestionState;
import lombok.*;
import javax.persistence.*;
import java.io.Serializable;
import java.time.Instant;
@Entity
@Table(name="suggestion")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@EqualsAndHashCode
public class Suggestion implements Serializable {
@Id
@Getter
@EmbeddedId
private ServerSpecificId suggestionId;
@Getter
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "suggester_user_in_server_id")
private AUserInAServer suggester;
@Getter
@Column(name = "message_id")
private Long messageId;
@Getter
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "channel_id")
private AChannel channel;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@MapsId("serverId")
@JoinColumn(name = "server_id", referencedColumnName = "id", nullable = false)
private AServer server;
@Getter
@Column(name = "suggestion_date")
private Instant suggestionDate;
@Getter
@Enumerated(EnumType.STRING)
@Column(name = "state")
private SuggestionState state;
@Column(name = "created")
private Instant created;
@Column(name = "updated")
private Instant updated;
}

View File

@@ -1,20 +0,0 @@
package dev.sheldan.abstracto.utility.models.database.embed;
import lombok.*;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import java.io.Serializable;
@Embeddable
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
public class PostIdentifier implements Serializable {
@Column(name = "message_id")
private Long messageId;
@Column(name = "position")
private Integer position;
}

View File

@@ -1,22 +0,0 @@
package dev.sheldan.abstracto.utility.models.database.embed;
import lombok.*;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import java.io.Serializable;
@Embeddable
@Getter
@Setter
@EqualsAndHashCode
@NoArgsConstructor
@AllArgsConstructor
public class RepostIdentifier implements Serializable {
@Column(name = "message_id")
private Long messageId;
@Column(name = "position")
private Integer position;
@Column(name = "user_in_server_id")
private Long userInServerId;
}

View File

@@ -1,10 +0,0 @@
package dev.sheldan.abstracto.utility.models.database.result;
public interface RepostLeaderboardResult {
Long getUserInServerId();
Integer getRepostCount();
Integer getRank();
}

View File

@@ -1,12 +0,0 @@
package dev.sheldan.abstracto.utility.models.exception;
import lombok.Builder;
import lombok.Getter;
import java.io.Serializable;
@Getter
@Builder
public class ReminderNotFoundExceptionModel implements Serializable {
private final Long reminderId;
}

View File

@@ -1,12 +0,0 @@
package dev.sheldan.abstracto.utility.models.exception;
import lombok.Builder;
import lombok.Getter;
import java.io.Serializable;
@Getter
@Builder
public class SuggestionNotFoundExceptionModel implements Serializable {
private final Long suggestionId;
}

View File

@@ -1,13 +0,0 @@
package dev.sheldan.abstracto.utility.models.template.commands;
import dev.sheldan.abstracto.core.models.context.SlimUserInitiatedServerContext;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
@Getter
@Setter
@SuperBuilder
public class ChooseResponseModel extends SlimUserInitiatedServerContext {
private String chosenValue;
}

View File

@@ -1,13 +0,0 @@
package dev.sheldan.abstracto.utility.models.template.commands;
import dev.sheldan.abstracto.core.models.context.SlimUserInitiatedServerContext;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
@Getter
@Setter
@SuperBuilder
public class EightBallResponseModel extends SlimUserInitiatedServerContext {
private String chosenKey;
}

View File

@@ -1,15 +0,0 @@
package dev.sheldan.abstracto.utility.models.template.commands;
import dev.sheldan.abstracto.core.models.context.SlimUserInitiatedServerContext;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
@Getter
@Setter
@SuperBuilder
public class LoveCalcResponseModel extends SlimUserInitiatedServerContext {
private String firstPart;
private String secondPart;
private Integer rolled;
}

View File

@@ -1,17 +0,0 @@
package dev.sheldan.abstracto.utility.models.template.commands;
import dev.sheldan.abstracto.core.models.FullChannel;
import dev.sheldan.abstracto.utility.models.database.RepostCheckChannelGroup;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
@Builder
public class RepostCheckChannelGroupDisplayModel {
private RepostCheckChannelGroup channelGroup;
private List<FullChannel> channels;
}

View File

@@ -1,14 +0,0 @@
package dev.sheldan.abstracto.utility.models.template.commands;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
@Builder
public class RepostCheckChannelsModel {
private List<RepostCheckChannelGroupDisplayModel> repostCheckChannelGroups;
}

View File

@@ -1,13 +0,0 @@
package dev.sheldan.abstracto.utility.models.template.commands;
import dev.sheldan.abstracto.core.models.context.SlimUserInitiatedServerContext;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
@Getter
@Setter
@SuperBuilder
public class RollResponseModel extends SlimUserInitiatedServerContext {
private Integer rolled;
}

View File

@@ -1,13 +0,0 @@
package dev.sheldan.abstracto.utility.models.template.commands;
import dev.sheldan.abstracto.core.models.context.SlimUserInitiatedServerContext;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
@Getter
@Setter
@SuperBuilder
public class RouletteResponseModel extends SlimUserInitiatedServerContext {
private Boolean result;
}

View File

@@ -1,25 +0,0 @@
package dev.sheldan.abstracto.utility.models.template.commands;
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.utility.models.SuggestionState;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import net.dv8tion.jda.api.entities.Member;
@Getter
@Setter
@SuperBuilder
// TODO change user initiated context so slim context, and remove database entities referenced
public class SuggestionLog extends UserInitiatedServerContext {
private Long suggestionId;
private SuggestionState state;
private Member suggester;
private AUserInAServer suggesterUser;
private String text;
private String reason;
private Long originalMessageId;
private Long originalChannelId;
private String originalMessageUrl;
}

View File

@@ -1,24 +0,0 @@
package dev.sheldan.abstracto.utility.models.template.commands.reminder;
import dev.sheldan.abstracto.core.models.context.ServerContext;
import dev.sheldan.abstracto.core.utils.MessageUtils;
import dev.sheldan.abstracto.utility.models.database.Reminder;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import net.dv8tion.jda.api.entities.Member;
import java.time.Duration;
@Getter
@Setter
@SuperBuilder
public class ExecutedReminderModel extends ServerContext {
private Reminder reminder;
private Member member;
private Duration duration;
public String getMessageUrl() {
return MessageUtils.buildMessageUrl(this.reminder.getServer().getId() ,this.reminder.getChannel().getId(), this.reminder.getMessageId());
}
}

View File

@@ -1,15 +0,0 @@
package dev.sheldan.abstracto.utility.models.template.commands.reminder;
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
import dev.sheldan.abstracto.utility.models.database.Reminder;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
@Getter
@Setter
@SuperBuilder
public class ReminderModel extends UserInitiatedServerContext {
private String remindText;
private Reminder reminder;
}

View File

@@ -1,16 +0,0 @@
package dev.sheldan.abstracto.utility.models.template.commands.reminder;
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
import dev.sheldan.abstracto.utility.models.database.Reminder;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import java.util.List;
@Getter
@Setter
@SuperBuilder
public class RemindersModel extends UserInitiatedServerContext {
private List<Reminder> reminders;
}

View File

@@ -1,19 +0,0 @@
package dev.sheldan.abstracto.utility.models.template.commands.starboard;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
@Builder
public class GuildStarStatsModel {
private List<StarStatsPost> topPosts;
private List<StarStatsUser> starReceiver;
private List<StarStatsUser> starGiver;
private Integer totalStars;
private List<String> badgeEmotes;
private Integer starredMessages;
}

View File

@@ -1,19 +0,0 @@
package dev.sheldan.abstracto.utility.models.template.commands.starboard;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import net.dv8tion.jda.api.entities.Member;
import java.util.List;
@Getter
@Setter
@Builder
public class MemberStarStatsModel {
private List<StarStatsPost> topPosts;
private Long receivedStars;
private Long givenStars;
private List<String> badgeEmotes;
private Member member;
}

View File

@@ -1,20 +0,0 @@
package dev.sheldan.abstracto.utility.models.template.commands.starboard;
import dev.sheldan.abstracto.core.utils.MessageUtils;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Builder
public class StarStatsPost {
private Long serverId;
private Long channelId;
private Long messageId;
private Integer starCount;
public String getMessageUrl() {
return MessageUtils.buildMessageUrl(serverId ,channelId, messageId);
}
}

View File

@@ -1,19 +0,0 @@
package dev.sheldan.abstracto.utility.models.template.commands.starboard;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import net.dv8tion.jda.api.entities.Member;
@Getter
@Setter
@Builder
public class StarStatsUser {
private AUserInAServer user;
private Member member;
private Integer starCount;
}

View File

@@ -1,24 +0,0 @@
package dev.sheldan.abstracto.utility.models.template.commands.starboard;
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
import dev.sheldan.abstracto.core.models.context.ServerContext;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AUser;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.TextChannel;
@Getter
@Setter
@SuperBuilder
public class StarboardPostModel extends ServerContext {
private Member author;
private TextChannel channel;
private AUser user;
private AChannel aChannel;
private CachedMessage message;
private Integer starCount;
private String starLevelEmote;
}

View File

@@ -1,13 +0,0 @@
package dev.sheldan.abstracto.utility.service;
import net.dv8tion.jda.api.entities.Member;
import java.util.List;
public interface EntertainmentService {
String getEightBallValue(String text);
Integer getLoveCalcValue(String firstPart, String secondPart);
Integer calculateRollResult(Integer low, Integer high);
boolean executeRoulette(Member memberExecuting);
String takeChoice(List<String> choices, Member memberExecuting);
}

View File

@@ -1,15 +0,0 @@
package dev.sheldan.abstracto.utility.service;
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
import dev.sheldan.abstracto.utility.models.MessageEmbedLink;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.TextChannel;
import java.util.List;
import java.util.concurrent.CompletableFuture;
public interface MessageEmbedService {
List<MessageEmbedLink> getLinksInMessage(String message);
void embedLinks(List<MessageEmbedLink> linksToEmbed, TextChannel target, Long userEmbeddingUserInServerId, Message embeddingMessage);
CompletableFuture<Void> embedLink(CachedMessage cachedMessage, TextChannel target, Long userEmbeddingUserInServerId, Message embeddingMessage);
}

View File

@@ -1,9 +0,0 @@
package dev.sheldan.abstracto.utility.service;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import net.dv8tion.jda.api.entities.Guild;
public interface PostedImageService {
void purgePostedImages(AUserInAServer member);
void purgePostedImages(Guild guild);
}

View File

@@ -1,13 +0,0 @@
package dev.sheldan.abstracto.utility.service;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.utility.models.database.Reminder;
import net.dv8tion.jda.api.entities.Message;
import java.time.Duration;
public interface ReminderService {
Reminder createReminderInForUser(AUserInAServer user, String remindText, Duration remindIn, Message message);
void executeReminder(Long reminderId);
void unRemind(Long reminderId, AUserInAServer userInAServer);
}

View File

@@ -1,29 +0,0 @@
package dev.sheldan.abstracto.utility.service;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AChannelGroup;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.utility.models.database.RepostCheckChannelGroup;
import net.dv8tion.jda.api.entities.TextChannel;
import java.util.List;
public interface RepostCheckChannelService {
void setRepostCheckEnabledForChannelGroup(AChannelGroup channelGroup);
void setRepostCheckEnabledForChannelGroup(RepostCheckChannelGroup channelGroup);
void setRepostCheckDisabledForChannelGroup(AChannelGroup channelGroup);
void setRepostCheckDisabledForChannelGroup(RepostCheckChannelGroup channelGroup);
boolean duplicateCheckEnabledForChannel(TextChannel textChannel);
boolean duplicateCheckEnabledForChannel(AChannel channel);
List<RepostCheckChannelGroup> getRepostCheckChannelGroupsForServer(AServer server);
List<RepostCheckChannelGroup> getRepostCheckChannelGroupsForServer(Long serverId);
List<RepostCheckChannelGroup> getChannelGroupsWithEnabledCheck(AServer server);
List<RepostCheckChannelGroup> getChannelGroupsWithEnabledCheck(Long serverId);
}

View File

@@ -1,30 +0,0 @@
package dev.sheldan.abstracto.utility.service;
import dev.sheldan.abstracto.core.models.cache.CachedAttachment;
import dev.sheldan.abstracto.core.models.cache.CachedEmbed;
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.utility.models.RepostLeaderboardEntryModel;
import dev.sheldan.abstracto.utility.models.database.PostedImage;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.MessageEmbed;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
public interface RepostService {
boolean isRepost(CachedMessage message, CachedEmbed messageEmbed, Integer embedIndex);
Optional<PostedImage> getRepostFor(CachedMessage message, CachedEmbed messageEmbed, Integer embedIndex);
Optional<PostedImage> getRepostFor(Message message, MessageEmbed messageEmbed, Integer embedIndex);
boolean isRepost(CachedMessage message, CachedAttachment attachment, Integer index);
Optional<PostedImage> getRepostFor(CachedMessage message, CachedAttachment attachment, Integer index);
String calculateHashForPost(String url, Long serverId);
void processMessageAttachmentRepostCheck(CachedMessage message);
void processMessageEmbedsRepostCheck(List<CachedEmbed> embeds, CachedMessage message);
void processMessageEmbedsRepostCheck(List<MessageEmbed> embeds, Message message);
CompletableFuture<List<RepostLeaderboardEntryModel>> retrieveRepostLeaderboard(Guild guild, Integer page);
void purgeReposts(AUserInAServer userInAServer);
void purgeReposts(Guild guild);
}

View File

@@ -1,21 +0,0 @@
package dev.sheldan.abstracto.utility.service;
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
import dev.sheldan.abstracto.utility.models.template.commands.starboard.GuildStarStatsModel;
import dev.sheldan.abstracto.utility.models.template.commands.starboard.MemberStarStatsModel;
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsPost;
import net.dv8tion.jda.api.entities.Member;
import java.util.List;
import java.util.concurrent.CompletableFuture;
public interface StarboardService {
CompletableFuture<Void> createStarboardPost(CachedMessage message, List<AUserInAServer> userExceptAuthor, AUserInAServer userReacting, AUserInAServer starredUser);
CompletableFuture<Void> updateStarboardPost(StarboardPost post, CachedMessage message, List<AUserInAServer> userExceptAuthor);
void deleteStarboardMessagePost(StarboardPost message);
CompletableFuture<GuildStarStatsModel> retrieveStarStats(Long serverId);
MemberStarStatsModel retrieveStarStatsForMember(Member member);
StarStatsPost fromStarboardPost(StarboardPost starboardPost);
}

View File

@@ -1,12 +0,0 @@
package dev.sheldan.abstracto.utility.service;
import dev.sheldan.abstracto.utility.models.template.commands.SuggestionLog;
import net.dv8tion.jda.api.entities.Member;
import java.util.concurrent.CompletableFuture;
public interface SuggestionService {
CompletableFuture<Void> createSuggestionMessage(Member member, String text, SuggestionLog log);
CompletableFuture<Void> acceptSuggestion(Long suggestionId, String text, SuggestionLog log);
CompletableFuture<Void> rejectSuggestion(Long suggestionId, String text, SuggestionLog log);
}

View File

@@ -1,14 +0,0 @@
package dev.sheldan.abstracto.utility.service.management;
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.utility.models.database.EmbeddedMessage;
import net.dv8tion.jda.api.entities.Message;
import java.util.Optional;
public interface MessageEmbedPostManagementService {
void createMessageEmbed(CachedMessage embeddedMessage, Message messageContainingEmbed, AUserInAServer cause);
Optional<EmbeddedMessage> findEmbeddedPostByMessageId(Long messageId);
void deleteEmbeddedMessage(EmbeddedMessage embeddedMessage);
}

View File

@@ -1,22 +0,0 @@
package dev.sheldan.abstracto.utility.service.management;
import dev.sheldan.abstracto.core.models.AServerAChannelAUser;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.utility.models.database.PostedImage;
import java.util.List;
import java.util.Optional;
public interface PostedImageManagement {
PostedImage createPost(AServerAChannelAUser creation, Long messageId, String hash, Integer index);
boolean postWitHashExists(String hash, AServer server);
Optional<PostedImage> getPostWithHash(String hash, AServer server);
boolean messageHasBeenCovered(Long messageId);
boolean messageEmbedsHaveBeenCovered(Long messageId);
List<PostedImage> getAllFromMessage(Long messageId);
Optional<PostedImage> getPostFromMessageAndPositionOptional(Long messageId, Integer position);
PostedImage getPostFromMessageAndPosition(Long messageId, Integer position);
void removePostedImagesOf(AUserInAServer aUserInAServer);
void removedPostedImagesIn(AServer aServer);
}

View File

@@ -1,19 +0,0 @@
package dev.sheldan.abstracto.utility.service.management;
import dev.sheldan.abstracto.core.models.AServerAChannelAUser;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.utility.models.database.Reminder;
import java.time.Instant;
import java.util.List;
import java.util.Optional;
public interface ReminderManagementService {
Reminder createReminder(AServerAChannelAUser userToBeReminded, String text, Instant timeToBeRemindedAt, Long messageId);
Optional<Reminder> loadReminderOptional(Long reminderId);
Reminder loadReminder(Long reminderId);
void setReminded(Reminder reminder);
Reminder saveReminder(Reminder reminder);
List<Reminder> getActiveRemindersForUser(AUserInAServer aUserInAServer);
Optional<Reminder> getReminderByAndByUserNotReminded(AUserInAServer aUserInAServer, Long reminderId);
}

View File

@@ -1,16 +0,0 @@
package dev.sheldan.abstracto.utility.service.management;
import dev.sheldan.abstracto.core.models.database.AChannelGroup;
import dev.sheldan.abstracto.utility.models.database.RepostCheckChannelGroup;
import java.util.Optional;
public interface RepostCheckChannelGroupManagement {
RepostCheckChannelGroup loadRepostChannelGroupById(Long channelGroupId);
Optional<RepostCheckChannelGroup> loadRepostChanelGroupByIdOptional(Long channelGroupId);
boolean repostCheckChannelGroupExists(Long channelGroupId);
Optional<RepostCheckChannelGroup> loadRepostChannelGroupByChannelGroupOptional(AChannelGroup channelGroup);
RepostCheckChannelGroup loadRepostChannelGroupByChannelGroup(AChannelGroup channelGroup);
RepostCheckChannelGroup createRepostCheckChannelGroup(AChannelGroup channelGroup);
void deleteRepostCheckChannelGroup(AChannelGroup channelGroup);
}

View File

@@ -1,22 +0,0 @@
package dev.sheldan.abstracto.utility.service.management;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.utility.models.database.PostedImage;
import dev.sheldan.abstracto.utility.models.database.Repost;
import dev.sheldan.abstracto.utility.models.database.result.RepostLeaderboardResult;
import java.util.List;
import java.util.Optional;
public interface RepostManagementService {
Repost createRepost(PostedImage postedImage, AUserInAServer poster);
Repost setRepostCount(PostedImage postedImage, AUserInAServer poster, Integer newCount);
Repost findRepost(PostedImage postedImage, AUserInAServer poster);
Optional<Repost> findRepostOptional(PostedImage postedImage, AUserInAServer poster);
List<RepostLeaderboardResult> findTopRepostingUsersOfServer(AServer server, Integer page, Integer pageSize);
List<RepostLeaderboardResult> findTopRepostingUsersOfServer(Long serverId, Integer page, Integer pageSize);
RepostLeaderboardResult getRepostRankOfUser(AUserInAServer aUserInAServer);
void deleteRepostsFromUser(AUserInAServer aUserInAServer);
void deleteRepostsFromServer(AServer server);
}

View File

@@ -1,26 +0,0 @@
package dev.sheldan.abstracto.utility.service.management;
import dev.sheldan.abstracto.core.models.AServerAChannelMessage;
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
import java.util.List;
import java.util.Optional;
public interface StarboardPostManagementService {
StarboardPost createStarboardPost(CachedMessage starredMessage, AUserInAServer starredUser, AServerAChannelMessage starboardPost);
StarboardPost createStarboardPost(StarboardPost post);
void setStarboardPostMessageId(StarboardPost post, Long messageId);
List<StarboardPost> retrieveTopPosts(Long serverId, Integer count);
List<StarboardPost> retrieveTopPostsForUserInServer(Long serverId, Long userId, Integer count);
Long retrieveGivenStarsOfUserInServer(Long serverId, Long userId);
Long retrieveReceivedStarsOfUserInServer(Long serverId, Long userId);
List<StarboardPost> retrieveAllPosts(Long serverId);
Integer getPostCount(Long serverId);
Optional<StarboardPost> findByMessageId(Long messageId);
Optional<StarboardPost> findByStarboardPostId(Long postId);
void setStarboardPostIgnored(Long starboardPostId, Boolean newValue);
boolean isStarboardPost(Long starboardPostId);
void removePost(StarboardPost starboardPost);
}

View File

@@ -1,18 +0,0 @@
package dev.sheldan.abstracto.utility.service.management;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
import dev.sheldan.abstracto.utility.models.database.StarboardPostReaction;
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsUser;
import java.util.List;
import java.util.concurrent.CompletableFuture;
public interface StarboardPostReactorManagementService {
StarboardPostReaction addReactor(StarboardPost post, AUserInAServer user);
void removeReactor(StarboardPost post, AUserInAServer user);
void removeReactors(StarboardPost post);
Integer getStarCount(Long serverId);
List<CompletableFuture<StarStatsUser>> retrieveTopStarGiver(Long serverId, Integer count);
List<CompletableFuture<StarStatsUser>> retrieveTopStarReceiver(Long serverId, Integer count);
}

View File

@@ -1,16 +0,0 @@
package dev.sheldan.abstracto.utility.service.management;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.utility.models.SuggestionState;
import dev.sheldan.abstracto.utility.models.database.Suggestion;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Message;
import java.util.Optional;
public interface SuggestionManagementService {
Suggestion createSuggestion(Member suggester, String text, Message message, Long suggestionId);
Suggestion createSuggestion(AUserInAServer suggester, String text, Message message, Long suggestionId);
Optional<Suggestion> getSuggestion(Long suggestionId, Long serverId);
void setSuggestionState(Suggestion suggestion, SuggestionState newState);
}