mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-01-25 20:04:01 +00:00
[AB-257] fixing link embed message being deleted while it still contains an attachment
adding more convenience methods to post target services
This commit is contained in:
@@ -6,11 +6,12 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Repository
|
||||
public interface PostTargetRepository extends JpaRepository<PostTarget, Long> {
|
||||
|
||||
PostTarget findPostTargetByNameAndServerReference(String name, AServer server);
|
||||
Optional<PostTarget> findPostTargetByNameAndServerReference(String name, AServer server);
|
||||
|
||||
boolean existsByNameAndServerReference(String name, AServer server);
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@ import dev.sheldan.abstracto.core.config.FeatureConfig;
|
||||
import dev.sheldan.abstracto.core.config.PostTargetEnum;
|
||||
import dev.sheldan.abstracto.core.exception.ChannelNotInGuildException;
|
||||
import dev.sheldan.abstracto.core.exception.GuildNotFoundException;
|
||||
import dev.sheldan.abstracto.core.exception.PostTargetNotFoundException;
|
||||
import dev.sheldan.abstracto.core.exception.PostTargetNotValidException;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.PostTarget;
|
||||
@@ -80,32 +79,21 @@ public class PostTargetServiceBean implements PostTargetService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PostTarget getPostTarget(PostTargetEnum postTargetName, Long serverId) {
|
||||
PostTarget postTarget = postTargetManagement.getPostTarget(postTargetName.getKey(), serverId);
|
||||
if(postTarget != null) {
|
||||
return postTarget;
|
||||
} else {
|
||||
log.error("PostTarget {} in server {} was not found!", postTargetName, serverId);
|
||||
throw new PostTargetNotFoundException(postTargetName.getKey());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Message> sendTextInPostTarget(String text, PostTargetEnum postTargetEnum, Long serverId) {
|
||||
PostTarget postTarget = this.getPostTarget(postTargetEnum, serverId);
|
||||
PostTarget postTarget = getPostTarget(postTargetEnum, serverId);
|
||||
return this.sendTextInPostTarget(text, postTarget);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Message> sendEmbedInPostTarget(MessageEmbed embed, PostTargetEnum postTargetName, Long serverId) {
|
||||
PostTarget postTarget = this.getPostTarget(postTargetName, serverId);
|
||||
PostTarget postTarget = getPostTarget(postTargetName, serverId);
|
||||
return this.sendEmbedInPostTarget(embed, postTarget);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Message> sendMessageInPostTarget(Message message, PostTargetEnum postTargetName, Long serverId) {
|
||||
PostTarget postTarget = this.getPostTarget(postTargetName, serverId);
|
||||
PostTarget postTarget = getPostTarget(postTargetName, serverId);
|
||||
return sendMessageInPostTarget(message, postTarget);
|
||||
}
|
||||
|
||||
@@ -117,7 +105,7 @@ public class PostTargetServiceBean implements PostTargetService {
|
||||
|
||||
@Override
|
||||
public List<CompletableFuture<Message>> sendEmbedInPostTarget(MessageToSend message, PostTargetEnum postTargetName, Long serverId) {
|
||||
PostTarget postTarget = this.getPostTarget(postTargetName, serverId);
|
||||
PostTarget postTarget = getPostTarget(postTargetName, serverId);
|
||||
return this.sendEmbedInPostTarget(message, postTarget);
|
||||
}
|
||||
|
||||
@@ -189,13 +177,13 @@ public class PostTargetServiceBean implements PostTargetService {
|
||||
|
||||
@Override
|
||||
public List<CompletableFuture<Message>> editOrCreatedInPostTarget(Long messageId, MessageToSend messageToSend, PostTargetEnum postTargetName, Long serverId) {
|
||||
PostTarget postTarget = this.getPostTarget(postTargetName, serverId);
|
||||
PostTarget postTarget = getPostTarget(postTargetName, serverId);
|
||||
return this.editOrCreatedInPostTarget(messageId, messageToSend, postTarget);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void throwIfPostTargetIsNotDefined(PostTargetEnum name, Long serverId) {
|
||||
PostTarget postTarget = postTargetManagement.getPostTarget(name.getKey(), serverId);
|
||||
PostTarget postTarget = getPostTarget(name, serverId);
|
||||
if(postTarget == null) {
|
||||
throw new PostTargetNotValidException(name.getKey(), defaultPostTargetManagementService.getDefaultPostTargetKeys());
|
||||
}
|
||||
@@ -208,10 +196,14 @@ public class PostTargetServiceBean implements PostTargetService {
|
||||
|
||||
@Override
|
||||
public List<CompletableFuture<Message>> editEmbedInPostTarget(Long messageId, MessageToSend message, PostTargetEnum postTargetName, Long serverId) {
|
||||
PostTarget postTarget = this.getPostTarget(postTargetName, serverId);
|
||||
PostTarget postTarget = getPostTarget(postTargetName, serverId);
|
||||
return editEmbedInPostTarget(messageId, message, postTarget);
|
||||
}
|
||||
|
||||
private PostTarget getPostTarget(PostTargetEnum postTargetEnum, Long serverId) {
|
||||
return postTargetManagement.getPostTarget(postTargetEnum.getKey(), serverId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean validPostTarget(String name) {
|
||||
List<String> possiblePostTargets = defaultPostTargetManagementService.getDefaultPostTargetKeys();
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.config.PostTargetEnum;
|
||||
import dev.sheldan.abstracto.core.exception.PostTargetNotFoundException;
|
||||
import dev.sheldan.abstracto.core.exception.PostTargetNotValidException;
|
||||
import dev.sheldan.abstracto.core.exception.ServerChannelConflictException;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
@@ -12,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
@@ -44,11 +47,11 @@ public class PostTargetManagementBean implements PostTargetManagement {
|
||||
|
||||
@Override
|
||||
public PostTarget createOrUpdate(String name, AChannel targetChannel) {
|
||||
PostTarget existing = postTargetRepository.findPostTargetByNameAndServerReference(name, targetChannel.getServer());
|
||||
if(existing == null){
|
||||
Optional<PostTarget> existingTargetOptional = getPostTargetOptional(name, targetChannel.getServer().getId());
|
||||
if(!existingTargetOptional.isPresent()){
|
||||
return this.createPostTarget(name, targetChannel);
|
||||
} else {
|
||||
return this.updatePostTarget(existing, targetChannel);
|
||||
return this.updatePostTarget(existingTargetOptional.get(), targetChannel);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,7 +75,12 @@ public class PostTargetManagementBean implements PostTargetManagement {
|
||||
|
||||
@Override
|
||||
public PostTarget getPostTarget(String name, AServer server) {
|
||||
return postTargetRepository.findPostTargetByNameAndServerReference(name, server);
|
||||
return postTargetRepository.findPostTargetByNameAndServerReference(name, server).orElseThrow(() -> new PostTargetNotFoundException(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public PostTarget getPostTarget(PostTargetEnum postTargetEnum, AServer server) {
|
||||
return getPostTarget(postTargetEnum.getKey(), server);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -81,6 +89,17 @@ public class PostTargetManagementBean implements PostTargetManagement {
|
||||
return getPostTarget(name, server);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<PostTarget> getPostTargetOptional(String name, Long serverId) {
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
return postTargetRepository.findPostTargetByNameAndServerReference(name, server);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<PostTarget> getPostTargetOptional(PostTargetEnum postTargetEnum, Long serverId) {
|
||||
return getPostTargetOptional(postTargetEnum.getKey(), serverId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean postTargetExists(String name, AServer server) {
|
||||
return postTargetRepository.existsByNameAndServerReference(name, server);
|
||||
|
||||
@@ -25,7 +25,6 @@ public interface PostTargetService {
|
||||
List<CompletableFuture<Message>> editOrCreatedInPostTarget(Long messageId, MessageToSend messageToSend, PostTargetEnum postTarget, Long serverId);
|
||||
void throwIfPostTargetIsNotDefined(PostTargetEnum name, Long serverId);
|
||||
boolean postTargetDefinedInServer(PostTargetEnum name, Long serverId);
|
||||
PostTarget getPostTarget(PostTargetEnum postTargetName, Long serverId);
|
||||
boolean validPostTarget(String name);
|
||||
List<PostTarget> getPostTargets(AServer server);
|
||||
List<String> getAvailablePostTargets();
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.config.PostTargetEnum;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.PostTarget;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface PostTargetManagement {
|
||||
PostTarget createPostTarget(String name, AChannel targetChanel);
|
||||
@@ -12,7 +14,10 @@ public interface PostTargetManagement {
|
||||
PostTarget createOrUpdate(String name, AServer server, Long channelId);
|
||||
PostTarget createOrUpdate(String name, Long serverId, Long channelId);
|
||||
PostTarget getPostTarget(String name, AServer server);
|
||||
PostTarget getPostTarget(PostTargetEnum postTargetEnum, AServer server);
|
||||
PostTarget getPostTarget(String name, Long serverId);
|
||||
Optional<PostTarget> getPostTargetOptional(String name, Long serverId);
|
||||
Optional<PostTarget> getPostTargetOptional(PostTargetEnum postTargetEnum, Long serverId);
|
||||
Boolean postTargetExists(String name, AServer server);
|
||||
boolean postTargetExists(String name, Long serverId);
|
||||
PostTarget updatePostTarget(PostTarget target, AChannel newTargetChannel);
|
||||
|
||||
Reference in New Issue
Block a user