[AB-64] adding voice context channel feature

This commit is contained in:
Sheldan
2021-07-12 00:56:15 +02:00
parent 7e7591a4b3
commit c7514a6bad
40 changed files with 2327 additions and 1 deletions

View File

@@ -0,0 +1,20 @@
<?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.modules</groupId>
<artifactId>voice-channel-context</artifactId>
<version>1.3.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>voice-channel-context-int</artifactId>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
</project>

View File

@@ -0,0 +1,15 @@
package dev.sheldan.abstracto.vccontext.config;
import dev.sheldan.abstracto.core.config.FeatureConfig;
import dev.sheldan.abstracto.core.config.FeatureDefinition;
import org.springframework.stereotype.Component;
@Component
public class VoiceChannelContextFeatureConfig implements FeatureConfig {
@Override
public FeatureDefinition getFeature() {
return VoiceChannelContextFeatureDefinition.VOICE_CHANNEL_CONTEXT;
}
}

View File

@@ -0,0 +1,15 @@
package dev.sheldan.abstracto.vccontext.config;
import dev.sheldan.abstracto.core.config.FeatureDefinition;
import lombok.Getter;
@Getter
public enum VoiceChannelContextFeatureDefinition implements FeatureDefinition {
VOICE_CHANNEL_CONTEXT("voiceChannelContext");
private String key;
VoiceChannelContextFeatureDefinition(String key) {
this.key = key;
}
}

View File

@@ -0,0 +1,15 @@
package dev.sheldan.abstracto.vccontext.exception;
import dev.sheldan.abstracto.core.exception.AbstractoTemplatableException;
public class VoiceChannelContextAlreadyExistsException extends AbstractoTemplatableException {
@Override
public String getTemplateName() {
return "voice_channel_context_already_exists_exception";
}
@Override
public Object getTemplateModel() {
return new Object();
}
}

View File

@@ -0,0 +1,15 @@
package dev.sheldan.abstracto.vccontext.exception;
import dev.sheldan.abstracto.core.exception.AbstractoTemplatableException;
public class VoiceChannelContextNotExistsException extends AbstractoTemplatableException {
@Override
public String getTemplateName() {
return "voice_channel_context_not_exists_exception";
}
@Override
public Object getTemplateModel() {
return new Object();
}
}

View File

@@ -0,0 +1,32 @@
package dev.sheldan.abstracto.vccontext.model;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.ARole;
import lombok.*;
import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table(name="voice_channel_context")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@EqualsAndHashCode
public class VoiceChannelContext implements Serializable {
@Id
@Column(name = "id", nullable = false)
private Long id;
@OneToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@PrimaryKeyJoinColumn
private AChannel channel;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "role_id", nullable = false)
private ARole role;
}

View File

@@ -0,0 +1,11 @@
package dev.sheldan.abstracto.vccontext.service;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.vccontext.model.VoiceChannelContext;
import net.dv8tion.jda.api.entities.Role;
import net.dv8tion.jda.api.entities.VoiceChannel;
public interface VoiceChannelContextService {
VoiceChannelContext createVoiceChannelContext(VoiceChannel voiceChannel, Role role);
void deleteVoiceChannelContext(AChannel channel);
}

View File

@@ -0,0 +1,14 @@
package dev.sheldan.abstracto.vccontext.service.management;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.ARole;
import dev.sheldan.abstracto.vccontext.model.VoiceChannelContext;
import java.util.Optional;
public interface VoiceChannelContextManagementService {
VoiceChannelContext createVoiceChannelContext(AChannel channel, ARole role);
void deleteVoiceChannelContext(AChannel channel);
void deleteVoiceChannelContext(VoiceChannelContext context);
Optional<VoiceChannelContext> getVoiceChannelContextForChannel(AChannel channel);
}