From aa8ff9ddb59f19ea9feb80f3087e36af2a737660 Mon Sep 17 00:00:00 2001 From: Sheldan <5037282+Sheldan@users.noreply.github.com> Date: Thu, 9 Apr 2020 23:59:47 +0200 Subject: [PATCH] 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) --- .../moderation/moderation-impl/pom.xml | 6 ++ .../abstracto/moderation/commands/Ban.java | 21 +++- .../abstracto/moderation/commands/BanId.java | 18 +++- .../abstracto/moderation/commands/Kick.java | 11 ++- .../abstracto/moderation/commands/Warn.java | 20 ++-- .../moderation/converter/WarnConverter.java | 30 ++++++ .../moderation/listener/JoinLogger.java | 4 - .../moderation/listener/LeaveLogger.java | 4 - .../moderation/models/database/Warning.java | 2 +- .../moderation/service/BanServiceBean.java | 27 +++-- .../moderation/service/KickServiceBean.java | 12 +-- .../service/SlowModeServiceBean.java | 4 +- .../moderation/service/WarnServiceBean.java | 61 ++++++------ .../management/WarnManagementServiceBean.java | 14 ++- .../src/main/resources/moderation.properties | 2 +- .../moderation/models/dto/WarnDto.java | 21 ++++ .../{BanIdLog.java => BanIdLogModel.java} | 9 +- .../{BanLog.java => BanLogModel.java} | 11 ++- .../template/commands/KickLogModel.java | 9 +- .../models/template/commands/WarnLog.java | 20 ---- .../template/commands/WarnLogModel.java | 16 +++ .../models/template/commands/WarnModel.java | 21 ++++ ...cation.java => WarnNotificationModel.java} | 8 +- .../moderation/service/BanService.java | 9 +- .../moderation/service/KickService.java | 3 +- .../moderation/service/SlowModeService.java | 4 +- .../moderation/service/WarnService.java | 10 +- .../management/WarnManagementService.java | 8 -- .../utility/commands/remind/Remind.java | 4 +- .../utility/commands/remind/Reminders.java | 4 +- .../config/StarboardConfigListener.java | 10 +- .../utility/converter/StarPostConverter.java | 26 +++++ .../listener/embed/MessageEmbedListener.java | 8 +- .../MessageEmbedRemovalReactionListener.java | 22 ++--- .../listener/starboard/StarboardListener.java | 60 ++++++------ .../StarboardPostDeletedListener.java | 4 +- .../repository/ReminderRepository.java | 2 +- .../StarboardPostReactionRepository.java | 2 +- .../converter/StarStatsUserConverter.java | 8 +- .../service/MessageEmbedServiceBean.java | 60 ++++++------ .../utility/service/RemindServiceBean.java | 41 +++++--- .../utility/service/StarboardServiceBean.java | 69 +++++++------ .../service/SuggestionServiceBean.java | 20 ++-- ...MessageEmbedPostManagementServiceBean.java | 31 +++--- .../ReminderManagementServiceBean.java | 32 +++--- .../StarboardPostManagementServiceBean.java | 31 +++--- ...boardPostReactorManagementServiceBean.java | 25 ++--- .../SuggestionManagementServiceBean.java | 49 +++++----- .../models/database/EmbeddedMessage.java | 6 +- .../utility/models/database/Reminder.java | 6 +- .../models/database/StarboardPost.java | 4 +- .../database/StarboardPostReaction.java | 2 +- .../utility/models/database/Suggestion.java | 6 +- .../commands/starboard/StarStatsPost.java | 14 +-- .../commands/starboard/StarStatsUser.java | 4 +- .../starboard/StarboardPostModel.java | 8 +- .../utility/service/MessageEmbedService.java | 6 +- .../utility/service/ReminderService.java | 4 +- .../utility/service/StarboardService.java | 8 +- .../MessageEmbedPostManagementService.java | 15 --- .../management/ReminderManagementService.java | 15 --- .../StarboardPostManagementService.java | 22 ----- ...StarboardPostReactorManagementService.java | 16 --- .../SuggestionManagementService.java | 15 --- .../core/core-db-models/pom.xml | 32 ++++++ .../abstracto/core/models}/AChannel.java | 12 +-- .../abstracto/core/models}/AChannelGroup.java | 3 +- .../core/models}/AChannelGroupCommand.java | 3 +- .../abstracto/core/models}/AChannelType.java | 2 +- .../abstracto/core/models}/ACommand.java | 2 +- .../abstracto/core/models}/AConfig.java | 2 +- .../abstracto/core/models}/AEmote.java | 2 +- .../abstracto/core/models}/AFeatureFlag.java | 2 +- .../abstracto/core/models}/AModule.java | 2 +- .../sheldan/abstracto/core/models}/ARole.java | 2 +- .../abstracto/core/models}/AServer.java | 2 +- .../sheldan/abstracto/core/models}/AUser.java | 4 +- .../core/models}/AUserInAServer.java | 2 +- .../abstracto/core/models}/PostTarget.java | 4 +- .../abstracto/core/models/SnowFlake.java | 0 .../models/converter/ChannelConverter.java | 46 +++++++++ .../converter/ChannelGroupConverter.java | 36 +++++++ .../models/converter/CommandConverter.java | 26 +++++ .../core/models/converter/EmoteConverter.java | 26 +++++ .../models/converter/ModuleConverter.java | 25 +++++ .../models/converter/PostTargetConverter.java | 30 ++++++ .../core/models/converter/RoleConverter.java | 24 +++++ .../models/converter/ServerConverter.java | 61 ++++++++++++ .../core/models/converter/UserConverter.java | 22 +++++ .../converter/UserInServerConverter.java | 42 ++++++++ .../abstracto/core/models/dto/ChannelDto.java | 15 +++ .../models/dto/ChannelGroupCommandDto.java | 16 +++ .../core/models/dto/ChannelGroupDto.java | 21 ++++ .../abstracto/core/models/dto/CommandDto.java | 15 +++ .../abstracto/core/models/dto/EmoteDto.java | 18 ++++ .../abstracto/core/models/dto/ModuleDto.java | 19 ++++ .../core/models/dto/PostTargetDto.java | 15 +++ .../abstracto/core/models/dto/RoleDto.java | 14 +++ .../abstracto/core/models/dto/ServerDto.java | 20 ++++ .../abstracto/core/models/dto/UserDto.java | 14 +++ .../core/models/dto/UserInServerDto.java | 17 ++++ .../core/models/utils/ChannelUtils.java | 16 +++ abstracto-application/core/core-impl/pom.xml | 7 ++ .../core/command/CommandReceivedHandler.java | 46 ++++++--- .../command/config/CommandConfigListener.java | 4 +- .../ChannelGroupCommandRepository.java | 6 +- .../command/repository/CommandRepository.java | 2 +- .../command/repository/ModuleRepository.java | 2 +- .../ChannelGroupCommandServiceBean.java | 21 ++-- .../command/service/CommandServiceBean.java | 29 ++++-- ...nnelGroupCommandManagementServiceBean.java | 37 +++---- .../CommandManagementServiceBean.java | 41 ++++---- .../ModuleManagementServiceBean.java | 8 +- .../abstracto/core/commands/Disable.java | 4 +- .../abstracto/core/commands/Enable.java | 4 +- .../commands/channels/ListChannelGroups.java | 12 +-- .../core/commands/channels/PostTarget.java | 8 +- .../core/commands/utility/SetEmote.java | 4 +- .../core/config/FeatureFlagListener.java | 8 +- .../core/listener/ChannelListener.java | 28 +++--- .../core/listener/JoinListenerBean.java | 1 + .../listener/ReactionUpdatedListener.java | 27 ++--- .../repository/ChannelGroupRepository.java | 4 +- .../core/repository/ChannelRepository.java | 2 +- .../core/repository/ConfigRepository.java | 2 +- .../core/repository/EmoteRepository.java | 4 +- .../repository/FeatureFlagRepository.java | 4 +- .../core/repository/PostTargetRepository.java | 4 +- .../core/repository/RoleRepository.java | 2 +- .../core/repository/ServerRepository.java | 2 +- .../repository/UserInServerRepository.java | 6 +- .../core/repository/UserRepository.java | 2 +- .../core/service/BotServiceBean.java | 4 +- .../core/service/ChannelGroupServiceBean.java | 98 ++++++++++++------- .../core/service/ChannelServiceBean.java | 20 +++- .../core/service/ConfigServiceBean.java | 11 ++- .../core/service/EmoteServiceBean.java | 27 +++-- .../core/service/FeatureFlagServiceBean.java | 4 +- .../core/service/MessageCacheBean.java | 14 +-- .../core/service/MessageServiceBean.java | 6 +- .../core/service/PostTargetServiceBean.java | 42 ++++---- .../core/service/StartupServiceBean.java | 46 +++++---- .../core/service/UserServiceBean.java | 27 +++++ .../ChannelGroupManagementServiceBean.java | 74 +++++++++----- .../ChannelManagementServiceBean.java | 28 +++--- .../ConfigManagementServiceBean.java | 19 ++-- .../EmoteManagementServiceBean.java | 73 +++++++------- .../FeatureFlagManagementServiceBean.java | 23 ++--- .../management/PostTargetManagementBean.java | 66 +++++++------ .../management/RoleManagementServiceBean.java | 5 +- .../ServerManagementServiceBean.java | 82 +++++++++------- .../management/UserManagementServiceBean.java | 60 ++++++------ .../core/core-interface/pom.xml | 9 +- .../condition/CommandDisabledCondition.java | 10 +- .../condition/FeatureEnabledCondition.java | 6 +- ...ace.java => AbstractoModuleInterface.java} | 2 +- .../command/config/CommandConfiguration.java | 3 +- .../core/command/config/CommandHierarchy.java | 3 +- .../core/command/config/HelpInfo.java | 3 +- .../core/command/config/ModuleInfo.java | 3 +- .../core/command/config/ModuleInterface.java | 2 - .../core/command/config/Parameter.java | 4 +- .../core/command/config/Parameters.java | 2 +- .../core/command/execution/CommandResult.java | 4 +- .../service/ChannelGroupCommandService.java | 6 +- .../core/command/service/CommandService.java | 5 +- .../core/command/service/UserService.java | 9 ++ .../ChannelGroupCommandManagementService.java | 14 --- .../management/CommandManagementService.java | 11 --- .../management/ModuleManagementService.java | 10 -- .../core/converter/ChannelModelConverter.java | 15 +++ .../core/converter/ServerModelConverter.java | 12 +++ .../converter/UserInServerModelConverter.java | 37 +++++++ .../core/converter/UserModelConverter.java | 12 +++ .../exception/FeatureDisabledException.java | 7 -- .../core/listener/ReactedAddedListener.java | 4 +- .../core/listener/ReactedRemovedListener.java | 4 +- .../core/listener/ServerConfigListener.java | 4 +- .../core/models/AServerAChannelAUser.java | 16 +-- .../core/models/AServerAChannelMessage.java | 8 +- .../core/models/cache/CachedReaction.java | 8 +- .../core/models/context/ServerContext.java | 4 +- .../context/UserInitiatedServerContext.java | 12 +-- .../core/models/template/ChannelModel.java | 12 +++ .../models/template/ServerContextModel.java | 19 ++++ .../core/models/template/ServerModel.java | 13 +++ .../models/template/UserInServerModel.java | 15 +++ .../UserInitiatedServerContextModel.java | 16 +++ .../core/models/template/UserModel.java | 12 +++ .../commands/ChannelGroupChannelModel.java | 4 +- .../listener/MessageEmbeddedModel.java | 10 +- .../sheldan/abstracto/core/service/Bot.java | 4 +- .../core/service/ChannelGroupService.java | 14 ++- .../core/service/ChannelService.java | 7 +- .../abstracto/core/service/ConfigService.java | 1 + .../abstracto/core/service/EmoteService.java | 11 ++- .../core/service/PostTargetService.java | 13 +-- .../ChannelGroupManagementService.java | 17 ---- .../management/ChannelManagementService.java | 11 --- .../management/ConfigManagementService.java | 13 --- .../management/EmoteManagementService.java | 26 ----- .../FeatureFlagManagementService.java | 14 --- .../management/PostTargetManagement.java | 17 ---- .../management/RoleManagementService.java | 7 -- .../management/ServerManagementService.java | 18 ---- .../management/UserManagementService.java | 17 ---- .../core/utils/AbstractoDateUtils.java | 11 +++ .../abstracto/core/utils/ContextUtils.java | 19 ++-- .../abstracto/core/utils/EmoteUtils.java | 8 +- .../core/utils/ContextUtilsTest.java | 67 ------------- abstracto-application/core/pom.xml | 1 + 211 files changed, 2067 insertions(+), 1297 deletions(-) create mode 100644 abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/converter/WarnConverter.java rename abstracto-application/abstracto-modules/moderation/{moderation-int => moderation-impl}/src/main/java/dev/sheldan/abstracto/moderation/models/database/Warning.java (92%) create mode 100644 abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/dto/WarnDto.java rename abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/{BanIdLog.java => BanIdLogModel.java} (61%) rename abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/{BanLog.java => BanLogModel.java} (55%) delete mode 100644 abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/WarnLog.java create mode 100644 abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/WarnLogModel.java create mode 100644 abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/WarnModel.java rename abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/{WarnNotification.java => WarnNotificationModel.java} (50%) delete mode 100644 abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementService.java create mode 100644 abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/converter/StarPostConverter.java delete mode 100644 abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/MessageEmbedPostManagementService.java delete mode 100644 abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/ReminderManagementService.java delete mode 100644 abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/StarboardPostManagementService.java delete mode 100644 abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/StarboardPostReactorManagementService.java delete mode 100644 abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/SuggestionManagementService.java create mode 100644 abstracto-application/core/core-db-models/pom.xml rename abstracto-application/core/{core-interface/src/main/java/dev/sheldan/abstracto/core/models/database => core-db-models/src/main/java/dev/sheldan/abstracto/core/models}/AChannel.java (63%) rename abstracto-application/core/{core-interface/src/main/java/dev/sheldan/abstracto/core/models/database => core-db-models/src/main/java/dev/sheldan/abstracto/core/models}/AChannelGroup.java (90%) rename abstracto-application/core/{core-interface/src/main/java/dev/sheldan/abstracto/core/models/database => core-db-models/src/main/java/dev/sheldan/abstracto/core/models}/AChannelGroupCommand.java (83%) rename abstracto-application/core/{core-interface/src/main/java/dev/sheldan/abstracto/core/models/database => core-db-models/src/main/java/dev/sheldan/abstracto/core/models}/AChannelType.java (58%) rename abstracto-application/core/{core-interface/src/main/java/dev/sheldan/abstracto/core/command/models/database => core-db-models/src/main/java/dev/sheldan/abstracto/core/models}/ACommand.java (87%) rename abstracto-application/core/{core-interface/src/main/java/dev/sheldan/abstracto/core/models/database => core-db-models/src/main/java/dev/sheldan/abstracto/core/models}/AConfig.java (91%) rename abstracto-application/core/{core-interface/src/main/java/dev/sheldan/abstracto/core/models/database => core-db-models/src/main/java/dev/sheldan/abstracto/core/models}/AEmote.java (91%) rename abstracto-application/core/{core-interface/src/main/java/dev/sheldan/abstracto/core/models/database => core-db-models/src/main/java/dev/sheldan/abstracto/core/models}/AFeatureFlag.java (91%) rename abstracto-application/core/{core-interface/src/main/java/dev/sheldan/abstracto/core/command/models/database => core-db-models/src/main/java/dev/sheldan/abstracto/core/models}/AModule.java (91%) rename abstracto-application/core/{core-interface/src/main/java/dev/sheldan/abstracto/core/models/database => core-db-models/src/main/java/dev/sheldan/abstracto/core/models}/ARole.java (89%) rename abstracto-application/core/{core-interface/src/main/java/dev/sheldan/abstracto/core/models/database => core-db-models/src/main/java/dev/sheldan/abstracto/core/models}/AServer.java (96%) rename abstracto-application/core/{core-interface/src/main/java/dev/sheldan/abstracto/core/models/database => core-db-models/src/main/java/dev/sheldan/abstracto/core/models}/AUser.java (81%) rename abstracto-application/core/{core-interface/src/main/java/dev/sheldan/abstracto/core/models/database => core-db-models/src/main/java/dev/sheldan/abstracto/core/models}/AUserInAServer.java (91%) rename abstracto-application/core/{core-interface/src/main/java/dev/sheldan/abstracto/core/models/database => core-db-models/src/main/java/dev/sheldan/abstracto/core/models}/PostTarget.java (85%) rename abstracto-application/core/{core-interface => core-db-models}/src/main/java/dev/sheldan/abstracto/core/models/SnowFlake.java (100%) create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/ChannelConverter.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/ChannelGroupConverter.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/CommandConverter.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/EmoteConverter.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/ModuleConverter.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/PostTargetConverter.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/RoleConverter.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/ServerConverter.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/UserConverter.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/UserInServerConverter.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ChannelDto.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ChannelGroupCommandDto.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ChannelGroupDto.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/CommandDto.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/EmoteDto.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ModuleDto.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/PostTargetDto.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/RoleDto.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ServerDto.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/UserDto.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/UserInServerDto.java create mode 100644 abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/utils/ChannelUtils.java create mode 100644 abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/UserServiceBean.java rename abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/{AbstracatoModuleInterface.java => AbstractoModuleInterface.java} (84%) create mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/UserService.java delete mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/management/ChannelGroupCommandManagementService.java delete mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/management/CommandManagementService.java delete mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/management/ModuleManagementService.java create mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/converter/ChannelModelConverter.java create mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/converter/ServerModelConverter.java create mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/converter/UserInServerModelConverter.java create mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/converter/UserModelConverter.java delete mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/exception/FeatureDisabledException.java create mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/ChannelModel.java create mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/ServerContextModel.java create mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/ServerModel.java create mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/UserInServerModel.java create mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/UserInitiatedServerContextModel.java create mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/UserModel.java delete mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/ChannelGroupManagementService.java delete mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/ChannelManagementService.java delete mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/ConfigManagementService.java delete mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/EmoteManagementService.java delete mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/FeatureFlagManagementService.java delete mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/PostTargetManagement.java delete mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/RoleManagementService.java delete mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/ServerManagementService.java delete mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/UserManagementService.java create mode 100644 abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/utils/AbstractoDateUtils.java delete mode 100644 abstracto-application/core/core-interface/src/test/java/dev/sheldan/abstracto/core/utils/ContextUtilsTest.java diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/pom.xml b/abstracto-application/abstracto-modules/moderation/moderation-impl/pom.xml index 3e16f121b..bfee4722e 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/pom.xml +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/pom.xml @@ -17,6 +17,12 @@ moderation-int ${project.version} + + + dev.sheldan.abstracto.core + core-db-models + ${project.version} + \ No newline at end of file diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/commands/Ban.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/commands/Ban.java index 8be5e0edf..0c16bdcda 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/commands/Ban.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/commands/Ban.java @@ -5,9 +5,12 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.execution.*; +import dev.sheldan.abstracto.core.command.service.UserService; +import dev.sheldan.abstracto.core.converter.UserInServerModelConverter; +import dev.sheldan.abstracto.core.service.PostTargetService; import dev.sheldan.abstracto.moderation.Moderation; import dev.sheldan.abstracto.moderation.config.ModerationFeatures; -import dev.sheldan.abstracto.moderation.models.template.commands.BanLog; +import dev.sheldan.abstracto.moderation.models.template.commands.BanLogModel; import dev.sheldan.abstracto.moderation.service.BanService; import dev.sheldan.abstracto.templating.service.TemplateService; import lombok.extern.slf4j.Slf4j; @@ -28,6 +31,13 @@ public class Ban extends AbstractConditionableCommand { @Autowired private TemplateService templateService; + @Autowired + private PostTargetService postTargetService; + + @Autowired + private UserInServerModelConverter userConverter; + + @Override public CommandResult execute(CommandContext commandContext) { List parameters = commandContext.getParameters().getParameters(); @@ -35,11 +45,12 @@ public class Ban extends AbstractConditionableCommand { String defaultReason = templateService.renderTemplateWithMap("ban_default_reason", null); String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason; - BanLog banLogModel = (BanLog) ContextConverter.fromCommandContext(commandContext, BanLog.class); - banLogModel.setBannedUser(member); - banLogModel.setBanningUser(commandContext.getAuthor()); + BanLogModel banLogModel = (BanLogModel) ContextConverter.fromCommandContext(commandContext, BanLogModel.class); + banLogModel.setBannedUser(userConverter.fromMember(member)); + banLogModel.setBanningUser(userConverter.fromUser(commandContext.getUserInitiatedContext().getAUserInAServer())); banLogModel.setReason(reason); - banService.banMember(member, reason, banLogModel); + banService.banMember(member, reason); + banService.sendBanLog(banLogModel); return CommandResult.fromSuccess(); } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/commands/BanId.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/commands/BanId.java index 1677f5f13..1104e3b90 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/commands/BanId.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/commands/BanId.java @@ -5,9 +5,11 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.execution.*; +import dev.sheldan.abstracto.core.converter.UserInServerModelConverter; +import dev.sheldan.abstracto.core.service.PostTargetService; import dev.sheldan.abstracto.moderation.Moderation; import dev.sheldan.abstracto.moderation.config.ModerationFeatures; -import dev.sheldan.abstracto.moderation.models.template.commands.BanIdLog; +import dev.sheldan.abstracto.moderation.models.template.commands.BanIdLogModel; import dev.sheldan.abstracto.moderation.service.BanService; import dev.sheldan.abstracto.templating.service.TemplateService; import org.springframework.beans.factory.annotation.Autowired; @@ -25,17 +27,25 @@ public class BanId extends AbstractConditionableCommand { @Autowired private BanService banService; + @Autowired + private PostTargetService postTargetService; + + @Autowired + private UserInServerModelConverter userConverter; + @Override public CommandResult execute(CommandContext commandContext) { List parameters = commandContext.getParameters().getParameters(); Long userId = (Long) parameters.get(0); String defaultReason = templateService.renderTemplateWithMap("ban_default_reason", null); String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason; - BanIdLog banLogModel = (BanIdLog) ContextConverter.fromCommandContext(commandContext, BanIdLog.class); + BanIdLogModel banLogModel = (BanIdLogModel) ContextConverter.fromCommandContext(commandContext, BanIdLogModel.class); banLogModel.setBannedUserId(userId); - banLogModel.setBanningUser(commandContext.getAuthor()); + banLogModel.setBanningUser(userConverter.fromUser(commandContext.getUserInitiatedContext().getAUserInAServer())); banLogModel.setReason(reason); - banService.banMember(userId, commandContext.getGuild().getIdLong(), reason, banLogModel); + banService.banMember(userId, commandContext.getGuild().getIdLong(), reason); + banService.sendBanIdLog(banLogModel); + return CommandResult.fromSuccess(); } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/commands/Kick.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/commands/Kick.java index fdf11808d..948782004 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/commands/Kick.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/commands/Kick.java @@ -5,6 +5,7 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.execution.*; +import dev.sheldan.abstracto.core.converter.UserInServerModelConverter; import dev.sheldan.abstracto.moderation.Moderation; import dev.sheldan.abstracto.moderation.config.ModerationFeatures; import dev.sheldan.abstracto.moderation.models.template.commands.KickLogModel; @@ -26,6 +27,9 @@ public class Kick extends AbstractConditionableCommand { @Autowired private KickServiceBean kickService; + @Autowired + private UserInServerModelConverter userConverter; + @Override public CommandResult execute(CommandContext commandContext) { @@ -35,10 +39,11 @@ public class Kick extends AbstractConditionableCommand { String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason; KickLogModel kickLogModel = (KickLogModel) ContextConverter.fromCommandContext(commandContext, KickLogModel.class); - kickLogModel.setKickedUser(member); - kickLogModel.setKickingUser(commandContext.getAuthor()); + kickLogModel.setKickedUser(userConverter.fromMember(member)); + kickLogModel.setKickingUser(userConverter.fromUser(commandContext.getUserInitiatedContext().getAUserInAServer())); kickLogModel.setReason(reason); - kickService.kickMember(member, reason, kickLogModel); + kickService.kickMember(member, reason); + kickService.sendKickLog(kickLogModel); return CommandResult.fromSuccess(); } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/commands/Warn.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/commands/Warn.java index 58db3dd0e..442cc1f00 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/commands/Warn.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/commands/Warn.java @@ -5,10 +5,11 @@ import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.execution.*; -import dev.sheldan.abstracto.core.service.management.UserManagementService; import dev.sheldan.abstracto.moderation.Moderation; import dev.sheldan.abstracto.moderation.config.ModerationFeatures; -import dev.sheldan.abstracto.moderation.models.template.commands.WarnLog; +import dev.sheldan.abstracto.moderation.converter.WarnConverter; +import dev.sheldan.abstracto.moderation.models.dto.WarnDto; +import dev.sheldan.abstracto.moderation.models.template.commands.WarnLogModel; import dev.sheldan.abstracto.moderation.service.WarnService; import dev.sheldan.abstracto.templating.service.TemplateService; import lombok.extern.slf4j.Slf4j; @@ -23,27 +24,26 @@ import java.util.List; @Slf4j public class Warn extends AbstractConditionableCommand { - @Autowired - private UserManagementService userManagementService; - @Autowired private WarnService warnService; @Autowired private TemplateService templateService; + @Autowired + private WarnConverter warnConverter; + @Override public CommandResult execute(CommandContext commandContext) { List parameters = commandContext.getParameters().getParameters(); Member member = (Member) parameters.get(0); String defaultReason = templateService.renderTemplateWithMap("warn_default_reason", null); String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason; - WarnLog warnLogModel = (WarnLog) ContextConverter.fromCommandContext(commandContext, WarnLog.class); - warnLogModel.setWarnedUser(member); + WarnLogModel warnLogModel = (WarnLogModel) ContextConverter.fromCommandContext(commandContext, WarnLogModel.class); warnLogModel.setMessage(commandContext.getMessage()); - warnLogModel.setReason(reason); - warnLogModel.setWarningUser(commandContext.getAuthor()); - warnService.warnUser(member, commandContext.getAuthor(), reason, warnLogModel); + WarnDto warnDto = warnService.warnUser(member, commandContext.getAuthor(), reason); + warnLogModel.setWarning(warnConverter.convertFromWarnDto(warnDto)); + warnService.sendWarnLog(warnLogModel); return CommandResult.fromSuccess(); } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/converter/WarnConverter.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/converter/WarnConverter.java new file mode 100644 index 000000000..c9e6ddd99 --- /dev/null +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/converter/WarnConverter.java @@ -0,0 +1,30 @@ +package dev.sheldan.abstracto.moderation.converter; + +import dev.sheldan.abstracto.core.utils.AbstractoDateUtils; +import dev.sheldan.abstracto.moderation.models.database.Warning; +import dev.sheldan.abstracto.moderation.models.dto.WarnDto; +import dev.sheldan.abstracto.moderation.models.template.commands.WarnModel; +import org.springframework.stereotype.Component; + +@Component +public class WarnConverter { + public WarnDto convertFromAWarn(Warning warning) { + return WarnDto.builder() + .id(warning.getId()) + .decayed(warning.getDecayed()) + .reason(warning.getReason()) + .decayDate(AbstractoDateUtils.convertInstant(warning.getDecayDate())) + .warnDate(AbstractoDateUtils.convertInstant(warning.getWarnDate())) + .build(); + } + + public WarnModel convertFromWarnDto(WarnDto warnDto) { + return WarnModel + .builder() + .decayDate(warnDto.getDecayDate()) + .decayed(warnDto.getDecayed()) + .warnDate(warnDto.getWarnDate()) + .reason(warnDto.getReason()) + .build(); + } +} diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/JoinLogger.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/JoinLogger.java index 8cfb60353..8479f3924 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/JoinLogger.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/JoinLogger.java @@ -2,7 +2,6 @@ package dev.sheldan.abstracto.moderation.listener; import dev.sheldan.abstracto.core.listener.JoinListener; import dev.sheldan.abstracto.core.service.PostTargetService; -import dev.sheldan.abstracto.core.service.management.ServerManagementService; import dev.sheldan.abstracto.moderation.config.ModerationFeatures; import dev.sheldan.abstracto.templating.service.TemplateService; import lombok.extern.slf4j.Slf4j; @@ -23,9 +22,6 @@ public class JoinLogger implements JoinListener { private static final String USER_JOIN_TEMPLATE = "user_join"; private static final String JOIN_LOG_TARGET = "joinLog"; - @Autowired - private ServerManagementService serverManagementService; - @Autowired private TemplateService templateService; diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/LeaveLogger.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/LeaveLogger.java index 6eaad1bf1..bd0e80223 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/LeaveLogger.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/listener/LeaveLogger.java @@ -2,7 +2,6 @@ package dev.sheldan.abstracto.moderation.listener; import dev.sheldan.abstracto.core.listener.LeaveListener; import dev.sheldan.abstracto.core.service.PostTargetService; -import dev.sheldan.abstracto.core.service.management.ServerManagementService; import dev.sheldan.abstracto.moderation.config.ModerationFeatures; import dev.sheldan.abstracto.templating.service.TemplateService; import lombok.extern.slf4j.Slf4j; @@ -23,9 +22,6 @@ public class LeaveLogger implements LeaveListener { private static final String USER_LEAVE_TEMPLATE = "user_leave"; private static final String LEAVE_LOG_TARGET = "leaveLog"; - @Autowired - private ServerManagementService serverManagementService; - @Autowired private TemplateService templateService; diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/database/Warning.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/models/database/Warning.java similarity index 92% rename from abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/database/Warning.java rename to abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/models/database/Warning.java index ebdae9227..f78324adf 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/database/Warning.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/models/database/Warning.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.moderation.models.database; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.models.AUserInAServer; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/BanServiceBean.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/BanServiceBean.java index 6cd161ed6..dcb902176 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/BanServiceBean.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/BanServiceBean.java @@ -4,6 +4,8 @@ import dev.sheldan.abstracto.core.exception.GuildException; import dev.sheldan.abstracto.core.models.context.ServerContext; import dev.sheldan.abstracto.core.service.Bot; import dev.sheldan.abstracto.core.service.PostTargetService; +import dev.sheldan.abstracto.moderation.models.template.commands.BanIdLogModel; +import dev.sheldan.abstracto.moderation.models.template.commands.BanLogModel; import dev.sheldan.abstracto.templating.service.TemplateService; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Guild; @@ -18,8 +20,9 @@ import java.util.Optional; public class BanServiceBean implements BanService { private static final String BAN_LOG_TEMPLATE = "ban_log"; - private static final String BAN_ID_LOG_TEMPLATE = "banid_log"; private static final String BAN_LOG_TARGET = "banLog"; + private static final String BAN_ID_LOG_TEMPLATE = "banid_log"; + @Autowired private Bot bot; @@ -30,17 +33,25 @@ public class BanServiceBean implements BanService { private PostTargetService postTargetService; @Override - public void banMember(Member member, String reason, ServerContext banLog) { + public void banMember(Member member, String reason) { this.banUser(member.getGuild().getIdLong(), member.getIdLong(), reason); - String warnLogMessage = templateService.renderTemplate(BAN_LOG_TEMPLATE, banLog); - postTargetService.sendTextInPostTarget(warnLogMessage, BAN_LOG_TARGET, banLog.getServer().getId()); } @Override - public void banMember(Long guildId, Long userId, String reason, ServerContext banIdLog) { - banUser(guildId, userId, reason); - String warnLogMessage = templateService.renderTemplate(BAN_ID_LOG_TEMPLATE, banIdLog); - postTargetService.sendTextInPostTarget(warnLogMessage, BAN_LOG_TARGET, guildId); + public void banMember(Long guildId, Long userId, String reason) { + this.banUser(guildId, userId, reason); + } + + @Override + public void sendBanLog(BanLogModel banLogModel) { + String warnLogMessage = templateService.renderTemplate(BAN_LOG_TEMPLATE, banLogModel); + postTargetService.sendTextInPostTarget(warnLogMessage, BAN_LOG_TARGET, banLogModel.getGuild().getIdLong()); + } + + @Override + public void sendBanIdLog(BanIdLogModel banIdLogModel) { + String warnLogMessage = templateService.renderTemplate(BAN_ID_LOG_TEMPLATE, banIdLogModel); + postTargetService.sendTextInPostTarget(warnLogMessage, BAN_LOG_TARGET, banIdLogModel.getGuild().getIdLong()); } private void banUser(Long guildId, Long userId, String reason) { diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/KickServiceBean.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/KickServiceBean.java index 3da175307..e3aa72bbe 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/KickServiceBean.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/KickServiceBean.java @@ -29,18 +29,18 @@ public class KickServiceBean implements KickService { private PostTargetService postTargetService; @Override - public void kickMember(Member member, String reason, KickLogModel kickLogModel) { - Optional guildById = bot.getGuildById(kickLogModel.getGuild().getIdLong()); + public void kickMember(Member member, String reason) { + Optional guildById = bot.getGuildById(member.getGuild().getIdLong()); if(guildById.isPresent()) { guildById.get().kick(member, reason).queue(); - this.sendKickLog(kickLogModel); } else { - log.warn("Not able to kick. Guild {} not found.", kickLogModel.getGuild().getIdLong()); - throw new GuildException(String.format("Not able to kick %s. Guild %s not found", kickLogModel.getMember().getIdLong(), kickLogModel.getGuild().getIdLong())); + log.warn("Not able to kick. Guild {} not found.", member.getGuild().getIdLong()); + throw new GuildException(String.format("Not able to kick %s. Guild %s not found", member.getIdLong(), member.getGuild().getIdLong())); } } - private void sendKickLog(KickLogModel kickLogModel) { + @Override + public void sendKickLog(KickLogModel kickLogModel) { String warnLogMessage = templateService.renderTemplate(KICK_LOG_TEMPLATE, kickLogModel); postTargetService.sendTextInPostTarget(warnLogMessage, WARN_LOG_TARGET, kickLogModel.getServer().getId()); } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeServiceBean.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeServiceBean.java index c9082770d..176a93942 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeServiceBean.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeServiceBean.java @@ -1,7 +1,7 @@ package dev.sheldan.abstracto.moderation.service; import dev.sheldan.abstracto.core.exception.ChannelException; -import dev.sheldan.abstracto.core.models.database.AChannel; +import dev.sheldan.abstracto.core.models.dto.ChannelDto; import dev.sheldan.abstracto.core.service.Bot; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.TextChannel; @@ -28,7 +28,7 @@ public class SlowModeServiceBean implements SlowModeService { } @Override - public void setSlowMode(AChannel channel, Duration duration) { + public void setSlowMode(ChannelDto channel, Duration duration) { Optional textChannelOptional = bot.getTextChannelFromServer(channel.getServer().getId(), channel.getId()); if(textChannelOptional.isPresent()) { TextChannel textChannel = textChannelOptional.get(); diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/WarnServiceBean.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/WarnServiceBean.java index af55efffc..d5f88a0d5 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/WarnServiceBean.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/WarnServiceBean.java @@ -1,17 +1,17 @@ package dev.sheldan.abstracto.moderation.service; +import dev.sheldan.abstracto.core.command.service.UserService; import dev.sheldan.abstracto.core.exception.UserException; -import dev.sheldan.abstracto.core.models.context.ServerContext; -import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.models.database.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 dev.sheldan.abstracto.moderation.converter.WarnConverter; +import dev.sheldan.abstracto.moderation.models.dto.WarnDto; +import dev.sheldan.abstracto.moderation.models.template.commands.WarnLogModel; +import dev.sheldan.abstracto.moderation.service.management.WarnManagementServiceBean; import dev.sheldan.abstracto.templating.model.MessageToSend; -import dev.sheldan.abstracto.moderation.models.template.commands.WarnLog; -import dev.sheldan.abstracto.moderation.models.template.commands.WarnNotification; -import dev.sheldan.abstracto.moderation.models.database.Warning; -import dev.sheldan.abstracto.moderation.service.management.WarnManagementService; -import dev.sheldan.abstracto.core.service.management.ServerManagementService; -import dev.sheldan.abstracto.core.service.management.UserManagementService; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.moderation.models.template.commands.WarnNotificationModel; import dev.sheldan.abstracto.core.service.Bot; import dev.sheldan.abstracto.core.service.PostTargetService; import dev.sheldan.abstracto.templating.service.TemplateService; @@ -33,13 +33,10 @@ public class WarnServiceBean implements WarnService { public static final String WARN_LOG_TARGET = "warnLog"; @Autowired - private UserManagementService userManagementService; + private UserService userService; @Autowired - private WarnManagementService warnManagementService; - - @Autowired - private ServerManagementService serverManagementService; + private WarnManagementServiceBean warnManagementService; @Autowired private PostTargetService postTargetService; @@ -53,13 +50,19 @@ public class WarnServiceBean implements WarnService { private static final String WARN_LOG_TEMPLATE = "warn_log"; private static final String WARN_NOTIFICATION_TEMPLATE = "warn_notification"; + @Autowired + private WarnConverter warnConverter; + + @Override - public void warnUser(AUserInAServer warnedAUserInAServer, AUserInAServer warningAUserInAServer, String reason, WarnLog warnLog) { - AUser warningAUser = warningAUserInAServer.getUserReference(); - AUser warnedAUser = warnedAUserInAServer.getUserReference(); - AServer serverOfWarning = warnedAUserInAServer.getServerReference(); + public WarnDto warnUser(UserInServerDto warnedAUserInAServer, UserInServerDto warningAUserInAServer, String reason) { + UserDto warningAUser = warningAUserInAServer.getUser(); + UserDto warnedAUser = warnedAUserInAServer.getUser(); + ServerDto serverOfWarning = warnedAUserInAServer.getServer(); log.info("User {} is warning {} in server {} because of {}", warningAUser.getId(), warnedAUser.getId(), serverOfWarning.getId(), reason); - Warning warning = warnManagementService.createWarning(warnedAUserInAServer, warningAUserInAServer, reason); + AUserInAServer warnedUserInAServerDb = AUserInAServer.builder().userInServerId(warnedAUserInAServer.getUserInServerId()).build(); + AUserInAServer warningUserInAServerDb = AUserInAServer.builder().userInServerId(warnedAUserInAServer.getUserInServerId()).build(); + WarnDto warning = warnManagementService.createWarning(warnedUserInAServerDb, warningUserInAServerDb, reason); JDA instance = bot.getInstance(); User userBeingWarned = instance.getUserById(warnedAUser.getId()); Optional guildById = bot.getGuildById(serverOfWarning.getId()); @@ -67,11 +70,9 @@ public class WarnServiceBean implements WarnService { if(guildById.isPresent()) { guildName = guildById.get().getName(); } - warnLog.setWarning(warning); - this.sendWarnLog(warnLog); - WarnNotification warnNotification = WarnNotification.builder().warning(warning).serverName(guildName).build(); + WarnNotificationModel warnNotificationModel = WarnNotificationModel.builder().warning(warnConverter.convertFromWarnDto(warning)).serverName(guildName).build(); if(userBeingWarned != null) { - String warnLogMessage = templateService.renderTemplate(WARN_NOTIFICATION_TEMPLATE, warnNotification); + String warnLogMessage = templateService.renderTemplate(WARN_NOTIFICATION_TEMPLATE, warnNotificationModel); CompletableFuture messageFuture = new CompletableFuture<>(); // TODO the person executing this, is unaware that the message failed @@ -88,16 +89,18 @@ public class WarnServiceBean implements WarnService { log.warn("Unable to find user {} in guild {} to warn.", warnedAUser.getId(), serverOfWarning.getId()); throw new UserException(String.format("Unable to find user %s.", warnedAUser.getId())); } + return warning; } @Override - public void warnUser(Member warnedMember, Member warningMember, String reason, WarnLog warnLog) { - AUserInAServer warnedAUser = userManagementService.loadUser(warnedMember); - AUserInAServer warningAUser = userManagementService.loadUser(warningMember); - this.warnUser(warnedAUser, warningAUser, reason, warnLog); + public WarnDto warnUser(Member warnedMember, Member warningMember, String reason) { + UserInServerDto warnedAUser = userService.loadUser(warnedMember.getGuild().getIdLong(), warnedMember.getIdLong()); + UserInServerDto warningAUser = userService.loadUser(warningMember.getGuild().getIdLong(), warningMember.getIdLong()); + return this.warnUser(warnedAUser, warningAUser, reason); } - private void sendWarnLog(ServerContext warnLogModel) { + @Override + public void sendWarnLog(WarnLogModel warnLogModel) { String warnLogMessage = templateService.renderTemplate(WARN_LOG_TEMPLATE, warnLogModel); postTargetService.sendTextInPostTarget(warnLogMessage, WARN_LOG_TARGET, warnLogModel.getServer().getId()); MessageToSend message = templateService.renderEmbedTemplate("warn_log", warnLogModel); diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementServiceBean.java b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementServiceBean.java index 7c40ba547..ce8e301fd 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementServiceBean.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementServiceBean.java @@ -1,21 +1,25 @@ package dev.sheldan.abstracto.moderation.service.management; +import dev.sheldan.abstracto.core.models.AUserInAServer; +import dev.sheldan.abstracto.moderation.converter.WarnConverter; import dev.sheldan.abstracto.moderation.models.database.Warning; +import dev.sheldan.abstracto.moderation.models.dto.WarnDto; import dev.sheldan.abstracto.moderation.repository.WarnRepository; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.time.Instant; @Component -public class WarnManagementServiceBean implements WarnManagementService { +public class WarnManagementServiceBean { @Autowired private WarnRepository warnRepository; - @Override - public Warning createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason) { + @Autowired + private WarnConverter warnConverter; + + public WarnDto createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason) { Warning warning = Warning.builder() .reason(reason) .warnedUser(warnedAUser) @@ -23,6 +27,6 @@ public class WarnManagementServiceBean implements WarnManagementService { .warnDate(Instant.now()) .build(); warnRepository.save(warning); - return warning; + return warnConverter.convertFromAWarn(warning); } } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/resources/moderation.properties b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/resources/moderation.properties index 949920b83..7e6fa41f7 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/resources/moderation.properties +++ b/abstracto-application/abstracto-modules/moderation/moderation-impl/src/main/resources/moderation.properties @@ -1,4 +1,4 @@ -abstracto.postTargets.moderation=joinLog,leaveLog,warnLog,kickLog,banLog,editLog,deleteLog +abstracto.postTargets.moderation=joinLog,leaveLog,warnLogModel,kickLog,banLog,editLog,deleteLog abstracto.features.moderation=false abstracto.features.warnings=false abstracto.features.logging=true \ No newline at end of file diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/dto/WarnDto.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/dto/WarnDto.java new file mode 100644 index 000000000..5a3b462a9 --- /dev/null +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/dto/WarnDto.java @@ -0,0 +1,21 @@ +package dev.sheldan.abstracto.moderation.models.dto; + +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +import java.time.OffsetDateTime; + +@Getter +@Setter +@Builder +public class WarnDto { + private Long id; + private UserInServerDto warnedUser; + private UserInServerDto warningUser; + private String reason; + private OffsetDateTime warnDate; + private Boolean decayed; + private OffsetDateTime decayDate; +} diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/BanIdLog.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/BanIdLogModel.java similarity index 61% rename from abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/BanIdLog.java rename to abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/BanIdLogModel.java index 2035b147c..7cc8806e0 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/BanIdLog.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/BanIdLogModel.java @@ -1,15 +1,18 @@ package dev.sheldan.abstracto.moderation.models.template.commands; import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext; +import dev.sheldan.abstracto.core.models.template.UserInServerModel; import lombok.Getter; import lombok.Setter; import lombok.experimental.SuperBuilder; import net.dv8tion.jda.api.entities.Member; -@Getter @SuperBuilder @Setter -public class BanIdLog extends UserInitiatedServerContext { +@Getter +@SuperBuilder +@Setter +public class BanIdLogModel extends UserInitiatedServerContext { private String reason; - private Member banningUser; + private UserInServerModel banningUser; private Long bannedUserId; } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/BanLog.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/BanLogModel.java similarity index 55% rename from abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/BanLog.java rename to abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/BanLogModel.java index d2384f004..4828ba3ac 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/BanLog.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/BanLogModel.java @@ -1,15 +1,18 @@ package dev.sheldan.abstracto.moderation.models.template.commands; import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext; +import dev.sheldan.abstracto.core.models.template.UserInServerModel; import lombok.Getter; import lombok.Setter; import lombok.experimental.SuperBuilder; import net.dv8tion.jda.api.entities.Member; -@Getter @SuperBuilder @Setter -public class BanLog extends UserInitiatedServerContext { +@Getter +@SuperBuilder +@Setter +public class BanLogModel extends UserInitiatedServerContext { private String reason; - private Member banningUser; - private Member bannedUser; + private UserInServerModel banningUser; + private UserInServerModel bannedUser; } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/KickLogModel.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/KickLogModel.java index 9c7007088..36962c2d4 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/KickLogModel.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/KickLogModel.java @@ -1,14 +1,17 @@ package dev.sheldan.abstracto.moderation.models.template.commands; import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext; +import dev.sheldan.abstracto.core.models.template.UserInServerModel; import lombok.Getter; import lombok.Setter; import lombok.experimental.SuperBuilder; import net.dv8tion.jda.api.entities.Member; -@Getter @SuperBuilder @Setter +@Getter +@SuperBuilder +@Setter public class KickLogModel extends UserInitiatedServerContext { private String reason; - private Member kickingUser; - private Member kickedUser; + private UserInServerModel kickingUser; + private UserInServerModel kickedUser; } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/WarnLog.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/WarnLog.java deleted file mode 100644 index 9d9006f26..000000000 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/WarnLog.java +++ /dev/null @@ -1,20 +0,0 @@ -package dev.sheldan.abstracto.moderation.models.template.commands; - -import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext; -import dev.sheldan.abstracto.moderation.models.database.Warning; -import lombok.Getter; -import lombok.Setter; -import lombok.experimental.SuperBuilder; -import net.dv8tion.jda.api.entities.Member; -import net.dv8tion.jda.api.entities.Message; - - -@Getter @SuperBuilder @Setter -public class WarnLog extends UserInitiatedServerContext { - - private String reason; - private Member warnedUser; - private Member warningUser; - private Message message; - private Warning warning; -} diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/WarnLogModel.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/WarnLogModel.java new file mode 100644 index 000000000..39ec32b98 --- /dev/null +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/WarnLogModel.java @@ -0,0 +1,16 @@ +package dev.sheldan.abstracto.moderation.models.template.commands; + +import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.SuperBuilder; +import net.dv8tion.jda.api.entities.Message; + + +@Getter +@SuperBuilder +@Setter +public class WarnLogModel extends UserInitiatedServerContext { + private Message message; + private WarnModel warning; +} diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/WarnModel.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/WarnModel.java new file mode 100644 index 000000000..52f04f1e2 --- /dev/null +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/WarnModel.java @@ -0,0 +1,21 @@ +package dev.sheldan.abstracto.moderation.models.template.commands; + +import dev.sheldan.abstracto.core.models.template.UserInServerModel; +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +import java.time.OffsetDateTime; + +@Getter +@Setter +@Builder +public class WarnModel { + private Long id; + private UserInServerModel warnedUser; + private UserInServerModel warningUser; + private String reason; + private OffsetDateTime warnDate; + private Boolean decayed; + private OffsetDateTime decayDate; +} diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/WarnNotification.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/WarnNotificationModel.java similarity index 50% rename from abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/WarnNotification.java rename to abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/WarnNotificationModel.java index e818c2cf7..4d87280da 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/WarnNotification.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/models/template/commands/WarnNotificationModel.java @@ -1,11 +1,11 @@ package dev.sheldan.abstracto.moderation.models.template.commands; -import dev.sheldan.abstracto.moderation.models.database.Warning; import lombok.Builder; import lombok.Value; -@Value @Builder -public class WarnNotification { - private Warning warning; +@Value +@Builder +public class WarnNotificationModel { + private WarnModel warning; private String serverName; } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/BanService.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/BanService.java index df4300bad..f31223c18 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/BanService.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/BanService.java @@ -1,9 +1,12 @@ package dev.sheldan.abstracto.moderation.service; -import dev.sheldan.abstracto.core.models.context.ServerContext; +import dev.sheldan.abstracto.moderation.models.template.commands.BanIdLogModel; +import dev.sheldan.abstracto.moderation.models.template.commands.BanLogModel; import net.dv8tion.jda.api.entities.Member; public interface BanService { - void banMember(Member member, String reason, ServerContext banLog); - void banMember(Long guildId, Long userId, String reason, ServerContext banIdLog); + void banMember(Member member, String reason); + void banMember(Long guildId, Long userId, String reason); + void sendBanLog(BanLogModel banLogModel); + void sendBanIdLog(BanIdLogModel banLogModel); } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/KickService.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/KickService.java index bbcbf5836..06b3383fc 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/KickService.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/KickService.java @@ -4,5 +4,6 @@ import dev.sheldan.abstracto.moderation.models.template.commands.KickLogModel; import net.dv8tion.jda.api.entities.Member; public interface KickService { - void kickMember(Member member, String reason, KickLogModel kickLogModel); + void kickMember(Member member, String reason); + void sendKickLog(KickLogModel kickLogModel); } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeService.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeService.java index 96c46944a..cbc78e0c3 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeService.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/SlowModeService.java @@ -1,11 +1,11 @@ package dev.sheldan.abstracto.moderation.service; -import dev.sheldan.abstracto.core.models.database.AChannel; +import dev.sheldan.abstracto.core.models.dto.ChannelDto; import net.dv8tion.jda.api.entities.TextChannel; import java.time.Duration; public interface SlowModeService { void setSlowMode(TextChannel channel, Duration duration); - void setSlowMode(AChannel channel, Duration duration); + void setSlowMode(ChannelDto channel, Duration duration); } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/WarnService.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/WarnService.java index 4c2fb5983..5cf872143 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/WarnService.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/WarnService.java @@ -1,11 +1,13 @@ package dev.sheldan.abstracto.moderation.service; -import dev.sheldan.abstracto.moderation.models.template.commands.WarnLog; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; +import dev.sheldan.abstracto.moderation.models.dto.WarnDto; +import dev.sheldan.abstracto.moderation.models.template.commands.WarnLogModel; import net.dv8tion.jda.api.entities.Member; public interface WarnService { - void warnUser(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason, WarnLog warnLog); - void warnUser(Member warnedUser, Member warningUser, String reason, WarnLog warnLog); + WarnDto warnUser(UserInServerDto warnedAUser, UserInServerDto warningAUser, String reason); + WarnDto warnUser(Member warnedUser, Member warningUser, String reason); + void sendWarnLog(WarnLogModel warnLogModel); } diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementService.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementService.java deleted file mode 100644 index 1caebdd77..000000000 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/service/management/WarnManagementService.java +++ /dev/null @@ -1,8 +0,0 @@ -package dev.sheldan.abstracto.moderation.service.management; - -import dev.sheldan.abstracto.moderation.models.database.Warning; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; - -public interface WarnManagementService { - Warning createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason); -} diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/commands/remind/Remind.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/commands/remind/Remind.java index 2999adddd..e9b894362 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/commands/remind/Remind.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/commands/remind/Remind.java @@ -5,7 +5,7 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration; import dev.sheldan.abstracto.core.command.config.HelpInfo; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.command.execution.*; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; import dev.sheldan.abstracto.utility.config.UtilityFeatures; import dev.sheldan.abstracto.utility.Utility; import dev.sheldan.abstracto.utility.models.template.commands.reminder.ReminderModel; @@ -29,7 +29,7 @@ public class Remind extends AbstractConditionableCommand { List parameters = commandContext.getParameters().getParameters(); Duration remindTime = (Duration) parameters.get(0); String text = (String) parameters.get(1); - AUserInAServer aUserInAServer = commandContext.getUserInitiatedContext().getAUserInAServer(); + UserInServerDto aUserInAServer = commandContext.getUserInitiatedContext().getAUserInAServer(); ReminderModel remindModel = (ReminderModel) ContextConverter.fromCommandContext(commandContext, ReminderModel.class); remindModel.setMessage(commandContext.getMessage()); remindModel.setRemindText(text); diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/commands/remind/Reminders.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/commands/remind/Reminders.java index a524ca6bc..a9feb5b80 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/commands/remind/Reminders.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/commands/remind/Reminders.java @@ -13,7 +13,7 @@ import dev.sheldan.abstracto.utility.Utility; import dev.sheldan.abstracto.utility.config.UtilityFeatures; import dev.sheldan.abstracto.utility.models.database.Reminder; import dev.sheldan.abstracto.utility.models.template.commands.reminder.RemindersModel; -import dev.sheldan.abstracto.utility.service.management.ReminderManagementService; +import dev.sheldan.abstracto.utility.service.management.ReminderManagementServiceBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -23,7 +23,7 @@ import java.util.List; public class Reminders extends AbstractConditionableCommand { @Autowired - private ReminderManagementService reminderManagementService; + private ReminderManagementServiceBean reminderManagementService; @Autowired private ChannelService channelService; diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/config/StarboardConfigListener.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/config/StarboardConfigListener.java index 2a22153b8..f22e885d1 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/config/StarboardConfigListener.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/config/StarboardConfigListener.java @@ -1,8 +1,8 @@ package dev.sheldan.abstracto.utility.config; import dev.sheldan.abstracto.core.listener.ServerConfigListener; -import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.service.management.ConfigManagementService; +import dev.sheldan.abstracto.core.models.dto.ServerDto; +import dev.sheldan.abstracto.core.service.ConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -15,13 +15,13 @@ public class StarboardConfigListener implements ServerConfigListener { private StarboardConfig starboardConfig; @Autowired - private ConfigManagementService configManagementService; + private ConfigService configManagementService; @Override - public void updateServerConfig(AServer server) { + public void updateServerConfig(ServerDto server) { for (int i = 0; i < starboardConfig.getLvl().size(); i++) { Integer value = starboardConfig.getLvl().get(i); - configManagementService.createIfNotExists(server.getId(), "starLvl" + ( i + 1 ), Double.valueOf(value)); + configManagementService.createValueIfNotExists("starLvl" + ( i + 1 ), server.getId(), Double.valueOf(value)); } } } diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/converter/StarPostConverter.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/converter/StarPostConverter.java new file mode 100644 index 000000000..cd5b0255a --- /dev/null +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/converter/StarPostConverter.java @@ -0,0 +1,26 @@ +package dev.sheldan.abstracto.utility.converter; + +import dev.sheldan.abstracto.core.models.dto.ChannelDto; +import dev.sheldan.abstracto.core.models.converter.ChannelConverter; +import dev.sheldan.abstracto.utility.models.database.StarboardPost; +import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsPost; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class StarPostConverter { + + @Autowired + private ChannelConverter channelConverter; + + public StarStatsPost fromStarboardPost(StarboardPost starboardPost) { + ChannelDto channel = channelConverter.fromChannel(starboardPost.getStarboardChannel()); + return StarStatsPost + .builder() + .serverId(channel.getServer().getId()) + .channelId(channel.getId()) + .messageId(starboardPost.getPostMessageId()) + .starCount(starboardPost.getReactions().size()) + .build(); + } +} diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/embed/MessageEmbedListener.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/embed/MessageEmbedListener.java index 5b6413ef3..22ac86ac1 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/embed/MessageEmbedListener.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/embed/MessageEmbedListener.java @@ -1,9 +1,9 @@ package dev.sheldan.abstracto.utility.listener.embed; +import dev.sheldan.abstracto.core.command.service.UserService; import dev.sheldan.abstracto.core.listener.MessageReceivedListener; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; import dev.sheldan.abstracto.core.service.MessageCache; -import dev.sheldan.abstracto.core.service.management.UserManagementService; import dev.sheldan.abstracto.utility.models.MessageEmbedLink; import dev.sheldan.abstracto.utility.config.UtilityFeatures; import dev.sheldan.abstracto.utility.service.MessageEmbedService; @@ -25,7 +25,7 @@ public class MessageEmbedListener implements MessageReceivedListener { public static final String MESSAGE_EMBED_TEMPLATE = "message"; @Autowired - private UserManagementService userManagementService; + private UserService userManagementService; @Autowired private MessageEmbedService messageEmbedService; @@ -36,7 +36,7 @@ public class MessageEmbedListener implements MessageReceivedListener { List links = messageEmbedService.getLinksInMessage(messageRaw); for (MessageEmbedLink messageEmbedLink : links) { messageRaw = messageRaw.replace(messageEmbedLink.getWholeUrl(), ""); - AUserInAServer cause = userManagementService.loadUser(message.getMember()); + UserInServerDto cause = userManagementService.loadUser(message.getMember()); messageCache.getMessageFromCache(messageEmbedLink.getServerId(), messageEmbedLink.getChannelId(), messageEmbedLink.getMessageId()).thenAccept(cachedMessage -> { messageEmbedService.embedLink(cachedMessage, message.getTextChannel(), cause, message); }); diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/embed/MessageEmbedRemovalReactionListener.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/embed/MessageEmbedRemovalReactionListener.java index 5416acbc6..2486f2823 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/embed/MessageEmbedRemovalReactionListener.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/embed/MessageEmbedRemovalReactionListener.java @@ -2,15 +2,15 @@ package dev.sheldan.abstracto.utility.listener.embed; import dev.sheldan.abstracto.core.listener.ReactedAddedListener; import dev.sheldan.abstracto.core.models.cache.CachedMessage; -import dev.sheldan.abstracto.core.models.database.AEmote; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.models.dto.EmoteDto; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; import dev.sheldan.abstracto.core.service.Bot; +import dev.sheldan.abstracto.core.service.EmoteService; import dev.sheldan.abstracto.core.service.MessageService; -import dev.sheldan.abstracto.core.service.management.EmoteManagementService; import dev.sheldan.abstracto.core.utils.EmoteUtils; import dev.sheldan.abstracto.utility.config.UtilityFeatures; import dev.sheldan.abstracto.utility.models.database.EmbeddedMessage; -import dev.sheldan.abstracto.utility.service.management.MessageEmbedPostManagementService; +import dev.sheldan.abstracto.utility.service.management.MessageEmbedPostManagementServiceBean; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Emote; import net.dv8tion.jda.api.entities.MessageReaction; @@ -26,31 +26,31 @@ public class MessageEmbedRemovalReactionListener implements ReactedAddedListener public static final String REMOVAL_EMOTE = "removeEmbed"; @Autowired - private EmoteManagementService emoteManagementService; + private EmoteService emoteManagementService; @Autowired private Bot bot; @Autowired - private MessageEmbedPostManagementService messageEmbedPostManagementService; + private MessageEmbedPostManagementServiceBean messageEmbedPostManagementService; @Autowired private MessageService messageService; @Override - public void executeReactionAdded(CachedMessage message, MessageReaction reaction, AUserInAServer userAdding) { + public void executeReactionAdded(CachedMessage message, MessageReaction reaction, UserInServerDto userAdding) { Long guildId = message.getServerId(); - Optional aEmote = emoteManagementService.loadEmoteByName(REMOVAL_EMOTE, guildId); + Optional aEmote = emoteManagementService.getEmoteByName(REMOVAL_EMOTE, guildId); if(aEmote.isPresent()) { - AEmote emote = aEmote.get(); + EmoteDto emote = aEmote.get(); MessageReaction.ReactionEmote reactionEmote = reaction.getReactionEmote(); Optional emoteInGuild = bot.getEmote(guildId, emote); if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, emote, emoteInGuild.orElse(null))) { Optional embeddedMessageOptional = messageEmbedPostManagementService.findEmbeddedPostByMessageId(message.getMessageId()); if(embeddedMessageOptional.isPresent()) { EmbeddedMessage embeddedMessage = embeddedMessageOptional.get(); - if(embeddedMessage.getEmbeddedUser().getUserReference().getId().equals(userAdding.getUserReference().getId()) - || embeddedMessage.getEmbeddingUser().getUserReference().getId().equals(userAdding.getUserReference().getId()) + if(embeddedMessage.getEmbeddedUser().getUserReference().getId().equals(userAdding.getUser().getId()) + || embeddedMessage.getEmbeddingUser().getUserReference().getId().equals(userAdding.getUser().getId()) ) { messageService.deleteMessageInChannelInServer(message.getServerId(), message.getChannelId(), message.getMessageId()).thenAccept(aVoid -> { messageEmbedPostManagementService.deleteEmbeddedMessageTransactional(embeddedMessage); diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/starboard/StarboardListener.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/starboard/StarboardListener.java index ae29b0785..923cba42a 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/starboard/StarboardListener.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/starboard/StarboardListener.java @@ -1,23 +1,23 @@ package dev.sheldan.abstracto.utility.listener.starboard; +import dev.sheldan.abstracto.core.command.service.UserService; import dev.sheldan.abstracto.core.listener.ReactedAddedListener; import dev.sheldan.abstracto.core.listener.ReactedRemovedListener; import dev.sheldan.abstracto.core.models.cache.CachedMessage; import dev.sheldan.abstracto.core.models.cache.CachedReaction; -import dev.sheldan.abstracto.core.models.database.AEmote; -import dev.sheldan.abstracto.core.models.database.AUser; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.models.dto.EmoteDto; +import dev.sheldan.abstracto.core.models.dto.UserDto; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; import dev.sheldan.abstracto.core.service.Bot; +import dev.sheldan.abstracto.core.service.ConfigService; +import dev.sheldan.abstracto.core.service.EmoteService; import dev.sheldan.abstracto.core.service.MessageCache; -import dev.sheldan.abstracto.core.service.management.ConfigManagementService; -import dev.sheldan.abstracto.core.service.management.EmoteManagementService; -import dev.sheldan.abstracto.core.service.management.UserManagementService; import dev.sheldan.abstracto.core.utils.EmoteUtils; import dev.sheldan.abstracto.utility.config.UtilityFeatures; import dev.sheldan.abstracto.utility.models.database.StarboardPost; import dev.sheldan.abstracto.utility.service.StarboardService; -import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementService; -import dev.sheldan.abstracto.utility.service.management.StarboardPostReactorManagementService; +import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementServiceBean; +import dev.sheldan.abstracto.utility.service.management.StarboardPostReactorManagementServiceBean; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Emote; import net.dv8tion.jda.api.entities.MessageReaction; @@ -36,7 +36,7 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi public static final String STAR_EMOTE = "star"; @Autowired - private EmoteManagementService emoteManagementService; + private EmoteService emoteManagementService; @Autowired private Bot bot; @@ -45,30 +45,30 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi private MessageCache messageCache; @Autowired - private ConfigManagementService configManagementService; + private ConfigService configManagementService; @Autowired private StarboardService starboardService; @Autowired - private StarboardPostManagementService starboardPostManagementService; + private StarboardPostManagementServiceBean starboardPostManagementService; @Autowired - private StarboardPostReactorManagementService starboardPostReactorManagementService; + private StarboardPostReactorManagementServiceBean starboardPostReactorManagementService; @Autowired - private UserManagementService userManagementService; + private UserService userManagementService; @Override @Transactional - public void executeReactionAdded(CachedMessage message, MessageReaction addedReaction, AUserInAServer userAdding) { - if(userAdding.getUserReference().getId().equals(message.getAuthorId())) { + public void executeReactionAdded(CachedMessage message, MessageReaction addedReaction, UserInServerDto userAdding) { + if(userAdding.getUser().getId().equals(message.getAuthorId())) { return; } Long guildId = message.getServerId(); - Optional aEmote = emoteManagementService.loadEmoteByName(STAR_EMOTE, guildId); + Optional aEmote = emoteManagementService.getEmoteByName(STAR_EMOTE, guildId); if(aEmote.isPresent()) { - AEmote emote = aEmote.get(); + EmoteDto emote = aEmote.get(); MessageReaction.ReactionEmote reactionEmote = addedReaction.getReactionEmote(); Optional emoteInGuild = bot.getEmote(guildId, emote); if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, emote, emoteInGuild.orElse(null))) { @@ -80,21 +80,21 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi } } - private void updateStarboardPost(CachedMessage message, CachedReaction reaction, AUserInAServer userReacting, boolean adding) { + private void updateStarboardPost(CachedMessage message, CachedReaction reaction, UserInServerDto userReacting, boolean adding) { Optional starboardPostOptional = starboardPostManagementService.findByMessageId(message.getMessageId()); if(reaction != null) { - List userExceptAuthor = getUsersExcept(reaction.getUsers(), message.getAuthorId()); - Double starMinimum = getFromConfig("starLvl1", message.getServerId()); + List userExceptAuthor = getUsersExcept(reaction.getUsers(), message.getAuthorId()); + Double starMinimum = configManagementService.getDoubleValue("starLvl1", message.getServerId()); if (userExceptAuthor.size() >= starMinimum) { - AUserInAServer author = userManagementService.loadUser(message.getServerId(), message.getAuthorId()); + UserInServerDto author = userManagementService.loadUser(message.getServerId(), message.getAuthorId()); if(starboardPostOptional.isPresent()) { StarboardPost starboardPost = starboardPostOptional.get(); starboardPost.setIgnored(false); starboardService.updateStarboardPost(starboardPost, message, userExceptAuthor); if(adding) { - starboardPostReactorManagementService.addReactor(starboardPost, userReacting.getUserReference()); + starboardPostReactorManagementService.addReactor(starboardPost, userReacting.getUser()); } else { - starboardPostReactorManagementService.removeReactor(starboardPost, userReacting.getUserReference()); + starboardPostReactorManagementService.removeReactor(starboardPost, userReacting.getUser()); } } else { starboardService.createStarboardPost(message, userExceptAuthor, userReacting, author); @@ -119,14 +119,14 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi @Override @Transactional - public void executeReactionRemoved(CachedMessage message, MessageReaction removedReaction, AUserInAServer userRemoving) { - if(message.getAuthorId().equals(userRemoving.getUserReference().getId())) { + public void executeReactionRemoved(CachedMessage message, MessageReaction removedReaction, UserInServerDto userRemoving) { + if(message.getAuthorId().equals(userRemoving.getUser().getId())) { return; } Long guildId = message.getServerId(); - Optional aEmote = emoteManagementService.loadEmoteByName(STAR_EMOTE, guildId); + Optional aEmote = emoteManagementService.getEmoteByName(STAR_EMOTE, guildId); if(aEmote.isPresent()) { - AEmote emote = aEmote.get(); + EmoteDto emote = aEmote.get(); MessageReaction.ReactionEmote reactionEmote = removedReaction.getReactionEmote(); Optional emoteInGuild = bot.getEmote(guildId, emote); if(EmoteUtils.isReactionEmoteAEmote(reactionEmote, emote, emoteInGuild.orElse(null))) { @@ -138,11 +138,7 @@ public class StarboardListener implements ReactedAddedListener, ReactedRemovedLi } } - private Double getFromConfig(String key, Long guildId) { - return configManagementService.loadConfig(guildId, key).getDoubleValue(); - } - - private List getUsersExcept(List users, Long userId) { + private List getUsersExcept(List users, Long userId) { return users.stream().filter(user -> !user.getId().equals(userId)).collect(Collectors.toList()); } diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/starboard/StarboardPostDeletedListener.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/starboard/StarboardPostDeletedListener.java index bf53e11a5..f230d496b 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/starboard/StarboardPostDeletedListener.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/listener/starboard/StarboardPostDeletedListener.java @@ -4,7 +4,7 @@ import dev.sheldan.abstracto.core.listener.MessageDeletedListener; import dev.sheldan.abstracto.core.models.cache.CachedMessage; import dev.sheldan.abstracto.utility.config.UtilityFeatures; import dev.sheldan.abstracto.utility.models.database.StarboardPost; -import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementService; +import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementServiceBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -14,7 +14,7 @@ import java.util.Optional; public class StarboardPostDeletedListener implements MessageDeletedListener { @Autowired - private StarboardPostManagementService starboardPostManagementService; + private StarboardPostManagementServiceBean starboardPostManagementService; @Override public void execute(CachedMessage messageBefore) { diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/repository/ReminderRepository.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/repository/ReminderRepository.java index d41426809..e6e6c8348 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/repository/ReminderRepository.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/repository/ReminderRepository.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.utility.repository; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.models.AUserInAServer; import dev.sheldan.abstracto.utility.models.database.Reminder; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/repository/StarboardPostReactionRepository.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/repository/StarboardPostReactionRepository.java index 199c8bf1e..d1138ffdd 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/repository/StarboardPostReactionRepository.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/repository/StarboardPostReactionRepository.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.utility.repository; -import dev.sheldan.abstracto.core.models.database.AUser; +import dev.sheldan.abstracto.core.models.AUser; import dev.sheldan.abstracto.utility.models.database.StarboardPost; import dev.sheldan.abstracto.utility.models.database.StarboardPostReaction; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/repository/converter/StarStatsUserConverter.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/repository/converter/StarStatsUserConverter.java index cb6ae3a39..1aa31f5e2 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/repository/converter/StarStatsUserConverter.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/repository/converter/StarStatsUserConverter.java @@ -1,7 +1,7 @@ package dev.sheldan.abstracto.utility.repository.converter; -import dev.sheldan.abstracto.core.service.management.UserManagementService; -import dev.sheldan.abstracto.core.models.database.AUser; +import dev.sheldan.abstracto.core.command.service.UserService; +import dev.sheldan.abstracto.core.models.dto.UserDto; import dev.sheldan.abstracto.core.service.Bot; import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsUser; import dev.sheldan.abstracto.utility.repository.StarStatsUserResult; @@ -15,7 +15,7 @@ import java.util.List; public class StarStatsUserConverter { @Autowired - private UserManagementService userManagementService; + private UserService userManagementService; @Autowired private Bot bot; @@ -27,7 +27,7 @@ public class StarStatsUserConverter { .builder() .starCount(starStatsUserResult.getStarCount()) .member(bot.getMemberInServer(serverId, starStatsUserResult.getUserId())) - .user(AUser.builder().id(starStatsUserResult.getUserId()).build()) + .user(UserDto.builder().id(starStatsUserResult.getUserId()).build()) .build(); result.add(newUser); }); diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/MessageEmbedServiceBean.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/MessageEmbedServiceBean.java index d3c1c46f3..9f1c026ce 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/MessageEmbedServiceBean.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/MessageEmbedServiceBean.java @@ -1,22 +1,23 @@ package dev.sheldan.abstracto.utility.service; +import dev.sheldan.abstracto.core.command.service.UserService; +import dev.sheldan.abstracto.core.converter.UserInServerModelConverter; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; +import dev.sheldan.abstracto.core.models.template.ChannelModel; +import dev.sheldan.abstracto.core.models.template.ServerModel; +import dev.sheldan.abstracto.core.models.template.UserInServerModel; import dev.sheldan.abstracto.core.models.template.listener.MessageEmbeddedModel; import dev.sheldan.abstracto.templating.model.MessageToSend; import dev.sheldan.abstracto.core.models.cache.CachedMessage; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.core.service.Bot; import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.core.service.MessageCache; import dev.sheldan.abstracto.core.service.MessageService; -import dev.sheldan.abstracto.core.service.management.ChannelManagementService; -import dev.sheldan.abstracto.core.service.management.ServerManagementService; -import dev.sheldan.abstracto.core.service.management.UserManagementService; import dev.sheldan.abstracto.templating.service.TemplateService; import dev.sheldan.abstracto.utility.models.MessageEmbedLink; -import dev.sheldan.abstracto.utility.service.management.MessageEmbedPostManagementService; +import dev.sheldan.abstracto.utility.service.management.MessageEmbedPostManagementServiceBean; 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.Message; import net.dv8tion.jda.api.entities.TextChannel; @@ -41,13 +42,10 @@ public class MessageEmbedServiceBean implements MessageEmbedService { public static final String REMOVAL_EMOTE = "removeEmbed"; @Autowired - private ChannelManagementService channelManagementService; + private ChannelService channelManagementService; @Autowired - private ServerManagementService serverManagementService; - - @Autowired - private UserManagementService userManagementService; + private UserService userManagementService; @Autowired private Bot bot; @@ -65,11 +63,17 @@ public class MessageEmbedServiceBean implements MessageEmbedService { private MessageCache messageCache; @Autowired - private MessageEmbedPostManagementService messageEmbedPostManagementService; + private MessageEmbedPostManagementServiceBean messageEmbedPostManagementService; @Autowired private MessageService messageService; + @Autowired + private UserInServerModelConverter userInServerModelConverter; + + @Autowired + private UserService userService; + @Override public List getLinksInMessage(String message) { List links = new ArrayList<>(); @@ -95,7 +99,7 @@ public class MessageEmbedServiceBean implements MessageEmbedService { } @Override - public void embedLinks(List linksToEmbed, TextChannel target, AUserInAServer reason, Message embeddingMessage) { + public void embedLinks(List linksToEmbed, TextChannel target, UserInServerDto reason, Message embeddingMessage) { linksToEmbed.forEach(messageEmbedLink -> { messageCache.getMessageFromCache(messageEmbedLink.getServerId(), messageEmbedLink.getChannelId(), messageEmbedLink.getMessageId()) .thenAccept(cachedMessage -> { @@ -106,7 +110,7 @@ public class MessageEmbedServiceBean implements MessageEmbedService { @Override @Transactional - public void embedLink(CachedMessage cachedMessage, TextChannel target, AUserInAServer cause, Message embeddingMessage) { + public void embedLink(CachedMessage cachedMessage, TextChannel target, UserInServerDto cause, Message embeddingMessage) { MessageEmbeddedModel messageEmbeddedModel = buildTemplateParameter(embeddingMessage, cachedMessage); MessageToSend embed = templateService.renderEmbedTemplate(MESSAGE_EMBED_TEMPLATE, messageEmbeddedModel); List> completableFutures = channelService.sendMessageToEndInTextChannel(embed, target); @@ -124,24 +128,22 @@ public class MessageEmbedServiceBean implements MessageEmbedService { } private MessageEmbeddedModel buildTemplateParameter(Message message, CachedMessage embeddedMessage) { - AChannel channel = channelManagementService.loadChannel(message.getChannel().getIdLong()); - AServer server = serverManagementService.loadOrCreate(message.getGuild().getIdLong()); - AUserInAServer user = userManagementService.loadUser(message.getMember()); - Member author = bot.getMemberInServer(embeddedMessage.getServerId(), embeddedMessage.getAuthorId()); - TextChannel sourceChannel = bot.getTextChannelFromServer(embeddedMessage.getServerId(), embeddedMessage.getChannelId()).get(); + ChannelModel currentChannel = ChannelModel.builder().id(message.getTextChannel().getIdLong()).build(); + Guild guild = message.getGuild(); + ServerModel server = ServerModel.builder().id(guild.getIdLong()).build(); + UserInServerModel embeddingUser = userInServerModelConverter.fromMember(message.getMember()); + UserInServerModel embeddedUser = userInServerModelConverter.fromUser(userService.loadUser(embeddedMessage.getServerId(), embeddedMessage.getAuthorId())); + ServerModel sourceServer = ServerModel.builder().id(embeddedMessage.getServerId()).build(); return MessageEmbeddedModel .builder() - .channel(channel) + .channel(currentChannel) .server(server) - .member(message.getMember()) - .aUserInAServer(user) - .author(author) - .sourceChannel(sourceChannel) - .embeddingUser(message.getMember()) - .user(user.getUserReference()) - .messageChannel(message.getChannel()) - .guild(message.getGuild()) .embeddedMessage(embeddedMessage) + .embeddedUser(embeddedUser.getUser()) + .embeddedUserInServer(embeddedUser) + .userModel(embeddingUser.getUser()) + .userInServer(embeddedUser) + .sourceServer(sourceServer) .build(); } } diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/RemindServiceBean.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/RemindServiceBean.java index b70edf640..27574e785 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/RemindServiceBean.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/RemindServiceBean.java @@ -1,12 +1,14 @@ package dev.sheldan.abstracto.utility.service; +import dev.sheldan.abstracto.core.models.converter.ChannelConverter; +import dev.sheldan.abstracto.core.models.converter.ServerConverter; +import dev.sheldan.abstracto.core.models.converter.UserConverter; +import dev.sheldan.abstracto.core.models.dto.ChannelDto; +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 dev.sheldan.abstracto.core.service.ChannelService; -import dev.sheldan.abstracto.core.service.management.ChannelManagementService; import dev.sheldan.abstracto.core.models.AServerAChannelAUser; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.models.database.AUser; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.templating.model.MessageToSend; import dev.sheldan.abstracto.core.service.Bot; import dev.sheldan.abstracto.scheduling.service.SchedulerService; @@ -14,7 +16,7 @@ import dev.sheldan.abstracto.templating.service.TemplateService; import dev.sheldan.abstracto.utility.models.database.Reminder; import dev.sheldan.abstracto.utility.models.template.commands.reminder.ExecutedReminderModel; import dev.sheldan.abstracto.utility.models.template.commands.reminder.ReminderModel; -import dev.sheldan.abstracto.utility.service.management.ReminderManagementService; +import dev.sheldan.abstracto.utility.service.management.ReminderManagementServiceBean; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; @@ -38,10 +40,10 @@ public class RemindServiceBean implements ReminderService { public static final String REMINDER_EMBED_KEY = "remind_response"; @Autowired - private ReminderManagementService reminderManagementService; + private ReminderManagementServiceBean reminderManagementService; @Autowired - private ChannelManagementService channelManagementService; + private ChannelService channelManagementService; @Autowired private TemplateService templateService; @@ -58,14 +60,23 @@ public class RemindServiceBean implements ReminderService { @Autowired private ChannelService channelService; + @Autowired + private ServerConverter serverConverter; + + @Autowired + private ChannelConverter channelConverter; + + @Autowired + private UserConverter userConverter; + @Override - public void createReminderInForUser(AUserInAServer user, String remindText, Duration remindIn, ReminderModel reminderModel) { - AChannel channel = channelManagementService.loadChannel(reminderModel.getChannel().getId()); + public void createReminderInForUser(UserInServerDto user, String remindText, Duration remindIn, ReminderModel reminderModel) { + ChannelDto channel = channelManagementService.loadChannel(reminderModel.getChannel().getId()); AServerAChannelAUser aServerAChannelAUser = AServerAChannelAUser .builder() - .user(user.getUserReference()) + .user(user.getUser()) .aUserInAServer(user) - .guild(user.getServerReference()) + .guild(user.getServer()) .channel(channel) .build(); Instant remindAt = Instant.now().plusNanos(remindIn.toNanos()); @@ -90,14 +101,14 @@ public class RemindServiceBean implements ReminderService { @Transactional public void executeReminder(Long reminderId) { Reminder reminderToRemindFor = reminderManagementService.loadReminder(reminderId); - AServer server = reminderToRemindFor.getServer(); - AChannel channel = reminderToRemindFor.getChannel(); + ServerDto server = serverConverter.convertServer(reminderToRemindFor.getServer()); + ChannelDto channel = channelConverter.fromChannel(reminderToRemindFor.getChannel()); Optional guildToAnswerIn = bot.getGuildById(server.getId()); if(guildToAnswerIn.isPresent()) { Optional channelToAnswerIn = bot.getTextChannelFromServer(server.getId(), channel.getId()); // only send the message if the channel still exists, if not, only set the reminder to reminded. if(channelToAnswerIn.isPresent()) { - AUser userReference = reminderToRemindFor.getRemindedUser().getUserReference(); + UserDto userReference = userConverter.fromAUser(reminderToRemindFor.getRemindedUser().getUserReference()); Member memberInServer = bot.getMemberInServer(server.getId(), userReference.getId()); ExecutedReminderModel build = ExecutedReminderModel .builder() diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/StarboardServiceBean.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/StarboardServiceBean.java index 8c81f6f80..193c32faf 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/StarboardServiceBean.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/StarboardServiceBean.java @@ -1,11 +1,13 @@ package dev.sheldan.abstracto.utility.service; -import dev.sheldan.abstracto.core.service.management.EmoteManagementService; -import dev.sheldan.abstracto.core.service.management.PostTargetManagement; -import dev.sheldan.abstracto.core.service.management.UserManagementService; +import dev.sheldan.abstracto.core.command.service.UserService; +import dev.sheldan.abstracto.core.models.AChannel; +import dev.sheldan.abstracto.core.models.AUserInAServer; +import dev.sheldan.abstracto.core.models.converter.ChannelConverter; +import dev.sheldan.abstracto.core.models.converter.UserInServerConverter; +import dev.sheldan.abstracto.core.models.dto.*; import dev.sheldan.abstracto.core.models.AServerAChannelMessage; import dev.sheldan.abstracto.core.models.cache.CachedMessage; -import dev.sheldan.abstracto.core.models.database.*; import dev.sheldan.abstracto.templating.model.MessageToSend; import dev.sheldan.abstracto.core.service.Bot; import dev.sheldan.abstracto.core.service.ConfigService; @@ -13,13 +15,14 @@ import dev.sheldan.abstracto.core.service.EmoteService; import dev.sheldan.abstracto.core.service.PostTargetService; import dev.sheldan.abstracto.templating.service.TemplateService; import dev.sheldan.abstracto.utility.config.StarboardConfig; +import dev.sheldan.abstracto.utility.converter.StarPostConverter; import dev.sheldan.abstracto.utility.models.database.StarboardPost; import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsModel; import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsPost; import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsUser; import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarboardPostModel; -import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementService; -import dev.sheldan.abstracto.utility.service.management.StarboardPostReactorManagementService; +import dev.sheldan.abstracto.utility.service.management.StarboardPostManagementServiceBean; +import dev.sheldan.abstracto.utility.service.management.StarboardPostReactorManagementServiceBean; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.*; import org.springframework.beans.factory.annotation.Autowired; @@ -48,35 +51,41 @@ public class StarboardServiceBean implements StarboardService { @Autowired private TemplateService templateService; - @Autowired - private EmoteManagementService emoteManagementService; - @Autowired private ConfigService configService; @Autowired - private StarboardPostManagementService starboardPostManagementService; + private StarboardPostManagementServiceBean starboardPostManagementService; @Autowired private StarboardConfig starboardConfig; @Autowired - private UserManagementService userManagementService; + private UserService userManagementService; @Autowired - private StarboardPostReactorManagementService starboardPostReactorManagementService; + private StarboardPostReactorManagementServiceBean starboardPostReactorManagementService; @Autowired - private PostTargetManagement postTargetManagement; + private PostTargetService postTargetManagement; @Autowired private EmoteService emoteService; + @Autowired + private UserInServerConverter userInServerConverter; + + @Autowired + private ChannelConverter channelConverter; + + @Autowired + private StarPostConverter starPostConverter; + @Override - public void createStarboardPost(CachedMessage message, List userExceptAuthor, AUserInAServer userReacting, AUserInAServer starredUser) { + public void createStarboardPost(CachedMessage message, List userExceptAuthor, UserInServerDto userReacting, UserInServerDto starredUser) { StarboardPostModel starboardPostModel = buildStarboardPostModel(message, userExceptAuthor.size()); MessageToSend messageToSend = templateService.renderEmbedTemplate(STARBOARD_POST_TEMPLATE, starboardPostModel); - PostTarget starboard = postTargetManagement.getPostTarget(STARBOARD_POSTTARGET, message.getServerId()); + PostTargetDto starboard = postTargetManagement.getPostTarget(STARBOARD_POSTTARGET, message.getServerId()); List> completableFutures = postTargetService.sendEmbedInPostTarget(messageToSend, STARBOARD_POSTTARGET, message.getServerId()); CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture[0])).thenAccept(aVoid -> { try { @@ -85,7 +94,7 @@ public class StarboardServiceBean implements StarboardService { .builder() .messageId(message1.getIdLong()) .channel(starboard.getChannelReference()) - .server(userReacting.getServerReference()) + .server(userReacting.getServer()) .build(); StarboardPost starboardPost = starboardPostManagementService.createStarboardPost(message, starredUser, userReacting, aServerAChannelMessage); // TODO maybe in bulk, but numbers should be small enough @@ -103,13 +112,13 @@ public class StarboardServiceBean implements StarboardService { Member member = bot.getMemberInServer(message.getServerId(), message.getAuthorId()); Optional channel = bot.getTextChannelFromServer(message.getServerId(), message.getChannelId()); Optional guild = bot.getGuildById(message.getServerId()); - AChannel aChannel = AChannel.builder().id(message.getChannelId()).build(); - AUser user = AUser.builder().id(message.getAuthorId()).build(); - AServer server = AServer.builder().id(message.getServerId()).build(); - Optional appropriateEmoteOptional = getAppropriateEmote(message.getServerId(), starCount); + ChannelDto aChannel = ChannelDto.builder().id(message.getChannelId()).build(); + UserDto user = UserDto.builder().id(message.getAuthorId()).build(); + ServerDto server = ServerDto.builder().id(message.getServerId()).build(); + Optional appropriateEmoteOptional = getAppropriateEmote(message.getServerId(), starCount); String emoteText; if(appropriateEmoteOptional.isPresent()) { - AEmote emote = appropriateEmoteOptional.get(); + EmoteDto emote = appropriateEmoteOptional.get(); emoteText = emoteService.getEmoteAsMention(emote, message.getServerId(), "⭐"); } else { log.warn("No emote defined to be used for starboard post. Falling back to default."); @@ -130,7 +139,7 @@ public class StarboardServiceBean implements StarboardService { } @Override - public void updateStarboardPost(StarboardPost post, CachedMessage message, List userExceptAuthor) { + public void updateStarboardPost(StarboardPost post, CachedMessage message, List userExceptAuthor) { StarboardPostModel starboardPostModel = buildStarboardPostModel(message, userExceptAuthor.size()); MessageToSend messageToSend = templateService.renderEmbedTemplate("starboard_post", starboardPostModel); List> futures = new ArrayList<>(); @@ -155,14 +164,14 @@ public class StarboardServiceBean implements StarboardService { int count = 3; List starboardPosts = starboardPostManagementService.retrieveTopPosts(serverId, count); List topStarGivers = starboardPostReactorManagementService.retrieveTopStarGiver(serverId, count); - List starStatsPosts = starboardPosts.stream().map(StarStatsPost::fromStarboardPost).collect(Collectors.toList()); + List starStatsPosts = starboardPosts.stream().map(starboardPost -> starPostConverter.fromStarboardPost(starboardPost)).collect(Collectors.toList()); List topStarReceiver = starboardPostReactorManagementService.retrieveTopStarReceiver(serverId, count); Integer postCount = starboardPostManagementService.getPostCount(serverId); Integer reactionCount = starboardPostReactorManagementService.getStarCount(serverId); List emotes = new ArrayList<>(); for (int i = 1; i < count + 1; i++) { - Optional starboardRankingEmote = getStarboardRankingEmote(serverId, i); - AEmote emote = starboardRankingEmote.orElse(null); + Optional starboardRankingEmote = getStarboardRankingEmote(serverId, i); + EmoteDto emote = starboardRankingEmote.orElse(null); String defaultEmoji = starboardConfig.getBadge().get(i - 1); emotes.add(emoteService.getEmoteAsMention(emote, serverId, defaultEmoji)); } @@ -178,17 +187,17 @@ public class StarboardServiceBean implements StarboardService { .build(); } - private Optional getStarboardRankingEmote(Long serverId, Integer position) { - return emoteManagementService.loadEmoteByName("starboardBadge" + position, serverId); + private Optional getStarboardRankingEmote(Long serverId, Integer position) { + return emoteService.getEmoteByName("starboardBadge" + position, serverId); } - private Optional getAppropriateEmote(Long serverId, Integer starCount) { + private Optional getAppropriateEmote(Long serverId, Integer starCount) { for(int i = starboardConfig.getLvl().size(); i > 0; i--) { Double starMinimum = configService.getDoubleValue("starLvl" + i, serverId); if(starCount >= starMinimum) { - return emoteManagementService.loadEmoteByName("star" + i, serverId); + return emoteService.getEmoteByName("star" + i, serverId); } } - return emoteManagementService.loadEmoteByName("star0", serverId); + return emoteService.getEmoteByName("star0", serverId); } } diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/SuggestionServiceBean.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/SuggestionServiceBean.java index b74518fce..dea3e8bef 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/SuggestionServiceBean.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/SuggestionServiceBean.java @@ -1,8 +1,8 @@ package dev.sheldan.abstracto.utility.service; +import dev.sheldan.abstracto.core.models.converter.UserInServerConverter; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; import dev.sheldan.abstracto.core.service.EmoteService; -import dev.sheldan.abstracto.core.service.management.EmoteManagementService; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.templating.model.MessageToSend; import dev.sheldan.abstracto.core.service.Bot; import dev.sheldan.abstracto.core.service.MessageService; @@ -12,7 +12,7 @@ import dev.sheldan.abstracto.templating.service.TemplateService; import dev.sheldan.abstracto.utility.models.database.Suggestion; import dev.sheldan.abstracto.utility.models.SuggestionState; import dev.sheldan.abstracto.utility.models.template.commands.SuggestionLog; -import dev.sheldan.abstracto.utility.service.management.SuggestionManagementService; +import dev.sheldan.abstracto.utility.service.management.SuggestionManagementServiceBean; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.*; @@ -35,7 +35,7 @@ public class SuggestionServiceBean implements SuggestionService { private static final String SUGGESTION_NO_EMOTE = "suggestionNo"; public static final String SUGGESTIONS_TARGET = "suggestions"; @Autowired - private SuggestionManagementService suggestionManagementService; + private SuggestionManagementServiceBean suggestionManagementService; @Autowired private PostTargetService postTargetService; @@ -46,9 +46,6 @@ public class SuggestionServiceBean implements SuggestionService { @Autowired private Bot botService; - @Autowired - private EmoteManagementService emoteManagementService; - @Autowired private EmoteService emoteService; @@ -58,6 +55,9 @@ public class SuggestionServiceBean implements SuggestionService { @Autowired private SuggestionServiceBean self; + @Autowired + private UserInServerConverter userInServerConverter; + @Override public void createSuggestion(Member member, String text, SuggestionLog suggestionLog) { Suggestion suggestion = suggestionManagementService.createSuggestion(member, text); @@ -99,11 +99,11 @@ public class SuggestionServiceBean implements SuggestionService { suggestionLog.setOriginalChannelId(channelId); suggestionLog.setOriginalMessageId(originalMessageId); suggestionLog.setOriginalMessageUrl(MessageUtils.buildMessageUrl(serverId, channelId, originalMessageId)); - AUserInAServer suggester = suggestion.getSuggester(); + UserInServerDto suggester = userInServerConverter.fromAUserInAServer(suggestion.getSuggester()); JDA instance = botService.getInstance(); Guild guildById = instance.getGuildById(serverId); if(guildById != null) { - Member memberById = guildById.getMemberById(suggester.getUserReference().getId()); + Member memberById = guildById.getMemberById(suggester.getUser().getId()); if(memberById != null) { suggestionLog.setSuggester(memberById); suggestionLog.setSuggestion(suggestion); @@ -140,6 +140,6 @@ public class SuggestionServiceBean implements SuggestionService { public void validateSetup(Long serverId) { emoteService.throwIfEmoteDoesNotExist(SUGGESTION_YES_EMOTE, serverId); emoteService.throwIfEmoteDoesNotExist(SUGGESTION_NO_EMOTE, serverId); - postTargetService.throwIfPostTargetIsNotDefined(SUGGESTION_YES_EMOTE, serverId); + postTargetService.throwIfPostTargetIsNotDefined(SUGGESTIONS_TARGET, serverId); } } diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/MessageEmbedPostManagementServiceBean.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/MessageEmbedPostManagementServiceBean.java index 3ca9b838c..61a9ae177 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/MessageEmbedPostManagementServiceBean.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/MessageEmbedPostManagementServiceBean.java @@ -1,11 +1,13 @@ package dev.sheldan.abstracto.utility.service.management; +import dev.sheldan.abstracto.core.command.service.UserService; +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.cache.CachedMessage; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.models.converter.UserInServerConverter; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; import dev.sheldan.abstracto.core.service.MessageService; -import dev.sheldan.abstracto.core.service.management.UserManagementService; import dev.sheldan.abstracto.utility.models.database.EmbeddedMessage; import dev.sheldan.abstracto.utility.repository.EmbeddedMessageRepository; import lombok.extern.slf4j.Slf4j; @@ -18,25 +20,29 @@ import java.util.Optional; @Component @Slf4j -public class MessageEmbedPostManagementServiceBean implements MessageEmbedPostManagementService { +public class MessageEmbedPostManagementServiceBean { @Autowired private EmbeddedMessageRepository embeddedMessageRepository; @Autowired - private UserManagementService userManagementService; + private UserService userManagementService; @Autowired private MessageService messageService; - @Override + @Autowired + private UserInServerConverter userInServerConverter; + @Transactional - public void createMessageEmbed(CachedMessage embeddedMessage, Message messageContainingEmbed, AUserInAServer cause) { + public void createMessageEmbed(CachedMessage embeddedMessage, Message messageContainingEmbed, UserInServerDto cause) { AServer embeddedServer = AServer.builder().id(embeddedMessage.getServerId()).build(); AChannel embeddedChannel = AChannel.builder().id(embeddedMessage.getChannelId()).build(); AServer embeddingServer = AServer.builder().id(messageContainingEmbed.getGuild().getIdLong()).build(); AChannel embeddingChannel = AChannel.builder().id(messageContainingEmbed.getTextChannel().getIdLong()).build(); - AUserInAServer embeddedAuthor = userManagementService.loadUser(embeddedMessage.getServerId(), embeddedMessage.getAuthorId()); + UserInServerDto authorDto = userManagementService.loadUser(embeddedMessage.getServerId(), embeddedMessage.getAuthorId()); + AUserInAServer author = userInServerConverter.fromDto(authorDto); + AUserInAServer auserCause = userInServerConverter.fromDto(cause); EmbeddedMessage messageEmbedPost = EmbeddedMessage .builder() .embeddedMessageId(embeddedMessage.getMessageId()) @@ -45,24 +51,21 @@ public class MessageEmbedPostManagementServiceBean implements MessageEmbedPostMa .embeddingServer(embeddingServer) .embeddingChannel(embeddingChannel) .embeddingMessageId(messageContainingEmbed.getIdLong()) - .embeddedUser(embeddedAuthor) - .embeddingUser(cause) + .embeddedUser(author) + .embeddingUser(auserCause) .build(); embeddedMessageRepository.save(messageEmbedPost); } - @Override public Optional findEmbeddedPostByMessageId(Long messageId) { return Optional.ofNullable(embeddedMessageRepository.findByEmbeddingMessageId(messageId)); } - @Override public void deleteEmbeddedMessage(EmbeddedMessage embeddedMessage) { embeddedMessageRepository.delete(embeddedMessage); } - @Override @Transactional public void deleteEmbeddedMessageTransactional(EmbeddedMessage embeddedMessage) { this.deleteEmbeddedMessage(embeddedMessage); diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/ReminderManagementServiceBean.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/ReminderManagementServiceBean.java index 6a280b0b3..659e7f6ba 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/ReminderManagementServiceBean.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/ReminderManagementServiceBean.java @@ -1,7 +1,12 @@ package dev.sheldan.abstracto.utility.service.management; +import dev.sheldan.abstracto.core.models.AChannel; import dev.sheldan.abstracto.core.models.AServerAChannelAUser; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.models.converter.ChannelConverter; +import dev.sheldan.abstracto.core.models.converter.ServerConverter; +import dev.sheldan.abstracto.core.models.converter.UserConverter; +import dev.sheldan.abstracto.core.models.converter.UserInServerConverter; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; import dev.sheldan.abstracto.utility.models.database.Reminder; import dev.sheldan.abstracto.utility.repository.ReminderRepository; import org.springframework.beans.factory.annotation.Autowired; @@ -11,17 +16,25 @@ import java.time.Instant; import java.util.List; @Component -public class ReminderManagementServiceBean implements ReminderManagementService { +public class ReminderManagementServiceBean { @Autowired private ReminderRepository reminderRepository; - @Override + @Autowired + private ChannelConverter channelConverter; + + @Autowired + private ServerConverter serverConverter; + + @Autowired + private UserInServerConverter userConverter; + public Reminder createReminder(AServerAChannelAUser userToBeReminded, String text, Instant timeToBeRemindedAt, Long messageId) { Reminder reminder = Reminder.builder() - .channel(userToBeReminded.getChannel()) - .server(userToBeReminded.getGuild()) - .remindedUser(userToBeReminded.getAUserInAServer()) + .channel(channelConverter.fromDto(userToBeReminded.getChannel())) + .server(serverConverter.fromDto(userToBeReminded.getGuild())) + .remindedUser(userConverter.fromDto(userToBeReminded.getAUserInAServer())) .reminded(false) .text(text) .reminderDate(Instant.now()) @@ -33,20 +46,17 @@ public class ReminderManagementServiceBean implements ReminderManagementService return reminder; } - @Override public Reminder loadReminder(Long reminderId) { return reminderRepository.getOne(reminderId); } - @Override public void setReminded(Reminder reminder) { reminder.setReminded(true); reminderRepository.save(reminder); } - @Override - public List getActiveRemindersForUser(AUserInAServer aUserInAServer) { - return reminderRepository.getByRemindedUserAndRemindedFalse(aUserInAServer); + public List getActiveRemindersForUser(UserInServerDto aUserInAServer) { + return reminderRepository.getByRemindedUserAndRemindedFalse(userConverter.fromDto(aUserInAServer)); } } diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/StarboardPostManagementServiceBean.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/StarboardPostManagementServiceBean.java index 07432cbe3..3bc850ee4 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/StarboardPostManagementServiceBean.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/StarboardPostManagementServiceBean.java @@ -1,8 +1,11 @@ package dev.sheldan.abstracto.utility.service.management; import dev.sheldan.abstracto.core.models.AServerAChannelMessage; +import dev.sheldan.abstracto.core.models.AUserInAServer; import dev.sheldan.abstracto.core.models.cache.CachedMessage; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.models.converter.ChannelConverter; +import dev.sheldan.abstracto.core.models.converter.UserInServerConverter; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; import dev.sheldan.abstracto.utility.models.database.StarboardPost; import dev.sheldan.abstracto.utility.repository.StarboardPostRepository; import dev.sheldan.abstracto.utility.repository.converter.StarStatsUserConverter; @@ -16,7 +19,7 @@ import java.util.List; import java.util.Optional; @Component -public class StarboardPostManagementServiceBean implements StarboardPostManagementService { +public class StarboardPostManagementServiceBean { @Autowired private StarboardPostRepository repository; @@ -24,27 +27,32 @@ public class StarboardPostManagementServiceBean implements StarboardPostManageme @Autowired private StarStatsUserConverter converter; - @Override - public StarboardPost createStarboardPost(CachedMessage starredMessage, AUserInAServer starredUser, AUserInAServer starringUser, AServerAChannelMessage starboardPost) { + @Autowired + private UserInServerConverter userInServerConverter; + + @Autowired + private ChannelConverter channelConverter; + + public StarboardPost createStarboardPost(CachedMessage starredMessage, UserInServerDto starredUser, UserInServerDto starringUser, AServerAChannelMessage starboardPost) { + + AUserInAServer author = userInServerConverter.fromDto(starredUser); StarboardPost post = StarboardPost .builder() - .author(starredUser.getUserReference()) + .author(author.getUserReference()) .postMessageId(starredMessage.getMessageId()) .starboardMessageId(starboardPost.getMessageId()) - .starboardChannel(starboardPost.getChannel()) + .starboardChannel(channelConverter.fromDto(starboardPost.getChannel())) .starredDate(Instant.now()) .build(); repository.save(post); return post; } - @Override public void setStarboardPostMessageId(StarboardPost post, Long messageId) { post.setStarboardMessageId(messageId); repository.save(post); } - @Override public List retrieveTopPosts(Long serverId, Integer count) { List posts = retrieveAllPosts(serverId); posts.sort(Comparator.comparingInt(o -> o.getReactions().size())); @@ -52,39 +60,32 @@ public class StarboardPostManagementServiceBean implements StarboardPostManageme return posts.subList(0, Math.min(count, posts.size())); } - @Override public List retrieveAllPosts(Long serverId) { return repository.findByStarboardChannelServerId(serverId); } - @Override public Integer getPostCount(Long serverId) { return retrieveAllPosts(serverId).size(); } - @Override public Optional findByMessageId(Long messageId) { return Optional.ofNullable(repository.findByPostMessageId(messageId)); } - @Override public Optional findByStarboardPostId(Long postId) { return Optional.ofNullable(repository.findByStarboardMessageId(postId)); } - @Override public void setStarboardPostIgnored(Long messageId, Boolean newValue) { StarboardPost post = repository.findByStarboardMessageId(messageId); post.setIgnored(newValue); repository.save(post); } - @Override public boolean isStarboardPost(Long messageId) { return repository.findByStarboardMessageId(messageId) != null; } - @Override public void removePost(StarboardPost starboardPost) { repository.deleteById(starboardPost.getId()); } diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/StarboardPostReactorManagementServiceBean.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/StarboardPostReactorManagementServiceBean.java index 178adb7b4..a9864272c 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/StarboardPostReactorManagementServiceBean.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/StarboardPostReactorManagementServiceBean.java @@ -1,6 +1,8 @@ package dev.sheldan.abstracto.utility.service.management; -import dev.sheldan.abstracto.core.models.database.AUser; +import dev.sheldan.abstracto.core.models.AUser; +import dev.sheldan.abstracto.core.models.converter.UserConverter; +import dev.sheldan.abstracto.core.models.dto.UserDto; import dev.sheldan.abstracto.utility.models.database.StarboardPost; import dev.sheldan.abstracto.utility.models.database.StarboardPostReaction; import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsUser; @@ -13,7 +15,7 @@ import org.springframework.stereotype.Component; import java.util.List; @Component -public class StarboardPostReactorManagementServiceBean implements StarboardPostReactorManagementService { +public class StarboardPostReactorManagementServiceBean { @Autowired private StarboardPostReactionRepository repository; @@ -21,38 +23,37 @@ public class StarboardPostReactorManagementServiceBean implements StarboardPostR @Autowired private StarStatsUserConverter converter; - @Override - public void addReactor(StarboardPost post, AUser user) { + @Autowired + private UserConverter userConverter; + + public void addReactor(StarboardPost post, UserDto user) { + AUser aUser = userConverter.toUser(user); StarboardPostReaction reactor = StarboardPostReaction .builder() .starboardPost(post) - .reactor(user) + .reactor(aUser) .build(); repository.save(reactor); } - @Override - public void removeReactor(StarboardPost post, AUser user) { - repository.deleteByReactorAndStarboardPost(user, post); + public void removeReactor(StarboardPost post, UserDto user) { + AUser aUser = userConverter.toUser(user); + repository.deleteByReactorAndStarboardPost(aUser, post); } - @Override public void removeReactors(StarboardPost post) { repository.deleteByStarboardPost(post); } - @Override public Integer getStarCount(Long serverId) { return repository.getReactionCountByServer(serverId); } - @Override public List retrieveTopStarGiver(Long serverId, Integer count) { List starGivers = repository.findTopStarGiverInServer(serverId, count); return converter.convertToStarStatsUser(starGivers, serverId); } - @Override public List retrieveTopStarReceiver(Long serverId, Integer count) { List starReceivers = repository.retrieveTopStarReceiverInServer(serverId, count); return converter.convertToStarStatsUser(starReceivers, serverId); diff --git a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/SuggestionManagementServiceBean.java b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/SuggestionManagementServiceBean.java index c943b970e..3b60c9163 100644 --- a/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/SuggestionManagementServiceBean.java +++ b/abstracto-application/abstracto-modules/utility/utility-impl/src/main/java/dev/sheldan/abstracto/utility/service/management/SuggestionManagementServiceBean.java @@ -1,11 +1,14 @@ package dev.sheldan.abstracto.utility.service.management; -import dev.sheldan.abstracto.core.service.management.ChannelManagementService; -import dev.sheldan.abstracto.core.service.management.ServerManagementService; -import dev.sheldan.abstracto.core.service.management.UserManagementService; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.command.service.UserService; +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.converter.ChannelConverter; +import dev.sheldan.abstracto.core.models.converter.UserConverter; +import dev.sheldan.abstracto.core.models.converter.UserInServerConverter; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; +import dev.sheldan.abstracto.core.service.ChannelService; import dev.sheldan.abstracto.utility.models.database.Suggestion; import dev.sheldan.abstracto.utility.models.SuggestionState; import dev.sheldan.abstracto.utility.repository.SuggestionRepository; @@ -17,55 +20,55 @@ import org.springframework.stereotype.Component; import java.time.Instant; @Component -public class SuggestionManagementServiceBean implements SuggestionManagementService { +public class SuggestionManagementServiceBean { @Autowired private SuggestionRepository suggestionRepository; @Autowired - private ChannelManagementService channelManagementService; + private UserInServerConverter userInServerConverter; @Autowired - private UserManagementService userManagementService; + private UserConverter userConverter; @Autowired - private ServerManagementService serverManagementService; + private UserService userService; + + @Autowired + private ChannelService channelService; + + @Autowired + private ChannelConverter channelConverter; - @Override public Suggestion createSuggestion(Member suggester, String text) { - AUserInAServer user = userManagementService.loadUser(suggester); - return this.createSuggestion(user, text); + UserInServerDto userDto = userService.loadUser(suggester); + return this.createSuggestion(userDto, text); } - @Override - public Suggestion createSuggestion(AUserInAServer suggester, String text) { + public Suggestion createSuggestion(UserInServerDto suggester, String text) { + AUserInAServer aUserInAServer = userInServerConverter.fromDto(suggester); Suggestion suggestion = Suggestion .builder() .state(SuggestionState.NEW) - .suggester(suggester) + .suggester(aUserInAServer) .suggestionDate(Instant.now()) .build(); suggestionRepository.save(suggestion); return suggestion; } - @Override public Suggestion getSuggestion(Long suggestionId) { return suggestionRepository.getOne(suggestionId); } - @Override public void setPostedMessage(Suggestion suggestion, Message message) { suggestion.setMessageId(message.getIdLong()); - AChannel channel = channelManagementService.loadChannel(message.getTextChannel().getIdLong()); - suggestion.setChannel(channel); - AServer server = serverManagementService.loadOrCreate(message.getGuild().getIdLong()); - suggestion.setServer(server); + suggestion.setChannel(AChannel.builder().id(message.getTextChannel().getIdLong()).build()); + suggestion.setServer(AServer.builder().id(message.getGuild().getIdLong()).build()); suggestionRepository.save(suggestion); } - @Override public void setSuggestionState(Suggestion suggestion, SuggestionState newState) { suggestion.setState(newState); suggestionRepository.save(suggestion); diff --git a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/EmbeddedMessage.java b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/EmbeddedMessage.java index 81e3d3db3..455d7ce95 100644 --- a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/EmbeddedMessage.java +++ b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/EmbeddedMessage.java @@ -1,8 +1,8 @@ package dev.sheldan.abstracto.utility.models.database; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.models.AChannel; +import dev.sheldan.abstracto.core.models.AServer; +import dev.sheldan.abstracto.core.models.AUserInAServer; import lombok.*; import javax.persistence.*; diff --git a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/Reminder.java b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/Reminder.java index 0a47fe4b2..74bf599ba 100644 --- a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/Reminder.java +++ b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/Reminder.java @@ -1,8 +1,8 @@ package dev.sheldan.abstracto.utility.models.database; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.models.AChannel; +import dev.sheldan.abstracto.core.models.AServer; +import dev.sheldan.abstracto.core.models.AUserInAServer; import lombok.*; import javax.persistence.*; diff --git a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/StarboardPost.java b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/StarboardPost.java index 8cfca2128..d84403fae 100644 --- a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/StarboardPost.java +++ b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/StarboardPost.java @@ -1,7 +1,7 @@ package dev.sheldan.abstracto.utility.models.database; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AUser; +import dev.sheldan.abstracto.core.models.AChannel; +import dev.sheldan.abstracto.core.models.AUser; import lombok.*; import javax.persistence.*; diff --git a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/StarboardPostReaction.java b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/StarboardPostReaction.java index 5d5db0da5..633ac443e 100644 --- a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/StarboardPostReaction.java +++ b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/StarboardPostReaction.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.utility.models.database; -import dev.sheldan.abstracto.core.models.database.AUser; +import dev.sheldan.abstracto.core.models.AUser; import lombok.*; import javax.persistence.*; diff --git a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/Suggestion.java b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/Suggestion.java index 399e0714e..01ba06ac5 100644 --- a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/Suggestion.java +++ b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/database/Suggestion.java @@ -1,8 +1,8 @@ package dev.sheldan.abstracto.utility.models.database; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +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.utility.models.SuggestionState; import lombok.*; diff --git a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/template/commands/starboard/StarStatsPost.java b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/template/commands/starboard/StarStatsPost.java index 75149f148..261def03f 100644 --- a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/template/commands/starboard/StarStatsPost.java +++ b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/template/commands/starboard/StarStatsPost.java @@ -1,8 +1,6 @@ package dev.sheldan.abstracto.utility.models.template.commands.starboard; -import dev.sheldan.abstracto.core.models.database.AChannel; import dev.sheldan.abstracto.core.utils.MessageUtils; -import dev.sheldan.abstracto.utility.models.database.StarboardPost; import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -20,14 +18,4 @@ public class StarStatsPost { return MessageUtils.buildMessageUrl(serverId ,channelId, messageId); } - public static StarStatsPost fromStarboardPost(StarboardPost starboardPost) { - AChannel channel = starboardPost.getStarboardChannel(); - return StarStatsPost - .builder() - .serverId(channel.getServer().getId()) - .channelId(channel.getId()) - .messageId(starboardPost.getPostMessageId()) - .starCount(starboardPost.getReactions().size()) - .build(); - } -} +} \ No newline at end of file diff --git a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/template/commands/starboard/StarStatsUser.java b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/template/commands/starboard/StarStatsUser.java index eb1cd9465..4c25e2180 100644 --- a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/template/commands/starboard/StarStatsUser.java +++ b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/template/commands/starboard/StarStatsUser.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.utility.models.template.commands.starboard; -import dev.sheldan.abstracto.core.models.database.AUser; +import dev.sheldan.abstracto.core.models.dto.UserDto; import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -11,7 +11,7 @@ import net.dv8tion.jda.api.entities.Member; @Setter @Builder public class StarStatsUser { - private AUser user; + private UserDto user; private Member member; private Integer starCount; diff --git a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/template/commands/starboard/StarboardPostModel.java b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/template/commands/starboard/StarboardPostModel.java index 75a57f67b..53b25d94c 100644 --- a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/template/commands/starboard/StarboardPostModel.java +++ b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/models/template/commands/starboard/StarboardPostModel.java @@ -1,9 +1,9 @@ package dev.sheldan.abstracto.utility.models.template.commands.starboard; +import dev.sheldan.abstracto.core.models.dto.ChannelDto; +import dev.sheldan.abstracto.core.models.dto.UserDto; import dev.sheldan.abstracto.core.models.cache.CachedMessage; import dev.sheldan.abstracto.core.models.context.ServerContext; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AUser; import lombok.Getter; import lombok.Setter; import lombok.experimental.SuperBuilder; @@ -16,8 +16,8 @@ import net.dv8tion.jda.api.entities.TextChannel; public class StarboardPostModel extends ServerContext { private Member author; private TextChannel channel; - private AUser user; - private AChannel aChannel; + private UserDto user; + private ChannelDto aChannel; private CachedMessage message; private Integer starCount; private String starLevelEmote; diff --git a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/MessageEmbedService.java b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/MessageEmbedService.java index 8878fdab2..1ce0c55d3 100644 --- a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/MessageEmbedService.java +++ b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/MessageEmbedService.java @@ -1,7 +1,7 @@ package dev.sheldan.abstracto.utility.service; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; import dev.sheldan.abstracto.core.models.cache.CachedMessage; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.utility.models.MessageEmbedLink; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.TextChannel; @@ -10,6 +10,6 @@ import java.util.List; public interface MessageEmbedService { List getLinksInMessage(String message); - void embedLinks(List linksToEmbed, TextChannel target, AUserInAServer reason, Message embeddingMessage); - void embedLink(CachedMessage cachedMessage, TextChannel target, AUserInAServer cause, Message embeddingMessage); + void embedLinks(List linksToEmbed, TextChannel target, UserInServerDto reason, Message embeddingMessage); + void embedLink(CachedMessage cachedMessage, TextChannel target, UserInServerDto cause, Message embeddingMessage); } diff --git a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/ReminderService.java b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/ReminderService.java index d39c0edbf..58b02f6c0 100644 --- a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/ReminderService.java +++ b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/ReminderService.java @@ -1,11 +1,11 @@ package dev.sheldan.abstracto.utility.service; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; import dev.sheldan.abstracto.utility.models.template.commands.reminder.ReminderModel; import java.time.Duration; public interface ReminderService { - void createReminderInForUser(AUserInAServer user, String remindText, Duration remindIn, ReminderModel reminderModel); + void createReminderInForUser(UserInServerDto user, String remindText, Duration remindIn, ReminderModel reminderModel); void executeReminder(Long reminderId); } diff --git a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/StarboardService.java b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/StarboardService.java index 7824aa3f5..cfc3d13d7 100644 --- a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/StarboardService.java +++ b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/StarboardService.java @@ -1,16 +1,16 @@ package dev.sheldan.abstracto.utility.service; +import dev.sheldan.abstracto.core.models.dto.UserDto; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; import dev.sheldan.abstracto.core.models.cache.CachedMessage; -import dev.sheldan.abstracto.core.models.database.AUser; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.utility.models.database.StarboardPost; import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsModel; import java.util.List; public interface StarboardService { - void createStarboardPost(CachedMessage message, List userExceptAuthor, AUserInAServer userReacting, AUserInAServer starredUser); - void updateStarboardPost(StarboardPost post, CachedMessage message, List userExceptAuthor); + void createStarboardPost(CachedMessage message, List userExceptAuthor, UserInServerDto userReacting, UserInServerDto starredUser); + void updateStarboardPost(StarboardPost post, CachedMessage message, List userExceptAuthor); void removeStarboardPost(StarboardPost message); StarStatsModel retrieveStarStats(Long serverId); } diff --git a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/MessageEmbedPostManagementService.java b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/MessageEmbedPostManagementService.java deleted file mode 100644 index 08bce80c2..000000000 --- a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/MessageEmbedPostManagementService.java +++ /dev/null @@ -1,15 +0,0 @@ -package dev.sheldan.abstracto.utility.service.management; - -import dev.sheldan.abstracto.core.models.cache.CachedMessage; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; -import dev.sheldan.abstracto.utility.models.database.EmbeddedMessage; -import net.dv8tion.jda.api.entities.Message; - -import java.util.Optional; - -public interface MessageEmbedPostManagementService { - void createMessageEmbed(CachedMessage embeddedMessage, Message messageContainingEmbed, AUserInAServer cause); - Optional findEmbeddedPostByMessageId(Long messageId); - void deleteEmbeddedMessage(EmbeddedMessage embeddedMessage); - void deleteEmbeddedMessageTransactional(EmbeddedMessage embeddedMessage); -} diff --git a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/ReminderManagementService.java b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/ReminderManagementService.java deleted file mode 100644 index 336e77dab..000000000 --- a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/ReminderManagementService.java +++ /dev/null @@ -1,15 +0,0 @@ -package dev.sheldan.abstracto.utility.service.management; - -import dev.sheldan.abstracto.core.models.AServerAChannelAUser; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; -import dev.sheldan.abstracto.utility.models.database.Reminder; - -import java.time.Instant; -import java.util.List; - -public interface ReminderManagementService { - Reminder createReminder(AServerAChannelAUser userToBeReminded, String text, Instant timeToBeRemindedAt, Long messageId); - Reminder loadReminder(Long reminderId); - void setReminded(Reminder reminder); - List getActiveRemindersForUser(AUserInAServer aUserInAServer); -} diff --git a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/StarboardPostManagementService.java b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/StarboardPostManagementService.java deleted file mode 100644 index e1cf41c7f..000000000 --- a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/StarboardPostManagementService.java +++ /dev/null @@ -1,22 +0,0 @@ -package dev.sheldan.abstracto.utility.service.management; - -import dev.sheldan.abstracto.core.models.AServerAChannelMessage; -import dev.sheldan.abstracto.core.models.cache.CachedMessage; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; -import dev.sheldan.abstracto.utility.models.database.StarboardPost; - -import java.util.List; -import java.util.Optional; - -public interface StarboardPostManagementService { - StarboardPost createStarboardPost(CachedMessage starredMessage, AUserInAServer starredUser, AUserInAServer starringUser, AServerAChannelMessage starboardPost); - void setStarboardPostMessageId(StarboardPost post, Long messageId); - List retrieveTopPosts(Long serverId, Integer count); - List retrieveAllPosts(Long serverId); - Integer getPostCount(Long serverId); - Optional findByMessageId(Long messageId); - Optional findByStarboardPostId(Long postId); - void setStarboardPostIgnored(Long starboardPostId, Boolean newValue); - boolean isStarboardPost(Long starboardPostId); - void removePost(StarboardPost starboardPost); -} diff --git a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/StarboardPostReactorManagementService.java b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/StarboardPostReactorManagementService.java deleted file mode 100644 index 47793d5cc..000000000 --- a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/StarboardPostReactorManagementService.java +++ /dev/null @@ -1,16 +0,0 @@ -package dev.sheldan.abstracto.utility.service.management; - -import dev.sheldan.abstracto.core.models.database.AUser; -import dev.sheldan.abstracto.utility.models.database.StarboardPost; -import dev.sheldan.abstracto.utility.models.template.commands.starboard.StarStatsUser; - -import java.util.List; - -public interface StarboardPostReactorManagementService { - void addReactor(StarboardPost post, AUser user); - void removeReactor(StarboardPost post, AUser user); - void removeReactors(StarboardPost post); - Integer getStarCount(Long serverId); - List retrieveTopStarGiver(Long serverId, Integer count); - List retrieveTopStarReceiver(Long serverId, Integer count); -} diff --git a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/SuggestionManagementService.java b/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/SuggestionManagementService.java deleted file mode 100644 index 88eda546a..000000000 --- a/abstracto-application/abstracto-modules/utility/utility-int/src/main/java/dev/sheldan/abstracto/utility/service/management/SuggestionManagementService.java +++ /dev/null @@ -1,15 +0,0 @@ -package dev.sheldan.abstracto.utility.service.management; - -import dev.sheldan.abstracto.core.models.database.AUserInAServer; -import dev.sheldan.abstracto.utility.models.database.Suggestion; -import dev.sheldan.abstracto.utility.models.SuggestionState; -import net.dv8tion.jda.api.entities.Member; -import net.dv8tion.jda.api.entities.Message; - -public interface SuggestionManagementService { - Suggestion createSuggestion(Member suggester, String text); - Suggestion createSuggestion(AUserInAServer suggester, String text); - Suggestion getSuggestion(Long suggestionId); - void setPostedMessage(Suggestion suggestion, Message message); - void setSuggestionState(Suggestion suggestion, SuggestionState newState); -} diff --git a/abstracto-application/core/core-db-models/pom.xml b/abstracto-application/core/core-db-models/pom.xml new file mode 100644 index 000000000..da75d9797 --- /dev/null +++ b/abstracto-application/core/core-db-models/pom.xml @@ -0,0 +1,32 @@ + + + + dev.sheldan.abstracto.core + core + 1.0-SNAPSHOT + + 4.0.0 + jar + + core-db-models + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + net.dv8tion + JDA + + + club.minnced + opus-java + + + + + \ No newline at end of file diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AChannel.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AChannel.java similarity index 63% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AChannel.java rename to abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AChannel.java index a8691295b..790fc8087 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AChannel.java +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AChannel.java @@ -1,4 +1,4 @@ -package dev.sheldan.abstracto.core.models.database; +package dev.sheldan.abstracto.core.models; import dev.sheldan.abstracto.core.models.SnowFlake; import lombok.*; @@ -38,13 +38,5 @@ public class AChannel implements SnowFlake { @Column private Boolean deleted; - 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; - } - } + } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AChannelGroup.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AChannelGroup.java similarity index 90% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AChannelGroup.java rename to abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AChannelGroup.java index 1a877a3aa..d2fb07dfa 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AChannelGroup.java +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AChannelGroup.java @@ -1,10 +1,9 @@ -package dev.sheldan.abstracto.core.models.database; +package dev.sheldan.abstracto.core.models; import lombok.*; import javax.persistence.*; import java.util.List; -import java.util.Set; @Entity @Table(name="channelGroup") diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AChannelGroupCommand.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AChannelGroupCommand.java similarity index 83% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AChannelGroupCommand.java rename to abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AChannelGroupCommand.java index fdab0386e..4d86ca5cb 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AChannelGroupCommand.java +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AChannelGroupCommand.java @@ -1,6 +1,5 @@ -package dev.sheldan.abstracto.core.models.database; +package dev.sheldan.abstracto.core.models; -import dev.sheldan.abstracto.core.command.models.database.ACommand; import lombok.*; import javax.persistence.*; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AChannelType.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AChannelType.java similarity index 58% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AChannelType.java rename to abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AChannelType.java index 2182b8cdd..d69a66d81 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AChannelType.java +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AChannelType.java @@ -1,4 +1,4 @@ -package dev.sheldan.abstracto.core.models.database; +package dev.sheldan.abstracto.core.models; public enum AChannelType { TEXT, DM, VOICE, NEWS, CATEGORY, UNKOWN diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/models/database/ACommand.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/ACommand.java similarity index 87% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/models/database/ACommand.java rename to abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/ACommand.java index bfc627894..389d1b94c 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/models/database/ACommand.java +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/ACommand.java @@ -1,4 +1,4 @@ -package dev.sheldan.abstracto.core.command.models.database; +package dev.sheldan.abstracto.core.models; import lombok.*; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AConfig.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AConfig.java similarity index 91% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AConfig.java rename to abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AConfig.java index f4d594937..7f5e19248 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AConfig.java +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AConfig.java @@ -1,4 +1,4 @@ -package dev.sheldan.abstracto.core.models.database; +package dev.sheldan.abstracto.core.models; import lombok.*; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AEmote.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AEmote.java similarity index 91% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AEmote.java rename to abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AEmote.java index 835083cd9..46e531544 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AEmote.java +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AEmote.java @@ -1,4 +1,4 @@ -package dev.sheldan.abstracto.core.models.database; +package dev.sheldan.abstracto.core.models; import lombok.*; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AFeatureFlag.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AFeatureFlag.java similarity index 91% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AFeatureFlag.java rename to abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AFeatureFlag.java index 9318d450c..872223415 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AFeatureFlag.java +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AFeatureFlag.java @@ -1,4 +1,4 @@ -package dev.sheldan.abstracto.core.models.database; +package dev.sheldan.abstracto.core.models; import dev.sheldan.abstracto.core.models.SnowFlake; import lombok.*; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/models/database/AModule.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AModule.java similarity index 91% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/models/database/AModule.java rename to abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AModule.java index 4d84d98da..c462d6af3 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/models/database/AModule.java +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AModule.java @@ -1,4 +1,4 @@ -package dev.sheldan.abstracto.core.command.models.database; +package dev.sheldan.abstracto.core.models; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/ARole.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/ARole.java similarity index 89% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/ARole.java rename to abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/ARole.java index 5c261959f..5905299ae 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/ARole.java +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/ARole.java @@ -1,4 +1,4 @@ -package dev.sheldan.abstracto.core.models.database; +package dev.sheldan.abstracto.core.models; import dev.sheldan.abstracto.core.models.SnowFlake; import lombok.*; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AServer.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AServer.java similarity index 96% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AServer.java rename to abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AServer.java index 5b71020e0..78af66a60 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AServer.java +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AServer.java @@ -1,4 +1,4 @@ -package dev.sheldan.abstracto.core.models.database; +package dev.sheldan.abstracto.core.models; import dev.sheldan.abstracto.core.models.SnowFlake; import lombok.*; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AUser.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AUser.java similarity index 81% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AUser.java rename to abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AUser.java index 77a2fd6b4..116462964 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AUser.java +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AUser.java @@ -1,4 +1,4 @@ -package dev.sheldan.abstracto.core.models.database; +package dev.sheldan.abstracto.core.models; import lombok.*; @@ -11,7 +11,7 @@ import java.util.List; @AllArgsConstructor @NoArgsConstructor @Getter -public class AUser { +public class AUser implements SnowFlake { @Id private Long id; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AUserInAServer.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AUserInAServer.java similarity index 91% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AUserInAServer.java rename to abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AUserInAServer.java index eaea822d8..4b6683daa 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/AUserInAServer.java +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/AUserInAServer.java @@ -1,4 +1,4 @@ -package dev.sheldan.abstracto.core.models.database; +package dev.sheldan.abstracto.core.models; import lombok.*; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/PostTarget.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/PostTarget.java similarity index 85% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/PostTarget.java rename to abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/PostTarget.java index 82fa27b7e..41c4a3efe 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/database/PostTarget.java +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/PostTarget.java @@ -1,10 +1,8 @@ -package dev.sheldan.abstracto.core.models.database; +package dev.sheldan.abstracto.core.models; import lombok.*; import javax.persistence.*; -import java.util.Arrays; -import java.util.List; @Entity @Table(name="posttarget") diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/SnowFlake.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/SnowFlake.java similarity index 100% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/SnowFlake.java rename to abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/SnowFlake.java diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/ChannelConverter.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/ChannelConverter.java new file mode 100644 index 000000000..655fb95a2 --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/ChannelConverter.java @@ -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(); + } +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/ChannelGroupConverter.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/ChannelGroupConverter.java new file mode 100644 index 000000000..f4bf28eb3 --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/ChannelGroupConverter.java @@ -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(); + } +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/CommandConverter.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/CommandConverter.java new file mode 100644 index 000000000..e7ba3130a --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/CommandConverter.java @@ -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(); + } + +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/EmoteConverter.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/EmoteConverter.java new file mode 100644 index 000000000..6ba2c2a8b --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/EmoteConverter.java @@ -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(); + } +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/ModuleConverter.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/ModuleConverter.java new file mode 100644 index 000000000..8f9c8f023 --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/ModuleConverter.java @@ -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 commands = new ArrayList<>(); + module.getCommands().forEach(command -> { + commands.add(commandConverter.fromCommand(command)); + }); + return ModuleDto.builder().name(module.getName()).id(module.getId()).commands(commands).build(); + } +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/PostTargetConverter.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/PostTargetConverter.java new file mode 100644 index 000000000..88d0c71d1 --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/PostTargetConverter.java @@ -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(); + } +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/RoleConverter.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/RoleConverter.java new file mode 100644 index 000000000..eab966504 --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/RoleConverter.java @@ -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(); + } +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/ServerConverter.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/ServerConverter.java new file mode 100644 index 000000000..d17e931bd --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/ServerConverter.java @@ -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 channels = new ArrayList<>(); + server.getChannels().forEach(channel -> { + channels.add(channelConverter.fromChannel(channel)); + }); + + List 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 channels = new ArrayList<>(); + serverDto.getChannels().forEach(channelDto -> { + channels.add(channelConverter.fromDto(channelDto)); + }); + + List 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(); + } +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/UserConverter.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/UserConverter.java new file mode 100644 index 000000000..6a6ab0db7 --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/UserConverter.java @@ -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(); + } +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/UserInServerConverter.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/UserInServerConverter.java new file mode 100644 index 000000000..9220ad46f --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/converter/UserInServerConverter.java @@ -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(); + } +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ChannelDto.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ChannelDto.java new file mode 100644 index 000000000..03b564949 --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ChannelDto.java @@ -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; +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ChannelGroupCommandDto.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ChannelGroupCommandDto.java new file mode 100644 index 000000000..b8347fd78 --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ChannelGroupCommandDto.java @@ -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; +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ChannelGroupDto.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ChannelGroupDto.java new file mode 100644 index 000000000..5345a07e0 --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ChannelGroupDto.java @@ -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 channels; +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/CommandDto.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/CommandDto.java new file mode 100644 index 000000000..017ad8280 --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/CommandDto.java @@ -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; +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/EmoteDto.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/EmoteDto.java new file mode 100644 index 000000000..ff12e387f --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/EmoteDto.java @@ -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; +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ModuleDto.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ModuleDto.java new file mode 100644 index 000000000..57999b626 --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ModuleDto.java @@ -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 commands = new ArrayList<>(); +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/PostTargetDto.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/PostTargetDto.java new file mode 100644 index 000000000..61c0e3285 --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/PostTargetDto.java @@ -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; +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/RoleDto.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/RoleDto.java new file mode 100644 index 000000000..4b963d740 --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/RoleDto.java @@ -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; +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ServerDto.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ServerDto.java new file mode 100644 index 000000000..313f4d37a --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/ServerDto.java @@ -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 channels; + private List users; + private List roles; +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/UserDto.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/UserDto.java new file mode 100644 index 000000000..ab5922a51 --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/UserDto.java @@ -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; +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/UserInServerDto.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/UserInServerDto.java new file mode 100644 index 000000000..c2907d195 --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/dto/UserInServerDto.java @@ -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; +} diff --git a/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/utils/ChannelUtils.java b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/utils/ChannelUtils.java new file mode 100644 index 000000000..0265db94c --- /dev/null +++ b/abstracto-application/core/core-db-models/src/main/java/dev/sheldan/abstracto/core/models/utils/ChannelUtils.java @@ -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; + } + } +} diff --git a/abstracto-application/core/core-impl/pom.xml b/abstracto-application/core/core-impl/pom.xml index 18b7cbea5..77dff50df 100644 --- a/abstracto-application/core/core-impl/pom.xml +++ b/abstracto-application/core/core-impl/pom.xml @@ -82,6 +82,13 @@ ${project.version} + + + dev.sheldan.abstracto.core + core-db-models + ${project.version} + + com.github.ben-manes.caffeine caffeine diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/CommandReceivedHandler.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/CommandReceivedHandler.java index 286111378..eec244b21 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/CommandReceivedHandler.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/CommandReceivedHandler.java @@ -13,15 +13,19 @@ import dev.sheldan.abstracto.core.command.service.PostCommandExecution; import dev.sheldan.abstracto.core.command.execution.*; import dev.sheldan.abstracto.core.command.execution.UnParsedCommandParameter; import dev.sheldan.abstracto.core.Constants; -import dev.sheldan.abstracto.core.command.service.management.CommandManagementService; +import dev.sheldan.abstracto.core.command.service.management.CommandManagementServiceBean; +import dev.sheldan.abstracto.core.models.converter.ChannelConverter; +import dev.sheldan.abstracto.core.models.converter.ServerConverter; +import dev.sheldan.abstracto.core.models.converter.UserInServerConverter; import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException; -import dev.sheldan.abstracto.core.service.management.ChannelManagementService; -import dev.sheldan.abstracto.core.service.management.ServerManagementService; -import dev.sheldan.abstracto.core.service.management.UserManagementService; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.*; import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext; -import dev.sheldan.abstracto.core.models.database.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 dev.sheldan.abstracto.core.service.management.ChannelManagementServiceBean; +import dev.sheldan.abstracto.core.service.management.ServerManagementServiceBean; +import dev.sheldan.abstracto.core.service.management.UserManagementServiceBean; import dev.sheldan.abstracto.core.utils.ParseUtils; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Emote; @@ -31,6 +35,7 @@ import net.dv8tion.jda.api.entities.TextChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.hooks.ListenerAdapter; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.rsocket.RSocketProperties; import org.springframework.context.annotation.Lazy; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -52,13 +57,13 @@ public class CommandReceivedHandler extends ListenerAdapter { private List executions; @Autowired - private ServerManagementService serverManagementService; + private ServerManagementServiceBean serverManagementService; @Autowired - private UserManagementService userManagementService; + private UserManagementServiceBean userManagementService; @Autowired - private ChannelManagementService channelManagementService; + private ChannelManagementServiceBean channelManagementService; @Autowired @Lazy @@ -68,7 +73,16 @@ public class CommandReceivedHandler extends ListenerAdapter { private ChannelGroupCommandService channelGroupCommandService; @Autowired - private CommandManagementService commandManagementService; + private CommandManagementServiceBean commandManagementService; + + @Autowired + private ChannelConverter channelConverter; + + @Autowired + private ServerConverter serverConverter; + + @Autowired + private UserInServerConverter userConverter; @Override @Async @@ -134,16 +148,16 @@ public class CommandReceivedHandler extends ListenerAdapter { } private UserInitiatedServerContext buildTemplateParameter(MessageReceivedEvent event) { - AChannel channel = channelManagementService.loadChannel(event.getChannel().getIdLong()); - AServer server = serverManagementService.loadOrCreate(event.getGuild().getIdLong()); - AUserInAServer user = userManagementService.loadUser(event.getMember()); + ChannelDto aChannel = channelManagementService.loadChannel(event.getChannel().getIdLong()); + ServerDto server = serverManagementService.loadOrCreate(event.getGuild().getIdLong()); + UserInServerDto user = userManagementService.loadUser(event.getMember()); return UserInitiatedServerContext .builder() - .channel(channel) + .channel(aChannel) .server(server) .member(event.getMember()) .aUserInAServer(user) - .user(user.getUserReference()) + .user(user.getUser()) .messageChannel(event.getTextChannel()) .guild(event.getGuild()) .build(); diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/config/CommandConfigListener.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/config/CommandConfigListener.java index 48b1903fd..10f1b7d0c 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/config/CommandConfigListener.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/config/CommandConfigListener.java @@ -3,7 +3,7 @@ package dev.sheldan.abstracto.core.command.config; import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.service.CommandService; import dev.sheldan.abstracto.core.listener.ServerConfigListener; -import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.dto.ServerDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -19,7 +19,7 @@ public class CommandConfigListener implements ServerConfigListener { private CommandService commandService; @Override - public void updateServerConfig(AServer server) { + public void updateServerConfig(ServerDto server) { commandList.forEach(command -> { if(!commandService.doesCommandExist(command.getConfiguration().getName())) { commandService.createCommand(command.getConfiguration().getName(), command.getConfiguration().getModule()); diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/repository/ChannelGroupCommandRepository.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/repository/ChannelGroupCommandRepository.java index 9f219dc84..7ce192008 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/repository/ChannelGroupCommandRepository.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/repository/ChannelGroupCommandRepository.java @@ -1,8 +1,8 @@ package dev.sheldan.abstracto.core.command.repository; -import dev.sheldan.abstracto.core.command.models.database.ACommand; -import dev.sheldan.abstracto.core.models.database.AChannelGroup; -import dev.sheldan.abstracto.core.models.database.AChannelGroupCommand; +import dev.sheldan.abstracto.core.models.AChannelGroup; +import dev.sheldan.abstracto.core.models.AChannelGroupCommand; +import dev.sheldan.abstracto.core.models.ACommand; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/repository/CommandRepository.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/repository/CommandRepository.java index 6e9a91706..da6ebe7a9 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/repository/CommandRepository.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/repository/CommandRepository.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.core.command.repository; -import dev.sheldan.abstracto.core.command.models.database.ACommand; +import dev.sheldan.abstracto.core.models.ACommand; import org.springframework.data.jpa.repository.JpaRepository; public interface CommandRepository extends JpaRepository { diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/repository/ModuleRepository.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/repository/ModuleRepository.java index 2295de24c..d044936ec 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/repository/ModuleRepository.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/repository/ModuleRepository.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.core.command.repository; -import dev.sheldan.abstracto.core.command.models.database.AModule; +import dev.sheldan.abstracto.core.models.AModule; import org.springframework.data.jpa.repository.JpaRepository; public interface ModuleRepository extends JpaRepository { diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/ChannelGroupCommandServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/ChannelGroupCommandServiceBean.java index 590410c87..2cb00d298 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/ChannelGroupCommandServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/ChannelGroupCommandServiceBean.java @@ -1,9 +1,10 @@ package dev.sheldan.abstracto.core.command.service; -import dev.sheldan.abstracto.core.command.models.database.ACommand; -import dev.sheldan.abstracto.core.command.service.management.ChannelGroupCommandManagementService; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AChannelGroupCommand; +import dev.sheldan.abstracto.core.models.*; +import dev.sheldan.abstracto.core.command.service.management.ChannelGroupCommandManagementServiceBean; +import dev.sheldan.abstracto.core.models.converter.CommandConverter; +import dev.sheldan.abstracto.core.models.dto.ChannelDto; +import dev.sheldan.abstracto.core.models.dto.CommandDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -14,10 +15,13 @@ import java.util.Optional; public class ChannelGroupCommandServiceBean implements ChannelGroupCommandService { @Autowired - private ChannelGroupCommandManagementService channelGroupCommandService; + private ChannelGroupCommandManagementServiceBean channelGroupCommandService; + + @Autowired + private CommandConverter commandConverter; @Override - public Boolean isCommandEnabled(ACommand command, AChannel channel) { + public Boolean isCommandEnabled(CommandDto command, ChannelDto channel) { List allChannelGroupsOfCommand = channelGroupCommandService.getAllGroupCommandsForCommand(command); for (AChannelGroupCommand aChannelGroupCommand : allChannelGroupsOfCommand) { Optional channelInGroup = aChannelGroupCommand.getGroup() @@ -28,9 +32,6 @@ public class ChannelGroupCommandServiceBean implements ChannelGroupCommandServic } } } - if(allChannelGroupsOfCommand.size() == 0) { - return true; - } - return false; + return allChannelGroupsOfCommand.size() == 0; } } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/CommandServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/CommandServiceBean.java index 0ddc39f62..02707c463 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/CommandServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/CommandServiceBean.java @@ -1,9 +1,11 @@ package dev.sheldan.abstracto.core.command.service; -import dev.sheldan.abstracto.core.command.models.database.ACommand; -import dev.sheldan.abstracto.core.command.models.database.AModule; -import dev.sheldan.abstracto.core.command.service.management.CommandManagementService; -import dev.sheldan.abstracto.core.command.service.management.ModuleManagementService; +import dev.sheldan.abstracto.core.models.ACommand; +import dev.sheldan.abstracto.core.models.AModule; +import dev.sheldan.abstracto.core.command.service.management.CommandManagementServiceBean; +import dev.sheldan.abstracto.core.command.service.management.ModuleManagementServiceBean; +import dev.sheldan.abstracto.core.models.converter.CommandConverter; +import dev.sheldan.abstracto.core.models.dto.CommandDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -11,20 +13,27 @@ import org.springframework.stereotype.Component; public class CommandServiceBean implements CommandService { @Autowired - private ModuleManagementService moduleManagementService; + private ModuleManagementServiceBean moduleManagementService; @Autowired - private CommandManagementService commandManagementService; + private CommandManagementServiceBean commandManagementServiceBean; + + @Autowired + private CommandConverter commandConverter; @Override - public ACommand createCommand(String name, String moduleName) { - AModule module = moduleManagementService.getOrCreate(moduleName); - return commandManagementService.createCommand(name, module); + public CommandDto createCommand(String name, String moduleName) { + return commandManagementServiceBean.createCommand(name, moduleName); } @Override public Boolean doesCommandExist(String name) { - return commandManagementService.doesCommandExist(name); + return commandManagementServiceBean.doesCommandExist(name); + } + + @Override + public CommandDto findCommandByName(String name) { + return commandManagementServiceBean.findCommandByName(name); } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/management/ChannelGroupCommandManagementServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/management/ChannelGroupCommandManagementServiceBean.java index e6de4f456..8c932f990 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/management/ChannelGroupCommandManagementServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/management/ChannelGroupCommandManagementServiceBean.java @@ -1,23 +1,27 @@ package dev.sheldan.abstracto.core.command.service.management; -import dev.sheldan.abstracto.core.command.models.database.ACommand; +import dev.sheldan.abstracto.core.models.AChannelGroup; +import dev.sheldan.abstracto.core.models.AChannelGroupCommand; +import dev.sheldan.abstracto.core.models.ACommand; import dev.sheldan.abstracto.core.command.repository.ChannelGroupCommandRepository; -import dev.sheldan.abstracto.core.models.database.AChannelGroup; -import dev.sheldan.abstracto.core.models.database.AChannelGroupCommand; +import dev.sheldan.abstracto.core.models.dto.ChannelGroupDto; +import dev.sheldan.abstracto.core.models.dto.CommandDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; + @Component -public class ChannelGroupCommandManagementServiceBean implements ChannelGroupCommandManagementService { +public class ChannelGroupCommandManagementServiceBean { @Autowired private ChannelGroupCommandRepository groupCommandRepository; - @Override - public void setCommandInGroupTo(ACommand command, AChannelGroup group, Boolean enabled) { - AChannelGroupCommand groupCommand = groupCommandRepository.findByCommandAndGroup(command, group); + public void setCommandInGroupTo(CommandDto command, ChannelGroupDto group, Boolean enabled) { + AChannelGroup aChannelGroup = AChannelGroup.builder().id(group.getId()).build(); + ACommand aCommand = ACommand.builder().id(command.getId()).build(); + AChannelGroupCommand groupCommand = groupCommandRepository.findByCommandAndGroup(aCommand, aChannelGroup); if(groupCommand == null) { groupCommand = createCommandInGroupTo(command, group); } @@ -25,12 +29,11 @@ public class ChannelGroupCommandManagementServiceBean implements ChannelGroupCom groupCommandRepository.save(groupCommand); } - @Override - public AChannelGroupCommand createCommandInGroupTo(ACommand command, AChannelGroup group) { + public AChannelGroupCommand createCommandInGroupTo(CommandDto command, ChannelGroupDto group) { AChannelGroupCommand channelGroupCommand = AChannelGroupCommand .builder() - .command(command) - .group(group) + .command(ACommand.builder().id(command.getId()).build()) + .group(AChannelGroup.builder().id(group.getId()).build()) .enabled(false) .build(); @@ -38,14 +41,14 @@ public class ChannelGroupCommandManagementServiceBean implements ChannelGroupCom return channelGroupCommand; } - @Override - public AChannelGroupCommand getChannelGroupCommand(ACommand command, AChannelGroup group) { - return groupCommandRepository.findByCommandAndGroup(command, group); + public AChannelGroupCommand getChannelGroupCommand(CommandDto command, ChannelGroupDto group) { + ACommand aCommand = ACommand.builder().id(command.getId()).build(); + AChannelGroup aChannelGroup = AChannelGroup.builder().id(group.getId()).build(); + return groupCommandRepository.findByCommandAndGroup(aCommand, aChannelGroup); } - @Override - public List getAllGroupCommandsForCommand(ACommand command) { - return groupCommandRepository.findByCommand(command); + public List getAllGroupCommandsForCommand(CommandDto command) { + return groupCommandRepository.findByCommand(ACommand.builder().id(command.getId()).build()); } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/management/CommandManagementServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/management/CommandManagementServiceBean.java index 24058575c..2499b5010 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/management/CommandManagementServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/management/CommandManagementServiceBean.java @@ -1,47 +1,54 @@ package dev.sheldan.abstracto.core.command.service.management; -import dev.sheldan.abstracto.core.command.models.database.ACommand; -import dev.sheldan.abstracto.core.command.models.database.AModule; +import dev.sheldan.abstracto.core.models.ACommand; +import dev.sheldan.abstracto.core.models.AModule; import dev.sheldan.abstracto.core.command.repository.CommandRepository; -import dev.sheldan.abstracto.core.service.management.ServerManagementService; +import dev.sheldan.abstracto.core.models.converter.CommandConverter; +import dev.sheldan.abstracto.core.models.converter.ModuleConverter; +import dev.sheldan.abstracto.core.models.dto.CommandDto; +import dev.sheldan.abstracto.core.models.dto.ModuleDto; +import dev.sheldan.abstracto.core.service.management.ServerManagementServiceBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component -public class CommandManagementServiceBean implements CommandManagementService { +public class CommandManagementServiceBean { @Autowired - private ServerManagementService serverManagementService; + private ServerManagementServiceBean serverManagementService; @Autowired - private ModuleManagementService moduleManagementService; + private ModuleManagementServiceBean moduleManagementService; @Autowired private CommandRepository commandRepository; - @Override - public ACommand createCommand(String name, String moduleName) { + @Autowired + private CommandConverter commandConverter; + + @Autowired + private ModuleConverter moduleConverter; + + public CommandDto createCommand(String name, String moduleName) { AModule module = moduleManagementService.findModuleByName(moduleName); - return createCommand(name, module); + return createCommand(name, moduleConverter.fromModule(module)); } - @Override - public ACommand createCommand(String name, AModule module) { + public CommandDto createCommand(String name, ModuleDto module) { ACommand command = ACommand .builder() .name(name) - .module(module) + .module(AModule.builder().id(module.getId()).build()) .build(); commandRepository.save(command); - return command; + return commandConverter.fromCommand(command); } - @Override - public ACommand findCommandByName(String name) { - return commandRepository.findByName(name); + public CommandDto findCommandByName(String name) { + ACommand byName = commandRepository.findByName(name); + return commandConverter.fromCommand(byName); } - @Override public Boolean doesCommandExist(String name) { return findCommandByName(name) != null; } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/management/ModuleManagementServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/management/ModuleManagementServiceBean.java index fff8ef913..f20716ce4 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/management/ModuleManagementServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/command/service/management/ModuleManagementServiceBean.java @@ -1,17 +1,16 @@ package dev.sheldan.abstracto.core.command.service.management; -import dev.sheldan.abstracto.core.command.models.database.AModule; +import dev.sheldan.abstracto.core.models.AModule; import dev.sheldan.abstracto.core.command.repository.ModuleRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component -public class ModuleManagementServiceBean implements ModuleManagementService { +public class ModuleManagementServiceBean { @Autowired private ModuleRepository moduleRepository; - @Override public AModule createModule(String name) { AModule module = AModule. builder() @@ -21,7 +20,6 @@ public class ModuleManagementServiceBean implements ModuleManagementService { return module; } - @Override public AModule getOrCreate(String name) { AModule module = findModuleByName(name); if(module == null) { @@ -30,12 +28,10 @@ public class ModuleManagementServiceBean implements ModuleManagementService { return module; } - @Override public AModule findModuleByName(String name) { return moduleRepository.findByName(name); } - @Override public Boolean doesModuleExist(String name) { return findModuleByName(name) != null; } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/Disable.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/Disable.java index 19b192bcc..791f5a53f 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/Disable.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/Disable.java @@ -7,7 +7,7 @@ import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.config.AbstractoFeatures; import dev.sheldan.abstracto.core.commands.utility.UtilityModuleInterface; -import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementService; +import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementServiceBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -19,7 +19,7 @@ public class Disable implements Command { @Autowired - private FeatureFlagManagementService featureFlagManagementService; + private FeatureFlagManagementServiceBean featureFlagManagementService; @Override public CommandResult execute(CommandContext commandContext) { String flagKey = (String) commandContext.getParameters().getParameters().get(0); diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/Enable.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/Enable.java index c11a6ed00..84729b90d 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/Enable.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/Enable.java @@ -7,7 +7,7 @@ import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.config.AbstractoFeatures; import dev.sheldan.abstracto.core.commands.utility.UtilityModuleInterface; -import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementService; +import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementServiceBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -19,7 +19,7 @@ public class Enable implements Command { @Autowired - private FeatureFlagManagementService featureFlagManagementService; + private FeatureFlagManagementServiceBean featureFlagManagementService; @Override public CommandResult execute(CommandContext commandContext) { String flagKey = (String) commandContext.getParameters().getParameters().get(0); diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/ListChannelGroups.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/ListChannelGroups.java index 5d2b9d231..c8e5bf3e9 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/ListChannelGroups.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/ListChannelGroups.java @@ -6,13 +6,13 @@ import dev.sheldan.abstracto.core.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.command.execution.ContextConverter; import dev.sheldan.abstracto.core.config.AbstractoFeatures; -import dev.sheldan.abstracto.templating.model.MessageToSend; +import dev.sheldan.abstracto.core.models.dto.ChannelGroupDto; import dev.sheldan.abstracto.core.models.template.commands.ChannelGroupChannelModel; import dev.sheldan.abstracto.core.models.template.commands.ChannelGroupModel; import dev.sheldan.abstracto.core.models.template.commands.ListChannelGroupsModel; -import dev.sheldan.abstracto.core.models.database.AChannelGroup; +import dev.sheldan.abstracto.core.service.ChannelGroupService; import dev.sheldan.abstracto.core.service.ChannelService; -import dev.sheldan.abstracto.core.service.management.ChannelGroupManagementService; +import dev.sheldan.abstracto.templating.model.MessageToSend; import dev.sheldan.abstracto.templating.service.TemplateService; import net.dv8tion.jda.api.entities.TextChannel; import org.springframework.beans.factory.annotation.Autowired; @@ -30,14 +30,14 @@ public class ListChannelGroups implements Command { private TemplateService templateService; @Autowired - private ChannelGroupManagementService channelGroupManagementService; + private ChannelGroupService channelGroupManagementService; @Autowired private ChannelService channelService; @Override public CommandResult execute(CommandContext commandContext) { - List channelGroups = channelGroupManagementService.findAllInServer(commandContext.getUserInitiatedContext().getServer()); + List channelGroups = channelGroupManagementService.findAllInServer(commandContext.getUserInitiatedContext().getServer()); ListChannelGroupsModel template = (ListChannelGroupsModel) ContextConverter.fromCommandContext(commandContext, ListChannelGroupsModel.class); template.setGroups(convertAChannelGroupToChannelGroupChannel(channelGroups)); MessageToSend response = templateService.renderEmbedTemplate("listChannelGroups_response", template); @@ -45,7 +45,7 @@ public class ListChannelGroups implements Command { return CommandResult.fromSuccess(); } - private List convertAChannelGroupToChannelGroupChannel(List channelGroups) { + private List convertAChannelGroupToChannelGroupChannel(List channelGroups) { List converted = new ArrayList<>(); channelGroups.forEach(group -> { List convertedChannels = new ArrayList<>(); diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/PostTarget.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/PostTarget.java index da8e0824a..1a3fb6b49 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/PostTarget.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/channels/PostTarget.java @@ -7,8 +7,8 @@ import dev.sheldan.abstracto.core.command.execution.*; import dev.sheldan.abstracto.core.config.AbstractoFeatures; import dev.sheldan.abstracto.core.models.template.commands.PostTargetErrorModel; import dev.sheldan.abstracto.core.service.PostTargetService; -import dev.sheldan.abstracto.core.service.management.ChannelManagementService; -import dev.sheldan.abstracto.core.service.management.PostTargetManagement; +import dev.sheldan.abstracto.core.service.management.ChannelManagementServiceBean; +import dev.sheldan.abstracto.core.service.management.PostTargetManagementBean; import dev.sheldan.abstracto.templating.service.TemplateService; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Guild; @@ -27,13 +27,13 @@ public class PostTarget implements Command { public static final String POST_TARGET_NO_TARGET_TEMPLATE = "posttarget_no_target"; public static final String POST_TARGET_INVALID_TARGET_TEMPLATE = "posttarget_invalid_target"; @Autowired - private PostTargetManagement postTargetManagement; + private PostTargetManagementBean postTargetManagement; @Autowired private PostTargetService postTargetService; @Autowired - private ChannelManagementService channelManagementService; + private ChannelManagementServiceBean channelManagementService; @Autowired private TemplateService templateService; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/SetEmote.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/SetEmote.java index ab7f91dcc..e1a98279a 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/SetEmote.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/commands/utility/SetEmote.java @@ -7,7 +7,7 @@ import dev.sheldan.abstracto.core.command.execution.CommandResult; import dev.sheldan.abstracto.core.command.config.Parameter; import dev.sheldan.abstracto.core.config.AbstractoFeatures; import dev.sheldan.abstracto.core.service.EmoteService; -import dev.sheldan.abstracto.core.service.management.EmoteManagementService; +import dev.sheldan.abstracto.core.service.management.EmoteManagementServiceBean; import net.dv8tion.jda.api.entities.Emote; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -19,7 +19,7 @@ import java.util.List; public class SetEmote implements Command { @Autowired - private EmoteManagementService emoteManagementService; + private EmoteManagementServiceBean emoteManagementService; @Autowired private EmoteService emoteService; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/config/FeatureFlagListener.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/config/FeatureFlagListener.java index 477a85515..e2b448aa0 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/config/FeatureFlagListener.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/config/FeatureFlagListener.java @@ -1,8 +1,8 @@ package dev.sheldan.abstracto.core.config; import dev.sheldan.abstracto.core.listener.ServerConfigListener; -import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementService; +import dev.sheldan.abstracto.core.models.dto.ServerDto; +import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementServiceBean; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -15,10 +15,10 @@ public class FeatureFlagListener implements ServerConfigListener { private FeatureFlagConfig featureFlagConfig; @Autowired - private FeatureFlagManagementService service; + private FeatureFlagManagementServiceBean service; @Override - public void updateServerConfig(AServer server) { + public void updateServerConfig(ServerDto server) { log.info("Setting up feature flags if necessary."); featureFlagConfig.getFeatures().forEach((featureFlagKey, featureFlagValue) -> { if(!service.getFeatureFlag(featureFlagKey, server.getId()).isPresent()) { diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/ChannelListener.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/ChannelListener.java index 4078f2c7e..380debe79 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/ChannelListener.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/ChannelListener.java @@ -1,11 +1,14 @@ package dev.sheldan.abstracto.core.listener; -import dev.sheldan.abstracto.core.service.management.ChannelManagementService; -import dev.sheldan.abstracto.core.service.management.ServerManagementService; -import dev.sheldan.abstracto.core.models.database.AChannelType; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.AChannel; +import dev.sheldan.abstracto.core.models.AChannelType; +import dev.sheldan.abstracto.core.models.AServer; +import dev.sheldan.abstracto.core.models.dto.ChannelDto; +import dev.sheldan.abstracto.core.models.dto.ServerDto; +import dev.sheldan.abstracto.core.models.utils.ChannelUtils; import dev.sheldan.abstracto.core.repository.ServerRepository; +import dev.sheldan.abstracto.core.service.management.ChannelManagementServiceBean; +import dev.sheldan.abstracto.core.service.management.ServerManagementServiceBean; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.TextChannel; import net.dv8tion.jda.api.events.channel.text.TextChannelCreateEvent; @@ -22,13 +25,10 @@ import javax.annotation.Nonnull; public class ChannelListener extends ListenerAdapter { @Autowired - private ServerRepository serverRepository; + private ChannelManagementServiceBean channelManagementService; @Autowired - private ChannelManagementService channelManagementService; - - @Autowired - private ServerManagementService serverManagementService; + private ServerManagementServiceBean serverManagementService; @Override @Transactional @@ -41,10 +41,10 @@ public class ChannelListener extends ListenerAdapter { @Transactional public void onTextChannelCreate(@Nonnull TextChannelCreateEvent event) { log.info("Handling channel created event. Channel {}, Server {}", event.getChannel().getIdLong(), event.getGuild().getIdLong()); - 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); + AChannelType type = ChannelUtils.getAChannelType(createdChannel.getType()); + ChannelDto newChannel = channelManagementService.createChannel(createdChannel.getIdLong(), type); + ServerDto serverDto = ServerDto.builder().id(event.getGuild().getIdLong()).build(); + serverManagementService.addChannelToServer(serverDto, newChannel); } } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/JoinListenerBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/JoinListenerBean.java index c1dac0508..5a5ac6110 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/JoinListenerBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/JoinListenerBean.java @@ -22,6 +22,7 @@ public class JoinListenerBean extends ListenerAdapter { @Autowired private FeatureFlagService featureFlagService; + @Override @Transactional public void onGuildMemberJoin(@Nonnull GuildMemberJoinEvent event) { diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/ReactionUpdatedListener.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/ReactionUpdatedListener.java index 92f0f24c5..ed395ebc7 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/ReactionUpdatedListener.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/listener/ReactionUpdatedListener.java @@ -1,15 +1,17 @@ package dev.sheldan.abstracto.core.listener; +import dev.sheldan.abstracto.core.models.converter.UserInServerConverter; import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException; +import dev.sheldan.abstracto.core.models.AUserInAServer; +import dev.sheldan.abstracto.core.models.dto.UserDto; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; import dev.sheldan.abstracto.core.service.Bot; import dev.sheldan.abstracto.core.service.FeatureFlagService; -import dev.sheldan.abstracto.core.service.management.UserManagementService; import dev.sheldan.abstracto.core.models.cache.CachedMessage; import dev.sheldan.abstracto.core.models.cache.CachedReaction; -import dev.sheldan.abstracto.core.models.database.AUser; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.core.service.EmoteService; import dev.sheldan.abstracto.core.service.MessageCache; +import dev.sheldan.abstracto.core.service.management.UserManagementServiceBean; import dev.sheldan.abstracto.core.utils.EmoteUtils; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.events.message.guild.react.GuildMessageReactionAddEvent; @@ -36,7 +38,7 @@ public class ReactionUpdatedListener extends ListenerAdapter { private EmoteService emoteService; @Autowired - private UserManagementService userManagementService; + private UserManagementServiceBean userManagementService; @Autowired private List addedListenerList; @@ -53,6 +55,9 @@ public class ReactionUpdatedListener extends ListenerAdapter { @Autowired private Bot bot; + @Autowired + private UserInServerConverter userInServerConverter; + @Override @Transactional public void onGuildMessageReactionAdd(@Nonnull GuildMessageReactionAddEvent event) { @@ -70,7 +75,7 @@ public class ReactionUpdatedListener extends ListenerAdapter { }); } - private void addReactionIfNotThere(CachedMessage message, CachedReaction reaction, AUser userReacting) { + private void addReactionIfNotThere(CachedMessage message, CachedReaction reaction, UserDto userReacting) { Optional existingReaction = message.getReactions().stream().filter(reaction1 -> { return EmoteUtils.compareAEmote(reaction1.getEmote(), reaction.getEmote()); }).findAny(); @@ -78,14 +83,14 @@ public class ReactionUpdatedListener extends ListenerAdapter { message.getReactions().add(reaction); } else { CachedReaction cachedReaction = existingReaction.get(); - Optional any = cachedReaction.getUsers().stream().filter(user -> user.getId().equals(userReacting.getId())).findAny(); + Optional any = cachedReaction.getUsers().stream().filter(user -> user.getId().equals(userReacting.getId())).findAny(); if(!any.isPresent()){ cachedReaction.getUsers().add(userReacting); } } } - private void removeReactionIfThere(CachedMessage message, CachedReaction reaction, AUser userReacting) { + private void removeReactionIfThere(CachedMessage message, CachedReaction reaction, UserDto userReacting) { Optional existingReaction = message.getReactions().stream().filter(reaction1 -> { return EmoteUtils.compareAEmote(reaction1.getEmote(), reaction.getEmote()); }).findAny(); @@ -98,8 +103,8 @@ public class ReactionUpdatedListener extends ListenerAdapter { @Transactional public void callAddedListeners(@Nonnull GuildMessageReactionAddEvent event, CachedMessage cachedMessage, CachedReaction reaction) { - AUserInAServer userInAServer = userManagementService.loadUser(event.getGuild().getIdLong(), event.getUserIdLong()); - addReactionIfNotThere(cachedMessage, reaction, userInAServer.getUserReference()); + UserInServerDto userInAServer = userManagementService.loadUser(event.getGuild().getIdLong(), event.getUserIdLong()); + addReactionIfNotThere(cachedMessage, reaction, userInAServer.getUser()); addedListenerList.forEach(reactedAddedListener -> { if(!featureFlagService.isFeatureEnabled(reactedAddedListener.getFeature(), event.getGuild().getIdLong())) { return; @@ -132,8 +137,8 @@ public class ReactionUpdatedListener extends ListenerAdapter { @Transactional public void callRemoveListeners(@Nonnull GuildMessageReactionRemoveEvent event, CachedMessage cachedMessage, CachedReaction reaction) { - AUserInAServer userInAServer = userManagementService.loadUser(event.getGuild().getIdLong(), event.getUserIdLong()); - removeReactionIfThere(cachedMessage, reaction, userInAServer.getUserReference()); + UserInServerDto userInAServer = userManagementService.loadUser(event.getGuild().getIdLong(), event.getUserIdLong()); + removeReactionIfThere(cachedMessage, reaction, userInAServer.getUser()); reactionRemovedListener.forEach(reactedAddedListener -> { if(!featureFlagService.isFeatureEnabled(reactedAddedListener.getFeature(), event.getGuild().getIdLong())) { return; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/ChannelGroupRepository.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/ChannelGroupRepository.java index ff4aefbae..9b5f0d875 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/ChannelGroupRepository.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/ChannelGroupRepository.java @@ -1,7 +1,7 @@ package dev.sheldan.abstracto.core.repository; -import dev.sheldan.abstracto.core.models.database.AChannelGroup; -import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.AChannelGroup; +import dev.sheldan.abstracto.core.models.AServer; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/ChannelRepository.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/ChannelRepository.java index 4484a769b..a9b28480b 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/ChannelRepository.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/ChannelRepository.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.core.repository; -import dev.sheldan.abstracto.core.models.database.AChannel; +import dev.sheldan.abstracto.core.models.AChannel; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/ConfigRepository.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/ConfigRepository.java index 78b2c73ae..288cbc680 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/ConfigRepository.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/ConfigRepository.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.core.repository; -import dev.sheldan.abstracto.core.models.database.AConfig; +import dev.sheldan.abstracto.core.models.AConfig; import org.springframework.data.jpa.repository.JpaRepository; public interface ConfigRepository extends JpaRepository { diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/EmoteRepository.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/EmoteRepository.java index f1afb3b64..aa9cc5131 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/EmoteRepository.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/EmoteRepository.java @@ -1,7 +1,7 @@ package dev.sheldan.abstracto.core.repository; -import dev.sheldan.abstracto.core.models.database.AEmote; -import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.AEmote; +import dev.sheldan.abstracto.core.models.AServer; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/FeatureFlagRepository.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/FeatureFlagRepository.java index aecf7d51a..8a8e75e76 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/FeatureFlagRepository.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/FeatureFlagRepository.java @@ -1,7 +1,7 @@ package dev.sheldan.abstracto.core.repository; -import dev.sheldan.abstracto.core.models.database.AFeatureFlag; -import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.AFeatureFlag; +import dev.sheldan.abstracto.core.models.AServer; import org.springframework.data.jpa.repository.JpaRepository; public interface FeatureFlagRepository extends JpaRepository { diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/PostTargetRepository.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/PostTargetRepository.java index fdd40f231..ad0c06c13 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/PostTargetRepository.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/PostTargetRepository.java @@ -1,7 +1,7 @@ package dev.sheldan.abstracto.core.repository; -import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.models.database.PostTarget; +import dev.sheldan.abstracto.core.models.AServer; +import dev.sheldan.abstracto.core.models.PostTarget; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/RoleRepository.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/RoleRepository.java index 8fa56b18f..f71a581dc 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/RoleRepository.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/RoleRepository.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.core.repository; -import dev.sheldan.abstracto.core.models.database.ARole; +import dev.sheldan.abstracto.core.models.ARole; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/ServerRepository.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/ServerRepository.java index 78cc518d8..9eea066c5 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/ServerRepository.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/ServerRepository.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.core.repository; -import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.AServer; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/UserInServerRepository.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/UserInServerRepository.java index 6d11a157f..e3c44c12c 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/UserInServerRepository.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/UserInServerRepository.java @@ -1,8 +1,8 @@ package dev.sheldan.abstracto.core.repository; -import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.models.database.AUser; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.models.AServer; +import dev.sheldan.abstracto.core.models.AUser; +import dev.sheldan.abstracto.core.models.AUserInAServer; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/UserRepository.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/UserRepository.java index 7192722e0..7235f7a1e 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/UserRepository.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/repository/UserRepository.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.core.repository; -import dev.sheldan.abstracto.core.models.database.AUser; +import dev.sheldan.abstracto.core.models.AUser; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/BotServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/BotServiceBean.java index 7efecba23..d294db13c 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/BotServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/BotServiceBean.java @@ -2,8 +2,8 @@ package dev.sheldan.abstracto.core.service; import dev.sheldan.abstracto.core.exception.ChannelException; import dev.sheldan.abstracto.core.exception.GuildException; +import dev.sheldan.abstracto.core.models.dto.EmoteDto; import dev.sheldan.abstracto.core.models.GuildChannelMember; -import dev.sheldan.abstracto.core.models.database.AEmote; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.JDABuilder; @@ -82,7 +82,7 @@ public class BotServiceBean implements Bot { } @Override - public Optional getEmote(Long serverId, AEmote emote) { + public Optional getEmote(Long serverId, EmoteDto emote) { if(!emote.getCustom()) { return Optional.empty(); } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/ChannelGroupServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/ChannelGroupServiceBean.java index f22e9c93a..46f5267bf 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/ChannelGroupServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/ChannelGroupServiceBean.java @@ -1,47 +1,67 @@ package dev.sheldan.abstracto.core.service; +import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.exception.ChannelGroupException; import dev.sheldan.abstracto.core.command.exception.CommandException; -import dev.sheldan.abstracto.core.command.models.database.ACommand; -import dev.sheldan.abstracto.core.command.service.management.ChannelGroupCommandManagementService; -import dev.sheldan.abstracto.core.command.service.management.CommandManagementService; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AChannelGroup; -import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.service.management.ChannelGroupManagementService; -import dev.sheldan.abstracto.core.service.management.ChannelManagementService; -import dev.sheldan.abstracto.core.service.management.ServerManagementService; +import dev.sheldan.abstracto.core.models.*; +import dev.sheldan.abstracto.core.command.service.management.ChannelGroupCommandManagementServiceBean; +import dev.sheldan.abstracto.core.command.service.management.CommandManagementServiceBean; +import dev.sheldan.abstracto.core.models.converter.ChannelConverter; +import dev.sheldan.abstracto.core.models.converter.ChannelGroupConverter; +import dev.sheldan.abstracto.core.models.converter.ServerConverter; +import dev.sheldan.abstracto.core.models.dto.ChannelDto; +import dev.sheldan.abstracto.core.models.dto.ChannelGroupDto; +import dev.sheldan.abstracto.core.models.dto.CommandDto; +import dev.sheldan.abstracto.core.models.dto.ServerDto; +import dev.sheldan.abstracto.core.service.management.ChannelGroupManagementServiceBean; +import dev.sheldan.abstracto.core.service.management.ChannelManagementServiceBean; +import dev.sheldan.abstracto.core.service.management.ServerManagementServiceBean; import net.dv8tion.jda.api.entities.TextChannel; +import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.List; + @Component public class ChannelGroupServiceBean implements ChannelGroupService { @Autowired - private ChannelGroupManagementService channelGroupManagementService; + private ChannelGroupManagementServiceBean channelGroupManagementService; @Autowired - private ChannelManagementService channelManagementService; + private ChannelManagementServiceBean channelManagementService; @Autowired - private CommandManagementService commandManagementService; + private CommandManagementServiceBean commandManagementService; @Autowired - private ChannelGroupCommandManagementService channelGroupCommandManagementService; + private ChannelGroupCommandManagementServiceBean channelGroupCommandManagementService; @Autowired - private ServerManagementService serverManagementService; + private ServerManagementServiceBean serverManagementService; + + @Autowired + private ChannelGroupConverter channelGroupConverter; + + @Autowired + private ChannelConverter channelConverter; + + @Autowired + private ServerConverter serverConverter; @Override - public AChannelGroup createChannelGroup(String name, Long serverId) { - AServer server = serverManagementService.loadOrCreate(serverId); - return channelGroupManagementService.createChannelGroup(name, server); + public ChannelGroupDto createChannelGroup(String name, Long serverId) { + ServerDto server = serverManagementService.loadOrCreate(serverId); + + AChannelGroup channelGroup = channelGroupManagementService.createChannelGroup(name, server); + return channelGroupConverter.fromChannelGroup(channelGroup); } @Override public void deleteChannelGroup(String name, Long serverId) { - AServer server = serverManagementService.loadOrCreate(serverId); + ServerDto server = serverManagementService.loadOrCreate(serverId); channelGroupManagementService.deleteChannelGroup(name, server); } @@ -52,14 +72,14 @@ public class ChannelGroupServiceBean implements ChannelGroupService { @Override public void addChannelToChannelGroup(String channelGroupName, Long channelId) { - AChannel aChannel = channelManagementService.loadChannel(channelId); + ChannelDto aChannel = ChannelDto.builder().id(channelId).build(); addChannelToChannelGroup(channelGroupName, aChannel); } @Override - public void addChannelToChannelGroup(String channelGroupName, AChannel channel) { - AServer server = serverManagementService.loadOrCreate(channel.getServer().getId()); - AChannelGroup channelGroup = channelGroupManagementService.findByNameAndServer(channelGroupName, server); + public void addChannelToChannelGroup(String channelGroupName, ChannelDto channel) { + ServerDto server = serverManagementService.loadOrCreate(channel.getServer().getId()); + ChannelGroupDto channelGroup = channelGroupManagementService.findByNameAndServer(channelGroupName, server); if(channelGroup == null) { throw new ChannelGroupException(String.format("Channel group %s was not found.", channelGroupName)); } @@ -73,14 +93,14 @@ public class ChannelGroupServiceBean implements ChannelGroupService { @Override public void removeChannelFromChannelGroup(String channelGroupName, Long channelId) { - AChannel aChannel = channelManagementService.loadChannel(channelId); - removeChannelFromChannelGroup(channelGroupName, aChannel); + ChannelDto channel = ChannelDto.builder().id(channelId).build(); + removeChannelFromChannelGroup(channelGroupName, channel); } @Override - public void removeChannelFromChannelGroup(String channelGroupName, AChannel channel) { - AServer server = serverManagementService.loadOrCreate(channel.getServer().getId()); - AChannelGroup channelGroup = channelGroupManagementService.findByNameAndServer(channelGroupName, server); + public void removeChannelFromChannelGroup(String channelGroupName, ChannelDto channel) { + ServerDto serverDto = ServerDto.builder().id(channel.getServer().getId()).build(); + ChannelGroupDto channelGroup = channelGroupManagementService.findByNameAndServer(channelGroupName, serverDto); if(channelGroup == null) { throw new ChannelGroupException(String.format("Channel group %s was not found", channelGroupName)); } @@ -89,12 +109,12 @@ public class ChannelGroupServiceBean implements ChannelGroupService { @Override public void disableCommandInChannelGroup(String commandName, String channelGroupName, Long serverId) { - AServer server = serverManagementService.loadOrCreate(serverId); - AChannelGroup channelGroup = channelGroupManagementService.findByNameAndServer(channelGroupName, server); + ServerDto serverDto = ServerDto.builder().id(serverId).build(); + ChannelGroupDto channelGroup = channelGroupManagementService.findByNameAndServer(channelGroupName, serverDto); if(channelGroup == null) { throw new ChannelGroupException(String.format("Channel group %s was not found", channelGroupName)); } - ACommand command = commandManagementService.findCommandByName(commandName); + CommandDto command = commandManagementService.findCommandByName(commandName); if(command == null) { throw new CommandException(String.format("Command %s not found.", commandName)); } @@ -103,12 +123,12 @@ public class ChannelGroupServiceBean implements ChannelGroupService { @Override public void enableCommandInChannelGroup(String commandName, String channelGroupName, Long serverId) { - AServer server = serverManagementService.loadOrCreate(serverId); - AChannelGroup channelGroup = channelGroupManagementService.findByNameAndServer(channelGroupName, server); + ServerDto serverDto = ServerDto.builder().id(serverId).build(); + ChannelGroupDto channelGroup = channelGroupManagementService.findByNameAndServer(channelGroupName, serverDto); if(channelGroup == null) { throw new ChannelGroupException(String.format("Channel group %s was not found", channelGroupName)); } - ACommand command = commandManagementService.findCommandByName(commandName); + CommandDto command = commandManagementService.findCommandByName(commandName); if(command == null) { throw new CommandException(String.format("Command %s not found.", commandName)); } @@ -117,7 +137,17 @@ public class ChannelGroupServiceBean implements ChannelGroupService { @Override public boolean doesGroupExist(String groupName, Long serverId) { - AServer server = serverManagementService.loadOrCreate(serverId); + ServerDto server = serverManagementService.loadOrCreate(serverId); return channelGroupManagementService.findByNameAndServer(groupName, server) != null; } + + @Override + public List findAllInServer(ServerDto server) { + List channelGroupDtos = new ArrayList<>(); + List allInServer = channelGroupManagementService.findAllInServer(server.getId()); + allInServer.forEach(channelGroup -> { + channelGroupDtos.add(channelGroupConverter.fromChannelGroup(channelGroup)); + }); + return channelGroupDtos; + } } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/ChannelServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/ChannelServiceBean.java index 864ea5d37..2ce4ed63e 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/ChannelServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/ChannelServiceBean.java @@ -1,9 +1,12 @@ package dev.sheldan.abstracto.core.service; +import dev.sheldan.abstracto.core.models.converter.ChannelConverter; import dev.sheldan.abstracto.core.exception.ChannelException; import dev.sheldan.abstracto.core.exception.GuildException; +import dev.sheldan.abstracto.core.models.AChannel; +import dev.sheldan.abstracto.core.models.dto.ChannelDto; +import dev.sheldan.abstracto.core.service.management.ChannelManagementServiceBean; import dev.sheldan.abstracto.templating.model.MessageToSend; -import dev.sheldan.abstracto.core.models.database.AChannel; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Message; @@ -25,8 +28,14 @@ public class ChannelServiceBean implements ChannelService { @Autowired private Bot botService; + @Autowired + private ChannelManagementServiceBean channelManagementServiceBean; + + @Autowired + private ChannelConverter channelConverter; + @Override - public void sendTextInAChannel(String text, AChannel channel) { + public void sendTextInAChannel(String text, ChannelDto channel) { Guild guild = botService.getInstance().getGuildById(channel.getServer().getId()); if (guild != null) { TextChannel textChannel = guild.getTextChannelById(channel.getId()); @@ -43,7 +52,7 @@ public class ChannelServiceBean implements ChannelService { } @Override - public List> sendMessageToEndInAChannel(MessageToSend messageToSend, AChannel channel) { + public List> sendMessageToEndInAChannel(MessageToSend messageToSend, ChannelDto channel) { Optional textChannelFromServer = botService.getTextChannelFromServer(channel.getServer().getId(), channel.getId()); if(textChannelFromServer.isPresent()) { return sendMessageToEndInTextChannel(messageToSend, textChannelFromServer.get()); @@ -80,4 +89,9 @@ public class ChannelServiceBean implements ChannelService { public Optional getTextChannelInGuild(Long serverId, Long channelId) { return botService.getTextChannelFromServer(serverId, channelId); } + + @Override + public ChannelDto loadChannel(Long channelId) { + return channelManagementServiceBean.loadChannel(channelId); + } } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/ConfigServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/ConfigServiceBean.java index 7d9bf77ca..0295c33ec 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/ConfigServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/ConfigServiceBean.java @@ -1,7 +1,7 @@ package dev.sheldan.abstracto.core.service; -import dev.sheldan.abstracto.core.service.management.ConfigManagementService; -import dev.sheldan.abstracto.core.models.database.AConfig; +import dev.sheldan.abstracto.core.models.AConfig; +import dev.sheldan.abstracto.core.service.management.ConfigManagementServiceBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -9,7 +9,7 @@ import org.springframework.stereotype.Component; public class ConfigServiceBean implements ConfigService{ @Autowired - private ConfigManagementService configManagementService; + private ConfigManagementServiceBean configManagementService; @Override public Double getDoubleValue(String name, Long serverId) { @@ -24,4 +24,9 @@ public class ConfigServiceBean implements ConfigService{ } return config.getDoubleValue(); } + + @Override + public void createValueIfNotExists(String name, Long serverId, Double value) { + configManagementService.createIfNotExists(serverId, name, value); + } } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/EmoteServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/EmoteServiceBean.java index b82da84f0..94683a908 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/EmoteServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/EmoteServiceBean.java @@ -1,8 +1,10 @@ package dev.sheldan.abstracto.core.service; import dev.sheldan.abstracto.core.exception.EmoteException; -import dev.sheldan.abstracto.core.models.database.AEmote; -import dev.sheldan.abstracto.core.service.management.EmoteManagementService; +import dev.sheldan.abstracto.core.models.AEmote; +import dev.sheldan.abstracto.core.models.converter.EmoteConverter; +import dev.sheldan.abstracto.core.models.dto.EmoteDto; +import dev.sheldan.abstracto.core.service.management.EmoteManagementServiceBean; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Emote; import net.dv8tion.jda.api.entities.Guild; @@ -20,7 +22,10 @@ public class EmoteServiceBean implements EmoteService { private Bot botService; @Autowired - private EmoteManagementService emoteManagementService; + private EmoteManagementServiceBean emoteManagementService; + + @Autowired + private EmoteConverter emoteConverter; @Override public boolean isEmoteUsableByBot(Emote emote) { @@ -34,16 +39,22 @@ public class EmoteServiceBean implements EmoteService { } @Override - public AEmote buildAEmoteFromReaction(MessageReaction.ReactionEmote reaction) { + public EmoteDto buildAEmoteFromReaction(MessageReaction.ReactionEmote reaction) { if(reaction.isEmote()) { - return AEmote.builder().emoteKey(reaction.getName()).custom(true).emoteId(reaction.getEmote().getIdLong()).animated(reaction.getEmote().isAnimated()).build(); + return EmoteDto.builder().emoteKey(reaction.getName()).custom(true).emoteId(reaction.getEmote().getIdLong()).animated(reaction.getEmote().isAnimated()).build(); } else { - return AEmote.builder().emoteKey(reaction.getEmoji()).custom(false).build(); + return EmoteDto.builder().emoteKey(reaction.getEmoji()).custom(false).build(); } } @Override - public String getEmoteAsMention(AEmote emote, Long serverId, String defaultText) { + public Optional getEmoteByName(String name, Long serverId) { + Optional aEmote = emoteManagementService.loadEmoteByName(name, serverId); + return Optional.ofNullable(aEmote.map(emote -> emoteConverter.fromEmote(emote)).orElse(null)); + } + + @Override + public String getEmoteAsMention(EmoteDto emote, Long serverId, String defaultText) { if(emote != null && emote.getCustom()) { Optional emoteOptional = botService.getEmote(serverId, emote); if (emoteOptional.isPresent()) { @@ -61,7 +72,7 @@ public class EmoteServiceBean implements EmoteService { } @Override - public String getEmoteAsMention(AEmote emote, Long serverId) { + public String getEmoteAsMention(EmoteDto emote, Long serverId) { return this.getEmoteAsMention(emote, serverId, " "); } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/FeatureFlagServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/FeatureFlagServiceBean.java index d4e75564a..f98459b3b 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/FeatureFlagServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/FeatureFlagServiceBean.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.core.service; -import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementService; +import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementServiceBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -8,7 +8,7 @@ import org.springframework.stereotype.Component; public class FeatureFlagServiceBean implements FeatureFlagService { @Autowired - private FeatureFlagManagementService managementService; + private FeatureFlagManagementServiceBean managementService; @Override public boolean isFeatureEnabled(String name, Long serverId) { diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/MessageCacheBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/MessageCacheBean.java index b5265be4b..e26504b2f 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/MessageCacheBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/MessageCacheBean.java @@ -2,12 +2,12 @@ package dev.sheldan.abstracto.core.service; import dev.sheldan.abstracto.core.exception.ChannelException; import dev.sheldan.abstracto.core.exception.GuildException; -import dev.sheldan.abstracto.core.service.management.EmoteManagementService; -import dev.sheldan.abstracto.core.service.management.UserManagementService; +import dev.sheldan.abstracto.core.models.dto.UserDto; +import dev.sheldan.abstracto.core.service.management.EmoteManagementServiceBean; import dev.sheldan.abstracto.core.models.cache.CachedMessage; import dev.sheldan.abstracto.core.models.cache.CachedReaction; -import dev.sheldan.abstracto.core.models.database.AUser; import dev.sheldan.abstracto.core.models.cache.*; +import dev.sheldan.abstracto.core.service.management.UserManagementServiceBean; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.*; import net.dv8tion.jda.api.requests.restaction.pagination.ReactionPaginationAction; @@ -33,10 +33,10 @@ public class MessageCacheBean implements MessageCache { private Bot bot; @Autowired - private UserManagementService userManagementService; + private UserManagementServiceBean userManagementService; @Autowired - private EmoteManagementService emoteManagementService; + private EmoteManagementServiceBean emoteManagementService; @Autowired private EmoteService emoteService; @@ -153,9 +153,9 @@ public class MessageCacheBean implements MessageCache { ReactionPaginationAction users = reaction.retrieveUsers().cache(false); CachedReaction.CachedReactionBuilder builder = CachedReaction.builder(); - List ausers = new ArrayList<>(); + List ausers = new ArrayList<>(); users.forEachAsync(user -> { - ausers.add(AUser.builder().id(user.getIdLong()).build()); + ausers.add(UserDto.builder().id(user.getIdLong()).build()); return false; }).thenAccept(o -> future.complete(builder.build())); builder.users(ausers); diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/MessageServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/MessageServiceBean.java index 6d8b5c7ad..c1a523056 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/MessageServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/MessageServiceBean.java @@ -2,8 +2,8 @@ package dev.sheldan.abstracto.core.service; import dev.sheldan.abstracto.core.exception.EmoteException; import dev.sheldan.abstracto.core.exception.GuildException; -import dev.sheldan.abstracto.core.service.management.EmoteManagementService; -import dev.sheldan.abstracto.core.models.database.AEmote; +import dev.sheldan.abstracto.core.models.AEmote; +import dev.sheldan.abstracto.core.service.management.EmoteManagementServiceBean; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Emote; import net.dv8tion.jda.api.entities.Guild; @@ -22,7 +22,7 @@ public class MessageServiceBean implements MessageService { private Bot bot; @Autowired - private EmoteManagementService emoteManagementService; + private EmoteManagementServiceBean emoteManagementService; @Override public void addReactionToMessage(String emoteKey, Long serverId, Message message) { diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/PostTargetServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/PostTargetServiceBean.java index 9174ae1e0..87fd3c8cb 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/PostTargetServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/PostTargetServiceBean.java @@ -1,11 +1,13 @@ package dev.sheldan.abstracto.core.service; import dev.sheldan.abstracto.core.DynamicKeyLoader; +import dev.sheldan.abstracto.core.models.converter.PostTargetConverter; import dev.sheldan.abstracto.core.exception.ChannelException; import dev.sheldan.abstracto.core.exception.GuildException; -import dev.sheldan.abstracto.core.service.management.PostTargetManagement; -import dev.sheldan.abstracto.core.service.management.ServerManagementService; -import dev.sheldan.abstracto.core.models.database.PostTarget; +import dev.sheldan.abstracto.core.models.PostTarget; +import dev.sheldan.abstracto.core.models.dto.PostTargetDto; +import dev.sheldan.abstracto.core.service.management.PostTargetManagementBean; +import dev.sheldan.abstracto.core.service.management.ServerManagementServiceBean; import dev.sheldan.abstracto.templating.model.MessageToSend; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.entities.Guild; @@ -26,10 +28,10 @@ import java.util.concurrent.CompletableFuture; public class PostTargetServiceBean implements PostTargetService { @Autowired - private ServerManagementService serverManagementService; + private ServerManagementServiceBean serverManagementService; @Autowired - private PostTargetManagement postTargetManagement; + private PostTargetManagementBean postTargetManagement; @Autowired private Bot botService; @@ -40,19 +42,22 @@ public class PostTargetServiceBean implements PostTargetService { @Autowired private ChannelService channelService; + @Autowired + private PostTargetConverter postTargetConverter; + @Override - public CompletableFuture sendTextInPostTarget(String text, PostTarget target) { + public CompletableFuture sendTextInPostTarget(String text, PostTargetDto target) { TextChannel textChannelForPostTarget = getTextChannelForPostTarget(target); return textChannelForPostTarget.sendMessage(text).submit(); } @Override - public CompletableFuture sendEmbedInPostTarget(MessageEmbed embed, PostTarget target) { + public CompletableFuture sendEmbedInPostTarget(MessageEmbed embed, PostTargetDto target) { TextChannel textChannelForPostTarget = getTextChannelForPostTarget(target); return textChannelForPostTarget.sendMessage(embed).submit(); } - private TextChannel getTextChannelForPostTarget(PostTarget target) { + private TextChannel getTextChannelForPostTarget(PostTargetDto target) { Guild guild = botService.getInstance().getGuildById(target.getServerReference().getId()); if(guild != null) { TextChannel textChannelById = guild.getTextChannelById(target.getChannelReference().getId()); @@ -69,10 +74,11 @@ public class PostTargetServiceBean implements PostTargetService { } } - private PostTarget getPostTarget(String postTargetName, Long serverId) { + @Override + public PostTargetDto getPostTarget(String postTargetName, Long serverId) { PostTarget postTarget = postTargetManagement.getPostTarget(postTargetName, serverId); if(postTarget != null) { - return postTarget; + return postTargetConverter.fromPostTarget(postTarget); } else { log.error("PostTarget {} in server {} was not found!", postTargetName, serverId); throw new ChannelException(String.format("Incorrect post target configuration: Post target %s was not found.", postTargetName)); @@ -81,30 +87,30 @@ public class PostTargetServiceBean implements PostTargetService { @Override public CompletableFuture sendTextInPostTarget(String text, String postTargetName, Long serverId) { - PostTarget postTarget = this.getPostTarget(postTargetName, serverId); + PostTargetDto postTarget = this.getPostTarget(postTargetName, serverId); return this.sendTextInPostTarget(text, postTarget); } @Override public CompletableFuture sendEmbedInPostTarget(MessageEmbed embed, String postTargetName, Long serverId) { - PostTarget postTarget = this.getPostTarget(postTargetName, serverId); + PostTargetDto postTarget = this.getPostTarget(postTargetName, serverId); return this.sendEmbedInPostTarget(embed, postTarget); } @Override public List> sendEmbedInPostTarget(MessageToSend message, String postTargetName, Long serverId) { - PostTarget postTarget = this.getPostTarget(postTargetName, serverId); + PostTargetDto postTarget = this.getPostTarget(postTargetName, serverId); return this.sendEmbedInPostTarget(message, postTarget); } @Override - public List> sendEmbedInPostTarget(MessageToSend message, PostTarget target) { + public List> sendEmbedInPostTarget(MessageToSend message, PostTargetDto target) { TextChannel textChannelForPostTarget = getTextChannelForPostTarget(target); return channelService.sendMessageToEndInTextChannel(message, textChannelForPostTarget); } @Override - public List> editEmbedInPostTarget(Long messageId, MessageToSend message, PostTarget target) { + public List> editEmbedInPostTarget(Long messageId, MessageToSend message, PostTargetDto target) { TextChannel textChannelForPostTarget = getTextChannelForPostTarget(target); String messageText = message.getMessage(); if(StringUtils.isBlank(messageText)) { @@ -115,7 +121,7 @@ public class PostTargetServiceBean implements PostTargetService { } @Override - public void editOrCreatedInPostTarget(Long messageId, MessageToSend messageToSend, PostTarget target, List> future) { + public void editOrCreatedInPostTarget(Long messageId, MessageToSend messageToSend, PostTargetDto target, List> future) { TextChannel textChannelForPostTarget = getTextChannelForPostTarget(target); if(StringUtils.isBlank(messageToSend.getMessage().trim())) { textChannelForPostTarget @@ -145,7 +151,7 @@ public class PostTargetServiceBean implements PostTargetService { @Override public void editOrCreatedInPostTarget(Long messageId, MessageToSend messageToSend, String postTargetName, Long serverId, List> future) { - PostTarget postTarget = this.getPostTarget(postTargetName, serverId); + PostTargetDto postTarget = this.getPostTarget(postTargetName, serverId); this.editOrCreatedInPostTarget(messageId, messageToSend, postTarget, future); } @@ -159,7 +165,7 @@ public class PostTargetServiceBean implements PostTargetService { @Override public List> editEmbedInPostTarget(Long messageId, MessageToSend message, String postTargetName, Long serverId) { - PostTarget postTarget = this.getPostTarget(postTargetName, serverId); + PostTargetDto postTarget = this.getPostTarget(postTargetName, serverId); return editEmbedInPostTarget(messageId, message, postTarget); } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/StartupServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/StartupServiceBean.java index 7791629b1..cb9673376 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/StartupServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/StartupServiceBean.java @@ -1,14 +1,16 @@ package dev.sheldan.abstracto.core.service; +import dev.sheldan.abstracto.core.models.converter.RoleConverter; +import dev.sheldan.abstracto.core.models.converter.ServerConverter; import dev.sheldan.abstracto.core.listener.ServerConfigListener; +import dev.sheldan.abstracto.core.models.*; +import dev.sheldan.abstracto.core.models.dto.RoleDto; +import dev.sheldan.abstracto.core.models.dto.ServerDto; +import dev.sheldan.abstracto.core.models.utils.ChannelUtils; +import dev.sheldan.abstracto.core.service.management.ChannelManagementServiceBean; +import dev.sheldan.abstracto.core.service.management.RoleManagementServiceBean; +import dev.sheldan.abstracto.core.service.management.ServerManagementServiceBean; import dev.sheldan.abstracto.core.utils.SnowflakeUtils; -import dev.sheldan.abstracto.core.service.management.ChannelManagementService; -import dev.sheldan.abstracto.core.service.management.RoleManagementService; -import dev.sheldan.abstracto.core.service.management.ServerManagementService; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AChannelType; -import dev.sheldan.abstracto.core.models.database.ARole; -import dev.sheldan.abstracto.core.models.database.AServer; import lombok.extern.slf4j.Slf4j; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Guild; @@ -36,17 +38,23 @@ public class StartupServiceBean implements Startup { private List listeners; @Autowired - private ServerManagementService serverManagementService; + private ServerManagementServiceBean serverManagementService; @Autowired - private ChannelManagementService channelManagementService; + private ChannelManagementServiceBean channelManagementService; @Autowired - private RoleManagementService roleManagementService; + private RoleManagementServiceBean roleManagementService; + + @Autowired + private ServerConverter serverConverter; @Autowired private List configListeners; + @Autowired + private RoleConverter roleConverter; + @Override public void startBot() throws LoginException { @@ -58,16 +66,17 @@ public class StartupServiceBean implements Startup { @Transactional public void synchronize() { log.info("Synchronizing servers."); - synchronizeServers(); + // synchronizeServers(); log.info("Done synchronizing servers"); } + /* private void synchronizeServers(){ JDA instance = service.getInstance(); List onlineGuilds = instance.getGuilds(); Set availableServers = SnowflakeUtils.getSnowflakeIds(onlineGuilds); availableServers.forEach(aLong -> { - AServer newAServer = serverManagementService.loadOrCreate(aLong); + ServerDto newAServer = serverManagementService.loadOrCreate(aLong); Guild newGuild = instance.getGuildById(aLong); log.debug("Synchronizing server: {}", aLong); if(newGuild != null){ @@ -81,20 +90,20 @@ public class StartupServiceBean implements Startup { } - private void synchronizeRolesOf(Guild guild, AServer existingAServer){ + private void synchronizeRolesOf(Guild guild, ServerDto existingAServer){ List existingRoles = guild.getRoles(); - List knownARoles = existingAServer.getRoles(); + List knownARoles = existingAServer.getRoles(); Set knownRolesId = SnowflakeUtils.getOwnItemsIds(knownARoles); Set availableRoles = SnowflakeUtils.getSnowflakeIds(existingRoles); Set newRoles = SetUtils.disjunction(availableRoles, knownRolesId); newRoles.forEach(aLong -> { ARole newRole = roleManagementService.createRole(aLong); log.debug("Adding new role: {}", aLong); - existingAServer.getRoles().add(newRole); + existingAServer.getRoles().add(roleConverter.fromARole(newRole)); }); } - private void synchronizeChannelsOf(Guild guild, AServer existingServer){ + private void synchronizeChannelsOf(Guild guild, ServerDto existingServer){ List available = guild.getChannels(); List knownChannels = existingServer.getChannels().stream().filter(aChannel -> !aChannel.getDeleted()).collect(Collectors.toList()); Set knownChannelsIds = SnowflakeUtils.getOwnItemsIds(knownChannels); @@ -103,7 +112,7 @@ public class StartupServiceBean implements Startup { newChannels.forEach(aLong -> { GuildChannel channel1 = available.stream().filter(channel -> channel.getIdLong() == aLong).findFirst().get(); log.debug("Adding new channel: {}", aLong); - AChannelType type = AChannel.getAChannelType(channel1.getType()); + AChannelType type = ChannelUtils.getAChannelType(channel1.getType()); AChannel newChannel = channelManagementService.createChannel(channel1.getIdLong(), type); serverManagementService.addChannelToServer(existingServer, newChannel); }); @@ -113,4 +122,7 @@ public class StartupServiceBean implements Startup { channelManagementService.markAsDeleted(aLong); }); } + + + */ } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/UserServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/UserServiceBean.java new file mode 100644 index 000000000..65fcb0f5a --- /dev/null +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/UserServiceBean.java @@ -0,0 +1,27 @@ +package dev.sheldan.abstracto.core.service; + +import dev.sheldan.abstracto.core.command.service.UserService; +import dev.sheldan.abstracto.core.models.converter.UserInServerConverter; +import dev.sheldan.abstracto.core.models.AUserInAServer; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; +import dev.sheldan.abstracto.core.service.management.UserManagementServiceBean; +import net.dv8tion.jda.api.entities.Member; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class UserServiceBean implements UserService { + + @Autowired + private UserManagementServiceBean userManagementServiceBean; + + @Override + public UserInServerDto loadUser(Member member) { + return userManagementServiceBean.loadUser(member.getGuild().getIdLong(), member.getIdLong()); + } + + @Override + public UserInServerDto loadUser(Long serverId, Long userId) { + return userManagementServiceBean.loadUser(serverId, userId); + } +} diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ChannelGroupManagementServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ChannelGroupManagementServiceBean.java index 31ce4ef0b..439ea5db8 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ChannelGroupManagementServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ChannelGroupManagementServiceBean.java @@ -2,10 +2,17 @@ package dev.sheldan.abstracto.core.service.management; import dev.sheldan.abstracto.core.command.exception.ChannelGroupException; import dev.sheldan.abstracto.core.exception.ChannelException; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AChannelGroup; -import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.AChannel; +import dev.sheldan.abstracto.core.models.AChannelGroup; +import dev.sheldan.abstracto.core.models.AServer; +import dev.sheldan.abstracto.core.models.converter.ChannelConverter; +import dev.sheldan.abstracto.core.models.converter.ChannelGroupConverter; +import dev.sheldan.abstracto.core.models.converter.ServerConverter; +import dev.sheldan.abstracto.core.models.dto.ChannelDto; +import dev.sheldan.abstracto.core.models.dto.ChannelGroupDto; +import dev.sheldan.abstracto.core.models.dto.ServerDto; import dev.sheldan.abstracto.core.repository.ChannelGroupRepository; +import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -13,39 +20,45 @@ import java.util.List; import java.util.function.Predicate; @Component -public class ChannelGroupManagementServiceBean implements ChannelGroupManagementService { +public class ChannelGroupManagementServiceBean { @Autowired private ChannelGroupRepository channelGroupRepository; @Autowired - private ServerManagementService serverManagementService; + private ServerManagementServiceBean serverManagementService; - @Override - public AChannelGroup createChannelGroup(String name, AServer server) { + @Autowired + private ServerConverter serverConverter; + + @Autowired + private ChannelGroupConverter channelGroupConverter; + + @Autowired + private ChannelConverter channelConverter; + + public AChannelGroup createChannelGroup(String name, ServerDto server) { name = name.toLowerCase(); AChannelGroup channelGroup = AChannelGroup .builder() .groupName(name) - .server(server) + .server(serverConverter.fromDto(server)) .build(); channelGroupRepository.save(channelGroup); return channelGroup; } - @Override - public void deleteChannelGroup(String name, AServer server) { + public void deleteChannelGroup(String name, ServerDto server) { name = name.toLowerCase(); - AChannelGroup existing = findByNameAndServer(name, server); + AChannelGroup existing = findByNameAndServer(name, serverConverter.fromDto(server)); if(existing == null) { throw new ChannelGroupException(String.format("Channel group %s does not exist", name)); } channelGroupRepository.delete(existing); } - @Override - public AChannelGroup addChannelToChannelGroup(AChannelGroup channelGroup, AChannel channel) { - Predicate channelInGroupPredicate = channel1 -> channel1.getId().equals(channel.getId()); + public ChannelGroupDto addChannelToChannelGroup(ChannelGroupDto channelGroup, ChannelDto channel) { + Predicate channelInGroupPredicate = channel1 -> channel1.getId().equals(channel.getId()); if(channelGroup == null) { throw new ChannelGroupException("Channel group was not found."); } @@ -53,36 +66,43 @@ public class ChannelGroupManagementServiceBean implements ChannelGroupManagement throw new ChannelException(String.format("Channel %s is already part of group %s.", channel.getId(), channelGroup.getGroupName())); } channelGroup.getChannels().add(channel); - channel.getGroups().add(channelGroup); - channelGroupRepository.save(channelGroup); + AChannel channel1 = channelConverter.fromDto(channel); + AChannelGroup entity = channelGroupConverter.fromChannelGroup(channelGroup); + channel1.getGroups().add(entity); + channelGroupRepository.save(entity); return channelGroup; } - @Override - public void removeChannelFromChannelGroup(AChannelGroup channelGroup, AChannel channel) { - Predicate channelInGroupPredicate = channel1 -> channel1.getId().equals(channel.getId()); + public void removeChannelFromChannelGroup(ChannelGroupDto channelGroup, ChannelDto channel) { + Predicate channelInGroupPredicate = channel1 -> channel1.getId().equals(channel.getId()); if(channelGroup.getChannels().stream().noneMatch(channelInGroupPredicate)) { throw new ChannelException(String.format("Channel %s is not part of group %s.", channel.getId(), channelGroup.getGroupName())); } channelGroup.getChannels().removeIf(channelInGroupPredicate); - channel.getGroups().removeIf(channelGroup1 -> channelGroup1.getId().equals(channelGroup.getId())); - channelGroupRepository.save(channelGroup); + channelGroupRepository.save(channelGroupConverter.fromChannelGroup(channelGroup)); } - @Override - public AChannelGroup findByNameAndServer(String name, AServer server) { + public ChannelGroupDto findByNameAndServer(String name, ServerDto server) { + name = name.toLowerCase(); + AChannelGroup byGroupNameAndServer = channelGroupRepository.findByGroupNameAndServer(name, serverConverter.fromDto(server)); + return channelGroupConverter.fromChannelGroup(byGroupNameAndServer); + } + + private AChannelGroup findByNameAndServer(String name, AServer server) { name = name.toLowerCase(); return channelGroupRepository.findByGroupNameAndServer(name, server); } - @Override - public List findAllInServer(AServer server) { + public List findAllInServer(ServerDto server) { + return findAllInServer(serverConverter.fromDto(server)); + } + + private List findAllInServer(AServer server) { return channelGroupRepository.findByServer(server); } - @Override public List findAllInServer(Long serverId) { - AServer server = serverManagementService.loadOrCreate(serverId); + ServerDto server = serverManagementService.loadOrCreate(serverId); return findAllInServer(server); } } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ChannelManagementServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ChannelManagementServiceBean.java index 137d52a2f..a882bf6d3 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ChannelManagementServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ChannelManagementServiceBean.java @@ -1,7 +1,9 @@ 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.AChannel; +import dev.sheldan.abstracto.core.models.AChannelType; +import dev.sheldan.abstracto.core.models.converter.ChannelConverter; +import dev.sheldan.abstracto.core.models.dto.ChannelDto; import dev.sheldan.abstracto.core.repository.ChannelRepository; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -9,30 +11,30 @@ import org.springframework.stereotype.Service; @Service @Slf4j -public class ChannelManagementServiceBean implements ChannelManagementService { +public class ChannelManagementServiceBean { @Autowired private ChannelRepository repository; - @Override - public AChannel loadChannel(Long id) { - return repository.getOne(id); + @Autowired + private ChannelConverter channelConverter; + + public ChannelDto loadChannel(Long id) { + return channelConverter.fromChannel(repository.getOne(id)); } - @Override - public AChannel createChannel(Long id, AChannelType type) { + public ChannelDto createChannel(Long id, AChannelType type) { log.info("Creating channel {} with type {}", id, type); - return repository.save(AChannel.builder().id(id).type(type).deleted(false).build()); + AChannel save = repository.save(AChannel.builder().id(id).type(type).deleted(false).build()); + return channelConverter.fromChannel(save); } - @Override public void markAsDeleted(Long id) { - AChannel channel = loadChannel(id); + ChannelDto channel = loadChannel(id); channel.setDeleted(true); - repository.save(channel); + repository.save(channelConverter.fromDto(channel)); } - @Override public void removeChannel(Long id) { log.info("Deleting channel {}", id); repository.deleteById(id); diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ConfigManagementServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ConfigManagementServiceBean.java index d8c1f6ba7..1d221c331 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ConfigManagementServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ConfigManagementServiceBean.java @@ -1,21 +1,20 @@ package dev.sheldan.abstracto.core.service.management; -import dev.sheldan.abstracto.core.models.database.AConfig; -import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.AConfig; +import dev.sheldan.abstracto.core.models.AServer; import dev.sheldan.abstracto.core.repository.ConfigRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component -public class ConfigManagementServiceBean implements ConfigManagementService { +public class ConfigManagementServiceBean { @Autowired private ConfigRepository configRepository; @Autowired - private ServerManagementService serverManagementService; + private ServerManagementServiceBean serverManagementService; - @Override public void setOrCreateStringValue(Long serverId, String name, String value) { AConfig config = loadConfig(serverId, name); if(config == null) { @@ -26,7 +25,6 @@ public class ConfigManagementServiceBean implements ConfigManagementService { } } - @Override public void setOrCreateDoubleValue(Long serverId, String name, Double value) { AConfig config = loadConfig(serverId, name); if(config == null) { @@ -37,9 +35,8 @@ public class ConfigManagementServiceBean implements ConfigManagementService { } } - @Override public AConfig createConfig(Long serverId, String name, String value) { - AServer server = serverManagementService.loadOrCreate(serverId); + AServer server = AServer.builder().id(serverId).build(); AConfig config = AConfig .builder() .stringValue(value) @@ -50,9 +47,8 @@ public class ConfigManagementServiceBean implements ConfigManagementService { return config; } - @Override public AConfig createConfig(Long serverId, String name, Double value) { - AServer server = serverManagementService.loadOrCreate(serverId); + AServer server = AServer.builder().id(serverId).build(); AConfig config = AConfig .builder() .doubleValue(value) @@ -63,7 +59,6 @@ public class ConfigManagementServiceBean implements ConfigManagementService { return config; } - @Override public AConfig createIfNotExists(Long serverId, String name, String value) { AConfig config = loadConfig(serverId, name); if(config == null) { @@ -72,7 +67,6 @@ public class ConfigManagementServiceBean implements ConfigManagementService { return config; } - @Override public AConfig createIfNotExists(Long serverId, String name, Double value) { AConfig config = loadConfig(serverId, name); if(config == null) { @@ -81,7 +75,6 @@ public class ConfigManagementServiceBean implements ConfigManagementService { return config; } - @Override public AConfig loadConfig(Long serverId, String name) { return configRepository.findAConfigByServerIdAndName(serverId, name); } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/EmoteManagementServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/EmoteManagementServiceBean.java index 79ed598db..1b18230e2 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/EmoteManagementServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/EmoteManagementServiceBean.java @@ -2,8 +2,12 @@ package dev.sheldan.abstracto.core.service.management; import dev.sheldan.abstracto.core.DynamicKeyLoader; import dev.sheldan.abstracto.core.exception.EmoteException; -import dev.sheldan.abstracto.core.models.database.AEmote; -import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.AEmote; +import dev.sheldan.abstracto.core.models.AServer; +import dev.sheldan.abstracto.core.models.converter.EmoteConverter; +import dev.sheldan.abstracto.core.models.converter.ServerConverter; +import dev.sheldan.abstracto.core.models.dto.EmoteDto; +import dev.sheldan.abstracto.core.models.dto.ServerDto; import dev.sheldan.abstracto.core.service.Bot; import dev.sheldan.abstracto.core.repository.EmoteRepository; import net.dv8tion.jda.api.entities.Emote; @@ -14,13 +18,13 @@ import java.util.List; import java.util.Optional; @Component -public class EmoteManagementServiceBean implements EmoteManagementService { +public class EmoteManagementServiceBean { @Autowired private EmoteRepository repository; @Autowired - private ServerManagementService serverManagementService; + private ServerManagementServiceBean serverManagementService; @Autowired private DynamicKeyLoader dynamicKeyLoader; @@ -28,19 +32,23 @@ public class EmoteManagementServiceBean implements EmoteManagementService { @Autowired private Bot botService; - @Override + @Autowired + private ServerConverter serverConverter; + + @Autowired + private EmoteConverter emoteConverter; + public AEmote loadEmote(Long id) { return repository.getOne(id); } - @Override public AEmote createCustomEmote(String name, String emoteKey, Long emoteId, Boolean animated, Long serverId) { - AServer server = serverManagementService.loadOrCreate(serverId); + ServerDto server = ServerDto.builder().id(serverId).build(); return this.createCustomEmote(name, emoteKey, emoteId, animated, server); } - @Override - public AEmote createCustomEmote(String name, String emoteKey, Long emoteId, Boolean animated, AServer server) { + public AEmote createCustomEmote(String name, String emoteKey, Long emoteId, Boolean animated, ServerDto server) { + AServer aServer = serverConverter.fromDto(server); validateEmoteName(name); AEmote emoteToCreate = AEmote .builder() @@ -49,46 +57,42 @@ public class EmoteManagementServiceBean implements EmoteManagementService { .animated(animated) .emoteId(emoteId) .emoteKey(emoteKey) - .serverRef(server) + .serverRef(aServer) .build(); repository.save(emoteToCreate); return emoteToCreate; } - @Override public AEmote createDefaultEmote(String name, String emoteKey, Long serverId) { - AServer server = serverManagementService.loadOrCreate(serverId); + ServerDto server = ServerDto.builder().id(serverId).build(); return createDefaultEmote(name, emoteKey, server); } - @Override - public AEmote createDefaultEmote(String name, String emoteKey, AServer server) { + public AEmote createDefaultEmote(String name, String emoteKey, ServerDto server) { validateEmoteName(name); + AServer aServer = AServer.builder().id(server.getId()).build(); AEmote emoteToCreate = AEmote .builder() .custom(false) .name(name) .emoteKey(emoteKey) - .serverRef(server) + .serverRef(aServer) .build(); repository.save(emoteToCreate); return emoteToCreate; } - @Override public Optional loadEmoteByName(String name, Long serverId) { - AServer server = serverManagementService.loadOrCreate(serverId); + ServerDto server = ServerDto.builder().id(serverId).build(); return loadEmoteByName(name, server); } - @Override - public Optional loadEmoteByName(String name, AServer server) { - return Optional.ofNullable(repository.findAEmoteByNameAndServerRef(name, server)); + public Optional loadEmoteByName(String name, ServerDto server) { + return Optional.ofNullable(repository.findAEmoteByNameAndServerRef(name, serverConverter.fromDto(server))); } - @Override public AEmote setEmoteToCustomEmote(String name, String emoteKey, Long emoteId, Boolean animated, Long serverId) { - AServer server = serverManagementService.loadOrCreate(serverId); + ServerDto server = ServerDto.builder().id(serverId).build(); AEmote emote; Optional emoteOptional = loadEmoteByName(name, server); if(!emoteOptional.isPresent()) { @@ -104,11 +108,10 @@ public class EmoteManagementServiceBean implements EmoteManagementService { return emote; } - @Override public AEmote setEmoteToCustomEmote(String name, Emote emote, Long serverId) { - AServer server = serverManagementService.loadOrCreate(serverId); + ServerDto server = ServerDto.builder().id(serverId).build(); AEmote emoteBeingSet; - Optional emoteOptional = loadEmoteByName(name, serverId); + Optional emoteOptional = loadEmoteByName(name, server); if(!emoteOptional.isPresent()) { emoteBeingSet = this.createCustomEmote(name, emote.getName(), emote.getIdLong(), emote.isAnimated(), server); } else { @@ -122,9 +125,8 @@ public class EmoteManagementServiceBean implements EmoteManagementService { return emoteBeingSet; } - @Override - public AEmote setEmoteToDefaultEmote(String name, String emoteKey, Long serverId) { - AServer server = serverManagementService.loadOrCreate(serverId); + public EmoteDto setEmoteToDefaultEmote(String name, String emoteKey, Long serverId) { + ServerDto server = ServerDto.builder().id(serverId).build(); AEmote emoteBeingSet; Optional emoteOptional = loadEmoteByName(name, serverId); if(!emoteOptional.isPresent()) { @@ -135,21 +137,19 @@ public class EmoteManagementServiceBean implements EmoteManagementService { emoteBeingSet.setCustom(false); repository.save(emoteBeingSet); } - return emoteBeingSet; + return emoteConverter.fromEmote(emoteBeingSet); } - @Override public boolean emoteExists(String name, Long serverId) { - AServer server = serverManagementService.loadOrCreate(serverId); - return emoteExists(name, server); + ServerDto serverDto = ServerDto.builder().id(serverId).build(); + return emoteExists(name, serverDto); } - @Override - public boolean emoteExists(String name, AServer server) { - return repository.existsByNameAndServerRef(name, server); + public boolean emoteExists(String name, ServerDto server) { + AServer server1 = AServer.builder().id(server.getId()).build(); + return repository.existsByNameAndServerRef(name, server1); } - @Override public AEmote createCustomEmote(String name, String emoteKey, Long emoteId, Boolean animated) { AEmote emote = AEmote.builder() .animated(animated) @@ -162,7 +162,6 @@ public class EmoteManagementServiceBean implements EmoteManagementService { return emote; } - @Override public AEmote createDefaultEmote(String name, String emoteKey) { AEmote emote = AEmote.builder() .custom(false) diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/FeatureFlagManagementServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/FeatureFlagManagementServiceBean.java index fcf592f38..7ae10ceec 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/FeatureFlagManagementServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/FeatureFlagManagementServiceBean.java @@ -1,7 +1,8 @@ package dev.sheldan.abstracto.core.service.management; -import dev.sheldan.abstracto.core.models.database.AFeatureFlag; -import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.AFeatureFlag; +import dev.sheldan.abstracto.core.models.AServer; +import dev.sheldan.abstracto.core.models.dto.ServerDto; import dev.sheldan.abstracto.core.repository.FeatureFlagRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -9,38 +10,35 @@ import org.springframework.stereotype.Component; import java.util.Optional; @Component -public class FeatureFlagManagementServiceBean implements FeatureFlagManagementService { +public class FeatureFlagManagementServiceBean { @Autowired private FeatureFlagRepository repository; @Autowired - private ServerManagementService serverManagementService; + private ServerManagementServiceBean serverManagementService; - @Override public void createFeatureFlag(String key, Long serverId, Boolean newValue) { - AServer server = serverManagementService.loadOrCreate(serverId); + ServerDto server = ServerDto.builder().id(serverId).build(); createFeatureFlag(key, server, newValue); } - @Override - public void createFeatureFlag(String key, AServer server, Boolean newValue) { + public void createFeatureFlag(String key, ServerDto server, Boolean newValue) { + AServer aServer = AServer.builder().id(server.getId()).build(); AFeatureFlag featureFlag = AFeatureFlag .builder() .enabled(newValue) .key(key) - .server(server) + .server(aServer) .build(); repository.save(featureFlag); } - @Override public boolean getFeatureFlagValue(String key, Long serverId) { Optional featureFlag = getFeatureFlag(key, serverId); return featureFlag.isPresent() && featureFlag.get().isEnabled(); } - @Override public void updateOrCreateFeatureFlag(String key, Long serverId, Boolean newValue) { Optional existing = getFeatureFlag(key, serverId); if(existing.isPresent()) { @@ -52,9 +50,8 @@ public class FeatureFlagManagementServiceBean implements FeatureFlagManagementSe } } - @Override public Optional getFeatureFlag(String key, Long serverId) { - AServer server = serverManagementService.loadOrCreate(serverId); + AServer server = AServer.builder().id(serverId).build(); return Optional.ofNullable(repository.findByServerAndKey(server, key)); } } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/PostTargetManagementBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/PostTargetManagementBean.java index 06e3fe5ea..4567c3f98 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/PostTargetManagementBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/PostTargetManagementBean.java @@ -2,27 +2,28 @@ package dev.sheldan.abstracto.core.service.management; import dev.sheldan.abstracto.core.DynamicKeyLoader; import dev.sheldan.abstracto.core.exception.PostTargetException; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.models.database.PostTarget; +import dev.sheldan.abstracto.core.models.AChannel; +import dev.sheldan.abstracto.core.models.AServer; +import dev.sheldan.abstracto.core.models.PostTarget; +import dev.sheldan.abstracto.core.models.dto.ChannelDto; +import dev.sheldan.abstracto.core.models.dto.ServerDto; import dev.sheldan.abstracto.core.service.PostTargetService; import dev.sheldan.abstracto.core.repository.PostTargetRepository; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; @Service @Slf4j -public class PostTargetManagementBean implements PostTargetManagement { +public class PostTargetManagementBean { @Autowired private PostTargetRepository postTargetRepository; @Autowired - private ChannelManagementService channelManagementService; + private ChannelManagementServiceBean channelManagementService; @Autowired - private ServerManagementService serverManagementService; + private ServerManagementServiceBean serverManagementService; @Autowired private DynamicKeyLoader dynamicKeyLoader; @@ -30,18 +31,25 @@ public class PostTargetManagementBean implements PostTargetManagement { @Autowired private PostTargetService postTargetService; - @Override - public void createPostTarget(String name, AServer server, AChannel targetChannel) { + public void createPostTarget(String name, ServerDto server, ChannelDto targetChannel) { if(!postTargetService.validPostTarget(name)) { throw new PostTargetException("PostTarget not found. Possible values are: " + String.join(", ", dynamicKeyLoader.getPostTargetsAsList())); } log.info("Creating post target {} pointing towards {}", name, targetChannel); - postTargetRepository.save(PostTarget.builder().name(name).channelReference(targetChannel).serverReference(server).build()); + AChannel aChannel = AChannel.builder().id(targetChannel.getId()).build(); + AServer aServer = AServer.builder().id(server.getId()).build(); + PostTarget build = PostTarget + .builder() + .name(name) + .channelReference(aChannel) + .serverReference(aServer) + .build(); + postTargetRepository.save(build); } - @Override - public void createOrUpdate(String name, AServer server, AChannel targetChannel) { - PostTarget existing = postTargetRepository.findPostTargetByNameAndServerReference(name, server); + public void createOrUpdate(String name, ServerDto server, ChannelDto targetChannel) { + AServer aServer = AServer.builder().id(server.getId()).build(); + PostTarget existing = postTargetRepository.findPostTargetByNameAndServerReference(name, aServer); if(existing == null){ this.createPostTarget(name, server, targetChannel); } else { @@ -49,34 +57,30 @@ public class PostTargetManagementBean implements PostTargetManagement { } } - @Override - public void createOrUpdate(String name, AServer server, Long channelId) { - AChannel dbChannel = channelManagementService.loadChannel(channelId); - createOrUpdate(name, server, dbChannel); + public void createOrUpdate(String name, ServerDto server, Long channelId) { + ChannelDto channelDto = ChannelDto.builder().id(channelId).build(); + createOrUpdate(name, server, channelDto); } - @Override public void createOrUpdate(String name, Long serverId, Long channelId) { - AChannel dbChannel = channelManagementService.loadChannel(channelId); - AServer dbServer = serverManagementService.loadOrCreate(serverId); - createOrUpdate(name, dbServer, dbChannel); + ChannelDto channelDto = ChannelDto.builder().id(channelId).build(); + ServerDto serverDto = ServerDto.builder().id(serverId).build(); + createOrUpdate(name, serverDto, channelDto); } - @Override - @Cacheable("posttargets") - public PostTarget getPostTarget(String name, AServer server) { - return postTargetRepository.findPostTargetByNameAndServerReference(name, server); + public PostTarget getPostTarget(String name, ServerDto server) { + AServer aServer = AServer.builder().id(server.getId()).build(); + return postTargetRepository.findPostTargetByNameAndServerReference(name, aServer); } - @Override public PostTarget getPostTarget(String name, Long serverId) { - AServer server = serverManagementService.loadOrCreate(serverId); - return getPostTarget(name, server); + ServerDto serverDto = ServerDto.builder().id(serverId).build(); + return getPostTarget(name, serverDto); } - @Override - public void updatePostTarget(PostTarget target, AServer server, AChannel newTargetChannel) { - postTargetRepository.getOne(target.getId()).setChannelReference(newTargetChannel); + public void updatePostTarget(PostTarget target, ServerDto server, ChannelDto newTargetChannel) { + AChannel aChannel = AChannel.builder().id(newTargetChannel.getId()).build(); + postTargetRepository.getOne(target.getId()).setChannelReference(aChannel); } } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/RoleManagementServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/RoleManagementServiceBean.java index a6e56ca00..6548b278f 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/RoleManagementServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/RoleManagementServiceBean.java @@ -1,17 +1,16 @@ package dev.sheldan.abstracto.core.service.management; -import dev.sheldan.abstracto.core.models.database.ARole; +import dev.sheldan.abstracto.core.models.ARole; import dev.sheldan.abstracto.core.repository.RoleRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service -public class RoleManagementServiceBean implements RoleManagementService { +public class RoleManagementServiceBean { @Autowired private RoleRepository repository; - @Override public ARole createRole(Long id) { return repository.save(ARole.builder().id(id).build()); } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ServerManagementServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ServerManagementServiceBean.java index e1db6f6e0..3c8d0c5cd 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ServerManagementServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ServerManagementServiceBean.java @@ -1,91 +1,99 @@ package dev.sheldan.abstracto.core.service.management; -import dev.sheldan.abstracto.core.models.database.*; +import dev.sheldan.abstracto.core.models.*; +import dev.sheldan.abstracto.core.models.converter.PostTargetConverter; +import dev.sheldan.abstracto.core.models.converter.ServerConverter; +import dev.sheldan.abstracto.core.models.dto.*; import dev.sheldan.abstracto.core.repository.ServerRepository; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; @Service @Slf4j -public class ServerManagementServiceBean implements ServerManagementService { +public class ServerManagementServiceBean { @Autowired private ServerRepository repository; @Autowired - private PostTargetManagement postTargetManagement; + private PostTargetManagementBean postTargetManagement; @Autowired - private ChannelManagementService channelManagementService; + private ChannelManagementServiceBean channelManagementService; @Autowired - private UserManagementService userManagementService; + private UserManagementServiceBean userManagementService; - @Override - public AServer createServer(Long id) { - return repository.save(AServer.builder().id(id).build()); + @Autowired + private ServerConverter serverConverter; + + @Autowired + private PostTargetConverter postTargetConverter; + + public ServerDto createServer(Long id) { + AServer aServer = AServer.builder().id(id).build(); + return serverConverter.convertServer(repository.save(aServer)); } - @Override - public AServer loadOrCreate(Long id) { + public ServerDto loadOrCreate(Long id) { if(repository.existsById(id)) { - return repository.getOne(id); + return serverConverter.convertServer(repository.getOne(id)); } else { return createServer(id); } } - @Override - public void addChannelToServer(AServer server, AChannel channel) { + public void addChannelToServer(ServerDto server, ChannelDto channel) { server.getChannels().add(channel); channel.setServer(server); - repository.save(server); + repository.save(serverConverter.fromDto(server)); } - @Override - public AUserInAServer addUserToServer(AServer server, AUser user) { + public UserInServerDto addUserToServer(ServerDto server, UserDto user) { return this.addUserToServer(server.getId(), user.getId()); } - @Override - public AUserInAServer addUserToServer(Long serverId, Long userId) { + public UserInServerDto addUserToServer(Long serverId, Long userId) { log.info("Adding user {} to server {}", userId, serverId); - AServer server = repository.getOne(serverId); - AUser user = userManagementService.loadUser(userId); - AUserInAServer aUserInAServer = AUserInAServer.builder().serverReference(server).userReference(user).build(); + ServerDto server = ServerDto.builder().id(serverId).build(); + UserDto user = userManagementService.loadUser(userId); + UserInServerDto aUserInAServer = UserInServerDto.builder().server(server).user(user).build(); server.getUsers().add(aUserInAServer); + repository.save(serverConverter.fromDto(server)); return aUserInAServer; } - @Override - public AChannel getPostTarget(Long serverId, String name) { - AServer server = this.loadOrCreate(serverId); - return getPostTarget(server, name); + public ChannelDto getPostTarget(Long serverId, String name) { + ServerDto serverDto = ServerDto.builder().id(serverId).build(); + return getPostTarget(serverDto, name); } - @Override - public AChannel getPostTarget(Long serverId, PostTarget target) { - AServer server = this.loadOrCreate(serverId); - return getPostTarget(server, target); + public ChannelDto getPostTarget(Long serverId, PostTargetDto target) { + ServerDto serverDto = ServerDto.builder().id(serverId).build(); + return getPostTarget(serverDto, target); } - @Override - public AChannel getPostTarget(AServer server, PostTarget target) { + public ChannelDto getPostTarget(ServerDto server, PostTargetDto target) { return target.getChannelReference(); } - @Override - public AChannel getPostTarget(AServer server, String name) { + public ChannelDto getPostTarget(ServerDto server, String name) { PostTarget target = postTargetManagement.getPostTarget(name, server); - return getPostTarget(server, target); + + return getPostTarget(server, postTargetConverter.fromPostTarget(target)); } - @Override - public List getAllServers() { - return repository.findAll(); + public List getAllServers() { + List servers = new ArrayList<>(); + List all = repository.findAll(); + all.forEach(aServer -> { + servers.add(serverConverter.convertServer(aServer)); + }); + return servers; } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/UserManagementServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/UserManagementServiceBean.java index 34f06d2a1..742febb06 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/UserManagementServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/UserManagementServiceBean.java @@ -1,8 +1,11 @@ package dev.sheldan.abstracto.core.service.management; -import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.models.database.AUser; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.models.*; +import dev.sheldan.abstracto.core.models.converter.UserConverter; +import dev.sheldan.abstracto.core.models.converter.UserInServerConverter; +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 dev.sheldan.abstracto.core.repository.UserInServerRepository; import dev.sheldan.abstracto.core.repository.UserRepository; import lombok.extern.slf4j.Slf4j; @@ -12,7 +15,7 @@ import org.springframework.stereotype.Component; @Component @Slf4j -public class UserManagementServiceBean implements UserManagementService { +public class UserManagementServiceBean { @Autowired private UserInServerRepository userInServerRepository; @@ -21,57 +24,58 @@ public class UserManagementServiceBean implements UserManagementService { private UserRepository userRepository; @Autowired - private ServerManagementService serverManagementService; + private ServerManagementServiceBean serverManagementService; + + @Autowired + private UserConverter userConverter; + + @Autowired + private UserInServerConverter userInServerConverter; - @Override - public AUserInAServer loadUser(Long serverId, Long userId) { - AUser user = this.loadUser(userId); - AServer server = serverManagementService.loadOrCreate(serverId); - return loadUser(server, user); + public UserInServerDto loadUser(Long serverId, Long userId) { + UserDto user = UserDto.builder().id(userId).build(); + ServerDto serverDto = ServerDto.builder().id(userId).build(); + return loadUser(serverDto, user); } - @Override - public AUserInAServer loadUser(AServer server, AUser user) { - if(userInServerRepository.existsByServerReferenceAndUserReference(server, user)) { - return userInServerRepository.findByServerReferenceAndUserReference(server, user); + public UserInServerDto loadUser(ServerDto server, UserDto user) { + AServer server1 = AServer.builder().id(server.getId()).build(); + AUser user1 = AUser.builder().id(user.getId()).build(); + if(userInServerRepository.existsByServerReferenceAndUserReference(server1, user1)) { + AUserInAServer byServerReferenceAndUserReference = userInServerRepository.findByServerReferenceAndUserReference(server1, user1); + return userInServerConverter.fromAUserInAServer(byServerReferenceAndUserReference); } else { return this.createUserInServer(server.getId(), user.getId()); } } - @Override - public AUserInAServer loadUser(Member member) { + public UserInServerDto loadUser(Member member) { return this.loadUser(member.getGuild().getIdLong(), member.getIdLong()); } - @Override - public AUserInAServer createUserInServer(Member member) { + public UserInServerDto createUserInServer(Member member) { return this.createUserInServer(member.getGuild().getIdLong(), member.getIdLong()); } - @Override - public AUserInAServer createUserInServer(Long guildId, Long userId) { + public UserInServerDto createUserInServer(Long guildId, Long userId) { return serverManagementService.addUserToServer(guildId, userId); } - @Override - public AUser createUser(Member member) { + public UserDto createUser(Member member) { return createUser(member.getIdLong()); } - @Override - public AUser createUser(Long userId) { + public UserDto createUser(Long userId) { log.info("Creating user {}", userId); AUser aUser = AUser.builder().id(userId).build(); userRepository.save(aUser); - return aUser; + return userConverter.fromAUser(aUser); } - @Override - public AUser loadUser(Long userId) { + public UserDto loadUser(Long userId) { if(userRepository.existsById(userId)) { - return userRepository.getOne(userId); + return userConverter.fromAUser(userRepository.getOne(userId)); } else { return this.createUser(userId); } diff --git a/abstracto-application/core/core-interface/pom.xml b/abstracto-application/core/core-interface/pom.xml index 8676a90d1..ce399bcb5 100644 --- a/abstracto-application/core/core-interface/pom.xml +++ b/abstracto-application/core/core-interface/pom.xml @@ -14,6 +14,11 @@ + + dev.sheldan.abstracto.core + core-db-models + ${project.version} + org.springframework.boot spring-boot-starter @@ -22,10 +27,6 @@ net.dv8tion JDA - - org.springframework.boot - spring-boot-starter-data-jpa - dev.sheldan.abstracto.templating templating-interface diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/condition/CommandDisabledCondition.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/condition/CommandDisabledCondition.java index a6da8553d..a275ec005 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/condition/CommandDisabledCondition.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/condition/CommandDisabledCondition.java @@ -2,9 +2,9 @@ package dev.sheldan.abstracto.core.command.condition; import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.execution.CommandContext; -import dev.sheldan.abstracto.core.command.models.database.ACommand; import dev.sheldan.abstracto.core.command.service.ChannelGroupCommandService; -import dev.sheldan.abstracto.core.command.service.management.CommandManagementService; +import dev.sheldan.abstracto.core.command.service.CommandService; +import dev.sheldan.abstracto.core.models.dto.CommandDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -15,12 +15,12 @@ public class CommandDisabledCondition implements CommandCondition { private ChannelGroupCommandService channelGroupCommandService; @Autowired - private CommandManagementService commandManagementService; + private CommandService commandManagementService; @Override public ConditionResult shouldExecute(CommandContext context, Command command) { - ACommand acommand = commandManagementService.findCommandByName(command.getConfiguration().getName()); - Boolean booleanResult = channelGroupCommandService.isCommandEnabled(acommand, context.getUserInitiatedContext().getChannel()); + CommandDto commandDto = commandManagementService.findCommandByName(command.getConfiguration().getName()); + Boolean booleanResult = channelGroupCommandService.isCommandEnabled(commandDto, context.getUserInitiatedContext().getChannel()); return ConditionResult.builder().result(booleanResult).reason("Command is disabled.").build(); } } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/condition/FeatureEnabledCondition.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/condition/FeatureEnabledCondition.java index b3fe20263..1c2043421 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/condition/FeatureEnabledCondition.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/condition/FeatureEnabledCondition.java @@ -2,7 +2,7 @@ package dev.sheldan.abstracto.core.command.condition; import dev.sheldan.abstracto.core.command.Command; import dev.sheldan.abstracto.core.command.execution.CommandContext; -import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementService; +import dev.sheldan.abstracto.core.service.FeatureFlagService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -10,7 +10,7 @@ import org.springframework.stereotype.Component; public class FeatureEnabledCondition implements CommandCondition { @Autowired - private FeatureFlagManagementService featureFlagManagementService; + private FeatureFlagService featureFlagManagementService; @Override public ConditionResult shouldExecute(CommandContext context, Command command) { @@ -18,7 +18,7 @@ public class FeatureEnabledCondition implements CommandCondition { boolean featureFlagValue = false; String reason = ""; if(featureName != null) { - featureFlagValue = featureFlagManagementService.getFeatureFlagValue(featureName, context.getGuild().getIdLong()); + featureFlagValue = featureFlagManagementService.isFeatureEnabled(featureName, context.getGuild().getIdLong()); reason = "Feature has been disabled."; } return ConditionResult.builder().reason(reason).result(featureFlagValue).build(); diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/AbstracatoModuleInterface.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/AbstractoModuleInterface.java similarity index 84% rename from abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/AbstracatoModuleInterface.java rename to abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/AbstractoModuleInterface.java index 6b8a5cc35..42f74247e 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/AbstracatoModuleInterface.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/AbstractoModuleInterface.java @@ -3,7 +3,7 @@ package dev.sheldan.abstracto.core.command.config; import org.springframework.stereotype.Service; @Service -public class AbstracatoModuleInterface implements ModuleInterface { +public class AbstractoModuleInterface implements ModuleInterface { @Override public ModuleInfo getInfo() { return ModuleInfo.builder().name("default").description("Default module provided by abstracto").build(); diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/CommandConfiguration.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/CommandConfiguration.java index e7e0cae3d..f43624d94 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/CommandConfiguration.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/CommandConfiguration.java @@ -5,7 +5,8 @@ import lombok.Getter; import java.util.List; -@Getter @Builder +@Getter +@Builder public class CommandConfiguration { private String name; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/CommandHierarchy.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/CommandHierarchy.java index d533e5afe..affd640ca 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/CommandHierarchy.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/CommandHierarchy.java @@ -6,7 +6,8 @@ import lombok.Getter; import java.util.List; -@Getter @Builder +@Getter +@Builder public class CommandHierarchy { private List rootModules; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/HelpInfo.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/HelpInfo.java index e5f44123a..10b697ed2 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/HelpInfo.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/HelpInfo.java @@ -3,7 +3,8 @@ package dev.sheldan.abstracto.core.command.config; import lombok.Builder; import lombok.Getter; -@Getter @Builder +@Getter +@Builder public class HelpInfo { private String usage; private String longHelp; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/ModuleInfo.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/ModuleInfo.java index a2b5e2652..7bfd9fec7 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/ModuleInfo.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/ModuleInfo.java @@ -3,7 +3,8 @@ package dev.sheldan.abstracto.core.command.config; import lombok.Builder; import lombok.Getter; -@Getter @Builder +@Getter +@Builder public class ModuleInfo { private String name; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/ModuleInterface.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/ModuleInterface.java index 61cf3c97d..aa5c02e84 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/ModuleInterface.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/ModuleInterface.java @@ -1,8 +1,6 @@ package dev.sheldan.abstracto.core.command.config; -import dev.sheldan.abstracto.core.command.config.ModuleInfo; - public interface ModuleInterface { ModuleInfo getInfo(); String getParentModule(); diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/Parameter.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/Parameter.java index 6b8b0736b..fc41b11f8 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/Parameter.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/Parameter.java @@ -4,7 +4,9 @@ import lombok.Builder; import lombok.Getter; import lombok.Setter; -@Getter @Setter @Builder +@Getter +@Setter +@Builder public class Parameter { private String name; private Class type; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/Parameters.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/Parameters.java index 998134a0a..eddd4bafa 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/Parameters.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/config/Parameters.java @@ -6,7 +6,7 @@ import lombok.Getter; import java.util.List; @Builder +@Getter public class Parameters { - @Getter private List parameters; } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/execution/CommandResult.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/execution/CommandResult.java index 5b1bdb24e..882d520a1 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/execution/CommandResult.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/execution/CommandResult.java @@ -5,7 +5,9 @@ import lombok.Builder; import lombok.Getter; import lombok.Setter; -@Getter @Setter @Builder +@Getter +@Setter +@Builder public class CommandResult { private ResultState result; private String message; diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/ChannelGroupCommandService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/ChannelGroupCommandService.java index ce6b254d1..ffe86d524 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/ChannelGroupCommandService.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/ChannelGroupCommandService.java @@ -1,8 +1,8 @@ package dev.sheldan.abstracto.core.command.service; -import dev.sheldan.abstracto.core.command.models.database.ACommand; -import dev.sheldan.abstracto.core.models.database.AChannel; +import dev.sheldan.abstracto.core.models.dto.ChannelDto; +import dev.sheldan.abstracto.core.models.dto.CommandDto; public interface ChannelGroupCommandService { - Boolean isCommandEnabled(ACommand command, AChannel channel); + Boolean isCommandEnabled(CommandDto command, ChannelDto channel); } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/CommandService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/CommandService.java index ab6c4fa56..b1bb1146c 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/CommandService.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/CommandService.java @@ -1,8 +1,9 @@ package dev.sheldan.abstracto.core.command.service; -import dev.sheldan.abstracto.core.command.models.database.ACommand; +import dev.sheldan.abstracto.core.models.dto.CommandDto; public interface CommandService { - ACommand createCommand(String name, String moduleName); + CommandDto createCommand(String name, String moduleName); Boolean doesCommandExist(String name); + CommandDto findCommandByName(String name); } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/UserService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/UserService.java new file mode 100644 index 000000000..9f091f90d --- /dev/null +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/UserService.java @@ -0,0 +1,9 @@ +package dev.sheldan.abstracto.core.command.service; + +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; +import net.dv8tion.jda.api.entities.Member; + +public interface UserService { + UserInServerDto loadUser(Member member); + UserInServerDto loadUser(Long serverId, Long userId); +} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/management/ChannelGroupCommandManagementService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/management/ChannelGroupCommandManagementService.java deleted file mode 100644 index 473488bd4..000000000 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/management/ChannelGroupCommandManagementService.java +++ /dev/null @@ -1,14 +0,0 @@ -package dev.sheldan.abstracto.core.command.service.management; - -import dev.sheldan.abstracto.core.command.models.database.ACommand; -import dev.sheldan.abstracto.core.models.database.AChannelGroup; -import dev.sheldan.abstracto.core.models.database.AChannelGroupCommand; - -import java.util.List; - -public interface ChannelGroupCommandManagementService { - void setCommandInGroupTo(ACommand command, AChannelGroup group, Boolean enabled); - AChannelGroupCommand createCommandInGroupTo(ACommand command, AChannelGroup group); - AChannelGroupCommand getChannelGroupCommand(ACommand command, AChannelGroup group); - List getAllGroupCommandsForCommand(ACommand command); -} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/management/CommandManagementService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/management/CommandManagementService.java deleted file mode 100644 index 15e0df8da..000000000 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/management/CommandManagementService.java +++ /dev/null @@ -1,11 +0,0 @@ -package dev.sheldan.abstracto.core.command.service.management; - -import dev.sheldan.abstracto.core.command.models.database.ACommand; -import dev.sheldan.abstracto.core.command.models.database.AModule; - -public interface CommandManagementService { - ACommand createCommand(String name, String moduleName); - ACommand createCommand(String name, AModule moduleName); - ACommand findCommandByName(String name); - Boolean doesCommandExist(String name); -} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/management/ModuleManagementService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/management/ModuleManagementService.java deleted file mode 100644 index 1fef8f7d1..000000000 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/command/service/management/ModuleManagementService.java +++ /dev/null @@ -1,10 +0,0 @@ -package dev.sheldan.abstracto.core.command.service.management; - -import dev.sheldan.abstracto.core.command.models.database.AModule; - -public interface ModuleManagementService { - AModule createModule(String name); - AModule getOrCreate(String name); - AModule findModuleByName(String name); - Boolean doesModuleExist(String name); -} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/converter/ChannelModelConverter.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/converter/ChannelModelConverter.java new file mode 100644 index 000000000..59e5a097f --- /dev/null +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/converter/ChannelModelConverter.java @@ -0,0 +1,15 @@ +package dev.sheldan.abstracto.core.converter; + +import dev.sheldan.abstracto.core.models.dto.ChannelDto; +import dev.sheldan.abstracto.core.models.template.ChannelModel; +import org.springframework.stereotype.Component; + +@Component +public class ChannelModelConverter { + public ChannelModel fromChanel(ChannelDto channelDto) { + return ChannelModel + .builder() + .id(channelDto.getId()) + .build(); + } +} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/converter/ServerModelConverter.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/converter/ServerModelConverter.java new file mode 100644 index 000000000..c7eed8005 --- /dev/null +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/converter/ServerModelConverter.java @@ -0,0 +1,12 @@ +package dev.sheldan.abstracto.core.converter; + +import dev.sheldan.abstracto.core.models.dto.ServerDto; +import dev.sheldan.abstracto.core.models.template.ServerModel; +import org.springframework.stereotype.Component; + +@Component +public class ServerModelConverter { + public ServerModel fromServer(ServerDto server) { + return ServerModel.builder().id(server.getId()).name(server.getName()).build(); + } +} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/converter/UserInServerModelConverter.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/converter/UserInServerModelConverter.java new file mode 100644 index 000000000..5111274b6 --- /dev/null +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/converter/UserInServerModelConverter.java @@ -0,0 +1,37 @@ +package dev.sheldan.abstracto.core.converter; + +import dev.sheldan.abstracto.core.command.service.UserService; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; +import dev.sheldan.abstracto.core.models.template.UserInServerModel; +import net.dv8tion.jda.api.entities.Member; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class UserInServerModelConverter { + + @Autowired + private ServerModelConverter serverModelConverter; + + @Autowired + private UserModelConverter userModelConverter; + + @Autowired + private UserService userService; + + + public UserInServerModel fromUser(UserInServerDto userInServerDto) { + return UserInServerModel + .builder() + .userInServerId(userInServerDto.getUserInServerId()) + .server(serverModelConverter.fromServer(userInServerDto.getServer())) + .user(userModelConverter.fromUser(userInServerDto.getUser())) + .build(); + } + + public UserInServerModel fromMember(Member member) { + return fromUser(userService.loadUser(member)); + } + + +} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/converter/UserModelConverter.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/converter/UserModelConverter.java new file mode 100644 index 000000000..264eec1c5 --- /dev/null +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/converter/UserModelConverter.java @@ -0,0 +1,12 @@ +package dev.sheldan.abstracto.core.converter; + +import dev.sheldan.abstracto.core.models.dto.UserDto; +import dev.sheldan.abstracto.core.models.template.UserModel; +import org.springframework.stereotype.Component; + +@Component +public class UserModelConverter { + public UserModel fromUser(UserDto user) { + return UserModel.builder().id(user.getId()).build(); + } +} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/exception/FeatureDisabledException.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/exception/FeatureDisabledException.java deleted file mode 100644 index 60235ea3d..000000000 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/exception/FeatureDisabledException.java +++ /dev/null @@ -1,7 +0,0 @@ -package dev.sheldan.abstracto.core.exception; - -public class FeatureDisabledException extends AbstractoRunTimeException { - public FeatureDisabledException(String message) { - super(message); - } -} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactedAddedListener.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactedAddedListener.java index 763e3f8f2..06cb4473c 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactedAddedListener.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactedAddedListener.java @@ -1,9 +1,9 @@ package dev.sheldan.abstracto.core.listener; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; import dev.sheldan.abstracto.core.models.cache.CachedMessage; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; import net.dv8tion.jda.api.entities.MessageReaction; public interface ReactedAddedListener extends FeatureAware { - void executeReactionAdded(CachedMessage message, MessageReaction reaction, AUserInAServer userAdding); + void executeReactionAdded(CachedMessage message, MessageReaction reaction, UserInServerDto userAdding); } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactedRemovedListener.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactedRemovedListener.java index 73c13d0b3..8f1adc44a 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactedRemovedListener.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ReactedRemovedListener.java @@ -1,9 +1,9 @@ package dev.sheldan.abstracto.core.listener; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; import dev.sheldan.abstracto.core.models.cache.CachedMessage; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; import net.dv8tion.jda.api.entities.MessageReaction; public interface ReactedRemovedListener extends FeatureAware { - void executeReactionRemoved(CachedMessage message, MessageReaction reaction, AUserInAServer userRemoving); + void executeReactionRemoved(CachedMessage message, MessageReaction reaction, UserInServerDto userRemoving); } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ServerConfigListener.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ServerConfigListener.java index fbca2165c..cebf504e8 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ServerConfigListener.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/listener/ServerConfigListener.java @@ -1,7 +1,7 @@ package dev.sheldan.abstracto.core.listener; -import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.dto.ServerDto; public interface ServerConfigListener { - void updateServerConfig(AServer server); + void updateServerConfig(ServerDto server); } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AServerAChannelAUser.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AServerAChannelAUser.java index cf2f0f9d2..b02d2ebff 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AServerAChannelAUser.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AServerAChannelAUser.java @@ -1,9 +1,9 @@ package dev.sheldan.abstracto.core.models; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.models.database.AUser; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.models.dto.ChannelDto; +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 lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -12,8 +12,8 @@ import lombok.Setter; @Setter @Builder public class AServerAChannelAUser { - private AServer guild; - private AChannel channel; - private AUserInAServer aUserInAServer; - private AUser user; + private ServerDto guild; + private ChannelDto channel; + private UserInServerDto aUserInAServer; + private UserDto user; } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AServerAChannelMessage.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AServerAChannelMessage.java index 24204b6e7..d8f2ff1ef 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AServerAChannelMessage.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/AServerAChannelMessage.java @@ -1,7 +1,7 @@ package dev.sheldan.abstracto.core.models; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.dto.ChannelDto; +import dev.sheldan.abstracto.core.models.dto.ServerDto; import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -10,7 +10,7 @@ import lombok.Setter; @Setter @Builder public class AServerAChannelMessage { - private AServer server; - private AChannel channel; + private ServerDto server; + private ChannelDto channel; private Long messageId; } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/cache/CachedReaction.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/cache/CachedReaction.java index 5642c6391..9ed2ead3e 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/cache/CachedReaction.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/cache/CachedReaction.java @@ -1,7 +1,7 @@ package dev.sheldan.abstracto.core.models.cache; -import dev.sheldan.abstracto.core.models.database.AEmote; -import dev.sheldan.abstracto.core.models.database.AUser; +import dev.sheldan.abstracto.core.models.dto.EmoteDto; +import dev.sheldan.abstracto.core.models.dto.UserDto; import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -12,6 +12,6 @@ import java.util.List; @Setter @Builder public class CachedReaction { - private AEmote emote; - private List users; + private EmoteDto emote; + private List users; } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/context/ServerContext.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/context/ServerContext.java index ecc9eb147..b67f4852a 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/context/ServerContext.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/context/ServerContext.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.core.models.context; -import dev.sheldan.abstracto.core.models.database.AServer; +import dev.sheldan.abstracto.core.models.dto.ServerDto; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @@ -15,6 +15,6 @@ import net.dv8tion.jda.api.entities.Guild; @Setter public class ServerContext { private Guild guild; - private AServer server; + private ServerDto server; } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/context/UserInitiatedServerContext.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/context/UserInitiatedServerContext.java index 925509a85..2fb3bb172 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/context/UserInitiatedServerContext.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/context/UserInitiatedServerContext.java @@ -1,8 +1,8 @@ package dev.sheldan.abstracto.core.models.context; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AUser; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; +import dev.sheldan.abstracto.core.models.dto.ChannelDto; +import dev.sheldan.abstracto.core.models.dto.UserDto; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -14,10 +14,10 @@ import net.dv8tion.jda.api.entities.MessageChannel; @Setter @SuperBuilder public class UserInitiatedServerContext extends ServerContext { - private AChannel channel; + private ChannelDto channel; private MessageChannel messageChannel; private Member member; - private AUser user; - private AUserInAServer aUserInAServer; + private UserDto user; + private UserInServerDto aUserInAServer; } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/ChannelModel.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/ChannelModel.java new file mode 100644 index 000000000..a2e3bb615 --- /dev/null +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/ChannelModel.java @@ -0,0 +1,12 @@ +package dev.sheldan.abstracto.core.models.template; + +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Builder +public class ChannelModel { + private Long id; +} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/ServerContextModel.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/ServerContextModel.java new file mode 100644 index 000000000..ac74c1e95 --- /dev/null +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/ServerContextModel.java @@ -0,0 +1,19 @@ +package dev.sheldan.abstracto.core.models.template; + +import dev.sheldan.abstracto.core.models.dto.ServerDto; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.experimental.SuperBuilder; +import net.dv8tion.jda.api.entities.Guild; + +@Getter +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor +@Setter +public class ServerContextModel { + private ServerModel server; + +} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/ServerModel.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/ServerModel.java new file mode 100644 index 000000000..69eb5aae7 --- /dev/null +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/ServerModel.java @@ -0,0 +1,13 @@ +package dev.sheldan.abstracto.core.models.template; + +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Builder +public class ServerModel { + private Long id; + private String name; +} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/UserInServerModel.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/UserInServerModel.java new file mode 100644 index 000000000..45dc45992 --- /dev/null +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/UserInServerModel.java @@ -0,0 +1,15 @@ +package dev.sheldan.abstracto.core.models.template; + +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + + +@Getter +@Setter +@Builder +public class UserInServerModel { + private Long userInServerId; + private UserModel user; + private ServerModel server; +} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/UserInitiatedServerContextModel.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/UserInitiatedServerContextModel.java new file mode 100644 index 000000000..04d093b4d --- /dev/null +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/UserInitiatedServerContextModel.java @@ -0,0 +1,16 @@ +package dev.sheldan.abstracto.core.models.template; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.experimental.SuperBuilder; + +@Getter @NoArgsConstructor +@Setter +@SuperBuilder +public class UserInitiatedServerContextModel extends ServerContextModel { + private ChannelModel channel; + private UserModel userModel; + private UserInServerModel userInServer; + +} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/UserModel.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/UserModel.java new file mode 100644 index 000000000..5b10ae89d --- /dev/null +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/UserModel.java @@ -0,0 +1,12 @@ +package dev.sheldan.abstracto.core.models.template; + +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Builder +public class UserModel { + private Long id; +} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/commands/ChannelGroupChannelModel.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/commands/ChannelGroupChannelModel.java index 6b2da31b6..7f62bd4ed 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/commands/ChannelGroupChannelModel.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/commands/ChannelGroupChannelModel.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.core.models.template.commands; -import dev.sheldan.abstracto.core.models.database.AChannel; +import dev.sheldan.abstracto.core.models.dto.ChannelDto; import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -10,6 +10,6 @@ import net.dv8tion.jda.api.entities.TextChannel; @Setter @Builder public class ChannelGroupChannelModel { - private AChannel channel; + private ChannelDto channel; private TextChannel discordChannel; } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/listener/MessageEmbeddedModel.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/listener/MessageEmbeddedModel.java index 285b2c769..6deb03cb0 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/listener/MessageEmbeddedModel.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/models/template/listener/MessageEmbeddedModel.java @@ -2,6 +2,7 @@ package dev.sheldan.abstracto.core.models.template.listener; import dev.sheldan.abstracto.core.models.cache.CachedMessage; import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext; +import dev.sheldan.abstracto.core.models.template.*; import lombok.Getter; import lombok.Setter; import lombok.experimental.SuperBuilder; @@ -11,9 +12,10 @@ import net.dv8tion.jda.api.entities.TextChannel; @Getter @Setter @SuperBuilder -public class MessageEmbeddedModel extends UserInitiatedServerContext { +public class MessageEmbeddedModel extends UserInitiatedServerContextModel { private CachedMessage embeddedMessage; - private Member author; - private TextChannel sourceChannel; - private Member embeddingUser; + private ChannelModel sourceChannel; + private ServerModel sourceServer; + private UserModel embeddedUser; + private UserInServerModel embeddedUserInServer; } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/Bot.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/Bot.java index 5d1f8c8e3..d616622b6 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/Bot.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/Bot.java @@ -1,7 +1,7 @@ package dev.sheldan.abstracto.core.service; +import dev.sheldan.abstracto.core.models.dto.EmoteDto; import dev.sheldan.abstracto.core.models.GuildChannelMember; -import dev.sheldan.abstracto.core.models.database.AEmote; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.entities.Emote; import net.dv8tion.jda.api.entities.Guild; @@ -20,7 +20,7 @@ public interface Bot { GuildChannelMember getServerChannelUser(Long serverId, Long channelId, Long userId); Member getMemberInServer(Long serverId, Long memberId); CompletableFuture deleteMessage(Long serverId, Long channelId, Long messageId); - Optional getEmote(Long serverId, AEmote emote); + Optional getEmote(Long serverId, EmoteDto emote); Optional getTextChannelFromServer(Guild serverId, Long textChannelId); Optional getTextChannelFromServer(Long serverId, Long textChannelId); Optional getGuildById(Long serverId); diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/ChannelGroupService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/ChannelGroupService.java index ffb38f684..5e5d9b84e 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/ChannelGroupService.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/ChannelGroupService.java @@ -1,19 +1,23 @@ package dev.sheldan.abstracto.core.service; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AChannelGroup; +import dev.sheldan.abstracto.core.models.dto.ChannelDto; +import dev.sheldan.abstracto.core.models.dto.ChannelGroupDto; +import dev.sheldan.abstracto.core.models.dto.ServerDto; import net.dv8tion.jda.api.entities.TextChannel; +import java.util.List; + public interface ChannelGroupService { - AChannelGroup createChannelGroup(String name, Long serverId); + ChannelGroupDto createChannelGroup(String name, Long serverId); void deleteChannelGroup(String name, Long serverId); void addChannelToChannelGroup(String channelGroupName, TextChannel textChannel); void addChannelToChannelGroup(String channelGroupName, Long channelId); - void addChannelToChannelGroup(String channelGroupName, AChannel channel); + void addChannelToChannelGroup(String channelGroupName, ChannelDto channel); void removeChannelFromChannelGroup(String channelGroupName, TextChannel textChannel); void removeChannelFromChannelGroup(String channelGroupName, Long channelId); - void removeChannelFromChannelGroup(String channelGroupName, AChannel channel); + void removeChannelFromChannelGroup(String channelGroupName, ChannelDto channel); void disableCommandInChannelGroup(String commandName, String channelGroupName, Long serverId); void enableCommandInChannelGroup(String commandName, String channelGroupName, Long serverId); boolean doesGroupExist(String groupName, Long serverId); + List findAllInServer(ServerDto server); } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/ChannelService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/ChannelService.java index 0b5c07f31..588b8ed8d 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/ChannelService.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/ChannelService.java @@ -1,7 +1,7 @@ package dev.sheldan.abstracto.core.service; +import dev.sheldan.abstracto.core.models.dto.ChannelDto; import dev.sheldan.abstracto.templating.model.MessageToSend; -import dev.sheldan.abstracto.core.models.database.AChannel; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.TextChannel; @@ -10,8 +10,9 @@ import java.util.Optional; import java.util.concurrent.CompletableFuture; public interface ChannelService { - void sendTextInAChannel(String text, AChannel channel); - List> sendMessageToEndInAChannel(MessageToSend messageToSend, AChannel channel); + void sendTextInAChannel(String text, ChannelDto channel); + List> sendMessageToEndInAChannel(MessageToSend messageToSend, ChannelDto channel); List> sendMessageToEndInTextChannel(MessageToSend messageToSend, TextChannel textChannel); Optional getTextChannelInGuild(Long serverId, Long channelId); + ChannelDto loadChannel(Long channelId); } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/ConfigService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/ConfigService.java index 409b676ef..466ec89cd 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/ConfigService.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/ConfigService.java @@ -3,5 +3,6 @@ package dev.sheldan.abstracto.core.service; public interface ConfigService { Double getDoubleValue(String name, Long serverId); Double getDoubleValue(String name, Long serverId, Double defaultValue); + void createValueIfNotExists(String name, Long serverId, Double value); } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/EmoteService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/EmoteService.java index ac6aa35b0..d5e0001c6 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/EmoteService.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/EmoteService.java @@ -1,13 +1,16 @@ package dev.sheldan.abstracto.core.service; -import dev.sheldan.abstracto.core.models.database.AEmote; +import dev.sheldan.abstracto.core.models.dto.EmoteDto; import net.dv8tion.jda.api.entities.Emote; import net.dv8tion.jda.api.entities.MessageReaction; +import java.util.Optional; + public interface EmoteService { boolean isEmoteUsableByBot(Emote emote); - AEmote buildAEmoteFromReaction(MessageReaction.ReactionEmote reaction); - String getEmoteAsMention(AEmote emote, Long serverId, String defaultText) ; - String getEmoteAsMention(AEmote emote, Long serverId) ; + EmoteDto buildAEmoteFromReaction(MessageReaction.ReactionEmote reaction); + Optional getEmoteByName(String name, Long serverId); + String getEmoteAsMention(EmoteDto emote, Long serverId, String defaultText) ; + String getEmoteAsMention(EmoteDto emote, Long serverId) ; void throwIfEmoteDoesNotExist(String emoteKey, Long serverId) ; } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/PostTargetService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/PostTargetService.java index bfae3e3eb..17dd07977 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/PostTargetService.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/PostTargetService.java @@ -1,6 +1,6 @@ package dev.sheldan.abstracto.core.service; -import dev.sheldan.abstracto.core.models.database.PostTarget; +import dev.sheldan.abstracto.core.models.dto.PostTargetDto; import dev.sheldan.abstracto.templating.model.MessageToSend; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.MessageEmbed; @@ -9,17 +9,18 @@ import java.util.List; import java.util.concurrent.CompletableFuture; public interface PostTargetService { - CompletableFuture sendTextInPostTarget(String text, PostTarget target); - CompletableFuture sendEmbedInPostTarget(MessageEmbed embed, PostTarget target); + CompletableFuture sendTextInPostTarget(String text, PostTargetDto target); + CompletableFuture sendEmbedInPostTarget(MessageEmbed embed, PostTargetDto target); CompletableFuture sendTextInPostTarget(String text, String postTargetName, Long serverId); CompletableFuture sendEmbedInPostTarget(MessageEmbed embed, String postTargetName, Long serverId); List> sendEmbedInPostTarget(MessageToSend message, String postTargetName, Long serverId); - List> sendEmbedInPostTarget(MessageToSend message, PostTarget target); - List> editEmbedInPostTarget(Long messageId, MessageToSend message, PostTarget target); + List> sendEmbedInPostTarget(MessageToSend message, PostTargetDto target); + List> editEmbedInPostTarget(Long messageId, MessageToSend message, PostTargetDto target); List> editEmbedInPostTarget(Long messageId, MessageToSend message, String postTargetName, Long serverId); - void editOrCreatedInPostTarget(Long messageId, MessageToSend messageToSend, PostTarget target, List> future); + void editOrCreatedInPostTarget(Long messageId, MessageToSend messageToSend, PostTargetDto target, List> future); void editOrCreatedInPostTarget(Long messageId, MessageToSend messageToSend, String postTarget, Long serverId, List> future); void throwIfPostTargetIsNotDefined(String name, Long serverId); boolean validPostTarget(String name); List getAvailablePostTargets(); + PostTargetDto getPostTarget(String name, Long serverId); } diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/ChannelGroupManagementService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/ChannelGroupManagementService.java deleted file mode 100644 index 45cf9076a..000000000 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/ChannelGroupManagementService.java +++ /dev/null @@ -1,17 +0,0 @@ -package dev.sheldan.abstracto.core.service.management; - -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AChannelGroup; -import dev.sheldan.abstracto.core.models.database.AServer; - -import java.util.List; - -public interface ChannelGroupManagementService { - AChannelGroup createChannelGroup(String name, AServer server); - void deleteChannelGroup(String name, AServer server); - AChannelGroup addChannelToChannelGroup(AChannelGroup channelGroup, AChannel channel); - void removeChannelFromChannelGroup(AChannelGroup channelGroup, AChannel channel); - AChannelGroup findByNameAndServer(String name, AServer server); - List findAllInServer(AServer server); - List findAllInServer(Long serverId); -} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/ChannelManagementService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/ChannelManagementService.java deleted file mode 100644 index e3f45a2e6..000000000 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/ChannelManagementService.java +++ /dev/null @@ -1,11 +0,0 @@ -package dev.sheldan.abstracto.core.service.management; - -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AChannelType; - -public interface ChannelManagementService { - AChannel loadChannel(Long id); - AChannel createChannel(Long id, AChannelType type); - void markAsDeleted(Long id); - void removeChannel(Long id); -} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/ConfigManagementService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/ConfigManagementService.java deleted file mode 100644 index e95e0adb6..000000000 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/ConfigManagementService.java +++ /dev/null @@ -1,13 +0,0 @@ -package dev.sheldan.abstracto.core.service.management; - -import dev.sheldan.abstracto.core.models.database.AConfig; - -public interface ConfigManagementService { - void setOrCreateStringValue(Long serverId, String name, String value); - void setOrCreateDoubleValue(Long serverId, String name, Double value); - AConfig createConfig(Long serverId, String name, String value); - AConfig createConfig(Long serverId, String name, Double value); - AConfig createIfNotExists(Long serverId, String name, String value); - AConfig createIfNotExists(Long serverId, String name, Double value); - AConfig loadConfig(Long serverId, String name); -} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/EmoteManagementService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/EmoteManagementService.java deleted file mode 100644 index c3dd28917..000000000 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/EmoteManagementService.java +++ /dev/null @@ -1,26 +0,0 @@ -package dev.sheldan.abstracto.core.service.management; - -import dev.sheldan.abstracto.core.exception.ConfigurationException; -import dev.sheldan.abstracto.core.exception.EmoteException; -import dev.sheldan.abstracto.core.models.database.AEmote; -import dev.sheldan.abstracto.core.models.database.AServer; -import net.dv8tion.jda.api.entities.Emote; - -import java.util.Optional; - -public interface EmoteManagementService { - AEmote loadEmote(Long id); - AEmote createCustomEmote(String name, String emoteKey, Long emoteId, Boolean animated, Long serverId) ; - AEmote createCustomEmote(String name, String emoteKey, Long emoteId, Boolean animated, AServer server) ; - AEmote createDefaultEmote(String name, String emoteKey, Long serverId) ; - AEmote createDefaultEmote(String name, String emoteKey, AServer server) ; - Optional loadEmoteByName(String name, Long serverId); - Optional loadEmoteByName(String name, AServer server); - AEmote setEmoteToCustomEmote(String name, String emoteKey, Long emoteId, Boolean animated, Long serverId) ; - AEmote setEmoteToCustomEmote(String name, Emote emote, Long serverId) ; - AEmote setEmoteToDefaultEmote(String name, String emoteKey, Long serverId) ; - boolean emoteExists(String name, Long serverId); - boolean emoteExists(String name, AServer server); - AEmote createCustomEmote(String name, String emoteKey, Long emoteId, Boolean animated); - AEmote createDefaultEmote(String name, String emoteKey); -} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/FeatureFlagManagementService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/FeatureFlagManagementService.java deleted file mode 100644 index 5e8cdfdb4..000000000 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/FeatureFlagManagementService.java +++ /dev/null @@ -1,14 +0,0 @@ -package dev.sheldan.abstracto.core.service.management; - -import dev.sheldan.abstracto.core.models.database.AFeatureFlag; -import dev.sheldan.abstracto.core.models.database.AServer; - -import java.util.Optional; - -public interface FeatureFlagManagementService { - void createFeatureFlag(String key, Long serverId, Boolean newValue); - void createFeatureFlag(String key, AServer server, Boolean newValue); - boolean getFeatureFlagValue(String key, Long serverId); - void updateOrCreateFeatureFlag(String key, Long serverId, Boolean newValue); - Optional getFeatureFlag(String key, Long serverId); -} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/PostTargetManagement.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/PostTargetManagement.java deleted file mode 100644 index 4f3ac7bad..000000000 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/PostTargetManagement.java +++ /dev/null @@ -1,17 +0,0 @@ -package dev.sheldan.abstracto.core.service.management; - -import dev.sheldan.abstracto.core.exception.ConfigurationException; -import dev.sheldan.abstracto.core.exception.PostTargetException; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.models.database.PostTarget; - -public interface PostTargetManagement { - void createPostTarget(String name, AServer server, AChannel targetChanel); - void createOrUpdate(String name, AServer server, AChannel targetChannel); - void createOrUpdate(String name, AServer server, Long channelId); - void createOrUpdate(String name, Long serverId, Long channelId); - PostTarget getPostTarget(String name, AServer server); - PostTarget getPostTarget(String name, Long serverId); - void updatePostTarget(PostTarget target, AServer server, AChannel newTargetChannel); -} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/RoleManagementService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/RoleManagementService.java deleted file mode 100644 index 1da8ef98a..000000000 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/RoleManagementService.java +++ /dev/null @@ -1,7 +0,0 @@ -package dev.sheldan.abstracto.core.service.management; - -import dev.sheldan.abstracto.core.models.database.ARole; - -public interface RoleManagementService { - ARole createRole(Long id); -} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/ServerManagementService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/ServerManagementService.java deleted file mode 100644 index 8166e9b41..000000000 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/ServerManagementService.java +++ /dev/null @@ -1,18 +0,0 @@ -package dev.sheldan.abstracto.core.service.management; - -import dev.sheldan.abstracto.core.models.database.*; - -import java.util.List; - -public interface ServerManagementService { - AServer createServer(Long id); - AServer loadOrCreate(Long id); - void addChannelToServer(AServer server, AChannel channel); - AUserInAServer addUserToServer(AServer server, AUser user); - AUserInAServer addUserToServer(Long serverId, Long userId); - AChannel getPostTarget(Long serverId, String name); - AChannel getPostTarget(Long serverId, PostTarget target); - AChannel getPostTarget(AServer server, PostTarget target); - AChannel getPostTarget(AServer server, String name); - List getAllServers(); -} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/UserManagementService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/UserManagementService.java deleted file mode 100644 index b85b435cd..000000000 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/management/UserManagementService.java +++ /dev/null @@ -1,17 +0,0 @@ -package dev.sheldan.abstracto.core.service.management; - -import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.models.database.AUser; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; -import net.dv8tion.jda.api.entities.Member; - -public interface UserManagementService { - AUserInAServer loadUser(Long serverId, Long userId); - AUserInAServer loadUser(AServer server, AUser user); - AUserInAServer loadUser(Member member); - AUserInAServer createUserInServer(Member member); - AUserInAServer createUserInServer(Long guildId, Long userId); - AUser createUser(Member member); - AUser createUser(Long userId); - AUser loadUser(Long userId); -} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/utils/AbstractoDateUtils.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/utils/AbstractoDateUtils.java new file mode 100644 index 000000000..129e76ea8 --- /dev/null +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/utils/AbstractoDateUtils.java @@ -0,0 +1,11 @@ +package dev.sheldan.abstracto.core.utils; + +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; + +public class AbstractoDateUtils { + public static OffsetDateTime convertInstant(Instant instant) { + return instant.atOffset(ZoneOffset.UTC); + } +} diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/utils/ContextUtils.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/utils/ContextUtils.java index a77c86957..14385ae64 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/utils/ContextUtils.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/utils/ContextUtils.java @@ -1,14 +1,13 @@ package dev.sheldan.abstracto.core.utils; +import dev.sheldan.abstracto.core.command.service.UserService; import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException; -import dev.sheldan.abstracto.core.service.management.ChannelManagementService; -import dev.sheldan.abstracto.core.service.management.ServerManagementService; -import dev.sheldan.abstracto.core.service.management.UserManagementService; +import dev.sheldan.abstracto.core.models.dto.UserInServerDto; import dev.sheldan.abstracto.core.models.cache.CachedMessage; import dev.sheldan.abstracto.core.models.GuildChannelMember; import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.core.service.Bot; +import dev.sheldan.abstracto.core.service.ChannelService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -21,10 +20,10 @@ import java.lang.reflect.Method; public class ContextUtils { @Autowired - private ChannelManagementService channelManagementService; + private ChannelService channelService; @Autowired - private UserManagementService userManagementService; + private UserService userService; @Autowired private Bot bot; @@ -35,15 +34,15 @@ public class ContextUtils { try { m = clazz.getMethod("builder"); UserInitiatedServerContext.UserInitiatedServerContextBuilder builder = (UserInitiatedServerContext.UserInitiatedServerContextBuilder) m.invoke(null, null); - AUserInAServer aUserInAServer = userManagementService.loadUser(message.getServerId(), message.getAuthorId()); + UserInServerDto aUserInAServer = userService.loadUser(message.getServerId(), message.getAuthorId()); return builder .member(guildChannelMember.getMember()) .guild(guildChannelMember.getGuild()) .messageChannel(guildChannelMember.getTextChannel()) - .channel(channelManagementService.loadChannel(message.getChannelId())) - .server(aUserInAServer.getServerReference()) + .channel(channelService.loadChannel(message.getChannelId())) + .server(aUserInAServer.getServer()) .aUserInAServer(aUserInAServer) - .user(aUserInAServer.getUserReference()) + .user(aUserInAServer.getUser()) .build(); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { log.error("Failed to execute builder method", e); diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/utils/EmoteUtils.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/utils/EmoteUtils.java index 86866408e..c41ded131 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/utils/EmoteUtils.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/utils/EmoteUtils.java @@ -1,8 +1,8 @@ package dev.sheldan.abstracto.core.utils; +import dev.sheldan.abstracto.core.models.dto.EmoteDto; import dev.sheldan.abstracto.core.models.cache.CachedMessage; import dev.sheldan.abstracto.core.models.cache.CachedReaction; -import dev.sheldan.abstracto.core.models.database.AEmote; import net.dv8tion.jda.api.entities.Emote; import net.dv8tion.jda.api.entities.MessageReaction; @@ -10,7 +10,7 @@ import java.util.Optional; public class EmoteUtils { - public static boolean isReactionEmoteAEmote(MessageReaction.ReactionEmote reaction, AEmote emote, Emote emoteInGuild) { + public static boolean isReactionEmoteAEmote(MessageReaction.ReactionEmote reaction, EmoteDto emote, Emote emoteInGuild) { if(reaction.isEmote() && emote.getCustom()) { if(emoteInGuild != null) { return emoteInGuild.equals(reaction.getEmote()); @@ -22,11 +22,11 @@ public class EmoteUtils { } } - public static Optional getReactionFromMessageByEmote(CachedMessage message, AEmote emote) { + public static Optional getReactionFromMessageByEmote(CachedMessage message, EmoteDto emote) { return message.getReactions().stream().filter(reaction -> compareAEmote(reaction.getEmote(), emote)).findFirst(); } - public static boolean compareAEmote(AEmote a, AEmote b) { + public static boolean compareAEmote(EmoteDto a, EmoteDto b) { if(a.getCustom() && b.getCustom()) { return a.getEmoteId().equals(b.getEmoteId()); } else { diff --git a/abstracto-application/core/core-interface/src/test/java/dev/sheldan/abstracto/core/utils/ContextUtilsTest.java b/abstracto-application/core/core-interface/src/test/java/dev/sheldan/abstracto/core/utils/ContextUtilsTest.java deleted file mode 100644 index 6ecefb390..000000000 --- a/abstracto-application/core/core-interface/src/test/java/dev/sheldan/abstracto/core/utils/ContextUtilsTest.java +++ /dev/null @@ -1,67 +0,0 @@ -package dev.sheldan.abstracto.core.utils; - -import dev.sheldan.abstracto.core.models.GuildChannelMember; -import dev.sheldan.abstracto.core.models.cache.CachedMessage; -import dev.sheldan.abstracto.core.models.database.AChannel; -import dev.sheldan.abstracto.core.models.database.AServer; -import dev.sheldan.abstracto.core.models.database.AUser; -import dev.sheldan.abstracto.core.models.database.AUserInAServer; -import dev.sheldan.abstracto.core.models.template.commands.PingModel; -import dev.sheldan.abstracto.core.service.Bot; -import dev.sheldan.abstracto.core.service.management.ChannelManagementService; -import dev.sheldan.abstracto.core.service.management.ServerManagementService; -import dev.sheldan.abstracto.core.service.management.UserManagementService; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; - -import static org.junit.Assert.assertEquals; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.when; - -@RunWith(MockitoJUnitRunner.class) -public class ContextUtilsTest { - - public static final Long CHANNEL_ID = 1L; - public static final Long SERVER_ID = 1L; - public static final Long AUTHOR_ID = 1L; - @InjectMocks - private ContextUtils classToTest; - - @Mock - private ChannelManagementService channelManagementService; - - @Mock - private UserManagementService userManagementService; - - @Mock - private Bot bot; - - @Before - public void setup() { - GuildChannelMember build = GuildChannelMember.builder().build(); - when(bot.getServerChannelUser(eq(SERVER_ID), eq(CHANNEL_ID), eq(AUTHOR_ID))).thenReturn(build); - AServer server = AServer.builder().id(SERVER_ID).build(); - AUserInAServer aUserInAServer = AUserInAServer.builder().userReference(AUser.builder().id(AUTHOR_ID).build()).serverReference(server).build(); - when(userManagementService.loadUser(eq(SERVER_ID), eq(AUTHOR_ID))).thenReturn(aUserInAServer); - AChannel channel = AChannel.builder().id(CHANNEL_ID).build(); - when(channelManagementService.loadChannel(eq(CHANNEL_ID))).thenReturn(channel); - } - - @Test - public void testFromMessage() { - PingModel pingModel = (PingModel) classToTest.fromMessage(buildCachedMessage(), PingModel.class); - assertEquals(pingModel.getUser().getId(), AUTHOR_ID); - assertEquals(pingModel.getAUserInAServer().getUserReference().getId(), AUTHOR_ID); - assertEquals(pingModel.getAUserInAServer().getServerReference().getId(), SERVER_ID); - assertEquals(pingModel.getServer().getId(), SERVER_ID); - assertEquals(pingModel.getChannel().getId(), CHANNEL_ID); - } - - private CachedMessage buildCachedMessage() { - return CachedMessage.builder().authorId(AUTHOR_ID).serverId(SERVER_ID).channelId(CHANNEL_ID).build(); - } -} diff --git a/abstracto-application/core/pom.xml b/abstracto-application/core/pom.xml index 779fcaa52..7172dad23 100644 --- a/abstracto-application/core/pom.xml +++ b/abstracto-application/core/pom.xml @@ -13,6 +13,7 @@ core pom + core-db-models core-interface core-impl