mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-03-26 22:19:52 +00:00
added utility module
added ability to create/accept/reject suggestions them made commands async, because a lot of operations behave like that in case the database is needed in an async operation, this needs to be in a separate transactional service fixed ordering of Long parameters (server > channel > message) added initial emote handling (no adding of emotes yet) fixed creation of AUserInAServer, in case the user did not exist yet, when loading changed PostTargetService to return Futures instead of being a void, in order to be able to act on the message posted set logging level to debug fixed help for different commands (templates had wrong naming)
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
package dev.sheldan.abstracto.core.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
|
||||
public interface EmoteManagementService {
|
||||
AEmote loadEmote(Long id);
|
||||
AEmote loadEmoteByName(String name, Long serverId);
|
||||
AEmote createCustomEmote(String name, String emoteKey, Long emoteId, Boolean animated);
|
||||
AEmote createDefaultEmote(String name, String emoteKey);
|
||||
}
|
||||
@@ -5,11 +5,11 @@ import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.PostTarget;
|
||||
|
||||
public interface PostTargetManagement {
|
||||
void createPostTarget(String name, AChannel targetChanel, AServer server);
|
||||
void createOrUpdate(String name, AChannel targetChannel, AServer server);
|
||||
void createOrUpdate(String name, Long channelId, AServer server);
|
||||
void createOrUpdate(String name, Long channelId, Long serverId);
|
||||
void createPostTarget(String name, AServer server, AChannel targetChanel);
|
||||
void createOrUpdate(String name, AServer server, AChannel targetChannel);
|
||||
void createOrUpdate(String name, AServer server, Long channelId);
|
||||
void createOrUpdate(String name, Long serverId, Long channelId);
|
||||
PostTarget getPostTarget(String name, AServer server);
|
||||
PostTarget getPostTarget(String name, Long serverId);
|
||||
void updatePostTarget(PostTarget target, AChannel newTargetChannel, AServer server);
|
||||
void updatePostTarget(PostTarget target, AServer server, AChannel newTargetChannel);
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ public interface ServerManagementService {
|
||||
AServer loadServer(Long id);
|
||||
void addChannelToServer(AServer server, AChannel channel);
|
||||
AUserInAServer addUserToServer(AServer server, AUser user);
|
||||
AUserInAServer addUserToServer(Long serverId, Long userId);
|
||||
AChannel getPostTarget(Long serverId, String name);
|
||||
AChannel getPostTarget(Long serverId, PostTarget target);
|
||||
AChannel getPostTarget(AServer server, PostTarget target);
|
||||
|
||||
@@ -6,9 +6,12 @@ import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
|
||||
public interface UserManagementService {
|
||||
AUserInAServer loadUser(Long userId, Long serverId);
|
||||
AUserInAServer loadUser(AUser user, AServer server);
|
||||
AUserInAServer loadUser(Long serverId, Long userId);
|
||||
AUserInAServer loadUser(AServer server, AUser user);
|
||||
AUserInAServer loadUser(Member member);
|
||||
AUserInAServer createUserInServer(Member member);
|
||||
AUserInAServer createUserInServer(Long guildId, Long userId);
|
||||
AUser createUser(Member member);
|
||||
AUser createUser(Long userId);
|
||||
AUser loadUser(Long userId);
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ public class AChannel implements SnowFlake {
|
||||
|
||||
@Getter
|
||||
@ManyToMany(mappedBy = "channels")
|
||||
private Set<ChannelGroup> groups;
|
||||
private Set<AChannelGroup> groups;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@Getter @Setter
|
||||
|
||||
@@ -10,15 +10,15 @@ import java.util.Set;
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ChannelGroup {
|
||||
@Getter
|
||||
public class AChannelGroup {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@Getter
|
||||
private Long id;
|
||||
|
||||
@Column
|
||||
@Getter @Setter
|
||||
@Setter
|
||||
private String groupName;
|
||||
|
||||
@ManyToMany
|
||||
@@ -26,7 +26,6 @@ public class ChannelGroup {
|
||||
name = "channel_in_group",
|
||||
joinColumns = @JoinColumn(name = "group_id"),
|
||||
inverseJoinColumns = @JoinColumn(name = "channel_id"))
|
||||
@Getter
|
||||
private Set<AChannel> channels;
|
||||
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Table(name = "emote")
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public class AEmote {
|
||||
|
||||
@javax.persistence.Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Integer Id;
|
||||
|
||||
@Column
|
||||
private String name;
|
||||
|
||||
@Column
|
||||
private String emoteKey;
|
||||
|
||||
@Column
|
||||
private Long emoteId;
|
||||
|
||||
@Column
|
||||
private Boolean animated;
|
||||
|
||||
@Column
|
||||
private Boolean custom;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
private AServer serverRef;
|
||||
|
||||
|
||||
}
|
||||
@@ -36,7 +36,15 @@ public class AServer implements SnowFlake {
|
||||
fetch = FetchType.LAZY,
|
||||
mappedBy = "serverReference",
|
||||
cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
private List<AUserInAServer> users;
|
||||
@Builder.Default
|
||||
private List<AUserInAServer> users = new ArrayList<>();
|
||||
|
||||
@OneToMany(
|
||||
fetch = FetchType.LAZY,
|
||||
mappedBy = "serverRef",
|
||||
cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
@Builder.Default
|
||||
private List<AEmote> emotes = new ArrayList<>();
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity @Getter @Builder
|
||||
@Entity
|
||||
@Getter
|
||||
@Builder
|
||||
@Setter
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class AUserInAServer {
|
||||
|
||||
@Id
|
||||
|
||||
@@ -39,6 +39,7 @@ public class PostTarget {
|
||||
public static String BAN_LOG = "banLog";
|
||||
public static String EDIT_LOG = "editLog";
|
||||
public static String DELETE_LOG = "deleteLog";
|
||||
public static String SUGGESTIONS = "suggestions";
|
||||
|
||||
public static List<String> AVAILABLE_POST_TARGETS = Arrays.asList(JOIN_LOG, LEAVE_LOG, WARN_LOG, KICK_LOG, BAN_LOG, EDIT_LOG, DELETE_LOG);
|
||||
public static List<String> AVAILABLE_POST_TARGETS = Arrays.asList(JOIN_LOG, LEAVE_LOG, WARN_LOG, KICK_LOG, BAN_LOG, EDIT_LOG, DELETE_LOG, SUGGESTIONS);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
|
||||
public interface MessageService {
|
||||
void addReactionToMessage(String emoteKey, Long serverId, Message message);
|
||||
}
|
||||
@@ -1,11 +1,14 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.PostTarget;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.MessageEmbed;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public interface PostTargetService {
|
||||
void sendTextInPostTarget(String text, PostTarget target);
|
||||
void sendEmbedInPostTarget(MessageEmbed embed, PostTarget target);
|
||||
void sendTextInPostTarget(String text, String postTargetName, Long serverId);
|
||||
void sendEmbedInPostTarget(MessageEmbed embed, String postTargetName, Long serverId);
|
||||
CompletableFuture<Message> sendTextInPostTarget(String text, PostTarget target);
|
||||
CompletableFuture<Message> sendEmbedInPostTarget(MessageEmbed embed, PostTarget target);
|
||||
CompletableFuture<Message> sendTextInPostTarget(String text, String postTargetName, Long serverId);
|
||||
CompletableFuture<Message> sendEmbedInPostTarget(MessageEmbed embed, String postTargetName, Long serverId);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core;
|
||||
package dev.sheldan.abstracto.core.utils;
|
||||
|
||||
import dev.sheldan.abstracto.core.management.ChannelManagementService;
|
||||
import dev.sheldan.abstracto.core.management.ServerManagementService;
|
||||
@@ -0,0 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.utils;
|
||||
|
||||
public class MessageUtils {
|
||||
public static String buildMessageUrl(Long serverId, Long channelId, Long messageId) {
|
||||
return String.format("https://discordapp.com/channels/%s/%s/%s", serverId, channelId, messageId);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user