added javadoc to experience tracking module

changed persistence configuration for entities, so cascade is more correct
changed the way channels get their server assigned
added feature to only change the exp role of a user, if he doesn't already have the new target role
added the name of the needed feature, to the message indicating that a feature has been disabled
updated unsetExpRole to have a status update message, because there might be a lot of users which need a role update
This commit is contained in:
Sheldan
2020-04-23 23:39:05 +02:00
parent 1a74924850
commit cf37d4adef
69 changed files with 929 additions and 260 deletions

View File

@@ -19,7 +19,7 @@ public class FeatureEnabledCondition implements CommandCondition {
String reason = "";
if(featureName != null) {
featureFlagValue = featureFlagManagementService.getFeatureFlagValue(featureName, context.getGuild().getIdLong());
reason = "Feature has been disabled.";
reason = "Feature has been disabled. Necessary feature is: " + featureName;
}
return ConditionResult.builder().reason(reason).result(featureFlagValue).build();
}

View File

@@ -21,7 +21,7 @@ public class ACommand {
@ManyToOne(fetch = FetchType.LAZY)
@Getter
@Setter
@JoinColumn(name = "module_id")
@JoinColumn(name = "module_id", nullable = false)
private AModule module;
}

View File

@@ -26,7 +26,7 @@ public class AModule {
@OneToMany(
fetch = FetchType.LAZY,
cascade = CascadeType.ALL,
cascade = {CascadeType.PERSIST, CascadeType.MERGE},
orphanRemoval = true)
@Builder.Default
@JoinColumn(name = "module_id")

View File

@@ -26,7 +26,7 @@ public class AChannel implements SnowFlake {
@ManyToOne(fetch = FetchType.LAZY)
@Getter
@Setter
@JoinColumn(name = "server_id")
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@Getter

View File

@@ -25,7 +25,7 @@ public class AChannelGroup {
@ManyToOne(fetch = FetchType.LAZY)
@Getter
@Setter
@JoinColumn(name = "group_server")
@JoinColumn(name = "group_server", nullable = false)
private AServer server;
@ManyToMany

View File

@@ -36,6 +36,7 @@ public class AEmote {
private Boolean custom;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "emote_server_id", nullable = false)
private AServer serverRef;

View File

@@ -21,7 +21,7 @@ public class AFeatureFlag implements SnowFlake {
@ManyToOne(fetch = FetchType.LAZY)
@Getter
@Setter
@JoinColumn(name = "server_id")
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@Getter

View File

@@ -13,13 +13,14 @@ import javax.persistence.*;
public class ARole implements SnowFlake {
@Id
@Getter @Setter
@Getter
@Setter
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@Getter
@Setter
@JoinColumn(name = "role_server_id")
@JoinColumn(name = "role_server_id", nullable = false)
private AServer server;
@Getter

View File

@@ -23,7 +23,6 @@ public class AServer implements SnowFlake {
@OneToMany(
fetch = FetchType.LAZY,
cascade = CascadeType.ALL,
orphanRemoval = true)
@Builder.Default
@JoinColumn(name = "role_server_id")
@@ -31,7 +30,7 @@ public class AServer implements SnowFlake {
@OneToMany(
fetch = FetchType.LAZY,
cascade = CascadeType.ALL,
cascade = {CascadeType.PERSIST, CascadeType.MERGE},
orphanRemoval = true)
@Builder.Default
@JoinColumn(name = "server_id")
@@ -39,7 +38,7 @@ public class AServer implements SnowFlake {
@OneToMany(
fetch = FetchType.LAZY,
cascade = CascadeType.ALL,
cascade = {CascadeType.PERSIST, CascadeType.MERGE},
orphanRemoval = true)
@Builder.Default
@JoinColumn(name = "group_server")
@@ -47,15 +46,17 @@ public class AServer implements SnowFlake {
@OneToMany(
fetch = FetchType.LAZY,
mappedBy = "serverReference",
cascade = {CascadeType.PERSIST, CascadeType.MERGE})
cascade = {CascadeType.PERSIST, CascadeType.MERGE},
orphanRemoval = true)
@JoinColumn(name = "serverReference")
@Builder.Default
private List<AUserInAServer> users = new ArrayList<>();
@OneToMany(
fetch = FetchType.LAZY,
mappedBy = "serverRef",
cascade = {CascadeType.PERSIST, CascadeType.MERGE})
cascade = {CascadeType.PERSIST, CascadeType.MERGE},
orphanRemoval = true)
@JoinColumn(name = "emote_server_id")
@Builder.Default
private List<AEmote> emotes = new ArrayList<>();

View File

@@ -18,7 +18,6 @@ public class AUser {
@OneToMany(
fetch = FetchType.LAZY,
mappedBy = "userReference",
cascade = {CascadeType.PERSIST, CascadeType.MERGE})
private List<AUserInAServer> servers;
}

View File

@@ -17,10 +17,10 @@ public class AUserInAServer {
private Long userInServerId;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "userReference")
@JoinColumn(name = "userReference", nullable = false)
private AUser userReference;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "serverReference")
@JoinColumn(name = "serverReference", nullable = false)
private AServer serverReference;
}

View File

@@ -2,11 +2,10 @@ package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.models.GuildChannelMember;
import dev.sheldan.abstracto.core.models.database.AEmote;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUser;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.Emote;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.entities.*;
import org.springframework.stereotype.Service;
import javax.security.auth.login.LoginException;
@@ -19,6 +18,7 @@ public interface BotService {
JDA getInstance();
GuildChannelMember getServerChannelUser(Long serverId, Long channelId, Long userId);
Member getMemberInServer(Long serverId, Long memberId);
Member getMemberInServer(AServer server, AUser member);
CompletableFuture<Void> deleteMessage(Long serverId, Long channelId, Long messageId);
Optional<Emote> getEmote(Long serverId, AEmote emote);
Optional<TextChannel> getTextChannelFromServer(Guild serverId, Long textChannelId);

View File

@@ -1,8 +1,8 @@
package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.models.database.ARole;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Role;
public interface RoleService {
@@ -10,5 +10,8 @@ public interface RoleService {
void removeRoleFromUser(AUserInAServer aUserInAServer, ARole role);
void markDeleted(Role role);
void markDeleted(Long id);
boolean isRoleInServer(AServer server, ARole role);
Role getRoleFromGuild(ARole role);
boolean memberHasRole(Member member, Role role);
boolean memberHasRole(Member member, ARole role);
boolean isRoleInServer(ARole role);
}

View File

@@ -2,10 +2,11 @@ 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.database.AServer;
public interface ChannelManagementService {
AChannel loadChannel(Long id);
AChannel createChannel(Long id, AChannelType type);
AChannel createChannel(Long id, AChannelType type, AServer server);
void markAsDeleted(Long id);
void removeChannel(Long id);
}