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:
Sheldan
2020-04-09 23:59:47 +02:00
parent ef8dcb61d9
commit aa8ff9ddb5
211 changed files with 2067 additions and 1297 deletions

View 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>

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -0,0 +1,5 @@
package dev.sheldan.abstracto.core.models;
public enum AChannelType {
TEXT, DM, VOICE, NEWS, CATEGORY, UNKOWN
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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<>();
}

View File

@@ -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;
}

View File

@@ -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<>();
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -0,0 +1,5 @@
package dev.sheldan.abstracto.core.models;
public interface SnowFlake {
Long getId();
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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<>();
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}
}
}