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

@@ -5,7 +5,7 @@ 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.*;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
import dev.sheldan.abstracto.utility.Utility;
import dev.sheldan.abstracto.utility.models.template.commands.reminder.ReminderModel;
@@ -29,7 +29,7 @@ public class Remind extends AbstractConditionableCommand {
List<Object> parameters = commandContext.getParameters().getParameters();
Duration remindTime = (Duration) parameters.get(0);
String text = (String) parameters.get(1);
AUserInAServer aUserInAServer = commandContext.getUserInitiatedContext().getAUserInAServer();
UserInServerDto aUserInAServer = commandContext.getUserInitiatedContext().getAUserInAServer();
ReminderModel remindModel = (ReminderModel) ContextConverter.fromCommandContext(commandContext, ReminderModel.class);
remindModel.setMessage(commandContext.getMessage());
remindModel.setRemindText(text);

View File

@@ -13,7 +13,7 @@ import dev.sheldan.abstracto.utility.Utility;
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
import dev.sheldan.abstracto.utility.models.database.Reminder;
import dev.sheldan.abstracto.utility.models.template.commands.reminder.RemindersModel;
import dev.sheldan.abstracto.utility.service.management.ReminderManagementService;
import dev.sheldan.abstracto.utility.service.management.ReminderManagementServiceBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -23,7 +23,7 @@ import java.util.List;
public class Reminders extends AbstractConditionableCommand {
@Autowired
private ReminderManagementService reminderManagementService;
private ReminderManagementServiceBean reminderManagementService;
@Autowired
private ChannelService channelService;

View File

@@ -1,8 +1,8 @@
package dev.sheldan.abstracto.utility.config;
import dev.sheldan.abstracto.core.listener.ServerConfigListener;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.service.management.ConfigManagementService;
import dev.sheldan.abstracto.core.models.dto.ServerDto;
import dev.sheldan.abstracto.core.service.ConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -15,13 +15,13 @@ public class StarboardConfigListener implements ServerConfigListener {
private StarboardConfig starboardConfig;
@Autowired
private ConfigManagementService configManagementService;
private ConfigService configManagementService;
@Override
public void updateServerConfig(AServer server) {
public void updateServerConfig(ServerDto server) {
for (int i = 0; i < starboardConfig.getLvl().size(); i++) {
Integer value = starboardConfig.getLvl().get(i);
configManagementService.createIfNotExists(server.getId(), "starLvl" + ( i + 1 ), Double.valueOf(value));
configManagementService.createValueIfNotExists("starLvl" + ( i + 1 ), server.getId(), Double.valueOf(value));
}
}
}

View File

@@ -0,0 +1,26 @@
package dev.sheldan.abstracto.utility.converter;
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
import dev.sheldan.abstracto.core.models.converter.ChannelConverter;
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsPost;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class StarPostConverter {
@Autowired
private ChannelConverter channelConverter;
public StarStatsPost fromStarboardPost(StarboardPost starboardPost) {
ChannelDto channel = channelConverter.fromChannel(starboardPost.getStarboardChannel());
return StarStatsPost
.builder()
.serverId(channel.getServer().getId())
.channelId(channel.getId())
.messageId(starboardPost.getPostMessageId())
.starCount(starboardPost.getReactions().size())
.build();
}
}

View File

@@ -1,9 +1,9 @@
package dev.sheldan.abstracto.utility.listener.embed;
import dev.sheldan.abstracto.core.command.service.UserService;
import dev.sheldan.abstracto.core.listener.MessageReceivedListener;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
import dev.sheldan.abstracto.core.service.MessageCache;
import dev.sheldan.abstracto.core.service.management.UserManagementService;
import dev.sheldan.abstracto.utility.models.MessageEmbedLink;
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
import dev.sheldan.abstracto.utility.service.MessageEmbedService;
@@ -25,7 +25,7 @@ public class MessageEmbedListener implements MessageReceivedListener {
public static final String MESSAGE_EMBED_TEMPLATE = "message";
@Autowired
private UserManagementService userManagementService;
private UserService userManagementService;
@Autowired
private MessageEmbedService messageEmbedService;
@@ -36,7 +36,7 @@ public class MessageEmbedListener implements MessageReceivedListener {
List<MessageEmbedLink> links = messageEmbedService.getLinksInMessage(messageRaw);
for (MessageEmbedLink messageEmbedLink : links) {
messageRaw = messageRaw.replace(messageEmbedLink.getWholeUrl(), "");
AUserInAServer cause = userManagementService.loadUser(message.getMember());
UserInServerDto cause = userManagementService.loadUser(message.getMember());
messageCache.getMessageFromCache(messageEmbedLink.getServerId(), messageEmbedLink.getChannelId(), messageEmbedLink.getMessageId()).thenAccept(cachedMessage -> {
messageEmbedService.embedLink(cachedMessage, message.getTextChannel(), cause, message);
});

View File

@@ -2,15 +2,15 @@ package dev.sheldan.abstracto.utility.listener.embed;
import dev.sheldan.abstracto.core.listener.ReactedAddedListener;
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
import dev.sheldan.abstracto.core.models.database.AEmote;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.core.models.dto.EmoteDto;
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
import dev.sheldan.abstracto.core.service.Bot;
import dev.sheldan.abstracto.core.service.EmoteService;
import dev.sheldan.abstracto.core.service.MessageService;
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
import dev.sheldan.abstracto.core.utils.EmoteUtils;
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
import dev.sheldan.abstracto.utility.models.database.EmbeddedMessage;
import dev.sheldan.abstracto.utility.service.management.MessageEmbedPostManagementService;
import dev.sheldan.abstracto.utility.service.management.MessageEmbedPostManagementServiceBean;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.entities.Emote;
import net.dv8tion.jda.api.entities.MessageReaction;
@@ -26,31 +26,31 @@ public class MessageEmbedRemovalReactionListener implements ReactedAddedListener
public static final String REMOVAL_EMOTE = "removeEmbed";
@Autowired
private EmoteManagementService emoteManagementService;
private EmoteService emoteManagementService;
@Autowired
private Bot bot;
@Autowired
private MessageEmbedPostManagementService messageEmbedPostManagementService;
private MessageEmbedPostManagementServiceBean messageEmbedPostManagementService;
@Autowired
private MessageService messageService;
@Override
public void executeReactionAdded(CachedMessage message, MessageReaction reaction, AUserInAServer userAdding) {
public void executeReactionAdded(CachedMessage message, MessageReaction reaction, UserInServerDto userAdding) {
Long guildId = message.getServerId();
Optional<AEmote> aEmote = emoteManagementService.loadEmoteByName(REMOVAL_EMOTE, guildId);
Optional<EmoteDto> aEmote = emoteManagementService.getEmoteByName(REMOVAL_EMOTE, guildId);
if(aEmote.isPresent()) {
AEmote emote = aEmote.get();
EmoteDto emote = aEmote.get();
MessageReaction.ReactionEmote reactionEmote = reaction.getReactionEmote();
Optional<Emote> emoteInGuild = bot.getEmote(guildId, emote);
if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, emote, emoteInGuild.orElse(null))) {
Optional<EmbeddedMessage> embeddedMessageOptional = messageEmbedPostManagementService.findEmbeddedPostByMessageId(message.getMessageId());
if(embeddedMessageOptional.isPresent()) {
EmbeddedMessage embeddedMessage = embeddedMessageOptional.get();
if(embeddedMessage.getEmbeddedUser().getUserReference().getId().equals(userAdding.getUserReference().getId())
|| embeddedMessage.getEmbeddingUser().getUserReference().getId().equals(userAdding.getUserReference().getId())
if(embeddedMessage.getEmbeddedUser().getUserReference().getId().equals(userAdding.getUser().getId())
|| embeddedMessage.getEmbeddingUser().getUserReference().getId().equals(userAdding.getUser().getId())
) {
messageService.deleteMessageInChannelInServer(message.getServerId(), message.getChannelId(), message.getMessageId()).thenAccept(aVoid -> {
messageEmbedPostManagementService.deleteEmbeddedMessageTransactional(embeddedMessage);

View File

@@ -1,23 +1,23 @@
package dev.sheldan.abstracto.utility.listener.starboard;
import dev.sheldan.abstracto.core.command.service.UserService;
import dev.sheldan.abstracto.core.listener.ReactedAddedListener;
import dev.sheldan.abstracto.core.listener.ReactedRemovedListener;
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
import dev.sheldan.abstracto.core.models.cache.CachedReaction;
import dev.sheldan.abstracto.core.models.database.AEmote;
import dev.sheldan.abstracto.core.models.database.AUser;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.core.models.dto.EmoteDto;
import dev.sheldan.abstracto.core.models.dto.UserDto;
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
import dev.sheldan.abstracto.core.service.Bot;
import dev.sheldan.abstracto.core.service.ConfigService;
import dev.sheldan.abstracto.core.service.EmoteService;
import dev.sheldan.abstracto.core.service.MessageCache;
import dev.sheldan.abstracto.core.service.management.ConfigManagementService;
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
import dev.sheldan.abstracto.core.service.management.UserManagementService;
import dev.sheldan.abstracto.core.utils.EmoteUtils;
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
import dev.sheldan.abstracto.utility.service.StarboardService;
import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementService;
import dev.sheldan.abstracto.utility.service.management.StarboardPostReactorManagementService;
import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementServiceBean;
import dev.sheldan.abstracto.utility.service.management.StarboardPostReactorManagementServiceBean;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.entities.Emote;
import net.dv8tion.jda.api.entities.MessageReaction;
@@ -36,7 +36,7 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi
public static final String STAR_EMOTE = "star";
@Autowired
private EmoteManagementService emoteManagementService;
private EmoteService emoteManagementService;
@Autowired
private Bot bot;
@@ -45,30 +45,30 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi
private MessageCache messageCache;
@Autowired
private ConfigManagementService configManagementService;
private ConfigService configManagementService;
@Autowired
private StarboardService starboardService;
@Autowired
private StarboardPostManagementService starboardPostManagementService;
private StarboardPostManagementServiceBean starboardPostManagementService;
@Autowired
private StarboardPostReactorManagementService starboardPostReactorManagementService;
private StarboardPostReactorManagementServiceBean starboardPostReactorManagementService;
@Autowired
private UserManagementService userManagementService;
private UserService userManagementService;
@Override
@Transactional
public void executeReactionAdded(CachedMessage message, MessageReaction addedReaction, AUserInAServer userAdding) {
if(userAdding.getUserReference().getId().equals(message.getAuthorId())) {
public void executeReactionAdded(CachedMessage message, MessageReaction addedReaction, UserInServerDto userAdding) {
if(userAdding.getUser().getId().equals(message.getAuthorId())) {
return;
}
Long guildId = message.getServerId();
Optional<AEmote> aEmote = emoteManagementService.loadEmoteByName(STAR_EMOTE, guildId);
Optional<EmoteDto> aEmote = emoteManagementService.getEmoteByName(STAR_EMOTE, guildId);
if(aEmote.isPresent()) {
AEmote emote = aEmote.get();
EmoteDto emote = aEmote.get();
MessageReaction.ReactionEmote reactionEmote = addedReaction.getReactionEmote();
Optional<Emote> emoteInGuild = bot.getEmote(guildId, emote);
if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, emote, emoteInGuild.orElse(null))) {
@@ -80,21 +80,21 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi
}
}
private void updateStarboardPost(CachedMessage message, CachedReaction reaction, AUserInAServer userReacting, boolean adding) {
private void updateStarboardPost(CachedMessage message, CachedReaction reaction, UserInServerDto userReacting, boolean adding) {
Optional<StarboardPost> starboardPostOptional = starboardPostManagementService.findByMessageId(message.getMessageId());
if(reaction != null) {
List<AUser> userExceptAuthor = getUsersExcept(reaction.getUsers(), message.getAuthorId());
Double starMinimum = getFromConfig("starLvl1", message.getServerId());
List<UserDto> userExceptAuthor = getUsersExcept(reaction.getUsers(), message.getAuthorId());
Double starMinimum = configManagementService.getDoubleValue("starLvl1", message.getServerId());
if (userExceptAuthor.size() >= starMinimum) {
AUserInAServer author = userManagementService.loadUser(message.getServerId(), message.getAuthorId());
UserInServerDto author = userManagementService.loadUser(message.getServerId(), message.getAuthorId());
if(starboardPostOptional.isPresent()) {
StarboardPost starboardPost = starboardPostOptional.get();
starboardPost.setIgnored(false);
starboardService.updateStarboardPost(starboardPost, message, userExceptAuthor);
if(adding) {
starboardPostReactorManagementService.addReactor(starboardPost, userReacting.getUserReference());
starboardPostReactorManagementService.addReactor(starboardPost, userReacting.getUser());
} else {
starboardPostReactorManagementService.removeReactor(starboardPost, userReacting.getUserReference());
starboardPostReactorManagementService.removeReactor(starboardPost, userReacting.getUser());
}
} else {
starboardService.createStarboardPost(message, userExceptAuthor, userReacting, author);
@@ -119,14 +119,14 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi
@Override
@Transactional
public void executeReactionRemoved(CachedMessage message, MessageReaction removedReaction, AUserInAServer userRemoving) {
if(message.getAuthorId().equals(userRemoving.getUserReference().getId())) {
public void executeReactionRemoved(CachedMessage message, MessageReaction removedReaction, UserInServerDto userRemoving) {
if(message.getAuthorId().equals(userRemoving.getUser().getId())) {
return;
}
Long guildId = message.getServerId();
Optional<AEmote> aEmote = emoteManagementService.loadEmoteByName(STAR_EMOTE, guildId);
Optional<EmoteDto> aEmote = emoteManagementService.getEmoteByName(STAR_EMOTE, guildId);
if(aEmote.isPresent()) {
AEmote emote = aEmote.get();
EmoteDto emote = aEmote.get();
MessageReaction.ReactionEmote reactionEmote = removedReaction.getReactionEmote();
Optional<Emote> emoteInGuild = bot.getEmote(guildId, emote);
if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, emote, emoteInGuild.orElse(null))) {
@@ -138,11 +138,7 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi
}
}
private Double getFromConfig(String key, Long guildId) {
return configManagementService.loadConfig(guildId, key).getDoubleValue();
}
private List<AUser> getUsersExcept(List<AUser> users, Long userId) {
private List<UserDto> getUsersExcept(List<UserDto> users, Long userId) {
return users.stream().filter(user -> !user.getId().equals(userId)).collect(Collectors.toList());
}

View File

@@ -4,7 +4,7 @@ import dev.sheldan.abstracto.core.listener.MessageDeletedListener;
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
import dev.sheldan.abstracto.utility.config.UtilityFeatures;
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementService;
import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementServiceBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -14,7 +14,7 @@ import java.util.Optional;
public class StarboardPostDeletedListener implements MessageDeletedListener {
@Autowired
private StarboardPostManagementService starboardPostManagementService;
private StarboardPostManagementServiceBean starboardPostManagementService;
@Override
public void execute(CachedMessage messageBefore) {

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.utility.repository;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.core.models.AUserInAServer;
import dev.sheldan.abstracto.utility.models.database.Reminder;
import org.springframework.data.jpa.repository.JpaRepository;

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.utility.repository;
import dev.sheldan.abstracto.core.models.database.AUser;
import dev.sheldan.abstracto.core.models.AUser;
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
import dev.sheldan.abstracto.utility.models.database.StarboardPostReaction;
import org.springframework.data.jpa.repository.JpaRepository;

View File

@@ -1,7 +1,7 @@
package dev.sheldan.abstracto.utility.repository.converter;
import dev.sheldan.abstracto.core.service.management.UserManagementService;
import dev.sheldan.abstracto.core.models.database.AUser;
import dev.sheldan.abstracto.core.command.service.UserService;
import dev.sheldan.abstracto.core.models.dto.UserDto;
import dev.sheldan.abstracto.core.service.Bot;
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsUser;
import dev.sheldan.abstracto.utility.repository.StarStatsUserResult;
@@ -15,7 +15,7 @@ import java.util.List;
public class StarStatsUserConverter {
@Autowired
private UserManagementService userManagementService;
private UserService userManagementService;
@Autowired
private Bot bot;
@@ -27,7 +27,7 @@ public class StarStatsUserConverter {
.builder()
.starCount(starStatsUserResult.getStarCount())
.member(bot.getMemberInServer(serverId, starStatsUserResult.getUserId()))
.user(AUser.builder().id(starStatsUserResult.getUserId()).build())
.user(UserDto.builder().id(starStatsUserResult.getUserId()).build())
.build();
result.add(newUser);
});

View File

@@ -1,22 +1,23 @@
package dev.sheldan.abstracto.utility.service;
import dev.sheldan.abstracto.core.command.service.UserService;
import dev.sheldan.abstracto.core.converter.UserInServerModelConverter;
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
import dev.sheldan.abstracto.core.models.template.ChannelModel;
import dev.sheldan.abstracto.core.models.template.ServerModel;
import dev.sheldan.abstracto.core.models.template.UserInServerModel;
import dev.sheldan.abstracto.core.models.template.listener.MessageEmbeddedModel;
import dev.sheldan.abstracto.templating.model.MessageToSend;
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
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.core.service.Bot;
import dev.sheldan.abstracto.core.service.ChannelService;
import dev.sheldan.abstracto.core.service.MessageCache;
import dev.sheldan.abstracto.core.service.MessageService;
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
import dev.sheldan.abstracto.core.service.management.UserManagementService;
import dev.sheldan.abstracto.templating.service.TemplateService;
import dev.sheldan.abstracto.utility.models.MessageEmbedLink;
import dev.sheldan.abstracto.utility.service.management.MessageEmbedPostManagementService;
import dev.sheldan.abstracto.utility.service.management.MessageEmbedPostManagementServiceBean;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.TextChannel;
@@ -41,13 +42,10 @@ public class MessageEmbedServiceBean implements MessageEmbedService {
public static final String REMOVAL_EMOTE = "removeEmbed";
@Autowired
private ChannelManagementService channelManagementService;
private ChannelService channelManagementService;
@Autowired
private ServerManagementService serverManagementService;
@Autowired
private UserManagementService userManagementService;
private UserService userManagementService;
@Autowired
private Bot bot;
@@ -65,11 +63,17 @@ public class MessageEmbedServiceBean implements MessageEmbedService {
private MessageCache messageCache;
@Autowired
private MessageEmbedPostManagementService messageEmbedPostManagementService;
private MessageEmbedPostManagementServiceBean messageEmbedPostManagementService;
@Autowired
private MessageService messageService;
@Autowired
private UserInServerModelConverter userInServerModelConverter;
@Autowired
private UserService userService;
@Override
public List<MessageEmbedLink> getLinksInMessage(String message) {
List<MessageEmbedLink> links = new ArrayList<>();
@@ -95,7 +99,7 @@ public class MessageEmbedServiceBean implements MessageEmbedService {
}
@Override
public void embedLinks(List<MessageEmbedLink> linksToEmbed, TextChannel target, AUserInAServer reason, Message embeddingMessage) {
public void embedLinks(List<MessageEmbedLink> linksToEmbed, TextChannel target, UserInServerDto reason, Message embeddingMessage) {
linksToEmbed.forEach(messageEmbedLink -> {
messageCache.getMessageFromCache(messageEmbedLink.getServerId(), messageEmbedLink.getChannelId(), messageEmbedLink.getMessageId())
.thenAccept(cachedMessage -> {
@@ -106,7 +110,7 @@ public class MessageEmbedServiceBean implements MessageEmbedService {
@Override
@Transactional
public void embedLink(CachedMessage cachedMessage, TextChannel target, AUserInAServer cause, Message embeddingMessage) {
public void embedLink(CachedMessage cachedMessage, TextChannel target, UserInServerDto cause, Message embeddingMessage) {
MessageEmbeddedModel messageEmbeddedModel = buildTemplateParameter(embeddingMessage, cachedMessage);
MessageToSend embed = templateService.renderEmbedTemplate(MESSAGE_EMBED_TEMPLATE, messageEmbeddedModel);
List<CompletableFuture<Message>> completableFutures = channelService.sendMessageToEndInTextChannel(embed, target);
@@ -124,24 +128,22 @@ public class MessageEmbedServiceBean implements MessageEmbedService {
}
private MessageEmbeddedModel buildTemplateParameter(Message message, CachedMessage embeddedMessage) {
AChannel channel = channelManagementService.loadChannel(message.getChannel().getIdLong());
AServer server = serverManagementService.loadOrCreate(message.getGuild().getIdLong());
AUserInAServer user = userManagementService.loadUser(message.getMember());
Member author = bot.getMemberInServer(embeddedMessage.getServerId(), embeddedMessage.getAuthorId());
TextChannel sourceChannel = bot.getTextChannelFromServer(embeddedMessage.getServerId(), embeddedMessage.getChannelId()).get();
ChannelModel currentChannel = ChannelModel.builder().id(message.getTextChannel().getIdLong()).build();
Guild guild = message.getGuild();
ServerModel server = ServerModel.builder().id(guild.getIdLong()).build();
UserInServerModel embeddingUser = userInServerModelConverter.fromMember(message.getMember());
UserInServerModel embeddedUser = userInServerModelConverter.fromUser(userService.loadUser(embeddedMessage.getServerId(), embeddedMessage.getAuthorId()));
ServerModel sourceServer = ServerModel.builder().id(embeddedMessage.getServerId()).build();
return MessageEmbeddedModel
.builder()
.channel(channel)
.channel(currentChannel)
.server(server)
.member(message.getMember())
.aUserInAServer(user)
.author(author)
.sourceChannel(sourceChannel)
.embeddingUser(message.getMember())
.user(user.getUserReference())
.messageChannel(message.getChannel())
.guild(message.getGuild())
.embeddedMessage(embeddedMessage)
.embeddedUser(embeddedUser.getUser())
.embeddedUserInServer(embeddedUser)
.userModel(embeddingUser.getUser())
.userInServer(embeddedUser)
.sourceServer(sourceServer)
.build();
}
}

View File

@@ -1,12 +1,14 @@
package dev.sheldan.abstracto.utility.service;
import dev.sheldan.abstracto.core.models.converter.ChannelConverter;
import dev.sheldan.abstracto.core.models.converter.ServerConverter;
import dev.sheldan.abstracto.core.models.converter.UserConverter;
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
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.core.service.ChannelService;
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
import dev.sheldan.abstracto.core.models.AServerAChannelAUser;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUser;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.templating.model.MessageToSend;
import dev.sheldan.abstracto.core.service.Bot;
import dev.sheldan.abstracto.scheduling.service.SchedulerService;
@@ -14,7 +16,7 @@ import dev.sheldan.abstracto.templating.service.TemplateService;
import dev.sheldan.abstracto.utility.models.database.Reminder;
import dev.sheldan.abstracto.utility.models.template.commands.reminder.ExecutedReminderModel;
import dev.sheldan.abstracto.utility.models.template.commands.reminder.ReminderModel;
import dev.sheldan.abstracto.utility.service.management.ReminderManagementService;
import dev.sheldan.abstracto.utility.service.management.ReminderManagementServiceBean;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
@@ -38,10 +40,10 @@ public class RemindServiceBean implements ReminderService {
public static final String REMINDER_EMBED_KEY = "remind_response";
@Autowired
private ReminderManagementService reminderManagementService;
private ReminderManagementServiceBean reminderManagementService;
@Autowired
private ChannelManagementService channelManagementService;
private ChannelService channelManagementService;
@Autowired
private TemplateService templateService;
@@ -58,14 +60,23 @@ public class RemindServiceBean implements ReminderService {
@Autowired
private ChannelService channelService;
@Autowired
private ServerConverter serverConverter;
@Autowired
private ChannelConverter channelConverter;
@Autowired
private UserConverter userConverter;
@Override
public void createReminderInForUser(AUserInAServer user, String remindText, Duration remindIn, ReminderModel reminderModel) {
AChannel channel = channelManagementService.loadChannel(reminderModel.getChannel().getId());
public void createReminderInForUser(UserInServerDto user, String remindText, Duration remindIn, ReminderModel reminderModel) {
ChannelDto channel = channelManagementService.loadChannel(reminderModel.getChannel().getId());
AServerAChannelAUser aServerAChannelAUser = AServerAChannelAUser
.builder()
.user(user.getUserReference())
.user(user.getUser())
.aUserInAServer(user)
.guild(user.getServerReference())
.guild(user.getServer())
.channel(channel)
.build();
Instant remindAt = Instant.now().plusNanos(remindIn.toNanos());
@@ -90,14 +101,14 @@ public class RemindServiceBean implements ReminderService {
@Transactional
public void executeReminder(Long reminderId) {
Reminder reminderToRemindFor = reminderManagementService.loadReminder(reminderId);
AServer server = reminderToRemindFor.getServer();
AChannel channel = reminderToRemindFor.getChannel();
ServerDto server = serverConverter.convertServer(reminderToRemindFor.getServer());
ChannelDto channel = channelConverter.fromChannel(reminderToRemindFor.getChannel());
Optional<Guild> guildToAnswerIn = bot.getGuildById(server.getId());
if(guildToAnswerIn.isPresent()) {
Optional<TextChannel> channelToAnswerIn = bot.getTextChannelFromServer(server.getId(), channel.getId());
// only send the message if the channel still exists, if not, only set the reminder to reminded.
if(channelToAnswerIn.isPresent()) {
AUser userReference = reminderToRemindFor.getRemindedUser().getUserReference();
UserDto userReference = userConverter.fromAUser(reminderToRemindFor.getRemindedUser().getUserReference());
Member memberInServer = bot.getMemberInServer(server.getId(), userReference.getId());
ExecutedReminderModel build = ExecutedReminderModel
.builder()

View File

@@ -1,11 +1,13 @@
package dev.sheldan.abstracto.utility.service;
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
import dev.sheldan.abstracto.core.service.management.PostTargetManagement;
import dev.sheldan.abstracto.core.service.management.UserManagementService;
import dev.sheldan.abstracto.core.command.service.UserService;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.AUserInAServer;
import dev.sheldan.abstracto.core.models.converter.ChannelConverter;
import dev.sheldan.abstracto.core.models.converter.UserInServerConverter;
import dev.sheldan.abstracto.core.models.dto.*;
import dev.sheldan.abstracto.core.models.AServerAChannelMessage;
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
import dev.sheldan.abstracto.core.models.database.*;
import dev.sheldan.abstracto.templating.model.MessageToSend;
import dev.sheldan.abstracto.core.service.Bot;
import dev.sheldan.abstracto.core.service.ConfigService;
@@ -13,13 +15,14 @@ import dev.sheldan.abstracto.core.service.EmoteService;
import dev.sheldan.abstracto.core.service.PostTargetService;
import dev.sheldan.abstracto.templating.service.TemplateService;
import dev.sheldan.abstracto.utility.config.StarboardConfig;
import dev.sheldan.abstracto.utility.converter.StarPostConverter;
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsModel;
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsPost;
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsUser;
import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarboardPostModel;
import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementService;
import dev.sheldan.abstracto.utility.service.management.StarboardPostReactorManagementService;
import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementServiceBean;
import dev.sheldan.abstracto.utility.service.management.StarboardPostReactorManagementServiceBean;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.entities.*;
import org.springframework.beans.factory.annotation.Autowired;
@@ -48,35 +51,41 @@ public class StarboardServiceBean implements StarboardService {
@Autowired
private TemplateService templateService;
@Autowired
private EmoteManagementService emoteManagementService;
@Autowired
private ConfigService configService;
@Autowired
private StarboardPostManagementService starboardPostManagementService;
private StarboardPostManagementServiceBean starboardPostManagementService;
@Autowired
private StarboardConfig starboardConfig;
@Autowired
private UserManagementService userManagementService;
private UserService userManagementService;
@Autowired
private StarboardPostReactorManagementService starboardPostReactorManagementService;
private StarboardPostReactorManagementServiceBean starboardPostReactorManagementService;
@Autowired
private PostTargetManagement postTargetManagement;
private PostTargetService postTargetManagement;
@Autowired
private EmoteService emoteService;
@Autowired
private UserInServerConverter userInServerConverter;
@Autowired
private ChannelConverter channelConverter;
@Autowired
private StarPostConverter starPostConverter;
@Override
public void createStarboardPost(CachedMessage message, List<AUser> userExceptAuthor, AUserInAServer userReacting, AUserInAServer starredUser) {
public void createStarboardPost(CachedMessage message, List<UserDto> userExceptAuthor, UserInServerDto userReacting, UserInServerDto starredUser) {
StarboardPostModel starboardPostModel = buildStarboardPostModel(message, userExceptAuthor.size());
MessageToSend messageToSend = templateService.renderEmbedTemplate(STARBOARD_POST_TEMPLATE, starboardPostModel);
PostTarget starboard = postTargetManagement.getPostTarget(STARBOARD_POSTTARGET, message.getServerId());
PostTargetDto starboard = postTargetManagement.getPostTarget(STARBOARD_POSTTARGET, message.getServerId());
List<CompletableFuture<Message>> completableFutures = postTargetService.sendEmbedInPostTarget(messageToSend, STARBOARD_POSTTARGET, message.getServerId());
CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture[0])).thenAccept(aVoid -> {
try {
@@ -85,7 +94,7 @@ public class StarboardServiceBean implements StarboardService {
.builder()
.messageId(message1.getIdLong())
.channel(starboard.getChannelReference())
.server(userReacting.getServerReference())
.server(userReacting.getServer())
.build();
StarboardPost starboardPost = starboardPostManagementService.createStarboardPost(message, starredUser, userReacting, aServerAChannelMessage);
// TODO maybe in bulk, but numbers should be small enough
@@ -103,13 +112,13 @@ public class StarboardServiceBean implements StarboardService {
Member member = bot.getMemberInServer(message.getServerId(), message.getAuthorId());
Optional<TextChannel> channel = bot.getTextChannelFromServer(message.getServerId(), message.getChannelId());
Optional<Guild> guild = bot.getGuildById(message.getServerId());
AChannel aChannel = AChannel.builder().id(message.getChannelId()).build();
AUser user = AUser.builder().id(message.getAuthorId()).build();
AServer server = AServer.builder().id(message.getServerId()).build();
Optional<AEmote> appropriateEmoteOptional = getAppropriateEmote(message.getServerId(), starCount);
ChannelDto aChannel = ChannelDto.builder().id(message.getChannelId()).build();
UserDto user = UserDto.builder().id(message.getAuthorId()).build();
ServerDto server = ServerDto.builder().id(message.getServerId()).build();
Optional<EmoteDto> appropriateEmoteOptional = getAppropriateEmote(message.getServerId(), starCount);
String emoteText;
if(appropriateEmoteOptional.isPresent()) {
AEmote emote = appropriateEmoteOptional.get();
EmoteDto emote = appropriateEmoteOptional.get();
emoteText = emoteService.getEmoteAsMention(emote, message.getServerId(), "");
} else {
log.warn("No emote defined to be used for starboard post. Falling back to default.");
@@ -130,7 +139,7 @@ public class StarboardServiceBean implements StarboardService {
}
@Override
public void updateStarboardPost(StarboardPost post, CachedMessage message, List<AUser> userExceptAuthor) {
public void updateStarboardPost(StarboardPost post, CachedMessage message, List<UserDto> userExceptAuthor) {
StarboardPostModel starboardPostModel = buildStarboardPostModel(message, userExceptAuthor.size());
MessageToSend messageToSend = templateService.renderEmbedTemplate("starboard_post", starboardPostModel);
List<CompletableFuture<Message>> futures = new ArrayList<>();
@@ -155,14 +164,14 @@ public class StarboardServiceBean implements StarboardService {
int count = 3;
List<StarboardPost> starboardPosts = starboardPostManagementService.retrieveTopPosts(serverId, count);
List<StarStatsUser> topStarGivers = starboardPostReactorManagementService.retrieveTopStarGiver(serverId, count);
List<StarStatsPost> starStatsPosts = starboardPosts.stream().map(StarStatsPost::fromStarboardPost).collect(Collectors.toList());
List<StarStatsPost> starStatsPosts = starboardPosts.stream().map(starboardPost -> starPostConverter.fromStarboardPost(starboardPost)).collect(Collectors.toList());
List<StarStatsUser> topStarReceiver = starboardPostReactorManagementService.retrieveTopStarReceiver(serverId, count);
Integer postCount = starboardPostManagementService.getPostCount(serverId);
Integer reactionCount = starboardPostReactorManagementService.getStarCount(serverId);
List<String> emotes = new ArrayList<>();
for (int i = 1; i < count + 1; i++) {
Optional<AEmote> starboardRankingEmote = getStarboardRankingEmote(serverId, i);
AEmote emote = starboardRankingEmote.orElse(null);
Optional<EmoteDto> starboardRankingEmote = getStarboardRankingEmote(serverId, i);
EmoteDto emote = starboardRankingEmote.orElse(null);
String defaultEmoji = starboardConfig.getBadge().get(i - 1);
emotes.add(emoteService.getEmoteAsMention(emote, serverId, defaultEmoji));
}
@@ -178,17 +187,17 @@ public class StarboardServiceBean implements StarboardService {
.build();
}
private Optional<AEmote> getStarboardRankingEmote(Long serverId, Integer position) {
return emoteManagementService.loadEmoteByName("starboardBadge" + position, serverId);
private Optional<EmoteDto> getStarboardRankingEmote(Long serverId, Integer position) {
return emoteService.getEmoteByName("starboardBadge" + position, serverId);
}
private Optional<AEmote> getAppropriateEmote(Long serverId, Integer starCount) {
private Optional<EmoteDto> getAppropriateEmote(Long serverId, Integer starCount) {
for(int i = starboardConfig.getLvl().size(); i > 0; i--) {
Double starMinimum = configService.getDoubleValue("starLvl" + i, serverId);
if(starCount >= starMinimum) {
return emoteManagementService.loadEmoteByName("star" + i, serverId);
return emoteService.getEmoteByName("star" + i, serverId);
}
}
return emoteManagementService.loadEmoteByName("star0", serverId);
return emoteService.getEmoteByName("star0", serverId);
}
}

View File

@@ -1,8 +1,8 @@
package dev.sheldan.abstracto.utility.service;
import dev.sheldan.abstracto.core.models.converter.UserInServerConverter;
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
import dev.sheldan.abstracto.core.service.EmoteService;
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.templating.model.MessageToSend;
import dev.sheldan.abstracto.core.service.Bot;
import dev.sheldan.abstracto.core.service.MessageService;
@@ -12,7 +12,7 @@ import dev.sheldan.abstracto.templating.service.TemplateService;
import dev.sheldan.abstracto.utility.models.database.Suggestion;
import dev.sheldan.abstracto.utility.models.SuggestionState;
import dev.sheldan.abstracto.utility.models.template.commands.SuggestionLog;
import dev.sheldan.abstracto.utility.service.management.SuggestionManagementService;
import dev.sheldan.abstracto.utility.service.management.SuggestionManagementServiceBean;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.*;
@@ -35,7 +35,7 @@ public class SuggestionServiceBean implements SuggestionService {
private static final String SUGGESTION_NO_EMOTE = "suggestionNo";
public static final String SUGGESTIONS_TARGET = "suggestions";
@Autowired
private SuggestionManagementService suggestionManagementService;
private SuggestionManagementServiceBean suggestionManagementService;
@Autowired
private PostTargetService postTargetService;
@@ -46,9 +46,6 @@ public class SuggestionServiceBean implements SuggestionService {
@Autowired
private Bot botService;
@Autowired
private EmoteManagementService emoteManagementService;
@Autowired
private EmoteService emoteService;
@@ -58,6 +55,9 @@ public class SuggestionServiceBean implements SuggestionService {
@Autowired
private SuggestionServiceBean self;
@Autowired
private UserInServerConverter userInServerConverter;
@Override
public void createSuggestion(Member member, String text, SuggestionLog suggestionLog) {
Suggestion suggestion = suggestionManagementService.createSuggestion(member, text);
@@ -99,11 +99,11 @@ public class SuggestionServiceBean implements SuggestionService {
suggestionLog.setOriginalChannelId(channelId);
suggestionLog.setOriginalMessageId(originalMessageId);
suggestionLog.setOriginalMessageUrl(MessageUtils.buildMessageUrl(serverId, channelId, originalMessageId));
AUserInAServer suggester = suggestion.getSuggester();
UserInServerDto suggester = userInServerConverter.fromAUserInAServer(suggestion.getSuggester());
JDA instance = botService.getInstance();
Guild guildById = instance.getGuildById(serverId);
if(guildById != null) {
Member memberById = guildById.getMemberById(suggester.getUserReference().getId());
Member memberById = guildById.getMemberById(suggester.getUser().getId());
if(memberById != null) {
suggestionLog.setSuggester(memberById);
suggestionLog.setSuggestion(suggestion);
@@ -140,6 +140,6 @@ public class SuggestionServiceBean implements SuggestionService {
public void validateSetup(Long serverId) {
emoteService.throwIfEmoteDoesNotExist(SUGGESTION_YES_EMOTE, serverId);
emoteService.throwIfEmoteDoesNotExist(SUGGESTION_NO_EMOTE, serverId);
postTargetService.throwIfPostTargetIsNotDefined(SUGGESTION_YES_EMOTE, serverId);
postTargetService.throwIfPostTargetIsNotDefined(SUGGESTIONS_TARGET, serverId);
}
}

View File

@@ -1,11 +1,13 @@
package dev.sheldan.abstracto.utility.service.management;
import dev.sheldan.abstracto.core.command.service.UserService;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.AServer;
import dev.sheldan.abstracto.core.models.AUserInAServer;
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
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.core.models.converter.UserInServerConverter;
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
import dev.sheldan.abstracto.core.service.MessageService;
import dev.sheldan.abstracto.core.service.management.UserManagementService;
import dev.sheldan.abstracto.utility.models.database.EmbeddedMessage;
import dev.sheldan.abstracto.utility.repository.EmbeddedMessageRepository;
import lombok.extern.slf4j.Slf4j;
@@ -18,25 +20,29 @@ import java.util.Optional;
@Component
@Slf4j
public class MessageEmbedPostManagementServiceBean implements MessageEmbedPostManagementService {
public class MessageEmbedPostManagementServiceBean {
@Autowired
private EmbeddedMessageRepository embeddedMessageRepository;
@Autowired
private UserManagementService userManagementService;
private UserService userManagementService;
@Autowired
private MessageService messageService;
@Override
@Autowired
private UserInServerConverter userInServerConverter;
@Transactional
public void createMessageEmbed(CachedMessage embeddedMessage, Message messageContainingEmbed, AUserInAServer cause) {
public void createMessageEmbed(CachedMessage embeddedMessage, Message messageContainingEmbed, UserInServerDto cause) {
AServer embeddedServer = AServer.builder().id(embeddedMessage.getServerId()).build();
AChannel embeddedChannel = AChannel.builder().id(embeddedMessage.getChannelId()).build();
AServer embeddingServer = AServer.builder().id(messageContainingEmbed.getGuild().getIdLong()).build();
AChannel embeddingChannel = AChannel.builder().id(messageContainingEmbed.getTextChannel().getIdLong()).build();
AUserInAServer embeddedAuthor = userManagementService.loadUser(embeddedMessage.getServerId(), embeddedMessage.getAuthorId());
UserInServerDto authorDto = userManagementService.loadUser(embeddedMessage.getServerId(), embeddedMessage.getAuthorId());
AUserInAServer author = userInServerConverter.fromDto(authorDto);
AUserInAServer auserCause = userInServerConverter.fromDto(cause);
EmbeddedMessage messageEmbedPost = EmbeddedMessage
.builder()
.embeddedMessageId(embeddedMessage.getMessageId())
@@ -45,24 +51,21 @@ public class MessageEmbedPostManagementServiceBean implements MessageEmbedPostMa
.embeddingServer(embeddingServer)
.embeddingChannel(embeddingChannel)
.embeddingMessageId(messageContainingEmbed.getIdLong())
.embeddedUser(embeddedAuthor)
.embeddingUser(cause)
.embeddedUser(author)
.embeddingUser(auserCause)
.build();
embeddedMessageRepository.save(messageEmbedPost);
}
@Override
public Optional<EmbeddedMessage> findEmbeddedPostByMessageId(Long messageId) {
return Optional.ofNullable(embeddedMessageRepository.findByEmbeddingMessageId(messageId));
}
@Override
public void deleteEmbeddedMessage(EmbeddedMessage embeddedMessage) {
embeddedMessageRepository.delete(embeddedMessage);
}
@Override
@Transactional
public void deleteEmbeddedMessageTransactional(EmbeddedMessage embeddedMessage) {
this.deleteEmbeddedMessage(embeddedMessage);

View File

@@ -1,7 +1,12 @@
package dev.sheldan.abstracto.utility.service.management;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.AServerAChannelAUser;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.core.models.converter.ChannelConverter;
import dev.sheldan.abstracto.core.models.converter.ServerConverter;
import dev.sheldan.abstracto.core.models.converter.UserConverter;
import dev.sheldan.abstracto.core.models.converter.UserInServerConverter;
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
import dev.sheldan.abstracto.utility.models.database.Reminder;
import dev.sheldan.abstracto.utility.repository.ReminderRepository;
import org.springframework.beans.factory.annotation.Autowired;
@@ -11,17 +16,25 @@ import java.time.Instant;
import java.util.List;
@Component
public class ReminderManagementServiceBean implements ReminderManagementService {
public class ReminderManagementServiceBean {
@Autowired
private ReminderRepository reminderRepository;
@Override
@Autowired
private ChannelConverter channelConverter;
@Autowired
private ServerConverter serverConverter;
@Autowired
private UserInServerConverter userConverter;
public Reminder createReminder(AServerAChannelAUser userToBeReminded, String text, Instant timeToBeRemindedAt, Long messageId) {
Reminder reminder = Reminder.builder()
.channel(userToBeReminded.getChannel())
.server(userToBeReminded.getGuild())
.remindedUser(userToBeReminded.getAUserInAServer())
.channel(channelConverter.fromDto(userToBeReminded.getChannel()))
.server(serverConverter.fromDto(userToBeReminded.getGuild()))
.remindedUser(userConverter.fromDto(userToBeReminded.getAUserInAServer()))
.reminded(false)
.text(text)
.reminderDate(Instant.now())
@@ -33,20 +46,17 @@ public class ReminderManagementServiceBean implements ReminderManagementService
return reminder;
}
@Override
public Reminder loadReminder(Long reminderId) {
return reminderRepository.getOne(reminderId);
}
@Override
public void setReminded(Reminder reminder) {
reminder.setReminded(true);
reminderRepository.save(reminder);
}
@Override
public List<Reminder> getActiveRemindersForUser(AUserInAServer aUserInAServer) {
return reminderRepository.getByRemindedUserAndRemindedFalse(aUserInAServer);
public List<Reminder> getActiveRemindersForUser(UserInServerDto aUserInAServer) {
return reminderRepository.getByRemindedUserAndRemindedFalse(userConverter.fromDto(aUserInAServer));
}
}

View File

@@ -1,8 +1,11 @@
package dev.sheldan.abstracto.utility.service.management;
import dev.sheldan.abstracto.core.models.AServerAChannelMessage;
import dev.sheldan.abstracto.core.models.AUserInAServer;
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.core.models.converter.ChannelConverter;
import dev.sheldan.abstracto.core.models.converter.UserInServerConverter;
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
import dev.sheldan.abstracto.utility.models.database.StarboardPost;
import dev.sheldan.abstracto.utility.repository.StarboardPostRepository;
import dev.sheldan.abstracto.utility.repository.converter.StarStatsUserConverter;
@@ -16,7 +19,7 @@ import java.util.List;
import java.util.Optional;
@Component
public class StarboardPostManagementServiceBean implements StarboardPostManagementService {
public class StarboardPostManagementServiceBean {
@Autowired
private StarboardPostRepository repository;
@@ -24,27 +27,32 @@ public class StarboardPostManagementServiceBean implements StarboardPostManageme
@Autowired
private StarStatsUserConverter converter;
@Override
public StarboardPost createStarboardPost(CachedMessage starredMessage, AUserInAServer starredUser, AUserInAServer starringUser, AServerAChannelMessage starboardPost) {
@Autowired
private UserInServerConverter userInServerConverter;
@Autowired
private ChannelConverter channelConverter;
public StarboardPost createStarboardPost(CachedMessage starredMessage, UserInServerDto starredUser, UserInServerDto starringUser, AServerAChannelMessage starboardPost) {
AUserInAServer author = userInServerConverter.fromDto(starredUser);
StarboardPost post = StarboardPost
.builder()
.author(starredUser.getUserReference())
.author(author.getUserReference())
.postMessageId(starredMessage.getMessageId())
.starboardMessageId(starboardPost.getMessageId())
.starboardChannel(starboardPost.getChannel())
.starboardChannel(channelConverter.fromDto(starboardPost.getChannel()))
.starredDate(Instant.now())
.build();
repository.save(post);
return post;
}
@Override
public void setStarboardPostMessageId(StarboardPost post, Long messageId) {
post.setStarboardMessageId(messageId);
repository.save(post);
}
@Override
public List<StarboardPost> retrieveTopPosts(Long serverId, Integer count) {
List<StarboardPost> posts = retrieveAllPosts(serverId);
posts.sort(Comparator.comparingInt(o -> o.getReactions().size()));
@@ -52,39 +60,32 @@ public class StarboardPostManagementServiceBean implements StarboardPostManageme
return posts.subList(0, Math.min(count, posts.size()));
}
@Override
public List<StarboardPost> retrieveAllPosts(Long serverId) {
return repository.findByStarboardChannelServerId(serverId);
}
@Override
public Integer getPostCount(Long serverId) {
return retrieveAllPosts(serverId).size();
}
@Override
public Optional<StarboardPost> findByMessageId(Long messageId) {
return Optional.ofNullable(repository.findByPostMessageId(messageId));
}
@Override
public Optional<StarboardPost> findByStarboardPostId(Long postId) {
return Optional.ofNullable(repository.findByStarboardMessageId(postId));
}
@Override
public void setStarboardPostIgnored(Long messageId, Boolean newValue) {
StarboardPost post = repository.findByStarboardMessageId(messageId);
post.setIgnored(newValue);
repository.save(post);
}
@Override
public boolean isStarboardPost(Long messageId) {
return repository.findByStarboardMessageId(messageId) != null;
}
@Override
public void removePost(StarboardPost starboardPost) {
repository.deleteById(starboardPost.getId());
}

View File

@@ -1,6 +1,8 @@
package dev.sheldan.abstracto.utility.service.management;
import dev.sheldan.abstracto.core.models.database.AUser;
import dev.sheldan.abstracto.core.models.AUser;
import dev.sheldan.abstracto.core.models.converter.UserConverter;
import dev.sheldan.abstracto.core.models.dto.UserDto;
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;
@@ -13,7 +15,7 @@ import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class StarboardPostReactorManagementServiceBean implements StarboardPostReactorManagementService {
public class StarboardPostReactorManagementServiceBean {
@Autowired
private StarboardPostReactionRepository repository;
@@ -21,38 +23,37 @@ public class StarboardPostReactorManagementServiceBean implements StarboardPostR
@Autowired
private StarStatsUserConverter converter;
@Override
public void addReactor(StarboardPost post, AUser user) {
@Autowired
private UserConverter userConverter;
public void addReactor(StarboardPost post, UserDto user) {
AUser aUser = userConverter.toUser(user);
StarboardPostReaction reactor = StarboardPostReaction
.builder()
.starboardPost(post)
.reactor(user)
.reactor(aUser)
.build();
repository.save(reactor);
}
@Override
public void removeReactor(StarboardPost post, AUser user) {
repository.deleteByReactorAndStarboardPost(user, post);
public void removeReactor(StarboardPost post, UserDto user) {
AUser aUser = userConverter.toUser(user);
repository.deleteByReactorAndStarboardPost(aUser, post);
}
@Override
public void removeReactors(StarboardPost post) {
repository.deleteByStarboardPost(post);
}
@Override
public Integer getStarCount(Long serverId) {
return repository.getReactionCountByServer(serverId);
}
@Override
public List<StarStatsUser> retrieveTopStarGiver(Long serverId, Integer count) {
List<StarStatsUserResult> starGivers = repository.findTopStarGiverInServer(serverId, count);
return converter.convertToStarStatsUser(starGivers, serverId);
}
@Override
public List<StarStatsUser> retrieveTopStarReceiver(Long serverId, Integer count) {
List<StarStatsUserResult> starReceivers = repository.retrieveTopStarReceiverInServer(serverId, count);
return converter.convertToStarStatsUser(starReceivers, serverId);

View File

@@ -1,11 +1,14 @@
package dev.sheldan.abstracto.utility.service.management;
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
import dev.sheldan.abstracto.core.service.management.UserManagementService;
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.core.command.service.UserService;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.AServer;
import dev.sheldan.abstracto.core.models.AUserInAServer;
import dev.sheldan.abstracto.core.models.converter.ChannelConverter;
import dev.sheldan.abstracto.core.models.converter.UserConverter;
import dev.sheldan.abstracto.core.models.converter.UserInServerConverter;
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
import dev.sheldan.abstracto.core.service.ChannelService;
import dev.sheldan.abstracto.utility.models.database.Suggestion;
import dev.sheldan.abstracto.utility.models.SuggestionState;
import dev.sheldan.abstracto.utility.repository.SuggestionRepository;
@@ -17,55 +20,55 @@ import org.springframework.stereotype.Component;
import java.time.Instant;
@Component
public class SuggestionManagementServiceBean implements SuggestionManagementService {
public class SuggestionManagementServiceBean {
@Autowired
private SuggestionRepository suggestionRepository;
@Autowired
private ChannelManagementService channelManagementService;
private UserInServerConverter userInServerConverter;
@Autowired
private UserManagementService userManagementService;
private UserConverter userConverter;
@Autowired
private ServerManagementService serverManagementService;
private UserService userService;
@Autowired
private ChannelService channelService;
@Autowired
private ChannelConverter channelConverter;
@Override
public Suggestion createSuggestion(Member suggester, String text) {
AUserInAServer user = userManagementService.loadUser(suggester);
return this.createSuggestion(user, text);
UserInServerDto userDto = userService.loadUser(suggester);
return this.createSuggestion(userDto, text);
}
@Override
public Suggestion createSuggestion(AUserInAServer suggester, String text) {
public Suggestion createSuggestion(UserInServerDto suggester, String text) {
AUserInAServer aUserInAServer = userInServerConverter.fromDto(suggester);
Suggestion suggestion = Suggestion
.builder()
.state(SuggestionState.NEW)
.suggester(suggester)
.suggester(aUserInAServer)
.suggestionDate(Instant.now())
.build();
suggestionRepository.save(suggestion);
return suggestion;
}
@Override
public Suggestion getSuggestion(Long suggestionId) {
return suggestionRepository.getOne(suggestionId);
}
@Override
public void setPostedMessage(Suggestion suggestion, Message message) {
suggestion.setMessageId(message.getIdLong());
AChannel channel = channelManagementService.loadChannel(message.getTextChannel().getIdLong());
suggestion.setChannel(channel);
AServer server = serverManagementService.loadOrCreate(message.getGuild().getIdLong());
suggestion.setServer(server);
suggestion.setChannel(AChannel.builder().id(message.getTextChannel().getIdLong()).build());
suggestion.setServer(AServer.builder().id(message.getGuild().getIdLong()).build());
suggestionRepository.save(suggestion);
}
@Override
public void setSuggestionState(Suggestion suggestion, SuggestionState newState) {
suggestion.setState(newState);
suggestionRepository.save(suggestion);