Skip to content

Commit

Permalink
circular dependency fixed
Browse files Browse the repository at this point in the history
  • Loading branch information
maxymmusiienko committed Feb 1, 2024
1 parent 40eadf8 commit bfc7bd1
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
@Repository
public interface UserRepository extends JpaRepository<User, String> {

Optional<User> findByUserId(String userId);
Optional<User> findByUserID(String userId);

Optional<User> findByGitName(String gitName);

Expand Down
19 changes: 12 additions & 7 deletions bot/src/main/java/com/community/tools/service/MessageListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,33 +4,38 @@
import com.community.tools.model.Messages;
import com.community.tools.model.User;
import com.community.tools.repository.UserRepository;

import java.time.LocalDate;
import java.util.List;

import lombok.RequiredArgsConstructor;
import net.dv8tion.jda.api.entities.MessageType;
import net.dv8tion.jda.api.events.guild.member.GuildMemberJoinEvent;
import net.dv8tion.jda.api.events.interaction.SlashCommandEvent;
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;

@Component
@RequiredArgsConstructor
public class MessageListener implements EventListener {

private final UserRepository userRepository;
private final MessageService<?> messageService;
private final List<Command> commands;
private UserRepository userRepository;
private MessageService<?> messageService;
private List<Command> commands;

@Value("${welcomeChannel}")
private String welcomeChannelName;

@Value("${newbieRole}")
private String newbieRoleName;

public MessageListener(UserRepository userRepository,
@Lazy MessageService<?> messageService,
List<Command> commands) {
this.userRepository = userRepository;
this.messageService = messageService;
this.commands = commands;
}

@Override
public void memberJoin(GuildMemberJoinEvent event) {
String userId = event.getUser().getId();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,14 @@ public void sendPullRequestUpdateNotification(String gitHubName,
public void sendPullRequestUpdateNotification(
List<UserForTaskStatusDto> userForTaskStatusDtoList) {
List<String> gitHubNames = userForTaskStatusDtoList.stream()
.map(UserForTaskStatusDto::getGitName).collect(
.map(UserForTaskStatusDto::gitName).collect(
Collectors.toList());
Map<String, String> gitHubDiscordNames = discordGitHubMappingService.getDiscordGithubUsernames(
gitHubNames);
for (UserForTaskStatusDto dto : userForTaskStatusDtoList) {
String discordName = gitHubDiscordNames.get(dto.getGitName());
String discordName = gitHubDiscordNames.get(dto.gitName());
Optional<User> userOptional = discordService.getUserByName(discordName);
checkUserAndSendNotification(userOptional, discordName, dto.getTaskStatuses());
checkUserAndSendNotification(userOptional, discordName, dto.taskStatuses());
}
}

Expand Down Expand Up @@ -106,8 +106,8 @@ private String buildNotification(User user, List<TaskNameAndStatus> taskNameAndS
.append("! Your PR statuses updated on: ");
for (TaskNameAndStatus taskNameAndStatus : taskNameAndStatusList) {
announcementText.append(System.lineSeparator());
announcementText.append(taskNameAndStatus.getTaskName()).append(" :")
.append(taskNameAndStatus.getTaskStatus());
announcementText.append(taskNameAndStatus.taskName()).append(" :")
.append(taskNameAndStatus.taskStatus());
}
return announcementText.toString();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,15 @@ public StateMachine<State, Event> restoreMachineByNick(String nick) {
StateMachine<State, Event> machine = factory.getStateMachine();
machine.start();
try {
persister.restore(machine, user.getUserId());
persister.restore(machine, user.getUserID());
} catch (Exception e) {
throw new RuntimeException(e);
}
return machine;
}

public String getIdByNick(String nick) {
return userRepository.findByGitName(nick).get().getUserId();
return userRepository.findByGitName(nick).get().getUserID();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,26 +8,40 @@
import com.community.tools.service.github.GitHubService;
import java.io.IOException;

import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.events.interaction.SlashCommandEvent;
import net.dv8tion.jda.api.interactions.commands.OptionType;
import net.dv8tion.jda.api.interactions.commands.build.CommandData;
import net.dv8tion.jda.api.interactions.commands.build.OptionData;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;

@Slf4j
@Component
@NoArgsConstructor
public class RegisterCommand extends Command {

private static final String OPTION_NAME = "username";
private final GitHubService gitHubService;
private final UserRepository userRepository;
private final MessageService<?> messageService;
private GitHubService gitHubService;
private UserRepository userRepository;
private MessageService<?> messageService;

@Value("${newbieRole}")
private String newbieRoleName;

public RegisterCommand(CommandData commandData,
GitHubService gitHubService,
UserRepository userRepository,
@Lazy MessageService<?> messageService,
OptionData... options) {
super(commandData, options);
this.gitHubService = gitHubService;
this.userRepository = userRepository;
this.messageService = messageService;
}

/**
* Basic constructor for the class, specifies command data and injects required beans.
* @param gitHubService checks if provided username is correct
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ public class StateMachinePersister implements
public void write(StateMachineContext<State, Event> context, String userId) {
User user = null;
try {
user = userRepository.findByUserId(userId).get();
user = userRepository.findByUserID(userId).get();
} catch (NoSuchElementException e) {
user = new User();
user.setUserId(userId);
user.setUserID(userId);
}

byte[] data = serialize(context);
Expand All @@ -46,7 +46,7 @@ public void write(StateMachineContext<State, Event> context, String userId) {
@Override
public StateMachineContext<State, Event> read(String s) {

User user = userRepository.findByUserId(s).get();
User user = userRepository.findByUserID(s).get();
byte[] arr = user.getStateMachine();

return deserialize(arr);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
package com.community.tools.discord;

import lombok.Getter;
import lombok.NoArgsConstructor;
import net.dv8tion.jda.api.events.interaction.SlashCommandEvent;
import net.dv8tion.jda.api.interactions.commands.build.CommandData;
import net.dv8tion.jda.api.interactions.commands.build.OptionData;

@Getter
@NoArgsConstructor
public abstract class Command {

private final CommandData commandData;
private CommandData commandData;

protected Command(CommandData commandData, OptionData... options) {
this.commandData = commandData;
Expand Down

0 comments on commit bfc7bd1

Please sign in to comment.