added template support to echo

replaced HashMaps for templates with concrete models, so the interface is easier known
added rendering method for objects directly
added default parameters available for commands
split up service beans for server/channel into management and service bean
added server reference in AChannel
refactored join/leave listener
This commit is contained in:
Sheldan
2020-03-17 19:41:25 +01:00
parent 0521a1ab44
commit 167bbb0f8b
41 changed files with 399 additions and 205 deletions

View File

@@ -0,0 +1,9 @@
package dev.sheldan.abstracto.core.management;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.AChannelType;
public interface ChannelManagementService {
AChannel loadChannel(Long id);
AChannel createChannel(Long id, AChannelType type);
}

View File

@@ -0,0 +1,15 @@
package dev.sheldan.abstracto.core.management;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.AServer;
import dev.sheldan.abstracto.core.models.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);
PostTarget getPostTarget(String name, AServer server);
PostTarget getPostTarget(String name, Long serverId);
void updatePostTarget(PostTarget target, AChannel newTargetChannel, AServer server);
}

View File

@@ -0,0 +1,7 @@
package dev.sheldan.abstracto.core.management;
import dev.sheldan.abstracto.core.models.ARole;
public interface RoleManagementService {
ARole createRole(Long id);
}

View File

@@ -0,0 +1,15 @@
package dev.sheldan.abstracto.core.management;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.AServer;
import dev.sheldan.abstracto.core.models.PostTarget;
public interface ServerManagementService {
AServer createServer(Long id);
AServer loadServer(Long id);
void addChannelToServer(AServer server, AChannel channel);
AChannel getPostTarget(Long serverId, String name);
AChannel getPostTarget(Long serverId, PostTarget target);
AChannel getPostTarget(AServer server, PostTarget target);
AChannel getPostTarget(AServer server, String name);
}

View File

@@ -1,9 +1,6 @@
package dev.sheldan.abstracto.core.models;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.*;
import net.dv8tion.jda.api.entities.ChannelType;
import javax.persistence.*;
@@ -24,6 +21,10 @@ public class AChannel implements SnowFlake {
@ManyToMany(mappedBy = "channels")
private Set<ChannelGroup> groups;
@ManyToOne(fetch = FetchType.LAZY)
@Getter @Setter
private AServer server;
@Getter
@Enumerated(EnumType.STRING)
private AChannelType type;

View File

@@ -25,7 +25,11 @@ public class AServer implements SnowFlake {
@Builder.Default
private List<ARole> roles = new ArrayList<>();
@OneToMany(fetch = FetchType.LAZY)
@OneToMany(
fetch = FetchType.LAZY,
mappedBy = "server",
cascade = CascadeType.ALL,
orphanRemoval = true)
@Getter
@Builder.Default
private List<AChannel> channels = new ArrayList<>();

View File

@@ -1,9 +1,7 @@
package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.AChannelType;
public interface ChannelService {
AChannel loadChannel(Long id);
AChannel createChannel(Long id, AChannelType type);
void sendTextInAChannel(String text, AChannel channel);
}

View File

@@ -1,14 +1,7 @@
package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.AServer;
import dev.sheldan.abstracto.core.models.PostTarget;
public interface PostTargetService {
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);
PostTarget getPostTarget(String name, AServer server);
void updatePostTarget(PostTarget target, AChannel newTargetChannel, AServer server);
void sendTextInPostTarget(String text, PostTarget target);
}

View File

@@ -1,7 +0,0 @@
package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.models.ARole;
public interface RoleService {
ARole createRole(Long id);
}

View File

@@ -1,10 +0,0 @@
package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.AServer;
public interface ServerService {
AServer createServer(Long id);
AServer loadServer(Long id);
void addChannelToServer(AServer server, AChannel channel);
}