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

@@ -44,7 +44,6 @@ public class ChannelListener extends ListenerAdapter {
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);
channelManagementService.createChannel(createdChannel.getIdLong(), type, serverObject);
}
}

View File

@@ -4,6 +4,8 @@ import dev.sheldan.abstracto.core.exception.ChannelException;
import dev.sheldan.abstracto.core.exception.GuildException;
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 lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder;
@@ -69,6 +71,11 @@ public class BotServiceBean implements BotService {
}
}
@Override
public Member getMemberInServer(AServer server, AUser member) {
return getMemberInServer(server.getId(), member.getId());
}
@Override
public CompletableFuture<Void> deleteMessage(Long serverId, Long channelId, Long messageId) {
Optional<TextChannel> textChannelOptional = getTextChannelFromServer(serverId, channelId);

View File

@@ -3,11 +3,11 @@ package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.exception.GuildException;
import dev.sheldan.abstracto.core.exception.RoleException;
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 dev.sheldan.abstracto.core.service.management.RoleManagementService;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Role;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -72,12 +72,27 @@ public class RoleServiceBean implements RoleService {
}
@Override
public boolean isRoleInServer(AServer server, ARole role) {
Optional<Guild> guildById = botService.getGuildById(server.getId());
public Role getRoleFromGuild(ARole role) {
Optional<Guild> guildById = botService.getGuildById(role.getServer().getId());
if(guildById.isPresent()) {
return guildById.get().getRoleById(role.getId()) != null;
return guildById.get().getRoleById(role.getId());
} else {
throw new GuildException(String.format("Failed to load guild %s.", server.getId()));
throw new GuildException(String.format("Failed to load guild %s.", role.getServer().getId()));
}
}
@Override
public boolean memberHasRole(Member member, Role role) {
return member.getRoles().stream().anyMatch(role1 -> role1.getIdLong() == role.getIdLong());
}
@Override
public boolean memberHasRole(Member member, ARole role) {
return member.getRoles().stream().anyMatch(role1 -> role1.getIdLong() == role.getId());
}
@Override
public boolean isRoleInServer(ARole role) {
return getRoleFromGuild(role) != null;
}
}

View File

@@ -104,8 +104,7 @@ public class StartupServiceBean implements Startup {
GuildChannel channel1 = available.stream().filter(channel -> channel.getIdLong() == aLong).findFirst().get();
log.trace("Adding new channel: {}", aLong);
AChannelType type = AChannel.getAChannelType(channel1.getType());
AChannel newChannel = channelManagementService.createChannel(channel1.getIdLong(), type);
serverManagementService.addChannelToServer(existingServer, newChannel);
channelManagementService.createChannel(channel1.getIdLong(), type, existingServer);
});
Set<Long> noLongAvailable = SetUtils.difference(knownChannelsIds, existingChannelsIds);

View File

@@ -2,6 +2,7 @@ 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;
import dev.sheldan.abstracto.core.repository.ChannelRepository;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -20,9 +21,16 @@ public class ChannelManagementServiceBean implements ChannelManagementService {
}
@Override
public AChannel createChannel(Long id, AChannelType type) {
public AChannel createChannel(Long id, AChannelType type, AServer server) {
log.info("Creating channel {} with type {}", id, type);
return repository.save(AChannel.builder().id(id).type(type).deleted(false).build());
AChannel build = AChannel
.builder()
.id(id)
.type(type)
.server(server)
.deleted(false)
.build();
return repository.save(build);
}
@Override

View File

@@ -22,7 +22,6 @@ public class ConfigManagementServiceBean implements ConfigManagementService {
createConfig(serverId, name, value);
} else {
config.setStringValue(value);
configRepository.save(config);
}
}
@@ -33,7 +32,6 @@ public class ConfigManagementServiceBean implements ConfigManagementService {
createConfig(serverId, name, value);
} else {
config.setDoubleValue(value);
configRepository.save(config);
}
}
@@ -95,7 +93,6 @@ public class ConfigManagementServiceBean implements ConfigManagementService {
public void setDoubleValue(Long serverId, String name, Double value) {
AConfig config = loadConfig(serverId, name);
config.setDoubleValue(value);
configRepository.save(config);
}
}

View File

@@ -14,7 +14,13 @@ public class RoleManagementServiceBean implements RoleManagementService {
@Override
public ARole createRole(Long id, AServer server) {
return repository.save(ARole.builder().id(id).server(server).deleted(false).build());
ARole build = ARole
.builder()
.id(id)
.server(server)
.deleted(false)
.build();
return repository.save(build);
}
@Override
@@ -25,6 +31,5 @@ public class RoleManagementServiceBean implements RoleManagementService {
@Override
public void markDeleted(ARole role) {
role.setDeleted(true);
repository.save(role);
}
}

View File

@@ -42,7 +42,6 @@ public class ServerManagementServiceBean implements ServerManagementService {
public void addChannelToServer(AServer server, AChannel channel) {
server.getChannels().add(channel);
channel.setServer(server);
repository.save(server);
}
@Override