mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-09-06 00:25:31 +00:00
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:
@@ -14,6 +14,11 @@
|
||||
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>dev.sheldan.abstracto.core</groupId>
|
||||
<artifactId>core-db-models</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter</artifactId>
|
||||
@@ -22,10 +27,6 @@
|
||||
<groupId>net.dv8tion</groupId>
|
||||
<artifactId>JDA</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>dev.sheldan.abstracto.templating</groupId>
|
||||
<artifactId>templating-interface</artifactId>
|
||||
|
||||
@@ -2,9 +2,9 @@ package dev.sheldan.abstracto.core.command.condition;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||
import dev.sheldan.abstracto.core.command.models.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.command.service.ChannelGroupCommandService;
|
||||
import dev.sheldan.abstracto.core.command.service.management.CommandManagementService;
|
||||
import dev.sheldan.abstracto.core.command.service.CommandService;
|
||||
import dev.sheldan.abstracto.core.models.dto.CommandDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -15,12 +15,12 @@ public class CommandDisabledCondition implements CommandCondition {
|
||||
private ChannelGroupCommandService channelGroupCommandService;
|
||||
|
||||
@Autowired
|
||||
private CommandManagementService commandManagementService;
|
||||
private CommandService commandManagementService;
|
||||
|
||||
@Override
|
||||
public ConditionResult shouldExecute(CommandContext context, Command command) {
|
||||
ACommand acommand = commandManagementService.findCommandByName(command.getConfiguration().getName());
|
||||
Boolean booleanResult = channelGroupCommandService.isCommandEnabled(acommand, context.getUserInitiatedContext().getChannel());
|
||||
CommandDto commandDto = commandManagementService.findCommandByName(command.getConfiguration().getName());
|
||||
Boolean booleanResult = channelGroupCommandService.isCommandEnabled(commandDto, context.getUserInitiatedContext().getChannel());
|
||||
return ConditionResult.builder().result(booleanResult).reason("Command is disabled.").build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package dev.sheldan.abstracto.core.command.condition;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||
import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementService;
|
||||
import dev.sheldan.abstracto.core.service.FeatureFlagService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -10,7 +10,7 @@ import org.springframework.stereotype.Component;
|
||||
public class FeatureEnabledCondition implements CommandCondition {
|
||||
|
||||
@Autowired
|
||||
private FeatureFlagManagementService featureFlagManagementService;
|
||||
private FeatureFlagService featureFlagManagementService;
|
||||
|
||||
@Override
|
||||
public ConditionResult shouldExecute(CommandContext context, Command command) {
|
||||
@@ -18,7 +18,7 @@ public class FeatureEnabledCondition implements CommandCondition {
|
||||
boolean featureFlagValue = false;
|
||||
String reason = "";
|
||||
if(featureName != null) {
|
||||
featureFlagValue = featureFlagManagementService.getFeatureFlagValue(featureName, context.getGuild().getIdLong());
|
||||
featureFlagValue = featureFlagManagementService.isFeatureEnabled(featureName, context.getGuild().getIdLong());
|
||||
reason = "Feature has been disabled.";
|
||||
}
|
||||
return ConditionResult.builder().reason(reason).result(featureFlagValue).build();
|
||||
|
||||
@@ -3,7 +3,7 @@ package dev.sheldan.abstracto.core.command.config;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class AbstracatoModuleInterface implements ModuleInterface {
|
||||
public class AbstractoModuleInterface implements ModuleInterface {
|
||||
@Override
|
||||
public ModuleInfo getInfo() {
|
||||
return ModuleInfo.builder().name("default").description("Default module provided by abstracto").build();
|
||||
@@ -5,7 +5,8 @@ import lombok.Getter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter @Builder
|
||||
@Getter
|
||||
@Builder
|
||||
public class CommandConfiguration {
|
||||
|
||||
private String name;
|
||||
|
||||
@@ -6,7 +6,8 @@ import lombok.Getter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter @Builder
|
||||
@Getter
|
||||
@Builder
|
||||
public class CommandHierarchy {
|
||||
private List<PackedModule> rootModules;
|
||||
|
||||
|
||||
@@ -3,7 +3,8 @@ package dev.sheldan.abstracto.core.command.config;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter @Builder
|
||||
@Getter
|
||||
@Builder
|
||||
public class HelpInfo {
|
||||
private String usage;
|
||||
private String longHelp;
|
||||
|
||||
@@ -3,7 +3,8 @@ package dev.sheldan.abstracto.core.command.config;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter @Builder
|
||||
@Getter
|
||||
@Builder
|
||||
public class ModuleInfo {
|
||||
|
||||
private String name;
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.command.config;
|
||||
|
||||
|
||||
import dev.sheldan.abstracto.core.command.config.ModuleInfo;
|
||||
|
||||
public interface ModuleInterface {
|
||||
ModuleInfo getInfo();
|
||||
String getParentModule();
|
||||
|
||||
@@ -4,7 +4,9 @@ import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter @Setter @Builder
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class Parameter {
|
||||
private String name;
|
||||
private Class type;
|
||||
|
||||
@@ -6,7 +6,7 @@ import lombok.Getter;
|
||||
import java.util.List;
|
||||
|
||||
@Builder
|
||||
@Getter
|
||||
public class Parameters {
|
||||
@Getter
|
||||
private List<Object> parameters;
|
||||
}
|
||||
|
||||
@@ -5,7 +5,9 @@ import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter @Setter @Builder
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class CommandResult {
|
||||
private ResultState result;
|
||||
private String message;
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.command.models.database;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Table(name = "command")
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public class ACommand {
|
||||
@Id
|
||||
@Column(name = "id")
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
private String name;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@Getter
|
||||
@Setter
|
||||
@JoinColumn(name = "module_id")
|
||||
private AModule module;
|
||||
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.command.models.database;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Entity
|
||||
@Table(name = "module")
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public class AModule {
|
||||
|
||||
@Id
|
||||
@Column(name = "id")
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
private String name;
|
||||
|
||||
@OneToMany(
|
||||
fetch = FetchType.LAZY,
|
||||
cascade = CascadeType.ALL,
|
||||
orphanRemoval = true)
|
||||
@Builder.Default
|
||||
@JoinColumn(name = "module_id")
|
||||
private List<ACommand> commands = new ArrayList<>();
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.command.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.models.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.CommandDto;
|
||||
|
||||
public interface ChannelGroupCommandService {
|
||||
Boolean isCommandEnabled(ACommand command, AChannel channel);
|
||||
Boolean isCommandEnabled(CommandDto command, ChannelDto channel);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
package dev.sheldan.abstracto.core.command.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.models.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.models.dto.CommandDto;
|
||||
|
||||
public interface CommandService {
|
||||
ACommand createCommand(String name, String moduleName);
|
||||
CommandDto createCommand(String name, String moduleName);
|
||||
Boolean doesCommandExist(String name);
|
||||
CommandDto findCommandByName(String name);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package dev.sheldan.abstracto.core.command.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
|
||||
public interface UserService {
|
||||
UserInServerDto loadUser(Member member);
|
||||
UserInServerDto loadUser(Long serverId, Long userId);
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.command.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.models.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannelGroup;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannelGroupCommand;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ChannelGroupCommandManagementService {
|
||||
void setCommandInGroupTo(ACommand command, AChannelGroup group, Boolean enabled);
|
||||
AChannelGroupCommand createCommandInGroupTo(ACommand command, AChannelGroup group);
|
||||
AChannelGroupCommand getChannelGroupCommand(ACommand command, AChannelGroup group);
|
||||
List<AChannelGroupCommand> getAllGroupCommandsForCommand(ACommand command);
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.command.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.models.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.command.models.database.AModule;
|
||||
|
||||
public interface CommandManagementService {
|
||||
ACommand createCommand(String name, String moduleName);
|
||||
ACommand createCommand(String name, AModule moduleName);
|
||||
ACommand findCommandByName(String name);
|
||||
Boolean doesCommandExist(String name);
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.command.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.models.database.AModule;
|
||||
|
||||
public interface ModuleManagementService {
|
||||
AModule createModule(String name);
|
||||
AModule getOrCreate(String name);
|
||||
AModule findModuleByName(String name);
|
||||
Boolean doesModuleExist(String name);
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package dev.sheldan.abstracto.core.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.models.template.ChannelModel;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class ChannelModelConverter {
|
||||
public ChannelModel fromChanel(ChannelDto channelDto) {
|
||||
return ChannelModel
|
||||
.builder()
|
||||
.id(channelDto.getId())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package dev.sheldan.abstracto.core.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import dev.sheldan.abstracto.core.models.template.ServerModel;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class ServerModelConverter {
|
||||
public ServerModel fromServer(ServerDto server) {
|
||||
return ServerModel.builder().id(server.getId()).name(server.getName()).build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package dev.sheldan.abstracto.core.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.service.UserService;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.core.models.template.UserInServerModel;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class UserInServerModelConverter {
|
||||
|
||||
@Autowired
|
||||
private ServerModelConverter serverModelConverter;
|
||||
|
||||
@Autowired
|
||||
private UserModelConverter userModelConverter;
|
||||
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
|
||||
|
||||
public UserInServerModel fromUser(UserInServerDto userInServerDto) {
|
||||
return UserInServerModel
|
||||
.builder()
|
||||
.userInServerId(userInServerDto.getUserInServerId())
|
||||
.server(serverModelConverter.fromServer(userInServerDto.getServer()))
|
||||
.user(userModelConverter.fromUser(userInServerDto.getUser()))
|
||||
.build();
|
||||
}
|
||||
|
||||
public UserInServerModel fromMember(Member member) {
|
||||
return fromUser(userService.loadUser(member));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package dev.sheldan.abstracto.core.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.dto.UserDto;
|
||||
import dev.sheldan.abstracto.core.models.template.UserModel;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class UserModelConverter {
|
||||
public UserModel fromUser(UserDto user) {
|
||||
return UserModel.builder().id(user.getId()).build();
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.exception;
|
||||
|
||||
public class FeatureDisabledException extends AbstractoRunTimeException {
|
||||
public FeatureDisabledException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import net.dv8tion.jda.api.entities.MessageReaction;
|
||||
|
||||
public interface ReactedAddedListener extends FeatureAware {
|
||||
void executeReactionAdded(CachedMessage message, MessageReaction reaction, AUserInAServer userAdding);
|
||||
void executeReactionAdded(CachedMessage message, MessageReaction reaction, UserInServerDto userAdding);
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import net.dv8tion.jda.api.entities.MessageReaction;
|
||||
|
||||
public interface ReactedRemovedListener extends FeatureAware {
|
||||
void executeReactionRemoved(CachedMessage message, MessageReaction reaction, AUserInAServer userRemoving);
|
||||
void executeReactionRemoved(CachedMessage message, MessageReaction reaction, UserInServerDto userRemoving);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
|
||||
public interface ServerConfigListener {
|
||||
void updateServerConfig(AServer server);
|
||||
void updateServerConfig(ServerDto server);
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
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.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 lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@@ -12,8 +12,8 @@ import lombok.Setter;
|
||||
@Setter
|
||||
@Builder
|
||||
public class AServerAChannelAUser {
|
||||
private AServer guild;
|
||||
private AChannel channel;
|
||||
private AUserInAServer aUserInAServer;
|
||||
private AUser user;
|
||||
private ServerDto guild;
|
||||
private ChannelDto channel;
|
||||
private UserInServerDto aUserInAServer;
|
||||
private UserDto user;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@@ -10,7 +10,7 @@ import lombok.Setter;
|
||||
@Setter
|
||||
@Builder
|
||||
public class AServerAChannelMessage {
|
||||
private AServer server;
|
||||
private AChannel channel;
|
||||
private ServerDto server;
|
||||
private ChannelDto channel;
|
||||
private Long messageId;
|
||||
}
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
public interface SnowFlake {
|
||||
Long getId();
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.models.cache;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.dto.EmoteDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserDto;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@@ -12,6 +12,6 @@ import java.util.List;
|
||||
@Setter
|
||||
@Builder
|
||||
public class CachedReaction {
|
||||
private AEmote emote;
|
||||
private List<AUser> users;
|
||||
private EmoteDto emote;
|
||||
private List<UserDto> users;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.models.context;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
@@ -15,6 +15,6 @@ import net.dv8tion.jda.api.entities.Guild;
|
||||
@Setter
|
||||
public class ServerContext {
|
||||
private Guild guild;
|
||||
private AServer server;
|
||||
private ServerDto server;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.models.context;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
@@ -14,10 +14,10 @@ import net.dv8tion.jda.api.entities.MessageChannel;
|
||||
@Setter
|
||||
@SuperBuilder
|
||||
public class UserInitiatedServerContext extends ServerContext {
|
||||
private AChannel channel;
|
||||
private ChannelDto channel;
|
||||
private MessageChannel messageChannel;
|
||||
private Member member;
|
||||
private AUser user;
|
||||
private AUserInAServer aUserInAServer;
|
||||
private UserDto user;
|
||||
private UserInServerDto aUserInAServer;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.*;
|
||||
import net.dv8tion.jda.api.entities.ChannelType;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.List;
|
||||
|
||||
@Entity
|
||||
@Table(name="channel")
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class AChannel implements SnowFlake {
|
||||
|
||||
@Id
|
||||
@Getter
|
||||
@Column(name = "id")
|
||||
public Long id;
|
||||
|
||||
@Getter
|
||||
@ManyToMany(mappedBy = "channels")
|
||||
private List<AChannelGroup> groups;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@Getter
|
||||
@Setter
|
||||
@JoinColumn(name = "server_id")
|
||||
private AServer server;
|
||||
|
||||
@Getter
|
||||
@Enumerated(EnumType.STRING)
|
||||
private AChannelType type;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Column
|
||||
private Boolean deleted;
|
||||
|
||||
public static AChannelType getAChannelType(ChannelType type) {
|
||||
switch (type) {
|
||||
case TEXT: return AChannelType.TEXT;
|
||||
case PRIVATE: return AChannelType.DM;
|
||||
case VOICE: return AChannelType.VOICE;
|
||||
case CATEGORY: return AChannelType.CATEGORY;
|
||||
default: return AChannelType.UNKOWN;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Entity
|
||||
@Table(name="channelGroup")
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Getter
|
||||
public class AChannelGroup {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
@Column
|
||||
@Setter
|
||||
private String groupName;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@Getter
|
||||
@Setter
|
||||
@JoinColumn(name = "group_server")
|
||||
private AServer server;
|
||||
|
||||
@ManyToMany
|
||||
@JoinTable(
|
||||
name = "channel_in_group",
|
||||
joinColumns = @JoinColumn(name = "group_id"),
|
||||
inverseJoinColumns = @JoinColumn(name = "channel_id"))
|
||||
private List<AChannel> channels;
|
||||
|
||||
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.models.database.ACommand;
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Table(name = "channel_group_command")
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public class AChannelGroupCommand {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long commandInGroupId;
|
||||
|
||||
@OneToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "command_id", nullable = false)
|
||||
@Setter
|
||||
private ACommand command;
|
||||
|
||||
@OneToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "group_id", nullable = false)
|
||||
@Setter
|
||||
private AChannelGroup group;
|
||||
|
||||
@Setter
|
||||
private Boolean enabled;
|
||||
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
|
||||
public enum AChannelType {
|
||||
TEXT, DM, VOICE, NEWS, CATEGORY, UNKOWN
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Table(name="systemConfig")
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Getter
|
||||
public class AConfig {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Integer Id;
|
||||
|
||||
@Column
|
||||
private String name;
|
||||
|
||||
@Column
|
||||
@Setter
|
||||
private String stringValue;
|
||||
|
||||
@Column
|
||||
@Setter
|
||||
private Double doubleValue;
|
||||
|
||||
@OneToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "server_id", nullable = false)
|
||||
@Getter
|
||||
@Setter
|
||||
private AServer server;
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
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
|
||||
@Setter
|
||||
private String emoteKey;
|
||||
|
||||
@Column
|
||||
@Setter
|
||||
private Long emoteId;
|
||||
|
||||
@Column
|
||||
@Setter
|
||||
private Boolean animated;
|
||||
|
||||
@Column
|
||||
@Setter
|
||||
private Boolean custom;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
private AServer serverRef;
|
||||
|
||||
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Table(name="feature_flag")
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class AFeatureFlag implements SnowFlake {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@Getter
|
||||
@Column(name = "id")
|
||||
public Long id;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@Getter
|
||||
@Setter
|
||||
@JoinColumn(name = "server_id")
|
||||
private AServer server;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private String key;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private boolean enabled;
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
@Entity
|
||||
@Table(name="role")
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class ARole implements SnowFlake {
|
||||
|
||||
@Id
|
||||
@Getter @Setter
|
||||
private Long id;
|
||||
|
||||
@Column(unique = true)
|
||||
@Getter @Setter
|
||||
private String name;
|
||||
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Entity
|
||||
@Table(name = "server")
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public class AServer implements SnowFlake {
|
||||
|
||||
@Id
|
||||
@Column(name = "id")
|
||||
private Long id;
|
||||
|
||||
private String name;
|
||||
|
||||
@OneToMany(fetch = FetchType.LAZY)
|
||||
@Builder.Default
|
||||
private List<ARole> roles = new ArrayList<>();
|
||||
|
||||
@OneToMany(
|
||||
fetch = FetchType.LAZY,
|
||||
cascade = CascadeType.ALL,
|
||||
orphanRemoval = true)
|
||||
@Builder.Default
|
||||
@JoinColumn(name = "server_id")
|
||||
private List<AChannel> channels = new ArrayList<>();
|
||||
|
||||
@OneToMany(
|
||||
fetch = FetchType.LAZY,
|
||||
cascade = CascadeType.ALL,
|
||||
orphanRemoval = true)
|
||||
@Builder.Default
|
||||
@JoinColumn(name = "group_server")
|
||||
private List<AChannelGroup> channelGroups = new ArrayList<>();
|
||||
|
||||
@OneToMany(
|
||||
fetch = FetchType.LAZY,
|
||||
mappedBy = "serverReference",
|
||||
cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
@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,24 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.List;
|
||||
|
||||
@Entity
|
||||
@Table(name="users")
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Getter
|
||||
public class AUser {
|
||||
|
||||
@Id
|
||||
private Long id;
|
||||
|
||||
@OneToMany(
|
||||
fetch = FetchType.LAZY,
|
||||
mappedBy = "userReference",
|
||||
cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
private List<AUserInAServer> servers;
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Getter
|
||||
@Builder
|
||||
@Setter
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class AUserInAServer {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long userInServerId;
|
||||
|
||||
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
@JoinColumn(name = "userReference")
|
||||
private AUser userReference;
|
||||
|
||||
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
@JoinColumn(name = "serverReference")
|
||||
private AServer serverReference;
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
@Entity
|
||||
@Table(name="posttarget")
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class PostTarget {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@Getter
|
||||
private Long id;
|
||||
|
||||
@Getter
|
||||
private String name;
|
||||
|
||||
@OneToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "channel_id", nullable = false)
|
||||
@Getter @Setter
|
||||
private AChannel channelReference;
|
||||
|
||||
@OneToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name="server_id", nullable = false)
|
||||
@Getter @Setter
|
||||
private AServer serverReference;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package dev.sheldan.abstracto.core.models.template;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class ChannelModel {
|
||||
private Long id;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package dev.sheldan.abstracto.core.models.template;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
|
||||
@Getter
|
||||
@SuperBuilder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Setter
|
||||
public class ServerContextModel {
|
||||
private ServerModel server;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package dev.sheldan.abstracto.core.models.template;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class ServerModel {
|
||||
private Long id;
|
||||
private String name;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package dev.sheldan.abstracto.core.models.template;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class UserInServerModel {
|
||||
private Long userInServerId;
|
||||
private UserModel user;
|
||||
private ServerModel server;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package dev.sheldan.abstracto.core.models.template;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
@Getter @NoArgsConstructor
|
||||
@Setter
|
||||
@SuperBuilder
|
||||
public class UserInitiatedServerContextModel extends ServerContextModel {
|
||||
private ChannelModel channel;
|
||||
private UserModel userModel;
|
||||
private UserInServerModel userInServer;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package dev.sheldan.abstracto.core.models.template;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class UserModel {
|
||||
private Long id;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.models.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@@ -10,6 +10,6 @@ import net.dv8tion.jda.api.entities.TextChannel;
|
||||
@Setter
|
||||
@Builder
|
||||
public class ChannelGroupChannelModel {
|
||||
private AChannel channel;
|
||||
private ChannelDto channel;
|
||||
private TextChannel discordChannel;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package dev.sheldan.abstracto.core.models.template.listener;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||
import dev.sheldan.abstracto.core.models.template.*;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
@@ -11,9 +12,10 @@ import net.dv8tion.jda.api.entities.TextChannel;
|
||||
@Getter
|
||||
@Setter
|
||||
@SuperBuilder
|
||||
public class MessageEmbeddedModel extends UserInitiatedServerContext {
|
||||
public class MessageEmbeddedModel extends UserInitiatedServerContextModel {
|
||||
private CachedMessage embeddedMessage;
|
||||
private Member author;
|
||||
private TextChannel sourceChannel;
|
||||
private Member embeddingUser;
|
||||
private ChannelModel sourceChannel;
|
||||
private ServerModel sourceServer;
|
||||
private UserModel embeddedUser;
|
||||
private UserInServerModel embeddedUserInServer;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.dto.EmoteDto;
|
||||
import dev.sheldan.abstracto.core.models.GuildChannelMember;
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import net.dv8tion.jda.api.JDA;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
@@ -20,7 +20,7 @@ public interface Bot {
|
||||
GuildChannelMember getServerChannelUser(Long serverId, Long channelId, Long userId);
|
||||
Member getMemberInServer(Long serverId, Long memberId);
|
||||
CompletableFuture<Void> deleteMessage(Long serverId, Long channelId, Long messageId);
|
||||
Optional<Emote> getEmote(Long serverId, AEmote emote);
|
||||
Optional<Emote> getEmote(Long serverId, EmoteDto emote);
|
||||
Optional<TextChannel> getTextChannelFromServer(Guild serverId, Long textChannelId);
|
||||
Optional<TextChannel> getTextChannelFromServer(Long serverId, Long textChannelId);
|
||||
Optional<Guild> getGuildById(Long serverId);
|
||||
|
||||
@@ -1,19 +1,23 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannelGroup;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelGroupDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ChannelGroupService {
|
||||
AChannelGroup createChannelGroup(String name, Long serverId);
|
||||
ChannelGroupDto createChannelGroup(String name, Long serverId);
|
||||
void deleteChannelGroup(String name, Long serverId);
|
||||
void addChannelToChannelGroup(String channelGroupName, TextChannel textChannel);
|
||||
void addChannelToChannelGroup(String channelGroupName, Long channelId);
|
||||
void addChannelToChannelGroup(String channelGroupName, AChannel channel);
|
||||
void addChannelToChannelGroup(String channelGroupName, ChannelDto channel);
|
||||
void removeChannelFromChannelGroup(String channelGroupName, TextChannel textChannel);
|
||||
void removeChannelFromChannelGroup(String channelGroupName, Long channelId);
|
||||
void removeChannelFromChannelGroup(String channelGroupName, AChannel channel);
|
||||
void removeChannelFromChannelGroup(String channelGroupName, ChannelDto channel);
|
||||
void disableCommandInChannelGroup(String commandName, String channelGroupName, Long serverId);
|
||||
void enableCommandInChannelGroup(String commandName, String channelGroupName, Long serverId);
|
||||
boolean doesGroupExist(String groupName, Long serverId);
|
||||
List<ChannelGroupDto> findAllInServer(ServerDto server);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
|
||||
@@ -10,8 +10,9 @@ import java.util.Optional;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public interface ChannelService {
|
||||
void sendTextInAChannel(String text, AChannel channel);
|
||||
List<CompletableFuture<Message>> sendMessageToEndInAChannel(MessageToSend messageToSend, AChannel channel);
|
||||
void sendTextInAChannel(String text, ChannelDto channel);
|
||||
List<CompletableFuture<Message>> sendMessageToEndInAChannel(MessageToSend messageToSend, ChannelDto channel);
|
||||
List<CompletableFuture<Message>> sendMessageToEndInTextChannel(MessageToSend messageToSend, TextChannel textChannel);
|
||||
Optional<TextChannel> getTextChannelInGuild(Long serverId, Long channelId);
|
||||
ChannelDto loadChannel(Long channelId);
|
||||
}
|
||||
|
||||
@@ -3,5 +3,6 @@ package dev.sheldan.abstracto.core.service;
|
||||
public interface ConfigService {
|
||||
Double getDoubleValue(String name, Long serverId);
|
||||
Double getDoubleValue(String name, Long serverId, Double defaultValue);
|
||||
void createValueIfNotExists(String name, Long serverId, Double value);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import dev.sheldan.abstracto.core.models.dto.EmoteDto;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
import net.dv8tion.jda.api.entities.MessageReaction;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public interface EmoteService {
|
||||
boolean isEmoteUsableByBot(Emote emote);
|
||||
AEmote buildAEmoteFromReaction(MessageReaction.ReactionEmote reaction);
|
||||
String getEmoteAsMention(AEmote emote, Long serverId, String defaultText) ;
|
||||
String getEmoteAsMention(AEmote emote, Long serverId) ;
|
||||
EmoteDto buildAEmoteFromReaction(MessageReaction.ReactionEmote reaction);
|
||||
Optional<EmoteDto> getEmoteByName(String name, Long serverId);
|
||||
String getEmoteAsMention(EmoteDto emote, Long serverId, String defaultText) ;
|
||||
String getEmoteAsMention(EmoteDto emote, Long serverId) ;
|
||||
void throwIfEmoteDoesNotExist(String emoteKey, Long serverId) ;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.PostTarget;
|
||||
import dev.sheldan.abstracto.core.models.dto.PostTargetDto;
|
||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.MessageEmbed;
|
||||
@@ -9,17 +9,18 @@ import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public interface PostTargetService {
|
||||
CompletableFuture<Message> sendTextInPostTarget(String text, PostTarget target);
|
||||
CompletableFuture<Message> sendEmbedInPostTarget(MessageEmbed embed, PostTarget target);
|
||||
CompletableFuture<Message> sendTextInPostTarget(String text, PostTargetDto target);
|
||||
CompletableFuture<Message> sendEmbedInPostTarget(MessageEmbed embed, PostTargetDto target);
|
||||
CompletableFuture<Message> sendTextInPostTarget(String text, String postTargetName, Long serverId);
|
||||
CompletableFuture<Message> sendEmbedInPostTarget(MessageEmbed embed, String postTargetName, Long serverId);
|
||||
List<CompletableFuture<Message>> sendEmbedInPostTarget(MessageToSend message, String postTargetName, Long serverId);
|
||||
List<CompletableFuture<Message>> sendEmbedInPostTarget(MessageToSend message, PostTarget target);
|
||||
List<CompletableFuture<Message>> editEmbedInPostTarget(Long messageId, MessageToSend message, PostTarget target);
|
||||
List<CompletableFuture<Message>> sendEmbedInPostTarget(MessageToSend message, PostTargetDto target);
|
||||
List<CompletableFuture<Message>> editEmbedInPostTarget(Long messageId, MessageToSend message, PostTargetDto target);
|
||||
List<CompletableFuture<Message>> editEmbedInPostTarget(Long messageId, MessageToSend message, String postTargetName, Long serverId);
|
||||
void editOrCreatedInPostTarget(Long messageId, MessageToSend messageToSend, PostTarget target, List<CompletableFuture<Message>> future);
|
||||
void editOrCreatedInPostTarget(Long messageId, MessageToSend messageToSend, PostTargetDto target, List<CompletableFuture<Message>> future);
|
||||
void editOrCreatedInPostTarget(Long messageId, MessageToSend messageToSend, String postTarget, Long serverId, List<CompletableFuture<Message>> future);
|
||||
void throwIfPostTargetIsNotDefined(String name, Long serverId);
|
||||
boolean validPostTarget(String name);
|
||||
List<String> getAvailablePostTargets();
|
||||
PostTargetDto getPostTarget(String name, Long serverId);
|
||||
}
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
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 java.util.List;
|
||||
|
||||
public interface ChannelGroupManagementService {
|
||||
AChannelGroup createChannelGroup(String name, AServer server);
|
||||
void deleteChannelGroup(String name, AServer server);
|
||||
AChannelGroup addChannelToChannelGroup(AChannelGroup channelGroup, AChannel channel);
|
||||
void removeChannelFromChannelGroup(AChannelGroup channelGroup, AChannel channel);
|
||||
AChannelGroup findByNameAndServer(String name, AServer server);
|
||||
List<AChannelGroup> findAllInServer(AServer server);
|
||||
List<AChannelGroup> findAllInServer(Long serverId);
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannelType;
|
||||
|
||||
public interface ChannelManagementService {
|
||||
AChannel loadChannel(Long id);
|
||||
AChannel createChannel(Long id, AChannelType type);
|
||||
void markAsDeleted(Long id);
|
||||
void removeChannel(Long id);
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AConfig;
|
||||
|
||||
public interface ConfigManagementService {
|
||||
void setOrCreateStringValue(Long serverId, String name, String value);
|
||||
void setOrCreateDoubleValue(Long serverId, String name, Double value);
|
||||
AConfig createConfig(Long serverId, String name, String value);
|
||||
AConfig createConfig(Long serverId, String name, Double value);
|
||||
AConfig createIfNotExists(Long serverId, String name, String value);
|
||||
AConfig createIfNotExists(Long serverId, String name, Double value);
|
||||
AConfig loadConfig(Long serverId, String name);
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.exception.ConfigurationException;
|
||||
import dev.sheldan.abstracto.core.exception.EmoteException;
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public interface EmoteManagementService {
|
||||
AEmote loadEmote(Long id);
|
||||
AEmote createCustomEmote(String name, String emoteKey, Long emoteId, Boolean animated, Long serverId) ;
|
||||
AEmote createCustomEmote(String name, String emoteKey, Long emoteId, Boolean animated, AServer server) ;
|
||||
AEmote createDefaultEmote(String name, String emoteKey, Long serverId) ;
|
||||
AEmote createDefaultEmote(String name, String emoteKey, AServer server) ;
|
||||
Optional<AEmote> loadEmoteByName(String name, Long serverId);
|
||||
Optional<AEmote> loadEmoteByName(String name, AServer server);
|
||||
AEmote setEmoteToCustomEmote(String name, String emoteKey, Long emoteId, Boolean animated, Long serverId) ;
|
||||
AEmote setEmoteToCustomEmote(String name, Emote emote, Long serverId) ;
|
||||
AEmote setEmoteToDefaultEmote(String name, String emoteKey, Long serverId) ;
|
||||
boolean emoteExists(String name, Long serverId);
|
||||
boolean emoteExists(String name, AServer server);
|
||||
AEmote createCustomEmote(String name, String emoteKey, Long emoteId, Boolean animated);
|
||||
AEmote createDefaultEmote(String name, String emoteKey);
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AFeatureFlag;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public interface FeatureFlagManagementService {
|
||||
void createFeatureFlag(String key, Long serverId, Boolean newValue);
|
||||
void createFeatureFlag(String key, AServer server, Boolean newValue);
|
||||
boolean getFeatureFlagValue(String key, Long serverId);
|
||||
void updateOrCreateFeatureFlag(String key, Long serverId, Boolean newValue);
|
||||
Optional<AFeatureFlag> getFeatureFlag(String key, Long serverId);
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.exception.ConfigurationException;
|
||||
import dev.sheldan.abstracto.core.exception.PostTargetException;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.PostTarget;
|
||||
|
||||
public interface PostTargetManagement {
|
||||
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, AServer server, AChannel newTargetChannel);
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||
|
||||
public interface RoleManagementService {
|
||||
ARole createRole(Long id);
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ServerManagementService {
|
||||
AServer createServer(Long id);
|
||||
AServer loadOrCreate(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);
|
||||
AChannel getPostTarget(AServer server, String name);
|
||||
List<AServer> getAllServers();
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
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 net.dv8tion.jda.api.entities.Member;
|
||||
|
||||
public interface UserManagementService {
|
||||
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);
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.utils;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.ZoneOffset;
|
||||
|
||||
public class AbstractoDateUtils {
|
||||
public static OffsetDateTime convertInstant(Instant instant) {
|
||||
return instant.atOffset(ZoneOffset.UTC);
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,13 @@
|
||||
package dev.sheldan.abstracto.core.utils;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.service.UserService;
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||
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.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.GuildChannelMember;
|
||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.service.Bot;
|
||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -21,10 +20,10 @@ import java.lang.reflect.Method;
|
||||
public class ContextUtils {
|
||||
|
||||
@Autowired
|
||||
private ChannelManagementService channelManagementService;
|
||||
private ChannelService channelService;
|
||||
|
||||
@Autowired
|
||||
private UserManagementService userManagementService;
|
||||
private UserService userService;
|
||||
|
||||
@Autowired
|
||||
private Bot bot;
|
||||
@@ -35,15 +34,15 @@ public class ContextUtils {
|
||||
try {
|
||||
m = clazz.getMethod("builder");
|
||||
UserInitiatedServerContext.UserInitiatedServerContextBuilder<?, ?> builder = (UserInitiatedServerContext.UserInitiatedServerContextBuilder) m.invoke(null, null);
|
||||
AUserInAServer aUserInAServer = userManagementService.loadUser(message.getServerId(), message.getAuthorId());
|
||||
UserInServerDto aUserInAServer = userService.loadUser(message.getServerId(), message.getAuthorId());
|
||||
return builder
|
||||
.member(guildChannelMember.getMember())
|
||||
.guild(guildChannelMember.getGuild())
|
||||
.messageChannel(guildChannelMember.getTextChannel())
|
||||
.channel(channelManagementService.loadChannel(message.getChannelId()))
|
||||
.server(aUserInAServer.getServerReference())
|
||||
.channel(channelService.loadChannel(message.getChannelId()))
|
||||
.server(aUserInAServer.getServer())
|
||||
.aUserInAServer(aUserInAServer)
|
||||
.user(aUserInAServer.getUserReference())
|
||||
.user(aUserInAServer.getUser())
|
||||
.build();
|
||||
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
|
||||
log.error("Failed to execute builder method", e);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.utils;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.dto.EmoteDto;
|
||||
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 net.dv8tion.jda.api.entities.Emote;
|
||||
import net.dv8tion.jda.api.entities.MessageReaction;
|
||||
|
||||
@@ -10,7 +10,7 @@ import java.util.Optional;
|
||||
|
||||
public class EmoteUtils {
|
||||
|
||||
public static boolean isReactionEmoteAEmote(MessageReaction.ReactionEmote reaction, AEmote emote, Emote emoteInGuild) {
|
||||
public static boolean isReactionEmoteAEmote(MessageReaction.ReactionEmote reaction, EmoteDto emote, Emote emoteInGuild) {
|
||||
if(reaction.isEmote() && emote.getCustom()) {
|
||||
if(emoteInGuild != null) {
|
||||
return emoteInGuild.equals(reaction.getEmote());
|
||||
@@ -22,11 +22,11 @@ public class EmoteUtils {
|
||||
}
|
||||
}
|
||||
|
||||
public static Optional<CachedReaction> getReactionFromMessageByEmote(CachedMessage message, AEmote emote) {
|
||||
public static Optional<CachedReaction> getReactionFromMessageByEmote(CachedMessage message, EmoteDto emote) {
|
||||
return message.getReactions().stream().filter(reaction -> compareAEmote(reaction.getEmote(), emote)).findFirst();
|
||||
}
|
||||
|
||||
public static boolean compareAEmote(AEmote a, AEmote b) {
|
||||
public static boolean compareAEmote(EmoteDto a, EmoteDto b) {
|
||||
if(a.getCustom() && b.getCustom()) {
|
||||
return a.getEmoteId().equals(b.getEmoteId());
|
||||
} else {
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.utils;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.GuildChannelMember;
|
||||
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.AUser;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.template.commands.PingModel;
|
||||
import dev.sheldan.abstracto.core.service.Bot;
|
||||
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 org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.MockitoJUnitRunner;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class ContextUtilsTest {
|
||||
|
||||
public static final Long CHANNEL_ID = 1L;
|
||||
public static final Long SERVER_ID = 1L;
|
||||
public static final Long AUTHOR_ID = 1L;
|
||||
@InjectMocks
|
||||
private ContextUtils classToTest;
|
||||
|
||||
@Mock
|
||||
private ChannelManagementService channelManagementService;
|
||||
|
||||
@Mock
|
||||
private UserManagementService userManagementService;
|
||||
|
||||
@Mock
|
||||
private Bot bot;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
GuildChannelMember build = GuildChannelMember.builder().build();
|
||||
when(bot.getServerChannelUser(eq(SERVER_ID), eq(CHANNEL_ID), eq(AUTHOR_ID))).thenReturn(build);
|
||||
AServer server = AServer.builder().id(SERVER_ID).build();
|
||||
AUserInAServer aUserInAServer = AUserInAServer.builder().userReference(AUser.builder().id(AUTHOR_ID).build()).serverReference(server).build();
|
||||
when(userManagementService.loadUser(eq(SERVER_ID), eq(AUTHOR_ID))).thenReturn(aUserInAServer);
|
||||
AChannel channel = AChannel.builder().id(CHANNEL_ID).build();
|
||||
when(channelManagementService.loadChannel(eq(CHANNEL_ID))).thenReturn(channel);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFromMessage() {
|
||||
PingModel pingModel = (PingModel) classToTest.fromMessage(buildCachedMessage(), PingModel.class);
|
||||
assertEquals(pingModel.getUser().getId(), AUTHOR_ID);
|
||||
assertEquals(pingModel.getAUserInAServer().getUserReference().getId(), AUTHOR_ID);
|
||||
assertEquals(pingModel.getAUserInAServer().getServerReference().getId(), SERVER_ID);
|
||||
assertEquals(pingModel.getServer().getId(), SERVER_ID);
|
||||
assertEquals(pingModel.getChannel().getId(), CHANNEL_ID);
|
||||
}
|
||||
|
||||
private CachedMessage buildCachedMessage() {
|
||||
return CachedMessage.builder().authorId(AUTHOR_ID).serverId(SERVER_ID).channelId(CHANNEL_ID).build();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user