mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-09-06 16:35:26 +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:
32
abstracto-application/core/core-db-models/pom.xml
Normal file
32
abstracto-application/core/core-db-models/pom.xml
Normal file
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<groupId>dev.sheldan.abstracto.core</groupId>
|
||||
<artifactId>core</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<artifactId>core-db-models</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>net.dv8tion</groupId>
|
||||
<artifactId>JDA</artifactId>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>club.minnced</groupId>
|
||||
<artifactId>opus-java</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.*;
|
||||
@@ -38,13 +38,5 @@ public class AChannel implements SnowFlake {
|
||||
@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,10 +1,9 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Entity
|
||||
@Table(name="channelGroup")
|
||||
@@ -1,6 +1,5 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.models.database.ACommand;
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
public enum AChannelType {
|
||||
TEXT, DM, VOICE, NEWS, CATEGORY, UNKOWN
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.command.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.*;
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.command.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.*;
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.*;
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
@@ -11,7 +11,7 @@ import java.util.List;
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Getter
|
||||
public class AUser {
|
||||
public class AUser implements SnowFlake {
|
||||
|
||||
@Id
|
||||
private Long id;
|
||||
@@ -1,4 +1,4 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
@Entity
|
||||
@Table(name="posttarget")
|
||||
@@ -0,0 +1,46 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class ChannelConverter {
|
||||
|
||||
@Autowired
|
||||
private ServerConverter serverConverter;
|
||||
|
||||
public ChannelDto fromChannel(AChannel channel) {
|
||||
ServerDto server = ServerDto.builder().id(channel.getServer().getId()).build();
|
||||
return ChannelDto
|
||||
.builder()
|
||||
.id(channel.getId())
|
||||
.deleted(channel.getDeleted())
|
||||
.server(server)
|
||||
.build();
|
||||
}
|
||||
|
||||
public ChannelDto fromTextChannel(TextChannel channel) {
|
||||
|
||||
return ChannelDto
|
||||
.builder()
|
||||
.id(channel.getIdLong())
|
||||
.deleted(false)
|
||||
.server(ServerDto.builder().id(channel.getGuild().getIdLong()).build())
|
||||
.build();
|
||||
}
|
||||
|
||||
public AChannel fromDto(ChannelDto channelDto) {
|
||||
AServer server = AServer.builder().id(channelDto.getServer().getId()).build();
|
||||
return AChannel
|
||||
.builder()
|
||||
.deleted(channelDto.getDeleted())
|
||||
.server(server)
|
||||
.id(channelDto.getId())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AChannelGroup;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelGroupDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class ChannelGroupConverter {
|
||||
|
||||
@Autowired
|
||||
private ChannelConverter channelConverter;
|
||||
|
||||
@Autowired
|
||||
private ServerConverter serverModelConverter;
|
||||
|
||||
public ChannelGroupDto fromChannelGroup(AChannelGroup channelGroup) {
|
||||
ServerDto server = serverModelConverter.convertServer(channelGroup.getServer());
|
||||
return ChannelGroupDto
|
||||
.builder()
|
||||
.groupName(channelGroup.getGroupName())
|
||||
.server(server)
|
||||
.build();
|
||||
}
|
||||
|
||||
public AChannelGroup fromChannelGroup(ChannelGroupDto channelGroup) {
|
||||
AServer server = serverModelConverter.fromDto(channelGroup.getServer());
|
||||
return AChannelGroup
|
||||
.builder()
|
||||
.groupName(channelGroup.getGroupName())
|
||||
.server(server)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.ACommand;
|
||||
import dev.sheldan.abstracto.core.models.dto.CommandDto;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class CommandConverter {
|
||||
|
||||
public CommandDto fromCommand(ACommand command) {
|
||||
return CommandDto
|
||||
.builder()
|
||||
.name(command.getName())
|
||||
.id(command.getId())
|
||||
.build();
|
||||
}
|
||||
|
||||
public ACommand toCommand(CommandDto command) {
|
||||
return ACommand
|
||||
.builder()
|
||||
.name(command.getName())
|
||||
.id(command.getId())
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AEmote;
|
||||
import dev.sheldan.abstracto.core.models.dto.EmoteDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class EmoteConverter {
|
||||
|
||||
@Autowired
|
||||
private ServerConverter serverConverter;
|
||||
|
||||
public EmoteDto fromEmote(AEmote emote) {
|
||||
return EmoteDto
|
||||
.builder()
|
||||
.animated(emote.getAnimated())
|
||||
.custom(emote.getCustom())
|
||||
.emoteId(emote.getEmoteId())
|
||||
.emoteKey(emote.getEmoteKey())
|
||||
.name(emote.getName())
|
||||
.Id(emote.getId())
|
||||
.server(serverConverter.convertServer(emote.getServerRef()))
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AModule;
|
||||
import dev.sheldan.abstracto.core.models.dto.CommandDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ModuleDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class ModuleConverter {
|
||||
|
||||
@Autowired
|
||||
private CommandConverter commandConverter;
|
||||
|
||||
public ModuleDto fromModule(AModule module) {
|
||||
List<CommandDto> commands = new ArrayList<>();
|
||||
module.getCommands().forEach(command -> {
|
||||
commands.add(commandConverter.fromCommand(command));
|
||||
});
|
||||
return ModuleDto.builder().name(module.getName()).id(module.getId()).commands(commands).build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.PostTarget;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.PostTargetDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class PostTargetConverter {
|
||||
|
||||
@Autowired
|
||||
private ChannelConverter channelConverter;
|
||||
|
||||
@Autowired
|
||||
private ServerConverter serverConverter;
|
||||
|
||||
public PostTargetDto fromPostTarget(PostTarget postTarget) {
|
||||
ServerDto convertedServer = serverConverter.convertServer(postTarget.getServerReference());
|
||||
ChannelDto convertedChannel = channelConverter.fromChannel(postTarget.getChannelReference());
|
||||
return PostTargetDto
|
||||
.builder()
|
||||
.id(postTarget.getId())
|
||||
.name(postTarget.getName())
|
||||
.serverReference(convertedServer)
|
||||
.channelReference(convertedChannel)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.ARole;
|
||||
import dev.sheldan.abstracto.core.models.dto.RoleDto;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class RoleConverter {
|
||||
public RoleDto fromARole(ARole role) {
|
||||
return RoleDto
|
||||
.builder()
|
||||
.id(role.getId())
|
||||
.name(role.getName())
|
||||
.build();
|
||||
}
|
||||
|
||||
public ARole fromDto(RoleDto role) {
|
||||
return ARole
|
||||
.builder()
|
||||
.id(role.getId())
|
||||
.name(role.getName())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
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.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class ServerConverter {
|
||||
|
||||
@Autowired
|
||||
private ChannelConverter channelConverter;
|
||||
|
||||
@Autowired
|
||||
private UserInServerConverter userInServerConverter;
|
||||
|
||||
public ServerDto convertServer(AServer server) {
|
||||
List<ChannelDto> channels = new ArrayList<>();
|
||||
server.getChannels().forEach(channel -> {
|
||||
channels.add(channelConverter.fromChannel(channel));
|
||||
});
|
||||
|
||||
List<UserInServerDto> users = new ArrayList<>();
|
||||
server.getUsers().forEach(aUserInAServer -> {
|
||||
users.add(userInServerConverter.fromAUserInAServer(aUserInAServer));
|
||||
});
|
||||
return ServerDto
|
||||
.builder()
|
||||
.id(server.getId())
|
||||
.channels(channels)
|
||||
.users(users)
|
||||
.name(server.getName())
|
||||
.build();
|
||||
}
|
||||
|
||||
public AServer fromDto(ServerDto serverDto) {
|
||||
List<AChannel> channels = new ArrayList<>();
|
||||
serverDto.getChannels().forEach(channelDto -> {
|
||||
channels.add(channelConverter.fromDto(channelDto));
|
||||
});
|
||||
|
||||
List<AUserInAServer> users = new ArrayList<>();
|
||||
serverDto.getUsers().forEach(userInServerDto -> {
|
||||
users.add(userInServerConverter.fromDto(userInServerDto));
|
||||
});
|
||||
return AServer
|
||||
.builder()
|
||||
.name(serverDto.getName())
|
||||
.id(serverDto.getId())
|
||||
.users(users)
|
||||
.channels(channels)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AUser;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserDto;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class UserConverter {
|
||||
|
||||
public UserDto fromAUser(AUser user) {
|
||||
return UserDto.builder().id(user.getId()).build();
|
||||
}
|
||||
|
||||
public UserDto fromMember(Member member) {
|
||||
return UserDto.builder().id(member.getIdLong()).build();
|
||||
}
|
||||
|
||||
public AUser toUser(UserDto userDto) {
|
||||
return AUser.builder().id(userDto.getId()).build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package dev.sheldan.abstracto.core.models.converter;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import dev.sheldan.abstracto.core.models.AUser;
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
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 org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class UserInServerConverter {
|
||||
|
||||
@Autowired
|
||||
private ServerConverter serverConverter;
|
||||
|
||||
@Autowired
|
||||
private UserConverter userConverter;
|
||||
|
||||
public UserInServerDto fromAUserInAServer(AUserInAServer userInAServer) {
|
||||
ServerDto server = ServerDto.builder().id(userInAServer.getServerReference().getId()).build();
|
||||
UserDto user = userConverter.fromAUser(userInAServer.getUserReference());
|
||||
return UserInServerDto
|
||||
.builder()
|
||||
.server(server)
|
||||
.user(user)
|
||||
.userInServerId(userInAServer.getUserInServerId())
|
||||
.build();
|
||||
}
|
||||
|
||||
public AUserInAServer fromDto(UserInServerDto userInServerDto) {
|
||||
AUser user = userConverter.toUser(userInServerDto.getUser());
|
||||
AServer server = AServer.builder().id(userInServerDto.getServer().getId()).build();
|
||||
return AUserInAServer
|
||||
.builder()
|
||||
.userInServerId(userInServerDto.getUserInServerId())
|
||||
.serverReference(server)
|
||||
.userReference(user)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class ChannelDto implements SnowFlake {
|
||||
public Long id;
|
||||
private Boolean deleted;
|
||||
private ServerDto server;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class ChannelGroupCommandDto {
|
||||
private Long commandInGroupId;
|
||||
private CommandDto command;
|
||||
private ChannelGroupDto group;
|
||||
private Boolean enabled;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class ChannelGroupDto {
|
||||
|
||||
private Long id;
|
||||
|
||||
private String groupName;
|
||||
|
||||
private ServerDto server;
|
||||
|
||||
private List<ChannelDto> channels;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AModule;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class CommandDto {
|
||||
private Long id;
|
||||
private String name;
|
||||
private AModule module;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class EmoteDto {
|
||||
private Integer Id;
|
||||
private String name;
|
||||
private String emoteKey;
|
||||
private Long emoteId;
|
||||
private Boolean animated;
|
||||
private Boolean custom;
|
||||
private ServerDto server;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class ModuleDto {
|
||||
private Long id;
|
||||
|
||||
private String name;
|
||||
|
||||
private List<CommandDto> commands = new ArrayList<>();
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class PostTargetDto {
|
||||
private Long id;
|
||||
private String name;
|
||||
private ChannelDto channelReference;
|
||||
private ServerDto serverReference;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class RoleDto implements SnowFlake {
|
||||
private Long id;
|
||||
private String name;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class ServerDto implements SnowFlake {
|
||||
private Long id;
|
||||
private String name;
|
||||
private List<ChannelDto> channels;
|
||||
private List<UserInServerDto> users;
|
||||
private List<RoleDto> roles;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class UserDto implements SnowFlake {
|
||||
private Long id;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package dev.sheldan.abstracto.core.models.dto;
|
||||
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class UserInServerDto {
|
||||
private Long userInServerId;
|
||||
|
||||
private UserDto user;
|
||||
|
||||
private ServerDto server;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package dev.sheldan.abstracto.core.models.utils;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AChannelType;
|
||||
import net.dv8tion.jda.api.entities.ChannelType;
|
||||
|
||||
public class ChannelUtils {
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -82,6 +82,13 @@
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>dev.sheldan.abstracto.core</groupId>
|
||||
<artifactId>core-db-models</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.github.ben-manes.caffeine</groupId>
|
||||
<artifactId>caffeine</artifactId>
|
||||
|
||||
@@ -13,15 +13,19 @@ import dev.sheldan.abstracto.core.command.service.PostCommandExecution;
|
||||
import dev.sheldan.abstracto.core.command.execution.*;
|
||||
import dev.sheldan.abstracto.core.command.execution.UnParsedCommandParameter;
|
||||
import dev.sheldan.abstracto.core.Constants;
|
||||
import dev.sheldan.abstracto.core.command.service.management.CommandManagementService;
|
||||
import dev.sheldan.abstracto.core.command.service.management.CommandManagementServiceBean;
|
||||
import dev.sheldan.abstracto.core.models.converter.ChannelConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.ServerConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.UserInServerConverter;
|
||||
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.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.*;
|
||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||
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.UserInServerDto;
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementServiceBean;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementServiceBean;
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementServiceBean;
|
||||
import dev.sheldan.abstracto.core.utils.ParseUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
@@ -31,6 +35,7 @@ import net.dv8tion.jda.api.entities.TextChannel;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.rsocket.RSocketProperties;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -52,13 +57,13 @@ public class CommandReceivedHandler extends ListenerAdapter {
|
||||
private List<PostCommandExecution> executions;
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
private ServerManagementServiceBean serverManagementService;
|
||||
|
||||
@Autowired
|
||||
private UserManagementService userManagementService;
|
||||
private UserManagementServiceBean userManagementService;
|
||||
|
||||
@Autowired
|
||||
private ChannelManagementService channelManagementService;
|
||||
private ChannelManagementServiceBean channelManagementService;
|
||||
|
||||
@Autowired
|
||||
@Lazy
|
||||
@@ -68,7 +73,16 @@ public class CommandReceivedHandler extends ListenerAdapter {
|
||||
private ChannelGroupCommandService channelGroupCommandService;
|
||||
|
||||
@Autowired
|
||||
private CommandManagementService commandManagementService;
|
||||
private CommandManagementServiceBean commandManagementService;
|
||||
|
||||
@Autowired
|
||||
private ChannelConverter channelConverter;
|
||||
|
||||
@Autowired
|
||||
private ServerConverter serverConverter;
|
||||
|
||||
@Autowired
|
||||
private UserInServerConverter userConverter;
|
||||
|
||||
@Override
|
||||
@Async
|
||||
@@ -134,16 +148,16 @@ public class CommandReceivedHandler extends ListenerAdapter {
|
||||
}
|
||||
|
||||
private UserInitiatedServerContext buildTemplateParameter(MessageReceivedEvent event) {
|
||||
AChannel channel = channelManagementService.loadChannel(event.getChannel().getIdLong());
|
||||
AServer server = serverManagementService.loadOrCreate(event.getGuild().getIdLong());
|
||||
AUserInAServer user = userManagementService.loadUser(event.getMember());
|
||||
ChannelDto aChannel = channelManagementService.loadChannel(event.getChannel().getIdLong());
|
||||
ServerDto server = serverManagementService.loadOrCreate(event.getGuild().getIdLong());
|
||||
UserInServerDto user = userManagementService.loadUser(event.getMember());
|
||||
return UserInitiatedServerContext
|
||||
.builder()
|
||||
.channel(channel)
|
||||
.channel(aChannel)
|
||||
.server(server)
|
||||
.member(event.getMember())
|
||||
.aUserInAServer(user)
|
||||
.user(user.getUserReference())
|
||||
.user(user.getUser())
|
||||
.messageChannel(event.getTextChannel())
|
||||
.guild(event.getGuild())
|
||||
.build();
|
||||
|
||||
@@ -3,7 +3,7 @@ package dev.sheldan.abstracto.core.command.config;
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.service.CommandService;
|
||||
import dev.sheldan.abstracto.core.listener.ServerConfigListener;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -19,7 +19,7 @@ public class CommandConfigListener implements ServerConfigListener {
|
||||
private CommandService commandService;
|
||||
|
||||
@Override
|
||||
public void updateServerConfig(AServer server) {
|
||||
public void updateServerConfig(ServerDto server) {
|
||||
commandList.forEach(command -> {
|
||||
if(!commandService.doesCommandExist(command.getConfiguration().getName())) {
|
||||
commandService.createCommand(command.getConfiguration().getName(), command.getConfiguration().getModule());
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.command.repository;
|
||||
|
||||
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 dev.sheldan.abstracto.core.models.AChannelGroup;
|
||||
import dev.sheldan.abstracto.core.models.AChannelGroupCommand;
|
||||
import dev.sheldan.abstracto.core.models.ACommand;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.command.repository;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.models.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.models.ACommand;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
public interface CommandRepository extends JpaRepository<ACommand, Long> {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.command.repository;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.models.database.AModule;
|
||||
import dev.sheldan.abstracto.core.models.AModule;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
public interface ModuleRepository extends JpaRepository<AModule, Long> {
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
package dev.sheldan.abstracto.core.command.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.models.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.command.service.management.ChannelGroupCommandManagementService;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannelGroupCommand;
|
||||
import dev.sheldan.abstracto.core.models.*;
|
||||
import dev.sheldan.abstracto.core.command.service.management.ChannelGroupCommandManagementServiceBean;
|
||||
import dev.sheldan.abstracto.core.models.converter.CommandConverter;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.CommandDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -14,10 +15,13 @@ import java.util.Optional;
|
||||
public class ChannelGroupCommandServiceBean implements ChannelGroupCommandService {
|
||||
|
||||
@Autowired
|
||||
private ChannelGroupCommandManagementService channelGroupCommandService;
|
||||
private ChannelGroupCommandManagementServiceBean channelGroupCommandService;
|
||||
|
||||
@Autowired
|
||||
private CommandConverter commandConverter;
|
||||
|
||||
@Override
|
||||
public Boolean isCommandEnabled(ACommand command, AChannel channel) {
|
||||
public Boolean isCommandEnabled(CommandDto command, ChannelDto channel) {
|
||||
List<AChannelGroupCommand> allChannelGroupsOfCommand = channelGroupCommandService.getAllGroupCommandsForCommand(command);
|
||||
for (AChannelGroupCommand aChannelGroupCommand : allChannelGroupsOfCommand) {
|
||||
Optional<AChannel> channelInGroup = aChannelGroupCommand.getGroup()
|
||||
@@ -28,9 +32,6 @@ public class ChannelGroupCommandServiceBean implements ChannelGroupCommandServic
|
||||
}
|
||||
}
|
||||
}
|
||||
if(allChannelGroupsOfCommand.size() == 0) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return allChannelGroupsOfCommand.size() == 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.command.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.models.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.command.models.database.AModule;
|
||||
import dev.sheldan.abstracto.core.command.service.management.CommandManagementService;
|
||||
import dev.sheldan.abstracto.core.command.service.management.ModuleManagementService;
|
||||
import dev.sheldan.abstracto.core.models.ACommand;
|
||||
import dev.sheldan.abstracto.core.models.AModule;
|
||||
import dev.sheldan.abstracto.core.command.service.management.CommandManagementServiceBean;
|
||||
import dev.sheldan.abstracto.core.command.service.management.ModuleManagementServiceBean;
|
||||
import dev.sheldan.abstracto.core.models.converter.CommandConverter;
|
||||
import dev.sheldan.abstracto.core.models.dto.CommandDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -11,20 +13,27 @@ import org.springframework.stereotype.Component;
|
||||
public class CommandServiceBean implements CommandService {
|
||||
|
||||
@Autowired
|
||||
private ModuleManagementService moduleManagementService;
|
||||
private ModuleManagementServiceBean moduleManagementService;
|
||||
|
||||
@Autowired
|
||||
private CommandManagementService commandManagementService;
|
||||
private CommandManagementServiceBean commandManagementServiceBean;
|
||||
|
||||
@Autowired
|
||||
private CommandConverter commandConverter;
|
||||
|
||||
@Override
|
||||
public ACommand createCommand(String name, String moduleName) {
|
||||
AModule module = moduleManagementService.getOrCreate(moduleName);
|
||||
return commandManagementService.createCommand(name, module);
|
||||
public CommandDto createCommand(String name, String moduleName) {
|
||||
return commandManagementServiceBean.createCommand(name, moduleName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean doesCommandExist(String name) {
|
||||
return commandManagementService.doesCommandExist(name);
|
||||
return commandManagementServiceBean.doesCommandExist(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommandDto findCommandByName(String name) {
|
||||
return commandManagementServiceBean.findCommandByName(name);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,23 +1,27 @@
|
||||
package dev.sheldan.abstracto.core.command.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.models.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.models.AChannelGroup;
|
||||
import dev.sheldan.abstracto.core.models.AChannelGroupCommand;
|
||||
import dev.sheldan.abstracto.core.models.ACommand;
|
||||
import dev.sheldan.abstracto.core.command.repository.ChannelGroupCommandRepository;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannelGroup;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannelGroupCommand;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelGroupDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.CommandDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Component
|
||||
public class ChannelGroupCommandManagementServiceBean implements ChannelGroupCommandManagementService {
|
||||
public class ChannelGroupCommandManagementServiceBean {
|
||||
|
||||
@Autowired
|
||||
private ChannelGroupCommandRepository groupCommandRepository;
|
||||
|
||||
@Override
|
||||
public void setCommandInGroupTo(ACommand command, AChannelGroup group, Boolean enabled) {
|
||||
AChannelGroupCommand groupCommand = groupCommandRepository.findByCommandAndGroup(command, group);
|
||||
public void setCommandInGroupTo(CommandDto command, ChannelGroupDto group, Boolean enabled) {
|
||||
AChannelGroup aChannelGroup = AChannelGroup.builder().id(group.getId()).build();
|
||||
ACommand aCommand = ACommand.builder().id(command.getId()).build();
|
||||
AChannelGroupCommand groupCommand = groupCommandRepository.findByCommandAndGroup(aCommand, aChannelGroup);
|
||||
if(groupCommand == null) {
|
||||
groupCommand = createCommandInGroupTo(command, group);
|
||||
}
|
||||
@@ -25,12 +29,11 @@ public class ChannelGroupCommandManagementServiceBean implements ChannelGroupCom
|
||||
groupCommandRepository.save(groupCommand);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AChannelGroupCommand createCommandInGroupTo(ACommand command, AChannelGroup group) {
|
||||
public AChannelGroupCommand createCommandInGroupTo(CommandDto command, ChannelGroupDto group) {
|
||||
AChannelGroupCommand channelGroupCommand = AChannelGroupCommand
|
||||
.builder()
|
||||
.command(command)
|
||||
.group(group)
|
||||
.command(ACommand.builder().id(command.getId()).build())
|
||||
.group(AChannelGroup.builder().id(group.getId()).build())
|
||||
.enabled(false)
|
||||
.build();
|
||||
|
||||
@@ -38,14 +41,14 @@ public class ChannelGroupCommandManagementServiceBean implements ChannelGroupCom
|
||||
return channelGroupCommand;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AChannelGroupCommand getChannelGroupCommand(ACommand command, AChannelGroup group) {
|
||||
return groupCommandRepository.findByCommandAndGroup(command, group);
|
||||
public AChannelGroupCommand getChannelGroupCommand(CommandDto command, ChannelGroupDto group) {
|
||||
ACommand aCommand = ACommand.builder().id(command.getId()).build();
|
||||
AChannelGroup aChannelGroup = AChannelGroup.builder().id(group.getId()).build();
|
||||
return groupCommandRepository.findByCommandAndGroup(aCommand, aChannelGroup);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AChannelGroupCommand> getAllGroupCommandsForCommand(ACommand command) {
|
||||
return groupCommandRepository.findByCommand(command);
|
||||
public List<AChannelGroupCommand> getAllGroupCommandsForCommand(CommandDto command) {
|
||||
return groupCommandRepository.findByCommand(ACommand.builder().id(command.getId()).build());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,47 +1,54 @@
|
||||
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;
|
||||
import dev.sheldan.abstracto.core.models.ACommand;
|
||||
import dev.sheldan.abstracto.core.models.AModule;
|
||||
import dev.sheldan.abstracto.core.command.repository.CommandRepository;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import dev.sheldan.abstracto.core.models.converter.CommandConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.ModuleConverter;
|
||||
import dev.sheldan.abstracto.core.models.dto.CommandDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ModuleDto;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementServiceBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class CommandManagementServiceBean implements CommandManagementService {
|
||||
public class CommandManagementServiceBean {
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
private ServerManagementServiceBean serverManagementService;
|
||||
|
||||
@Autowired
|
||||
private ModuleManagementService moduleManagementService;
|
||||
private ModuleManagementServiceBean moduleManagementService;
|
||||
|
||||
@Autowired
|
||||
private CommandRepository commandRepository;
|
||||
|
||||
@Override
|
||||
public ACommand createCommand(String name, String moduleName) {
|
||||
@Autowired
|
||||
private CommandConverter commandConverter;
|
||||
|
||||
@Autowired
|
||||
private ModuleConverter moduleConverter;
|
||||
|
||||
public CommandDto createCommand(String name, String moduleName) {
|
||||
AModule module = moduleManagementService.findModuleByName(moduleName);
|
||||
return createCommand(name, module);
|
||||
return createCommand(name, moduleConverter.fromModule(module));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ACommand createCommand(String name, AModule module) {
|
||||
public CommandDto createCommand(String name, ModuleDto module) {
|
||||
ACommand command = ACommand
|
||||
.builder()
|
||||
.name(name)
|
||||
.module(module)
|
||||
.module(AModule.builder().id(module.getId()).build())
|
||||
.build();
|
||||
commandRepository.save(command);
|
||||
return command;
|
||||
return commandConverter.fromCommand(command);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ACommand findCommandByName(String name) {
|
||||
return commandRepository.findByName(name);
|
||||
public CommandDto findCommandByName(String name) {
|
||||
ACommand byName = commandRepository.findByName(name);
|
||||
return commandConverter.fromCommand(byName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean doesCommandExist(String name) {
|
||||
return findCommandByName(name) != null;
|
||||
}
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
package dev.sheldan.abstracto.core.command.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.models.database.AModule;
|
||||
import dev.sheldan.abstracto.core.models.AModule;
|
||||
import dev.sheldan.abstracto.core.command.repository.ModuleRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class ModuleManagementServiceBean implements ModuleManagementService {
|
||||
public class ModuleManagementServiceBean {
|
||||
|
||||
@Autowired
|
||||
private ModuleRepository moduleRepository;
|
||||
|
||||
@Override
|
||||
public AModule createModule(String name) {
|
||||
AModule module = AModule.
|
||||
builder()
|
||||
@@ -21,7 +20,6 @@ public class ModuleManagementServiceBean implements ModuleManagementService {
|
||||
return module;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AModule getOrCreate(String name) {
|
||||
AModule module = findModuleByName(name);
|
||||
if(module == null) {
|
||||
@@ -30,12 +28,10 @@ public class ModuleManagementServiceBean implements ModuleManagementService {
|
||||
return module;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AModule findModuleByName(String name) {
|
||||
return moduleRepository.findByName(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean doesModuleExist(String name) {
|
||||
return findModuleByName(name) != null;
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||
import dev.sheldan.abstracto.core.config.AbstractoFeatures;
|
||||
import dev.sheldan.abstracto.core.commands.utility.UtilityModuleInterface;
|
||||
import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementServiceBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -19,7 +19,7 @@ public class Disable implements Command {
|
||||
|
||||
|
||||
@Autowired
|
||||
private FeatureFlagManagementService featureFlagManagementService;
|
||||
private FeatureFlagManagementServiceBean featureFlagManagementService;
|
||||
@Override
|
||||
public CommandResult execute(CommandContext commandContext) {
|
||||
String flagKey = (String) commandContext.getParameters().getParameters().get(0);
|
||||
|
||||
@@ -7,7 +7,7 @@ import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||
import dev.sheldan.abstracto.core.config.AbstractoFeatures;
|
||||
import dev.sheldan.abstracto.core.commands.utility.UtilityModuleInterface;
|
||||
import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementServiceBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -19,7 +19,7 @@ public class Enable implements Command {
|
||||
|
||||
|
||||
@Autowired
|
||||
private FeatureFlagManagementService featureFlagManagementService;
|
||||
private FeatureFlagManagementServiceBean featureFlagManagementService;
|
||||
@Override
|
||||
public CommandResult execute(CommandContext commandContext) {
|
||||
String flagKey = (String) commandContext.getParameters().getParameters().get(0);
|
||||
|
||||
@@ -6,13 +6,13 @@ import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||
import dev.sheldan.abstracto.core.command.execution.ContextConverter;
|
||||
import dev.sheldan.abstracto.core.config.AbstractoFeatures;
|
||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelGroupDto;
|
||||
import dev.sheldan.abstracto.core.models.template.commands.ChannelGroupChannelModel;
|
||||
import dev.sheldan.abstracto.core.models.template.commands.ChannelGroupModel;
|
||||
import dev.sheldan.abstracto.core.models.template.commands.ListChannelGroupsModel;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannelGroup;
|
||||
import dev.sheldan.abstracto.core.service.ChannelGroupService;
|
||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelGroupManagementService;
|
||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -30,14 +30,14 @@ public class ListChannelGroups implements Command {
|
||||
private TemplateService templateService;
|
||||
|
||||
@Autowired
|
||||
private ChannelGroupManagementService channelGroupManagementService;
|
||||
private ChannelGroupService channelGroupManagementService;
|
||||
|
||||
@Autowired
|
||||
private ChannelService channelService;
|
||||
|
||||
@Override
|
||||
public CommandResult execute(CommandContext commandContext) {
|
||||
List<AChannelGroup> channelGroups = channelGroupManagementService.findAllInServer(commandContext.getUserInitiatedContext().getServer());
|
||||
List<ChannelGroupDto> channelGroups = channelGroupManagementService.findAllInServer(commandContext.getUserInitiatedContext().getServer());
|
||||
ListChannelGroupsModel template = (ListChannelGroupsModel) ContextConverter.fromCommandContext(commandContext, ListChannelGroupsModel.class);
|
||||
template.setGroups(convertAChannelGroupToChannelGroupChannel(channelGroups));
|
||||
MessageToSend response = templateService.renderEmbedTemplate("listChannelGroups_response", template);
|
||||
@@ -45,7 +45,7 @@ public class ListChannelGroups implements Command {
|
||||
return CommandResult.fromSuccess();
|
||||
}
|
||||
|
||||
private List<ChannelGroupModel> convertAChannelGroupToChannelGroupChannel(List<AChannelGroup> channelGroups) {
|
||||
private List<ChannelGroupModel> convertAChannelGroupToChannelGroupChannel(List<ChannelGroupDto> channelGroups) {
|
||||
List<ChannelGroupModel> converted = new ArrayList<>();
|
||||
channelGroups.forEach(group -> {
|
||||
List<ChannelGroupChannelModel> convertedChannels = new ArrayList<>();
|
||||
|
||||
@@ -7,8 +7,8 @@ import dev.sheldan.abstracto.core.command.execution.*;
|
||||
import dev.sheldan.abstracto.core.config.AbstractoFeatures;
|
||||
import dev.sheldan.abstracto.core.models.template.commands.PostTargetErrorModel;
|
||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.PostTargetManagement;
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementServiceBean;
|
||||
import dev.sheldan.abstracto.core.service.management.PostTargetManagementBean;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
@@ -27,13 +27,13 @@ public class PostTarget implements Command {
|
||||
public static final String POST_TARGET_NO_TARGET_TEMPLATE = "posttarget_no_target";
|
||||
public static final String POST_TARGET_INVALID_TARGET_TEMPLATE = "posttarget_invalid_target";
|
||||
@Autowired
|
||||
private PostTargetManagement postTargetManagement;
|
||||
private PostTargetManagementBean postTargetManagement;
|
||||
|
||||
@Autowired
|
||||
private PostTargetService postTargetService;
|
||||
|
||||
@Autowired
|
||||
private ChannelManagementService channelManagementService;
|
||||
private ChannelManagementServiceBean channelManagementService;
|
||||
|
||||
@Autowired
|
||||
private TemplateService templateService;
|
||||
|
||||
@@ -7,7 +7,7 @@ import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||
import dev.sheldan.abstracto.core.config.AbstractoFeatures;
|
||||
import dev.sheldan.abstracto.core.service.EmoteService;
|
||||
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.EmoteManagementServiceBean;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -19,7 +19,7 @@ import java.util.List;
|
||||
public class SetEmote implements Command {
|
||||
|
||||
@Autowired
|
||||
private EmoteManagementService emoteManagementService;
|
||||
private EmoteManagementServiceBean emoteManagementService;
|
||||
|
||||
@Autowired
|
||||
private EmoteService emoteService;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.config;
|
||||
|
||||
import dev.sheldan.abstracto.core.listener.ServerConfigListener;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementService;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementServiceBean;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -15,10 +15,10 @@ public class FeatureFlagListener implements ServerConfigListener {
|
||||
private FeatureFlagConfig featureFlagConfig;
|
||||
|
||||
@Autowired
|
||||
private FeatureFlagManagementService service;
|
||||
private FeatureFlagManagementServiceBean service;
|
||||
|
||||
@Override
|
||||
public void updateServerConfig(AServer server) {
|
||||
public void updateServerConfig(ServerDto server) {
|
||||
log.info("Setting up feature flags if necessary.");
|
||||
featureFlagConfig.getFeatures().forEach((featureFlagKey, featureFlagValue) -> {
|
||||
if(!service.getFeatureFlag(featureFlagKey, server.getId()).isPresent()) {
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannelType;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.AChannelType;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import dev.sheldan.abstracto.core.models.utils.ChannelUtils;
|
||||
import dev.sheldan.abstracto.core.repository.ServerRepository;
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementServiceBean;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementServiceBean;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
import net.dv8tion.jda.api.events.channel.text.TextChannelCreateEvent;
|
||||
@@ -22,13 +25,10 @@ import javax.annotation.Nonnull;
|
||||
public class ChannelListener extends ListenerAdapter {
|
||||
|
||||
@Autowired
|
||||
private ServerRepository serverRepository;
|
||||
private ChannelManagementServiceBean channelManagementService;
|
||||
|
||||
@Autowired
|
||||
private ChannelManagementService channelManagementService;
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
private ServerManagementServiceBean serverManagementService;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
@@ -41,10 +41,10 @@ public class ChannelListener extends ListenerAdapter {
|
||||
@Transactional
|
||||
public void onTextChannelCreate(@Nonnull TextChannelCreateEvent event) {
|
||||
log.info("Handling channel created event. Channel {}, Server {}", event.getChannel().getIdLong(), event.getGuild().getIdLong());
|
||||
AServer serverObject = serverRepository.getOne(event.getGuild().getIdLong());
|
||||
TextChannel createdChannel = event.getChannel();
|
||||
AChannelType type = AChannel.getAChannelType(createdChannel.getType());
|
||||
AChannel newChannel = channelManagementService.createChannel(createdChannel.getIdLong(), type);
|
||||
serverManagementService.addChannelToServer(serverObject, newChannel);
|
||||
AChannelType type = ChannelUtils.getAChannelType(createdChannel.getType());
|
||||
ChannelDto newChannel = channelManagementService.createChannel(createdChannel.getIdLong(), type);
|
||||
ServerDto serverDto = ServerDto.builder().id(event.getGuild().getIdLong()).build();
|
||||
serverManagementService.addChannelToServer(serverDto, newChannel);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ public class JoinListenerBean extends ListenerAdapter {
|
||||
@Autowired
|
||||
private FeatureFlagService featureFlagService;
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void onGuildMemberJoin(@Nonnull GuildMemberJoinEvent event) {
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.converter.UserInServerConverter;
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
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.FeatureFlagService;
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedReaction;
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.service.EmoteService;
|
||||
import dev.sheldan.abstracto.core.service.MessageCache;
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementServiceBean;
|
||||
import dev.sheldan.abstracto.core.utils.EmoteUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.events.message.guild.react.GuildMessageReactionAddEvent;
|
||||
@@ -36,7 +38,7 @@ public class ReactionUpdatedListener extends ListenerAdapter {
|
||||
private EmoteService emoteService;
|
||||
|
||||
@Autowired
|
||||
private UserManagementService userManagementService;
|
||||
private UserManagementServiceBean userManagementService;
|
||||
|
||||
@Autowired
|
||||
private List<ReactedAddedListener> addedListenerList;
|
||||
@@ -53,6 +55,9 @@ public class ReactionUpdatedListener extends ListenerAdapter {
|
||||
@Autowired
|
||||
private Bot bot;
|
||||
|
||||
@Autowired
|
||||
private UserInServerConverter userInServerConverter;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void onGuildMessageReactionAdd(@Nonnull GuildMessageReactionAddEvent event) {
|
||||
@@ -70,7 +75,7 @@ public class ReactionUpdatedListener extends ListenerAdapter {
|
||||
});
|
||||
}
|
||||
|
||||
private void addReactionIfNotThere(CachedMessage message, CachedReaction reaction, AUser userReacting) {
|
||||
private void addReactionIfNotThere(CachedMessage message, CachedReaction reaction, UserDto userReacting) {
|
||||
Optional<CachedReaction> existingReaction = message.getReactions().stream().filter(reaction1 -> {
|
||||
return EmoteUtils.compareAEmote(reaction1.getEmote(), reaction.getEmote());
|
||||
}).findAny();
|
||||
@@ -78,14 +83,14 @@ public class ReactionUpdatedListener extends ListenerAdapter {
|
||||
message.getReactions().add(reaction);
|
||||
} else {
|
||||
CachedReaction cachedReaction = existingReaction.get();
|
||||
Optional<AUser> any = cachedReaction.getUsers().stream().filter(user -> user.getId().equals(userReacting.getId())).findAny();
|
||||
Optional<UserDto> any = cachedReaction.getUsers().stream().filter(user -> user.getId().equals(userReacting.getId())).findAny();
|
||||
if(!any.isPresent()){
|
||||
cachedReaction.getUsers().add(userReacting);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void removeReactionIfThere(CachedMessage message, CachedReaction reaction, AUser userReacting) {
|
||||
private void removeReactionIfThere(CachedMessage message, CachedReaction reaction, UserDto userReacting) {
|
||||
Optional<CachedReaction> existingReaction = message.getReactions().stream().filter(reaction1 -> {
|
||||
return EmoteUtils.compareAEmote(reaction1.getEmote(), reaction.getEmote());
|
||||
}).findAny();
|
||||
@@ -98,8 +103,8 @@ public class ReactionUpdatedListener extends ListenerAdapter {
|
||||
|
||||
@Transactional
|
||||
public void callAddedListeners(@Nonnull GuildMessageReactionAddEvent event, CachedMessage cachedMessage, CachedReaction reaction) {
|
||||
AUserInAServer userInAServer = userManagementService.loadUser(event.getGuild().getIdLong(), event.getUserIdLong());
|
||||
addReactionIfNotThere(cachedMessage, reaction, userInAServer.getUserReference());
|
||||
UserInServerDto userInAServer = userManagementService.loadUser(event.getGuild().getIdLong(), event.getUserIdLong());
|
||||
addReactionIfNotThere(cachedMessage, reaction, userInAServer.getUser());
|
||||
addedListenerList.forEach(reactedAddedListener -> {
|
||||
if(!featureFlagService.isFeatureEnabled(reactedAddedListener.getFeature(), event.getGuild().getIdLong())) {
|
||||
return;
|
||||
@@ -132,8 +137,8 @@ public class ReactionUpdatedListener extends ListenerAdapter {
|
||||
|
||||
@Transactional
|
||||
public void callRemoveListeners(@Nonnull GuildMessageReactionRemoveEvent event, CachedMessage cachedMessage, CachedReaction reaction) {
|
||||
AUserInAServer userInAServer = userManagementService.loadUser(event.getGuild().getIdLong(), event.getUserIdLong());
|
||||
removeReactionIfThere(cachedMessage, reaction, userInAServer.getUserReference());
|
||||
UserInServerDto userInAServer = userManagementService.loadUser(event.getGuild().getIdLong(), event.getUserIdLong());
|
||||
removeReactionIfThere(cachedMessage, reaction, userInAServer.getUser());
|
||||
reactionRemovedListener.forEach(reactedAddedListener -> {
|
||||
if(!featureFlagService.isFeatureEnabled(reactedAddedListener.getFeature(), event.getGuild().getIdLong())) {
|
||||
return;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.repository;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AChannelGroup;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.AChannelGroup;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.repository;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.AChannel;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.repository;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AConfig;
|
||||
import dev.sheldan.abstracto.core.models.AConfig;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
public interface ConfigRepository extends JpaRepository<AConfig, Long> {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.repository;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.AEmote;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.repository;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AFeatureFlag;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.AFeatureFlag;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
public interface FeatureFlagRepository extends JpaRepository<AFeatureFlag, Long> {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.repository;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.PostTarget;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import dev.sheldan.abstracto.core.models.PostTarget;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.repository;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||
import dev.sheldan.abstracto.core.models.ARole;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.repository;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.repository;
|
||||
|
||||
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.AServer;
|
||||
import dev.sheldan.abstracto.core.models.AUser;
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.repository;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.AUser;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.exception.ChannelException;
|
||||
import dev.sheldan.abstracto.core.exception.GuildException;
|
||||
import dev.sheldan.abstracto.core.models.dto.EmoteDto;
|
||||
import dev.sheldan.abstracto.core.models.GuildChannelMember;
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.JDA;
|
||||
import net.dv8tion.jda.api.JDABuilder;
|
||||
@@ -82,7 +82,7 @@ public class BotServiceBean implements Bot {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<Emote> getEmote(Long serverId, AEmote emote) {
|
||||
public Optional<Emote> getEmote(Long serverId, EmoteDto emote) {
|
||||
if(!emote.getCustom()) {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
@@ -1,47 +1,67 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.exception.ChannelGroupException;
|
||||
import dev.sheldan.abstracto.core.command.exception.CommandException;
|
||||
import dev.sheldan.abstracto.core.command.models.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.command.service.management.ChannelGroupCommandManagementService;
|
||||
import dev.sheldan.abstracto.core.command.service.management.CommandManagementService;
|
||||
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 dev.sheldan.abstracto.core.service.management.ChannelGroupManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import dev.sheldan.abstracto.core.models.*;
|
||||
import dev.sheldan.abstracto.core.command.service.management.ChannelGroupCommandManagementServiceBean;
|
||||
import dev.sheldan.abstracto.core.command.service.management.CommandManagementServiceBean;
|
||||
import dev.sheldan.abstracto.core.models.converter.ChannelConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.ChannelGroupConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.ServerConverter;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelGroupDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.CommandDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelGroupManagementServiceBean;
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementServiceBean;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementServiceBean;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
import org.checkerframework.checker.units.qual.A;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class ChannelGroupServiceBean implements ChannelGroupService {
|
||||
|
||||
@Autowired
|
||||
private ChannelGroupManagementService channelGroupManagementService;
|
||||
private ChannelGroupManagementServiceBean channelGroupManagementService;
|
||||
|
||||
@Autowired
|
||||
private ChannelManagementService channelManagementService;
|
||||
private ChannelManagementServiceBean channelManagementService;
|
||||
|
||||
@Autowired
|
||||
private CommandManagementService commandManagementService;
|
||||
private CommandManagementServiceBean commandManagementService;
|
||||
|
||||
@Autowired
|
||||
private ChannelGroupCommandManagementService channelGroupCommandManagementService;
|
||||
private ChannelGroupCommandManagementServiceBean channelGroupCommandManagementService;
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
private ServerManagementServiceBean serverManagementService;
|
||||
|
||||
@Autowired
|
||||
private ChannelGroupConverter channelGroupConverter;
|
||||
|
||||
@Autowired
|
||||
private ChannelConverter channelConverter;
|
||||
|
||||
@Autowired
|
||||
private ServerConverter serverConverter;
|
||||
|
||||
@Override
|
||||
public AChannelGroup createChannelGroup(String name, Long serverId) {
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
return channelGroupManagementService.createChannelGroup(name, server);
|
||||
public ChannelGroupDto createChannelGroup(String name, Long serverId) {
|
||||
ServerDto server = serverManagementService.loadOrCreate(serverId);
|
||||
|
||||
AChannelGroup channelGroup = channelGroupManagementService.createChannelGroup(name, server);
|
||||
return channelGroupConverter.fromChannelGroup(channelGroup);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteChannelGroup(String name, Long serverId) {
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
ServerDto server = serverManagementService.loadOrCreate(serverId);
|
||||
channelGroupManagementService.deleteChannelGroup(name, server);
|
||||
}
|
||||
|
||||
@@ -52,14 +72,14 @@ public class ChannelGroupServiceBean implements ChannelGroupService {
|
||||
|
||||
@Override
|
||||
public void addChannelToChannelGroup(String channelGroupName, Long channelId) {
|
||||
AChannel aChannel = channelManagementService.loadChannel(channelId);
|
||||
ChannelDto aChannel = ChannelDto.builder().id(channelId).build();
|
||||
addChannelToChannelGroup(channelGroupName, aChannel);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addChannelToChannelGroup(String channelGroupName, AChannel channel) {
|
||||
AServer server = serverManagementService.loadOrCreate(channel.getServer().getId());
|
||||
AChannelGroup channelGroup = channelGroupManagementService.findByNameAndServer(channelGroupName, server);
|
||||
public void addChannelToChannelGroup(String channelGroupName, ChannelDto channel) {
|
||||
ServerDto server = serverManagementService.loadOrCreate(channel.getServer().getId());
|
||||
ChannelGroupDto channelGroup = channelGroupManagementService.findByNameAndServer(channelGroupName, server);
|
||||
if(channelGroup == null) {
|
||||
throw new ChannelGroupException(String.format("Channel group %s was not found.", channelGroupName));
|
||||
}
|
||||
@@ -73,14 +93,14 @@ public class ChannelGroupServiceBean implements ChannelGroupService {
|
||||
|
||||
@Override
|
||||
public void removeChannelFromChannelGroup(String channelGroupName, Long channelId) {
|
||||
AChannel aChannel = channelManagementService.loadChannel(channelId);
|
||||
removeChannelFromChannelGroup(channelGroupName, aChannel);
|
||||
ChannelDto channel = ChannelDto.builder().id(channelId).build();
|
||||
removeChannelFromChannelGroup(channelGroupName, channel);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeChannelFromChannelGroup(String channelGroupName, AChannel channel) {
|
||||
AServer server = serverManagementService.loadOrCreate(channel.getServer().getId());
|
||||
AChannelGroup channelGroup = channelGroupManagementService.findByNameAndServer(channelGroupName, server);
|
||||
public void removeChannelFromChannelGroup(String channelGroupName, ChannelDto channel) {
|
||||
ServerDto serverDto = ServerDto.builder().id(channel.getServer().getId()).build();
|
||||
ChannelGroupDto channelGroup = channelGroupManagementService.findByNameAndServer(channelGroupName, serverDto);
|
||||
if(channelGroup == null) {
|
||||
throw new ChannelGroupException(String.format("Channel group %s was not found", channelGroupName));
|
||||
}
|
||||
@@ -89,12 +109,12 @@ public class ChannelGroupServiceBean implements ChannelGroupService {
|
||||
|
||||
@Override
|
||||
public void disableCommandInChannelGroup(String commandName, String channelGroupName, Long serverId) {
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
AChannelGroup channelGroup = channelGroupManagementService.findByNameAndServer(channelGroupName, server);
|
||||
ServerDto serverDto = ServerDto.builder().id(serverId).build();
|
||||
ChannelGroupDto channelGroup = channelGroupManagementService.findByNameAndServer(channelGroupName, serverDto);
|
||||
if(channelGroup == null) {
|
||||
throw new ChannelGroupException(String.format("Channel group %s was not found", channelGroupName));
|
||||
}
|
||||
ACommand command = commandManagementService.findCommandByName(commandName);
|
||||
CommandDto command = commandManagementService.findCommandByName(commandName);
|
||||
if(command == null) {
|
||||
throw new CommandException(String.format("Command %s not found.", commandName));
|
||||
}
|
||||
@@ -103,12 +123,12 @@ public class ChannelGroupServiceBean implements ChannelGroupService {
|
||||
|
||||
@Override
|
||||
public void enableCommandInChannelGroup(String commandName, String channelGroupName, Long serverId) {
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
AChannelGroup channelGroup = channelGroupManagementService.findByNameAndServer(channelGroupName, server);
|
||||
ServerDto serverDto = ServerDto.builder().id(serverId).build();
|
||||
ChannelGroupDto channelGroup = channelGroupManagementService.findByNameAndServer(channelGroupName, serverDto);
|
||||
if(channelGroup == null) {
|
||||
throw new ChannelGroupException(String.format("Channel group %s was not found", channelGroupName));
|
||||
}
|
||||
ACommand command = commandManagementService.findCommandByName(commandName);
|
||||
CommandDto command = commandManagementService.findCommandByName(commandName);
|
||||
if(command == null) {
|
||||
throw new CommandException(String.format("Command %s not found.", commandName));
|
||||
}
|
||||
@@ -117,7 +137,17 @@ public class ChannelGroupServiceBean implements ChannelGroupService {
|
||||
|
||||
@Override
|
||||
public boolean doesGroupExist(String groupName, Long serverId) {
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
ServerDto server = serverManagementService.loadOrCreate(serverId);
|
||||
return channelGroupManagementService.findByNameAndServer(groupName, server) != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ChannelGroupDto> findAllInServer(ServerDto server) {
|
||||
List<ChannelGroupDto> channelGroupDtos = new ArrayList<>();
|
||||
List<AChannelGroup> allInServer = channelGroupManagementService.findAllInServer(server.getId());
|
||||
allInServer.forEach(channelGroup -> {
|
||||
channelGroupDtos.add(channelGroupConverter.fromChannelGroup(channelGroup));
|
||||
});
|
||||
return channelGroupDtos;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.converter.ChannelConverter;
|
||||
import dev.sheldan.abstracto.core.exception.ChannelException;
|
||||
import dev.sheldan.abstracto.core.exception.GuildException;
|
||||
import dev.sheldan.abstracto.core.models.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementServiceBean;
|
||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
@@ -25,8 +28,14 @@ public class ChannelServiceBean implements ChannelService {
|
||||
@Autowired
|
||||
private Bot botService;
|
||||
|
||||
@Autowired
|
||||
private ChannelManagementServiceBean channelManagementServiceBean;
|
||||
|
||||
@Autowired
|
||||
private ChannelConverter channelConverter;
|
||||
|
||||
@Override
|
||||
public void sendTextInAChannel(String text, AChannel channel) {
|
||||
public void sendTextInAChannel(String text, ChannelDto channel) {
|
||||
Guild guild = botService.getInstance().getGuildById(channel.getServer().getId());
|
||||
if (guild != null) {
|
||||
TextChannel textChannel = guild.getTextChannelById(channel.getId());
|
||||
@@ -43,7 +52,7 @@ public class ChannelServiceBean implements ChannelService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CompletableFuture<Message>> sendMessageToEndInAChannel(MessageToSend messageToSend, AChannel channel) {
|
||||
public List<CompletableFuture<Message>> sendMessageToEndInAChannel(MessageToSend messageToSend, ChannelDto channel) {
|
||||
Optional<TextChannel> textChannelFromServer = botService.getTextChannelFromServer(channel.getServer().getId(), channel.getId());
|
||||
if(textChannelFromServer.isPresent()) {
|
||||
return sendMessageToEndInTextChannel(messageToSend, textChannelFromServer.get());
|
||||
@@ -80,4 +89,9 @@ public class ChannelServiceBean implements ChannelService {
|
||||
public Optional<TextChannel> getTextChannelInGuild(Long serverId, Long channelId) {
|
||||
return botService.getTextChannelFromServer(serverId, channelId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelDto loadChannel(Long channelId) {
|
||||
return channelManagementServiceBean.loadChannel(channelId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.service.management.ConfigManagementService;
|
||||
import dev.sheldan.abstracto.core.models.database.AConfig;
|
||||
import dev.sheldan.abstracto.core.models.AConfig;
|
||||
import dev.sheldan.abstracto.core.service.management.ConfigManagementServiceBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -9,7 +9,7 @@ import org.springframework.stereotype.Component;
|
||||
public class ConfigServiceBean implements ConfigService{
|
||||
|
||||
@Autowired
|
||||
private ConfigManagementService configManagementService;
|
||||
private ConfigManagementServiceBean configManagementService;
|
||||
|
||||
@Override
|
||||
public Double getDoubleValue(String name, Long serverId) {
|
||||
@@ -24,4 +24,9 @@ public class ConfigServiceBean implements ConfigService{
|
||||
}
|
||||
return config.getDoubleValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createValueIfNotExists(String name, Long serverId, Double value) {
|
||||
configManagementService.createIfNotExists(serverId, name, value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.exception.EmoteException;
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
|
||||
import dev.sheldan.abstracto.core.models.AEmote;
|
||||
import dev.sheldan.abstracto.core.models.converter.EmoteConverter;
|
||||
import dev.sheldan.abstracto.core.models.dto.EmoteDto;
|
||||
import dev.sheldan.abstracto.core.service.management.EmoteManagementServiceBean;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
@@ -20,7 +22,10 @@ public class EmoteServiceBean implements EmoteService {
|
||||
private Bot botService;
|
||||
|
||||
@Autowired
|
||||
private EmoteManagementService emoteManagementService;
|
||||
private EmoteManagementServiceBean emoteManagementService;
|
||||
|
||||
@Autowired
|
||||
private EmoteConverter emoteConverter;
|
||||
|
||||
@Override
|
||||
public boolean isEmoteUsableByBot(Emote emote) {
|
||||
@@ -34,16 +39,22 @@ public class EmoteServiceBean implements EmoteService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public AEmote buildAEmoteFromReaction(MessageReaction.ReactionEmote reaction) {
|
||||
public EmoteDto buildAEmoteFromReaction(MessageReaction.ReactionEmote reaction) {
|
||||
if(reaction.isEmote()) {
|
||||
return AEmote.builder().emoteKey(reaction.getName()).custom(true).emoteId(reaction.getEmote().getIdLong()).animated(reaction.getEmote().isAnimated()).build();
|
||||
return EmoteDto.builder().emoteKey(reaction.getName()).custom(true).emoteId(reaction.getEmote().getIdLong()).animated(reaction.getEmote().isAnimated()).build();
|
||||
} else {
|
||||
return AEmote.builder().emoteKey(reaction.getEmoji()).custom(false).build();
|
||||
return EmoteDto.builder().emoteKey(reaction.getEmoji()).custom(false).build();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getEmoteAsMention(AEmote emote, Long serverId, String defaultText) {
|
||||
public Optional<EmoteDto> getEmoteByName(String name, Long serverId) {
|
||||
Optional<AEmote> aEmote = emoteManagementService.loadEmoteByName(name, serverId);
|
||||
return Optional.ofNullable(aEmote.map(emote -> emoteConverter.fromEmote(emote)).orElse(null));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getEmoteAsMention(EmoteDto emote, Long serverId, String defaultText) {
|
||||
if(emote != null && emote.getCustom()) {
|
||||
Optional<Emote> emoteOptional = botService.getEmote(serverId, emote);
|
||||
if (emoteOptional.isPresent()) {
|
||||
@@ -61,7 +72,7 @@ public class EmoteServiceBean implements EmoteService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getEmoteAsMention(AEmote emote, Long serverId) {
|
||||
public String getEmoteAsMention(EmoteDto emote, Long serverId) {
|
||||
return this.getEmoteAsMention(emote, serverId, " ");
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementServiceBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -8,7 +8,7 @@ import org.springframework.stereotype.Component;
|
||||
public class FeatureFlagServiceBean implements FeatureFlagService {
|
||||
|
||||
@Autowired
|
||||
private FeatureFlagManagementService managementService;
|
||||
private FeatureFlagManagementServiceBean managementService;
|
||||
|
||||
@Override
|
||||
public boolean isFeatureEnabled(String name, Long serverId) {
|
||||
|
||||
@@ -2,12 +2,12 @@ package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.exception.ChannelException;
|
||||
import dev.sheldan.abstracto.core.exception.GuildException;
|
||||
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserDto;
|
||||
import dev.sheldan.abstracto.core.service.management.EmoteManagementServiceBean;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
|
||||
import dev.sheldan.abstracto.core.models.cache.CachedReaction;
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.cache.*;
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementServiceBean;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.*;
|
||||
import net.dv8tion.jda.api.requests.restaction.pagination.ReactionPaginationAction;
|
||||
@@ -33,10 +33,10 @@ public class MessageCacheBean implements MessageCache {
|
||||
private Bot bot;
|
||||
|
||||
@Autowired
|
||||
private UserManagementService userManagementService;
|
||||
private UserManagementServiceBean userManagementService;
|
||||
|
||||
@Autowired
|
||||
private EmoteManagementService emoteManagementService;
|
||||
private EmoteManagementServiceBean emoteManagementService;
|
||||
|
||||
@Autowired
|
||||
private EmoteService emoteService;
|
||||
@@ -153,9 +153,9 @@ public class MessageCacheBean implements MessageCache {
|
||||
ReactionPaginationAction users = reaction.retrieveUsers().cache(false);
|
||||
CachedReaction.CachedReactionBuilder builder = CachedReaction.builder();
|
||||
|
||||
List<AUser> ausers = new ArrayList<>();
|
||||
List<UserDto> ausers = new ArrayList<>();
|
||||
users.forEachAsync(user -> {
|
||||
ausers.add(AUser.builder().id(user.getIdLong()).build());
|
||||
ausers.add(UserDto.builder().id(user.getIdLong()).build());
|
||||
return false;
|
||||
}).thenAccept(o -> future.complete(builder.build()));
|
||||
builder.users(ausers);
|
||||
|
||||
@@ -2,8 +2,8 @@ package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.exception.EmoteException;
|
||||
import dev.sheldan.abstracto.core.exception.GuildException;
|
||||
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import dev.sheldan.abstracto.core.models.AEmote;
|
||||
import dev.sheldan.abstracto.core.service.management.EmoteManagementServiceBean;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
@@ -22,7 +22,7 @@ public class MessageServiceBean implements MessageService {
|
||||
private Bot bot;
|
||||
|
||||
@Autowired
|
||||
private EmoteManagementService emoteManagementService;
|
||||
private EmoteManagementServiceBean emoteManagementService;
|
||||
|
||||
@Override
|
||||
public void addReactionToMessage(String emoteKey, Long serverId, Message message) {
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.DynamicKeyLoader;
|
||||
import dev.sheldan.abstracto.core.models.converter.PostTargetConverter;
|
||||
import dev.sheldan.abstracto.core.exception.ChannelException;
|
||||
import dev.sheldan.abstracto.core.exception.GuildException;
|
||||
import dev.sheldan.abstracto.core.service.management.PostTargetManagement;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import dev.sheldan.abstracto.core.models.database.PostTarget;
|
||||
import dev.sheldan.abstracto.core.models.PostTarget;
|
||||
import dev.sheldan.abstracto.core.models.dto.PostTargetDto;
|
||||
import dev.sheldan.abstracto.core.service.management.PostTargetManagementBean;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementServiceBean;
|
||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
@@ -26,10 +28,10 @@ import java.util.concurrent.CompletableFuture;
|
||||
public class PostTargetServiceBean implements PostTargetService {
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
private ServerManagementServiceBean serverManagementService;
|
||||
|
||||
@Autowired
|
||||
private PostTargetManagement postTargetManagement;
|
||||
private PostTargetManagementBean postTargetManagement;
|
||||
|
||||
@Autowired
|
||||
private Bot botService;
|
||||
@@ -40,19 +42,22 @@ public class PostTargetServiceBean implements PostTargetService {
|
||||
@Autowired
|
||||
private ChannelService channelService;
|
||||
|
||||
@Autowired
|
||||
private PostTargetConverter postTargetConverter;
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Message> sendTextInPostTarget(String text, PostTarget target) {
|
||||
public CompletableFuture<Message> sendTextInPostTarget(String text, PostTargetDto target) {
|
||||
TextChannel textChannelForPostTarget = getTextChannelForPostTarget(target);
|
||||
return textChannelForPostTarget.sendMessage(text).submit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Message> sendEmbedInPostTarget(MessageEmbed embed, PostTarget target) {
|
||||
public CompletableFuture<Message> sendEmbedInPostTarget(MessageEmbed embed, PostTargetDto target) {
|
||||
TextChannel textChannelForPostTarget = getTextChannelForPostTarget(target);
|
||||
return textChannelForPostTarget.sendMessage(embed).submit();
|
||||
}
|
||||
|
||||
private TextChannel getTextChannelForPostTarget(PostTarget target) {
|
||||
private TextChannel getTextChannelForPostTarget(PostTargetDto target) {
|
||||
Guild guild = botService.getInstance().getGuildById(target.getServerReference().getId());
|
||||
if(guild != null) {
|
||||
TextChannel textChannelById = guild.getTextChannelById(target.getChannelReference().getId());
|
||||
@@ -69,10 +74,11 @@ public class PostTargetServiceBean implements PostTargetService {
|
||||
}
|
||||
}
|
||||
|
||||
private PostTarget getPostTarget(String postTargetName, Long serverId) {
|
||||
@Override
|
||||
public PostTargetDto getPostTarget(String postTargetName, Long serverId) {
|
||||
PostTarget postTarget = postTargetManagement.getPostTarget(postTargetName, serverId);
|
||||
if(postTarget != null) {
|
||||
return postTarget;
|
||||
return postTargetConverter.fromPostTarget(postTarget);
|
||||
} else {
|
||||
log.error("PostTarget {} in server {} was not found!", postTargetName, serverId);
|
||||
throw new ChannelException(String.format("Incorrect post target configuration: Post target %s was not found.", postTargetName));
|
||||
@@ -81,30 +87,30 @@ public class PostTargetServiceBean implements PostTargetService {
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Message> sendTextInPostTarget(String text, String postTargetName, Long serverId) {
|
||||
PostTarget postTarget = this.getPostTarget(postTargetName, serverId);
|
||||
PostTargetDto postTarget = this.getPostTarget(postTargetName, serverId);
|
||||
return this.sendTextInPostTarget(text, postTarget);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Message> sendEmbedInPostTarget(MessageEmbed embed, String postTargetName, Long serverId) {
|
||||
PostTarget postTarget = this.getPostTarget(postTargetName, serverId);
|
||||
PostTargetDto postTarget = this.getPostTarget(postTargetName, serverId);
|
||||
return this.sendEmbedInPostTarget(embed, postTarget);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CompletableFuture<Message>> sendEmbedInPostTarget(MessageToSend message, String postTargetName, Long serverId) {
|
||||
PostTarget postTarget = this.getPostTarget(postTargetName, serverId);
|
||||
PostTargetDto postTarget = this.getPostTarget(postTargetName, serverId);
|
||||
return this.sendEmbedInPostTarget(message, postTarget);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CompletableFuture<Message>> sendEmbedInPostTarget(MessageToSend message, PostTarget target) {
|
||||
public List<CompletableFuture<Message>> sendEmbedInPostTarget(MessageToSend message, PostTargetDto target) {
|
||||
TextChannel textChannelForPostTarget = getTextChannelForPostTarget(target);
|
||||
return channelService.sendMessageToEndInTextChannel(message, textChannelForPostTarget);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CompletableFuture<Message>> editEmbedInPostTarget(Long messageId, MessageToSend message, PostTarget target) {
|
||||
public List<CompletableFuture<Message>> editEmbedInPostTarget(Long messageId, MessageToSend message, PostTargetDto target) {
|
||||
TextChannel textChannelForPostTarget = getTextChannelForPostTarget(target);
|
||||
String messageText = message.getMessage();
|
||||
if(StringUtils.isBlank(messageText)) {
|
||||
@@ -115,7 +121,7 @@ public class PostTargetServiceBean implements PostTargetService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void editOrCreatedInPostTarget(Long messageId, MessageToSend messageToSend, PostTarget target, List<CompletableFuture<Message>> future) {
|
||||
public void editOrCreatedInPostTarget(Long messageId, MessageToSend messageToSend, PostTargetDto target, List<CompletableFuture<Message>> future) {
|
||||
TextChannel textChannelForPostTarget = getTextChannelForPostTarget(target);
|
||||
if(StringUtils.isBlank(messageToSend.getMessage().trim())) {
|
||||
textChannelForPostTarget
|
||||
@@ -145,7 +151,7 @@ public class PostTargetServiceBean implements PostTargetService {
|
||||
|
||||
@Override
|
||||
public void editOrCreatedInPostTarget(Long messageId, MessageToSend messageToSend, String postTargetName, Long serverId, List<CompletableFuture<Message>> future) {
|
||||
PostTarget postTarget = this.getPostTarget(postTargetName, serverId);
|
||||
PostTargetDto postTarget = this.getPostTarget(postTargetName, serverId);
|
||||
this.editOrCreatedInPostTarget(messageId, messageToSend, postTarget, future);
|
||||
}
|
||||
|
||||
@@ -159,7 +165,7 @@ public class PostTargetServiceBean implements PostTargetService {
|
||||
|
||||
@Override
|
||||
public List<CompletableFuture<Message>> editEmbedInPostTarget(Long messageId, MessageToSend message, String postTargetName, Long serverId) {
|
||||
PostTarget postTarget = this.getPostTarget(postTargetName, serverId);
|
||||
PostTargetDto postTarget = this.getPostTarget(postTargetName, serverId);
|
||||
return editEmbedInPostTarget(messageId, message, postTarget);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.converter.RoleConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.ServerConverter;
|
||||
import dev.sheldan.abstracto.core.listener.ServerConfigListener;
|
||||
import dev.sheldan.abstracto.core.models.*;
|
||||
import dev.sheldan.abstracto.core.models.dto.RoleDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import dev.sheldan.abstracto.core.models.utils.ChannelUtils;
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementServiceBean;
|
||||
import dev.sheldan.abstracto.core.service.management.RoleManagementServiceBean;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementServiceBean;
|
||||
import dev.sheldan.abstracto.core.utils.SnowflakeUtils;
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.RoleManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannelType;
|
||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.JDA;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
@@ -36,17 +38,23 @@ public class StartupServiceBean implements Startup {
|
||||
private List<? extends ListenerAdapter> listeners;
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
private ServerManagementServiceBean serverManagementService;
|
||||
|
||||
@Autowired
|
||||
private ChannelManagementService channelManagementService;
|
||||
private ChannelManagementServiceBean channelManagementService;
|
||||
|
||||
@Autowired
|
||||
private RoleManagementService roleManagementService;
|
||||
private RoleManagementServiceBean roleManagementService;
|
||||
|
||||
@Autowired
|
||||
private ServerConverter serverConverter;
|
||||
|
||||
@Autowired
|
||||
private List<ServerConfigListener> configListeners;
|
||||
|
||||
@Autowired
|
||||
private RoleConverter roleConverter;
|
||||
|
||||
|
||||
@Override
|
||||
public void startBot() throws LoginException {
|
||||
@@ -58,16 +66,17 @@ public class StartupServiceBean implements Startup {
|
||||
@Transactional
|
||||
public void synchronize() {
|
||||
log.info("Synchronizing servers.");
|
||||
synchronizeServers();
|
||||
// synchronizeServers();
|
||||
log.info("Done synchronizing servers");
|
||||
}
|
||||
/*
|
||||
|
||||
private void synchronizeServers(){
|
||||
JDA instance = service.getInstance();
|
||||
List<Guild> onlineGuilds = instance.getGuilds();
|
||||
Set<Long> availableServers = SnowflakeUtils.getSnowflakeIds(onlineGuilds);
|
||||
availableServers.forEach(aLong -> {
|
||||
AServer newAServer = serverManagementService.loadOrCreate(aLong);
|
||||
ServerDto newAServer = serverManagementService.loadOrCreate(aLong);
|
||||
Guild newGuild = instance.getGuildById(aLong);
|
||||
log.debug("Synchronizing server: {}", aLong);
|
||||
if(newGuild != null){
|
||||
@@ -81,20 +90,20 @@ public class StartupServiceBean implements Startup {
|
||||
|
||||
}
|
||||
|
||||
private void synchronizeRolesOf(Guild guild, AServer existingAServer){
|
||||
private void synchronizeRolesOf(Guild guild, ServerDto existingAServer){
|
||||
List<Role> existingRoles = guild.getRoles();
|
||||
List<ARole> knownARoles = existingAServer.getRoles();
|
||||
List<RoleDto> knownARoles = existingAServer.getRoles();
|
||||
Set<Long> knownRolesId = SnowflakeUtils.getOwnItemsIds(knownARoles);
|
||||
Set<Long> availableRoles = SnowflakeUtils.getSnowflakeIds(existingRoles);
|
||||
Set<Long> newRoles = SetUtils.disjunction(availableRoles, knownRolesId);
|
||||
newRoles.forEach(aLong -> {
|
||||
ARole newRole = roleManagementService.createRole(aLong);
|
||||
log.debug("Adding new role: {}", aLong);
|
||||
existingAServer.getRoles().add(newRole);
|
||||
existingAServer.getRoles().add(roleConverter.fromARole(newRole));
|
||||
});
|
||||
}
|
||||
|
||||
private void synchronizeChannelsOf(Guild guild, AServer existingServer){
|
||||
private void synchronizeChannelsOf(Guild guild, ServerDto existingServer){
|
||||
List<GuildChannel> available = guild.getChannels();
|
||||
List<AChannel> knownChannels = existingServer.getChannels().stream().filter(aChannel -> !aChannel.getDeleted()).collect(Collectors.toList());
|
||||
Set<Long> knownChannelsIds = SnowflakeUtils.getOwnItemsIds(knownChannels);
|
||||
@@ -103,7 +112,7 @@ public class StartupServiceBean implements Startup {
|
||||
newChannels.forEach(aLong -> {
|
||||
GuildChannel channel1 = available.stream().filter(channel -> channel.getIdLong() == aLong).findFirst().get();
|
||||
log.debug("Adding new channel: {}", aLong);
|
||||
AChannelType type = AChannel.getAChannelType(channel1.getType());
|
||||
AChannelType type = ChannelUtils.getAChannelType(channel1.getType());
|
||||
AChannel newChannel = channelManagementService.createChannel(channel1.getIdLong(), type);
|
||||
serverManagementService.addChannelToServer(existingServer, newChannel);
|
||||
});
|
||||
@@ -113,4 +122,7 @@ public class StartupServiceBean implements Startup {
|
||||
channelManagementService.markAsDeleted(aLong);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.service.UserService;
|
||||
import dev.sheldan.abstracto.core.models.converter.UserInServerConverter;
|
||||
import dev.sheldan.abstracto.core.models.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.UserInServerDto;
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementServiceBean;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class UserServiceBean implements UserService {
|
||||
|
||||
@Autowired
|
||||
private UserManagementServiceBean userManagementServiceBean;
|
||||
|
||||
@Override
|
||||
public UserInServerDto loadUser(Member member) {
|
||||
return userManagementServiceBean.loadUser(member.getGuild().getIdLong(), member.getIdLong());
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserInServerDto loadUser(Long serverId, Long userId) {
|
||||
return userManagementServiceBean.loadUser(serverId, userId);
|
||||
}
|
||||
}
|
||||
@@ -2,10 +2,17 @@ package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.exception.ChannelGroupException;
|
||||
import dev.sheldan.abstracto.core.exception.ChannelException;
|
||||
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 dev.sheldan.abstracto.core.models.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.AChannelGroup;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import dev.sheldan.abstracto.core.models.converter.ChannelConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.ChannelGroupConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.ServerConverter;
|
||||
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 dev.sheldan.abstracto.core.repository.ChannelGroupRepository;
|
||||
import org.checkerframework.checker.units.qual.A;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -13,39 +20,45 @@ import java.util.List;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
@Component
|
||||
public class ChannelGroupManagementServiceBean implements ChannelGroupManagementService {
|
||||
public class ChannelGroupManagementServiceBean {
|
||||
|
||||
@Autowired
|
||||
private ChannelGroupRepository channelGroupRepository;
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
private ServerManagementServiceBean serverManagementService;
|
||||
|
||||
@Override
|
||||
public AChannelGroup createChannelGroup(String name, AServer server) {
|
||||
@Autowired
|
||||
private ServerConverter serverConverter;
|
||||
|
||||
@Autowired
|
||||
private ChannelGroupConverter channelGroupConverter;
|
||||
|
||||
@Autowired
|
||||
private ChannelConverter channelConverter;
|
||||
|
||||
public AChannelGroup createChannelGroup(String name, ServerDto server) {
|
||||
name = name.toLowerCase();
|
||||
AChannelGroup channelGroup = AChannelGroup
|
||||
.builder()
|
||||
.groupName(name)
|
||||
.server(server)
|
||||
.server(serverConverter.fromDto(server))
|
||||
.build();
|
||||
channelGroupRepository.save(channelGroup);
|
||||
return channelGroup;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteChannelGroup(String name, AServer server) {
|
||||
public void deleteChannelGroup(String name, ServerDto server) {
|
||||
name = name.toLowerCase();
|
||||
AChannelGroup existing = findByNameAndServer(name, server);
|
||||
AChannelGroup existing = findByNameAndServer(name, serverConverter.fromDto(server));
|
||||
if(existing == null) {
|
||||
throw new ChannelGroupException(String.format("Channel group %s does not exist", name));
|
||||
}
|
||||
channelGroupRepository.delete(existing);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AChannelGroup addChannelToChannelGroup(AChannelGroup channelGroup, AChannel channel) {
|
||||
Predicate<AChannel> channelInGroupPredicate = channel1 -> channel1.getId().equals(channel.getId());
|
||||
public ChannelGroupDto addChannelToChannelGroup(ChannelGroupDto channelGroup, ChannelDto channel) {
|
||||
Predicate<ChannelDto> channelInGroupPredicate = channel1 -> channel1.getId().equals(channel.getId());
|
||||
if(channelGroup == null) {
|
||||
throw new ChannelGroupException("Channel group was not found.");
|
||||
}
|
||||
@@ -53,36 +66,43 @@ public class ChannelGroupManagementServiceBean implements ChannelGroupManagement
|
||||
throw new ChannelException(String.format("Channel %s is already part of group %s.", channel.getId(), channelGroup.getGroupName()));
|
||||
}
|
||||
channelGroup.getChannels().add(channel);
|
||||
channel.getGroups().add(channelGroup);
|
||||
channelGroupRepository.save(channelGroup);
|
||||
AChannel channel1 = channelConverter.fromDto(channel);
|
||||
AChannelGroup entity = channelGroupConverter.fromChannelGroup(channelGroup);
|
||||
channel1.getGroups().add(entity);
|
||||
channelGroupRepository.save(entity);
|
||||
return channelGroup;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeChannelFromChannelGroup(AChannelGroup channelGroup, AChannel channel) {
|
||||
Predicate<AChannel> channelInGroupPredicate = channel1 -> channel1.getId().equals(channel.getId());
|
||||
public void removeChannelFromChannelGroup(ChannelGroupDto channelGroup, ChannelDto channel) {
|
||||
Predicate<ChannelDto> channelInGroupPredicate = channel1 -> channel1.getId().equals(channel.getId());
|
||||
if(channelGroup.getChannels().stream().noneMatch(channelInGroupPredicate)) {
|
||||
throw new ChannelException(String.format("Channel %s is not part of group %s.", channel.getId(), channelGroup.getGroupName()));
|
||||
}
|
||||
channelGroup.getChannels().removeIf(channelInGroupPredicate);
|
||||
channel.getGroups().removeIf(channelGroup1 -> channelGroup1.getId().equals(channelGroup.getId()));
|
||||
channelGroupRepository.save(channelGroup);
|
||||
channelGroupRepository.save(channelGroupConverter.fromChannelGroup(channelGroup));
|
||||
}
|
||||
|
||||
@Override
|
||||
public AChannelGroup findByNameAndServer(String name, AServer server) {
|
||||
public ChannelGroupDto findByNameAndServer(String name, ServerDto server) {
|
||||
name = name.toLowerCase();
|
||||
AChannelGroup byGroupNameAndServer = channelGroupRepository.findByGroupNameAndServer(name, serverConverter.fromDto(server));
|
||||
return channelGroupConverter.fromChannelGroup(byGroupNameAndServer);
|
||||
}
|
||||
|
||||
private AChannelGroup findByNameAndServer(String name, AServer server) {
|
||||
name = name.toLowerCase();
|
||||
return channelGroupRepository.findByGroupNameAndServer(name, server);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AChannelGroup> findAllInServer(AServer server) {
|
||||
public List<AChannelGroup> findAllInServer(ServerDto server) {
|
||||
return findAllInServer(serverConverter.fromDto(server));
|
||||
}
|
||||
|
||||
private List<AChannelGroup> findAllInServer(AServer server) {
|
||||
return channelGroupRepository.findByServer(server);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AChannelGroup> findAllInServer(Long serverId) {
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
ServerDto server = serverManagementService.loadOrCreate(serverId);
|
||||
return findAllInServer(server);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannelType;
|
||||
import dev.sheldan.abstracto.core.models.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.AChannelType;
|
||||
import dev.sheldan.abstracto.core.models.converter.ChannelConverter;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.repository.ChannelRepository;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -9,30 +11,30 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class ChannelManagementServiceBean implements ChannelManagementService {
|
||||
public class ChannelManagementServiceBean {
|
||||
|
||||
@Autowired
|
||||
private ChannelRepository repository;
|
||||
|
||||
@Override
|
||||
public AChannel loadChannel(Long id) {
|
||||
return repository.getOne(id);
|
||||
@Autowired
|
||||
private ChannelConverter channelConverter;
|
||||
|
||||
public ChannelDto loadChannel(Long id) {
|
||||
return channelConverter.fromChannel(repository.getOne(id));
|
||||
}
|
||||
|
||||
@Override
|
||||
public AChannel createChannel(Long id, AChannelType type) {
|
||||
public ChannelDto createChannel(Long id, AChannelType type) {
|
||||
log.info("Creating channel {} with type {}", id, type);
|
||||
return repository.save(AChannel.builder().id(id).type(type).deleted(false).build());
|
||||
AChannel save = repository.save(AChannel.builder().id(id).type(type).deleted(false).build());
|
||||
return channelConverter.fromChannel(save);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void markAsDeleted(Long id) {
|
||||
AChannel channel = loadChannel(id);
|
||||
ChannelDto channel = loadChannel(id);
|
||||
channel.setDeleted(true);
|
||||
repository.save(channel);
|
||||
repository.save(channelConverter.fromDto(channel));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeChannel(Long id) {
|
||||
log.info("Deleting channel {}", id);
|
||||
repository.deleteById(id);
|
||||
|
||||
@@ -1,21 +1,20 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AConfig;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.AConfig;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import dev.sheldan.abstracto.core.repository.ConfigRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class ConfigManagementServiceBean implements ConfigManagementService {
|
||||
public class ConfigManagementServiceBean {
|
||||
|
||||
@Autowired
|
||||
private ConfigRepository configRepository;
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
private ServerManagementServiceBean serverManagementService;
|
||||
|
||||
@Override
|
||||
public void setOrCreateStringValue(Long serverId, String name, String value) {
|
||||
AConfig config = loadConfig(serverId, name);
|
||||
if(config == null) {
|
||||
@@ -26,7 +25,6 @@ public class ConfigManagementServiceBean implements ConfigManagementService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOrCreateDoubleValue(Long serverId, String name, Double value) {
|
||||
AConfig config = loadConfig(serverId, name);
|
||||
if(config == null) {
|
||||
@@ -37,9 +35,8 @@ public class ConfigManagementServiceBean implements ConfigManagementService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AConfig createConfig(Long serverId, String name, String value) {
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
AServer server = AServer.builder().id(serverId).build();
|
||||
AConfig config = AConfig
|
||||
.builder()
|
||||
.stringValue(value)
|
||||
@@ -50,9 +47,8 @@ public class ConfigManagementServiceBean implements ConfigManagementService {
|
||||
return config;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AConfig createConfig(Long serverId, String name, Double value) {
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
AServer server = AServer.builder().id(serverId).build();
|
||||
AConfig config = AConfig
|
||||
.builder()
|
||||
.doubleValue(value)
|
||||
@@ -63,7 +59,6 @@ public class ConfigManagementServiceBean implements ConfigManagementService {
|
||||
return config;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AConfig createIfNotExists(Long serverId, String name, String value) {
|
||||
AConfig config = loadConfig(serverId, name);
|
||||
if(config == null) {
|
||||
@@ -72,7 +67,6 @@ public class ConfigManagementServiceBean implements ConfigManagementService {
|
||||
return config;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AConfig createIfNotExists(Long serverId, String name, Double value) {
|
||||
AConfig config = loadConfig(serverId, name);
|
||||
if(config == null) {
|
||||
@@ -81,7 +75,6 @@ public class ConfigManagementServiceBean implements ConfigManagementService {
|
||||
return config;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AConfig loadConfig(Long serverId, String name) {
|
||||
return configRepository.findAConfigByServerIdAndName(serverId, name);
|
||||
}
|
||||
|
||||
@@ -2,8 +2,12 @@ package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.DynamicKeyLoader;
|
||||
import dev.sheldan.abstracto.core.exception.EmoteException;
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.AEmote;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import dev.sheldan.abstracto.core.models.converter.EmoteConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.ServerConverter;
|
||||
import dev.sheldan.abstracto.core.models.dto.EmoteDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import dev.sheldan.abstracto.core.service.Bot;
|
||||
import dev.sheldan.abstracto.core.repository.EmoteRepository;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
@@ -14,13 +18,13 @@ import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Component
|
||||
public class EmoteManagementServiceBean implements EmoteManagementService {
|
||||
public class EmoteManagementServiceBean {
|
||||
|
||||
@Autowired
|
||||
private EmoteRepository repository;
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
private ServerManagementServiceBean serverManagementService;
|
||||
|
||||
@Autowired
|
||||
private DynamicKeyLoader dynamicKeyLoader;
|
||||
@@ -28,19 +32,23 @@ public class EmoteManagementServiceBean implements EmoteManagementService {
|
||||
@Autowired
|
||||
private Bot botService;
|
||||
|
||||
@Override
|
||||
@Autowired
|
||||
private ServerConverter serverConverter;
|
||||
|
||||
@Autowired
|
||||
private EmoteConverter emoteConverter;
|
||||
|
||||
public AEmote loadEmote(Long id) {
|
||||
return repository.getOne(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AEmote createCustomEmote(String name, String emoteKey, Long emoteId, Boolean animated, Long serverId) {
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
ServerDto server = ServerDto.builder().id(serverId).build();
|
||||
return this.createCustomEmote(name, emoteKey, emoteId, animated, server);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AEmote createCustomEmote(String name, String emoteKey, Long emoteId, Boolean animated, AServer server) {
|
||||
public AEmote createCustomEmote(String name, String emoteKey, Long emoteId, Boolean animated, ServerDto server) {
|
||||
AServer aServer = serverConverter.fromDto(server);
|
||||
validateEmoteName(name);
|
||||
AEmote emoteToCreate = AEmote
|
||||
.builder()
|
||||
@@ -49,46 +57,42 @@ public class EmoteManagementServiceBean implements EmoteManagementService {
|
||||
.animated(animated)
|
||||
.emoteId(emoteId)
|
||||
.emoteKey(emoteKey)
|
||||
.serverRef(server)
|
||||
.serverRef(aServer)
|
||||
.build();
|
||||
repository.save(emoteToCreate);
|
||||
return emoteToCreate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AEmote createDefaultEmote(String name, String emoteKey, Long serverId) {
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
ServerDto server = ServerDto.builder().id(serverId).build();
|
||||
return createDefaultEmote(name, emoteKey, server);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AEmote createDefaultEmote(String name, String emoteKey, AServer server) {
|
||||
public AEmote createDefaultEmote(String name, String emoteKey, ServerDto server) {
|
||||
validateEmoteName(name);
|
||||
AServer aServer = AServer.builder().id(server.getId()).build();
|
||||
AEmote emoteToCreate = AEmote
|
||||
.builder()
|
||||
.custom(false)
|
||||
.name(name)
|
||||
.emoteKey(emoteKey)
|
||||
.serverRef(server)
|
||||
.serverRef(aServer)
|
||||
.build();
|
||||
repository.save(emoteToCreate);
|
||||
return emoteToCreate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<AEmote> loadEmoteByName(String name, Long serverId) {
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
ServerDto server = ServerDto.builder().id(serverId).build();
|
||||
return loadEmoteByName(name, server);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<AEmote> loadEmoteByName(String name, AServer server) {
|
||||
return Optional.ofNullable(repository.findAEmoteByNameAndServerRef(name, server));
|
||||
public Optional<AEmote> loadEmoteByName(String name, ServerDto server) {
|
||||
return Optional.ofNullable(repository.findAEmoteByNameAndServerRef(name, serverConverter.fromDto(server)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public AEmote setEmoteToCustomEmote(String name, String emoteKey, Long emoteId, Boolean animated, Long serverId) {
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
ServerDto server = ServerDto.builder().id(serverId).build();
|
||||
AEmote emote;
|
||||
Optional<AEmote> emoteOptional = loadEmoteByName(name, server);
|
||||
if(!emoteOptional.isPresent()) {
|
||||
@@ -104,11 +108,10 @@ public class EmoteManagementServiceBean implements EmoteManagementService {
|
||||
return emote;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AEmote setEmoteToCustomEmote(String name, Emote emote, Long serverId) {
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
ServerDto server = ServerDto.builder().id(serverId).build();
|
||||
AEmote emoteBeingSet;
|
||||
Optional<AEmote> emoteOptional = loadEmoteByName(name, serverId);
|
||||
Optional<AEmote> emoteOptional = loadEmoteByName(name, server);
|
||||
if(!emoteOptional.isPresent()) {
|
||||
emoteBeingSet = this.createCustomEmote(name, emote.getName(), emote.getIdLong(), emote.isAnimated(), server);
|
||||
} else {
|
||||
@@ -122,9 +125,8 @@ public class EmoteManagementServiceBean implements EmoteManagementService {
|
||||
return emoteBeingSet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AEmote setEmoteToDefaultEmote(String name, String emoteKey, Long serverId) {
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
public EmoteDto setEmoteToDefaultEmote(String name, String emoteKey, Long serverId) {
|
||||
ServerDto server = ServerDto.builder().id(serverId).build();
|
||||
AEmote emoteBeingSet;
|
||||
Optional<AEmote> emoteOptional = loadEmoteByName(name, serverId);
|
||||
if(!emoteOptional.isPresent()) {
|
||||
@@ -135,21 +137,19 @@ public class EmoteManagementServiceBean implements EmoteManagementService {
|
||||
emoteBeingSet.setCustom(false);
|
||||
repository.save(emoteBeingSet);
|
||||
}
|
||||
return emoteBeingSet;
|
||||
return emoteConverter.fromEmote(emoteBeingSet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean emoteExists(String name, Long serverId) {
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
return emoteExists(name, server);
|
||||
ServerDto serverDto = ServerDto.builder().id(serverId).build();
|
||||
return emoteExists(name, serverDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean emoteExists(String name, AServer server) {
|
||||
return repository.existsByNameAndServerRef(name, server);
|
||||
public boolean emoteExists(String name, ServerDto server) {
|
||||
AServer server1 = AServer.builder().id(server.getId()).build();
|
||||
return repository.existsByNameAndServerRef(name, server1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AEmote createCustomEmote(String name, String emoteKey, Long emoteId, Boolean animated) {
|
||||
AEmote emote = AEmote.builder()
|
||||
.animated(animated)
|
||||
@@ -162,7 +162,6 @@ public class EmoteManagementServiceBean implements EmoteManagementService {
|
||||
return emote;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AEmote createDefaultEmote(String name, String emoteKey) {
|
||||
AEmote emote = AEmote.builder()
|
||||
.custom(false)
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AFeatureFlag;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.AFeatureFlag;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import dev.sheldan.abstracto.core.repository.FeatureFlagRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -9,38 +10,35 @@ import org.springframework.stereotype.Component;
|
||||
import java.util.Optional;
|
||||
|
||||
@Component
|
||||
public class FeatureFlagManagementServiceBean implements FeatureFlagManagementService {
|
||||
public class FeatureFlagManagementServiceBean {
|
||||
|
||||
@Autowired
|
||||
private FeatureFlagRepository repository;
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
private ServerManagementServiceBean serverManagementService;
|
||||
|
||||
@Override
|
||||
public void createFeatureFlag(String key, Long serverId, Boolean newValue) {
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
ServerDto server = ServerDto.builder().id(serverId).build();
|
||||
createFeatureFlag(key, server, newValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createFeatureFlag(String key, AServer server, Boolean newValue) {
|
||||
public void createFeatureFlag(String key, ServerDto server, Boolean newValue) {
|
||||
AServer aServer = AServer.builder().id(server.getId()).build();
|
||||
AFeatureFlag featureFlag = AFeatureFlag
|
||||
.builder()
|
||||
.enabled(newValue)
|
||||
.key(key)
|
||||
.server(server)
|
||||
.server(aServer)
|
||||
.build();
|
||||
repository.save(featureFlag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getFeatureFlagValue(String key, Long serverId) {
|
||||
Optional<AFeatureFlag> featureFlag = getFeatureFlag(key, serverId);
|
||||
return featureFlag.isPresent() && featureFlag.get().isEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateOrCreateFeatureFlag(String key, Long serverId, Boolean newValue) {
|
||||
Optional<AFeatureFlag> existing = getFeatureFlag(key, serverId);
|
||||
if(existing.isPresent()) {
|
||||
@@ -52,9 +50,8 @@ public class FeatureFlagManagementServiceBean implements FeatureFlagManagementSe
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<AFeatureFlag> getFeatureFlag(String key, Long serverId) {
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
AServer server = AServer.builder().id(serverId).build();
|
||||
return Optional.ofNullable(repository.findByServerAndKey(server, key));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,27 +2,28 @@ package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.DynamicKeyLoader;
|
||||
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;
|
||||
import dev.sheldan.abstracto.core.models.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.AServer;
|
||||
import dev.sheldan.abstracto.core.models.PostTarget;
|
||||
import dev.sheldan.abstracto.core.models.dto.ChannelDto;
|
||||
import dev.sheldan.abstracto.core.models.dto.ServerDto;
|
||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
||||
import dev.sheldan.abstracto.core.repository.PostTargetRepository;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class PostTargetManagementBean implements PostTargetManagement {
|
||||
public class PostTargetManagementBean {
|
||||
@Autowired
|
||||
private PostTargetRepository postTargetRepository;
|
||||
|
||||
@Autowired
|
||||
private ChannelManagementService channelManagementService;
|
||||
private ChannelManagementServiceBean channelManagementService;
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
private ServerManagementServiceBean serverManagementService;
|
||||
|
||||
@Autowired
|
||||
private DynamicKeyLoader dynamicKeyLoader;
|
||||
@@ -30,18 +31,25 @@ public class PostTargetManagementBean implements PostTargetManagement {
|
||||
@Autowired
|
||||
private PostTargetService postTargetService;
|
||||
|
||||
@Override
|
||||
public void createPostTarget(String name, AServer server, AChannel targetChannel) {
|
||||
public void createPostTarget(String name, ServerDto server, ChannelDto targetChannel) {
|
||||
if(!postTargetService.validPostTarget(name)) {
|
||||
throw new PostTargetException("PostTarget not found. Possible values are: " + String.join(", ", dynamicKeyLoader.getPostTargetsAsList()));
|
||||
}
|
||||
log.info("Creating post target {} pointing towards {}", name, targetChannel);
|
||||
postTargetRepository.save(PostTarget.builder().name(name).channelReference(targetChannel).serverReference(server).build());
|
||||
AChannel aChannel = AChannel.builder().id(targetChannel.getId()).build();
|
||||
AServer aServer = AServer.builder().id(server.getId()).build();
|
||||
PostTarget build = PostTarget
|
||||
.builder()
|
||||
.name(name)
|
||||
.channelReference(aChannel)
|
||||
.serverReference(aServer)
|
||||
.build();
|
||||
postTargetRepository.save(build);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createOrUpdate(String name, AServer server, AChannel targetChannel) {
|
||||
PostTarget existing = postTargetRepository.findPostTargetByNameAndServerReference(name, server);
|
||||
public void createOrUpdate(String name, ServerDto server, ChannelDto targetChannel) {
|
||||
AServer aServer = AServer.builder().id(server.getId()).build();
|
||||
PostTarget existing = postTargetRepository.findPostTargetByNameAndServerReference(name, aServer);
|
||||
if(existing == null){
|
||||
this.createPostTarget(name, server, targetChannel);
|
||||
} else {
|
||||
@@ -49,34 +57,30 @@ public class PostTargetManagementBean implements PostTargetManagement {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createOrUpdate(String name, AServer server, Long channelId) {
|
||||
AChannel dbChannel = channelManagementService.loadChannel(channelId);
|
||||
createOrUpdate(name, server, dbChannel);
|
||||
public void createOrUpdate(String name, ServerDto server, Long channelId) {
|
||||
ChannelDto channelDto = ChannelDto.builder().id(channelId).build();
|
||||
createOrUpdate(name, server, channelDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createOrUpdate(String name, Long serverId, Long channelId) {
|
||||
AChannel dbChannel = channelManagementService.loadChannel(channelId);
|
||||
AServer dbServer = serverManagementService.loadOrCreate(serverId);
|
||||
createOrUpdate(name, dbServer, dbChannel);
|
||||
ChannelDto channelDto = ChannelDto.builder().id(channelId).build();
|
||||
ServerDto serverDto = ServerDto.builder().id(serverId).build();
|
||||
createOrUpdate(name, serverDto, channelDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Cacheable("posttargets")
|
||||
public PostTarget getPostTarget(String name, AServer server) {
|
||||
return postTargetRepository.findPostTargetByNameAndServerReference(name, server);
|
||||
public PostTarget getPostTarget(String name, ServerDto server) {
|
||||
AServer aServer = AServer.builder().id(server.getId()).build();
|
||||
return postTargetRepository.findPostTargetByNameAndServerReference(name, aServer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PostTarget getPostTarget(String name, Long serverId) {
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
return getPostTarget(name, server);
|
||||
ServerDto serverDto = ServerDto.builder().id(serverId).build();
|
||||
return getPostTarget(name, serverDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updatePostTarget(PostTarget target, AServer server, AChannel newTargetChannel) {
|
||||
postTargetRepository.getOne(target.getId()).setChannelReference(newTargetChannel);
|
||||
public void updatePostTarget(PostTarget target, ServerDto server, ChannelDto newTargetChannel) {
|
||||
AChannel aChannel = AChannel.builder().id(newTargetChannel.getId()).build();
|
||||
postTargetRepository.getOne(target.getId()).setChannelReference(aChannel);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||
import dev.sheldan.abstracto.core.models.ARole;
|
||||
import dev.sheldan.abstracto.core.repository.RoleRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class RoleManagementServiceBean implements RoleManagementService {
|
||||
public class RoleManagementServiceBean {
|
||||
|
||||
@Autowired
|
||||
private RoleRepository repository;
|
||||
|
||||
@Override
|
||||
public ARole createRole(Long id) {
|
||||
return repository.save(ARole.builder().id(id).build());
|
||||
}
|
||||
|
||||
@@ -1,91 +1,99 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.*;
|
||||
import dev.sheldan.abstracto.core.models.*;
|
||||
import dev.sheldan.abstracto.core.models.converter.PostTargetConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.ServerConverter;
|
||||
import dev.sheldan.abstracto.core.models.dto.*;
|
||||
import dev.sheldan.abstracto.core.repository.ServerRepository;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class ServerManagementServiceBean implements ServerManagementService {
|
||||
public class ServerManagementServiceBean {
|
||||
|
||||
@Autowired
|
||||
private ServerRepository repository;
|
||||
|
||||
@Autowired
|
||||
private PostTargetManagement postTargetManagement;
|
||||
private PostTargetManagementBean postTargetManagement;
|
||||
|
||||
@Autowired
|
||||
private ChannelManagementService channelManagementService;
|
||||
private ChannelManagementServiceBean channelManagementService;
|
||||
|
||||
@Autowired
|
||||
private UserManagementService userManagementService;
|
||||
private UserManagementServiceBean userManagementService;
|
||||
|
||||
@Override
|
||||
public AServer createServer(Long id) {
|
||||
return repository.save(AServer.builder().id(id).build());
|
||||
@Autowired
|
||||
private ServerConverter serverConverter;
|
||||
|
||||
@Autowired
|
||||
private PostTargetConverter postTargetConverter;
|
||||
|
||||
public ServerDto createServer(Long id) {
|
||||
AServer aServer = AServer.builder().id(id).build();
|
||||
return serverConverter.convertServer(repository.save(aServer));
|
||||
}
|
||||
|
||||
@Override
|
||||
public AServer loadOrCreate(Long id) {
|
||||
public ServerDto loadOrCreate(Long id) {
|
||||
if(repository.existsById(id)) {
|
||||
return repository.getOne(id);
|
||||
return serverConverter.convertServer(repository.getOne(id));
|
||||
} else {
|
||||
return createServer(id);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addChannelToServer(AServer server, AChannel channel) {
|
||||
public void addChannelToServer(ServerDto server, ChannelDto channel) {
|
||||
server.getChannels().add(channel);
|
||||
channel.setServer(server);
|
||||
repository.save(server);
|
||||
repository.save(serverConverter.fromDto(server));
|
||||
}
|
||||
|
||||
@Override
|
||||
public AUserInAServer addUserToServer(AServer server, AUser user) {
|
||||
public UserInServerDto addUserToServer(ServerDto server, UserDto user) {
|
||||
return this.addUserToServer(server.getId(), user.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public AUserInAServer addUserToServer(Long serverId, Long userId) {
|
||||
public UserInServerDto addUserToServer(Long serverId, Long userId) {
|
||||
log.info("Adding user {} to server {}", userId, serverId);
|
||||
AServer server = repository.getOne(serverId);
|
||||
AUser user = userManagementService.loadUser(userId);
|
||||
AUserInAServer aUserInAServer = AUserInAServer.builder().serverReference(server).userReference(user).build();
|
||||
ServerDto server = ServerDto.builder().id(serverId).build();
|
||||
UserDto user = userManagementService.loadUser(userId);
|
||||
UserInServerDto aUserInAServer = UserInServerDto.builder().server(server).user(user).build();
|
||||
server.getUsers().add(aUserInAServer);
|
||||
repository.save(serverConverter.fromDto(server));
|
||||
return aUserInAServer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AChannel getPostTarget(Long serverId, String name) {
|
||||
AServer server = this.loadOrCreate(serverId);
|
||||
return getPostTarget(server, name);
|
||||
public ChannelDto getPostTarget(Long serverId, String name) {
|
||||
ServerDto serverDto = ServerDto.builder().id(serverId).build();
|
||||
return getPostTarget(serverDto, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AChannel getPostTarget(Long serverId, PostTarget target) {
|
||||
AServer server = this.loadOrCreate(serverId);
|
||||
return getPostTarget(server, target);
|
||||
public ChannelDto getPostTarget(Long serverId, PostTargetDto target) {
|
||||
ServerDto serverDto = ServerDto.builder().id(serverId).build();
|
||||
return getPostTarget(serverDto, target);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AChannel getPostTarget(AServer server, PostTarget target) {
|
||||
public ChannelDto getPostTarget(ServerDto server, PostTargetDto target) {
|
||||
return target.getChannelReference();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AChannel getPostTarget(AServer server, String name) {
|
||||
public ChannelDto getPostTarget(ServerDto server, String name) {
|
||||
PostTarget target = postTargetManagement.getPostTarget(name, server);
|
||||
return getPostTarget(server, target);
|
||||
|
||||
return getPostTarget(server, postTargetConverter.fromPostTarget(target));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AServer> getAllServers() {
|
||||
return repository.findAll();
|
||||
public List<ServerDto> getAllServers() {
|
||||
List<ServerDto> servers = new ArrayList<>();
|
||||
List<AServer> all = repository.findAll();
|
||||
all.forEach(aServer -> {
|
||||
servers.add(serverConverter.convertServer(aServer));
|
||||
});
|
||||
return servers;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
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 dev.sheldan.abstracto.core.models.*;
|
||||
import dev.sheldan.abstracto.core.models.converter.UserConverter;
|
||||
import dev.sheldan.abstracto.core.models.converter.UserInServerConverter;
|
||||
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.repository.UserInServerRepository;
|
||||
import dev.sheldan.abstracto.core.repository.UserRepository;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -12,7 +15,7 @@ import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class UserManagementServiceBean implements UserManagementService {
|
||||
public class UserManagementServiceBean {
|
||||
|
||||
@Autowired
|
||||
private UserInServerRepository userInServerRepository;
|
||||
@@ -21,57 +24,58 @@ public class UserManagementServiceBean implements UserManagementService {
|
||||
private UserRepository userRepository;
|
||||
|
||||
@Autowired
|
||||
private ServerManagementService serverManagementService;
|
||||
private ServerManagementServiceBean serverManagementService;
|
||||
|
||||
@Autowired
|
||||
private UserConverter userConverter;
|
||||
|
||||
@Autowired
|
||||
private UserInServerConverter userInServerConverter;
|
||||
|
||||
|
||||
@Override
|
||||
public AUserInAServer loadUser(Long serverId, Long userId) {
|
||||
AUser user = this.loadUser(userId);
|
||||
AServer server = serverManagementService.loadOrCreate(serverId);
|
||||
return loadUser(server, user);
|
||||
public UserInServerDto loadUser(Long serverId, Long userId) {
|
||||
UserDto user = UserDto.builder().id(userId).build();
|
||||
ServerDto serverDto = ServerDto.builder().id(userId).build();
|
||||
return loadUser(serverDto, user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AUserInAServer loadUser(AServer server, AUser user) {
|
||||
if(userInServerRepository.existsByServerReferenceAndUserReference(server, user)) {
|
||||
return userInServerRepository.findByServerReferenceAndUserReference(server, user);
|
||||
public UserInServerDto loadUser(ServerDto server, UserDto user) {
|
||||
AServer server1 = AServer.builder().id(server.getId()).build();
|
||||
AUser user1 = AUser.builder().id(user.getId()).build();
|
||||
if(userInServerRepository.existsByServerReferenceAndUserReference(server1, user1)) {
|
||||
AUserInAServer byServerReferenceAndUserReference = userInServerRepository.findByServerReferenceAndUserReference(server1, user1);
|
||||
return userInServerConverter.fromAUserInAServer(byServerReferenceAndUserReference);
|
||||
} else {
|
||||
return this.createUserInServer(server.getId(), user.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AUserInAServer loadUser(Member member) {
|
||||
public UserInServerDto loadUser(Member member) {
|
||||
return this.loadUser(member.getGuild().getIdLong(), member.getIdLong());
|
||||
}
|
||||
|
||||
@Override
|
||||
public AUserInAServer createUserInServer(Member member) {
|
||||
public UserInServerDto createUserInServer(Member member) {
|
||||
return this.createUserInServer(member.getGuild().getIdLong(), member.getIdLong());
|
||||
}
|
||||
|
||||
@Override
|
||||
public AUserInAServer createUserInServer(Long guildId, Long userId) {
|
||||
public UserInServerDto createUserInServer(Long guildId, Long userId) {
|
||||
return serverManagementService.addUserToServer(guildId, userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AUser createUser(Member member) {
|
||||
public UserDto createUser(Member member) {
|
||||
return createUser(member.getIdLong());
|
||||
}
|
||||
|
||||
@Override
|
||||
public AUser createUser(Long userId) {
|
||||
public UserDto createUser(Long userId) {
|
||||
log.info("Creating user {}", userId);
|
||||
AUser aUser = AUser.builder().id(userId).build();
|
||||
userRepository.save(aUser);
|
||||
return aUser;
|
||||
return userConverter.fromAUser(aUser);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AUser loadUser(Long userId) {
|
||||
public UserDto loadUser(Long userId) {
|
||||
if(userRepository.existsById(userId)) {
|
||||
return userRepository.getOne(userId);
|
||||
return userConverter.fromAUser(userRepository.getOne(userId));
|
||||
} else {
|
||||
return this.createUser(userId);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user