mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-09-09 01:07:06 +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>
|
||||
@@ -0,0 +1,42 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.*;
|
||||
import net.dv8tion.jda.api.entities.ChannelType;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.List;
|
||||
|
||||
@Entity
|
||||
@Table(name="channel")
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class AChannel implements SnowFlake {
|
||||
|
||||
@Id
|
||||
@Getter
|
||||
@Column(name = "id")
|
||||
public Long id;
|
||||
|
||||
@Getter
|
||||
@ManyToMany(mappedBy = "channels")
|
||||
private List<AChannelGroup> groups;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@Getter
|
||||
@Setter
|
||||
@JoinColumn(name = "server_id")
|
||||
private AServer server;
|
||||
|
||||
@Getter
|
||||
@Enumerated(EnumType.STRING)
|
||||
private AChannelType type;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Column
|
||||
private Boolean deleted;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.List;
|
||||
|
||||
@Entity
|
||||
@Table(name="channelGroup")
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Getter
|
||||
public class AChannelGroup {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
@Column
|
||||
@Setter
|
||||
private String groupName;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@Getter
|
||||
@Setter
|
||||
@JoinColumn(name = "group_server")
|
||||
private AServer server;
|
||||
|
||||
@ManyToMany
|
||||
@JoinTable(
|
||||
name = "channel_in_group",
|
||||
joinColumns = @JoinColumn(name = "group_id"),
|
||||
inverseJoinColumns = @JoinColumn(name = "channel_id"))
|
||||
private List<AChannel> channels;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Table(name = "channel_group_command")
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public class AChannelGroupCommand {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long commandInGroupId;
|
||||
|
||||
@OneToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "command_id", nullable = false)
|
||||
@Setter
|
||||
private ACommand command;
|
||||
|
||||
@OneToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "group_id", nullable = false)
|
||||
@Setter
|
||||
private AChannelGroup group;
|
||||
|
||||
@Setter
|
||||
private Boolean enabled;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
public enum AChannelType {
|
||||
TEXT, DM, VOICE, NEWS, CATEGORY, UNKOWN
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Table(name = "command")
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public class ACommand {
|
||||
@Id
|
||||
@Column(name = "id")
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
private String name;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@Getter
|
||||
@Setter
|
||||
@JoinColumn(name = "module_id")
|
||||
private AModule module;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Table(name="systemConfig")
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Getter
|
||||
public class AConfig {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Integer Id;
|
||||
|
||||
@Column
|
||||
private String name;
|
||||
|
||||
@Column
|
||||
@Setter
|
||||
private String stringValue;
|
||||
|
||||
@Column
|
||||
@Setter
|
||||
private Double doubleValue;
|
||||
|
||||
@OneToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "server_id", nullable = false)
|
||||
@Getter
|
||||
@Setter
|
||||
private AServer server;
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Table(name = "emote")
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public class AEmote {
|
||||
|
||||
@javax.persistence.Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Integer Id;
|
||||
|
||||
@Column
|
||||
private String name;
|
||||
|
||||
@Column
|
||||
@Setter
|
||||
private String emoteKey;
|
||||
|
||||
@Column
|
||||
@Setter
|
||||
private Long emoteId;
|
||||
|
||||
@Column
|
||||
@Setter
|
||||
private Boolean animated;
|
||||
|
||||
@Column
|
||||
@Setter
|
||||
private Boolean custom;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
private AServer serverRef;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Table(name="feature_flag")
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class AFeatureFlag implements SnowFlake {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@Getter
|
||||
@Column(name = "id")
|
||||
public Long id;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@Getter
|
||||
@Setter
|
||||
@JoinColumn(name = "server_id")
|
||||
private AServer server;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private String key;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private boolean enabled;
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Entity
|
||||
@Table(name = "module")
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public class AModule {
|
||||
|
||||
@Id
|
||||
@Column(name = "id")
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
private String name;
|
||||
|
||||
@OneToMany(
|
||||
fetch = FetchType.LAZY,
|
||||
cascade = CascadeType.ALL,
|
||||
orphanRemoval = true)
|
||||
@Builder.Default
|
||||
@JoinColumn(name = "module_id")
|
||||
private List<ACommand> commands = new ArrayList<>();
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
@Entity
|
||||
@Table(name="role")
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class ARole implements SnowFlake {
|
||||
|
||||
@Id
|
||||
@Getter @Setter
|
||||
private Long id;
|
||||
|
||||
@Column(unique = true)
|
||||
@Getter @Setter
|
||||
private String name;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.SnowFlake;
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Entity
|
||||
@Table(name = "server")
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public class AServer implements SnowFlake {
|
||||
|
||||
@Id
|
||||
@Column(name = "id")
|
||||
private Long id;
|
||||
|
||||
private String name;
|
||||
|
||||
@OneToMany(fetch = FetchType.LAZY)
|
||||
@Builder.Default
|
||||
private List<ARole> roles = new ArrayList<>();
|
||||
|
||||
@OneToMany(
|
||||
fetch = FetchType.LAZY,
|
||||
cascade = CascadeType.ALL,
|
||||
orphanRemoval = true)
|
||||
@Builder.Default
|
||||
@JoinColumn(name = "server_id")
|
||||
private List<AChannel> channels = new ArrayList<>();
|
||||
|
||||
@OneToMany(
|
||||
fetch = FetchType.LAZY,
|
||||
cascade = CascadeType.ALL,
|
||||
orphanRemoval = true)
|
||||
@Builder.Default
|
||||
@JoinColumn(name = "group_server")
|
||||
private List<AChannelGroup> channelGroups = new ArrayList<>();
|
||||
|
||||
@OneToMany(
|
||||
fetch = FetchType.LAZY,
|
||||
mappedBy = "serverReference",
|
||||
cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
@Builder.Default
|
||||
private List<AUserInAServer> users = new ArrayList<>();
|
||||
|
||||
@OneToMany(
|
||||
fetch = FetchType.LAZY,
|
||||
mappedBy = "serverRef",
|
||||
cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
@Builder.Default
|
||||
private List<AEmote> emotes = new ArrayList<>();
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.List;
|
||||
|
||||
@Entity
|
||||
@Table(name="users")
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Getter
|
||||
public class AUser implements SnowFlake {
|
||||
|
||||
@Id
|
||||
private Long id;
|
||||
|
||||
@OneToMany(
|
||||
fetch = FetchType.LAZY,
|
||||
mappedBy = "userReference",
|
||||
cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
private List<AUserInAServer> servers;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Getter
|
||||
@Builder
|
||||
@Setter
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class AUserInAServer {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long userInServerId;
|
||||
|
||||
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
@JoinColumn(name = "userReference")
|
||||
private AUser userReference;
|
||||
|
||||
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
@JoinColumn(name = "serverReference")
|
||||
private AServer serverReference;
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
|
||||
@Entity
|
||||
@Table(name="posttarget")
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class PostTarget {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@Getter
|
||||
private Long id;
|
||||
|
||||
@Getter
|
||||
private String name;
|
||||
|
||||
@OneToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "channel_id", nullable = false)
|
||||
@Getter @Setter
|
||||
private AChannel channelReference;
|
||||
|
||||
@OneToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name="server_id", nullable = false)
|
||||
@Getter @Setter
|
||||
private AServer serverReference;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package dev.sheldan.abstracto.core.models;
|
||||
|
||||
public interface SnowFlake {
|
||||
Long getId();
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user