mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-01-22 17:45:48 +00:00
[AB-72] adding joined reminders to list of reminders
refactored reminder display to not use entities
This commit is contained in:
@@ -19,9 +19,11 @@ import dev.sheldan.abstracto.core.utils.FutureUtils;
|
||||
import dev.sheldan.abstracto.remind.config.RemindFeatureDefinition;
|
||||
import dev.sheldan.abstracto.remind.config.RemindSlashCommandNames;
|
||||
import dev.sheldan.abstracto.remind.model.database.Reminder;
|
||||
import dev.sheldan.abstracto.remind.model.database.ReminderParticipant;
|
||||
import dev.sheldan.abstracto.remind.model.template.commands.ReminderDisplay;
|
||||
import dev.sheldan.abstracto.remind.model.template.commands.RemindersModel;
|
||||
import dev.sheldan.abstracto.remind.service.management.ReminderManagementService;
|
||||
import dev.sheldan.abstracto.remind.service.management.ReminderParticipantManagementService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||
@@ -52,6 +54,9 @@ public class Reminders extends AbstractConditionableCommand {
|
||||
@Autowired
|
||||
private InteractionService interactionService;
|
||||
|
||||
@Autowired
|
||||
private ReminderParticipantManagementService reminderParticipantManagementService;
|
||||
|
||||
@Override
|
||||
public CompletableFuture<CommandResult> executeAsync(CommandContext commandContext) {
|
||||
Long serverId = commandContext.getGuild().getIdLong();
|
||||
@@ -64,19 +69,19 @@ public class Reminders extends AbstractConditionableCommand {
|
||||
private MessageToSend getMessageToSend(Long serverId, Member member) {
|
||||
AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(member);
|
||||
List<Reminder> activeReminders = reminderManagementService.getActiveRemindersForUser(aUserInAServer);
|
||||
List<ReminderDisplay> reminders = activeReminders.stream().map(reminder -> {
|
||||
ServerChannelMessage originMessage = ServerChannelMessage
|
||||
.builder()
|
||||
.messageId(reminder.getMessageId())
|
||||
.channelId(reminder.getChannel().getId())
|
||||
.serverId(serverId)
|
||||
.build();
|
||||
return ReminderDisplay
|
||||
.builder()
|
||||
.reminder(reminder)
|
||||
.message(originMessage)
|
||||
.build();
|
||||
}).collect(Collectors.toList());
|
||||
List<Reminder> joinedReminders = reminderParticipantManagementService.getActiveReminders(aUserInAServer)
|
||||
.stream()
|
||||
.map(ReminderParticipant::getReminder)
|
||||
.collect(Collectors.toList());
|
||||
List<ReminderDisplay> reminders = activeReminders
|
||||
.stream()
|
||||
.map(ReminderDisplay::fromReminder)
|
||||
.collect(Collectors.toList());
|
||||
reminders.addAll(joinedReminders
|
||||
.stream()
|
||||
.map(ReminderDisplay::fromReminder)
|
||||
.peek(reminderDisplay -> reminderDisplay.setJoined(true))
|
||||
.collect(Collectors.toList()));
|
||||
RemindersModel model = RemindersModel
|
||||
.builder()
|
||||
.reminders(reminders)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package dev.sheldan.abstracto.remind.repository;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.remind.model.database.Reminder;
|
||||
import dev.sheldan.abstracto.remind.model.database.ReminderParticipant;
|
||||
import dev.sheldan.abstracto.remind.model.database.embed.ReminderUserId;
|
||||
@@ -11,4 +12,6 @@ import java.util.List;
|
||||
@Repository
|
||||
public interface ReminderParticipantRepository extends JpaRepository<ReminderParticipant, ReminderUserId> {
|
||||
List<ReminderParticipant> findAllByReminder(Reminder reminder);
|
||||
List<ReminderParticipant> findAllByParticipant(AUserInAServer aUserInAServer);
|
||||
List<ReminderParticipant> findAllByParticipantAndReminder_RemindedFalse(AUserInAServer aUserInAServer);
|
||||
}
|
||||
|
||||
@@ -171,7 +171,7 @@ public class RemindServiceBean implements ReminderService {
|
||||
List<ReminderParticipant> participants = reminderParticipantManagementService.getReminderParticipants(reminder);
|
||||
List<MemberDisplay> participantsDisplays = participants
|
||||
.stream()
|
||||
.map(reminderParticipant -> MemberDisplay.fromAUserInAServer(reminderParticipant.getParticipator()))
|
||||
.map(reminderParticipant -> MemberDisplay.fromAUserInAServer(reminderParticipant.getParticipant()))
|
||||
.collect(Collectors.toList());
|
||||
ExecutedReminderModel build = ExecutedReminderModel
|
||||
.builder()
|
||||
|
||||
@@ -24,7 +24,7 @@ public class ReminderParticipantManagementServiceBean implements ReminderPartici
|
||||
ReminderParticipant reminderParticipant = ReminderParticipant
|
||||
.builder()
|
||||
.reminder(reminder)
|
||||
.participator(aUserInAServer)
|
||||
.participant(aUserInAServer)
|
||||
.server(aUserInAServer.getServerReference())
|
||||
.reminderParticipantId(id)
|
||||
.build();
|
||||
@@ -58,4 +58,14 @@ public class ReminderParticipantManagementServiceBean implements ReminderPartici
|
||||
public List<ReminderParticipant> getReminderParticipants(Reminder reminder) {
|
||||
return reminderParticipantRepository.findAllByReminder(reminder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ReminderParticipant> getReminders(AUserInAServer participant) {
|
||||
return reminderParticipantRepository.findAllByParticipant(participant);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ReminderParticipant> getActiveReminders(AUserInAServer participant) {
|
||||
return reminderParticipantRepository.findAllByParticipantAndReminder_RemindedFalse(participant);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ public class ReminderParticipant {
|
||||
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
@MapsId("participantUserInServerId")
|
||||
@JoinColumn(name = "reminder_participant_user_in_server_id", nullable = false)
|
||||
private AUserInAServer participator;
|
||||
private AUserInAServer participant;
|
||||
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
|
||||
@@ -6,10 +6,36 @@ import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.time.Instant;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class ReminderDisplay {
|
||||
private Reminder reminder;
|
||||
private Long id;
|
||||
private Boolean reminded;
|
||||
private String text;
|
||||
private Instant targetDate;
|
||||
private Instant creationDate;
|
||||
@Builder.Default
|
||||
private Boolean joined = false;
|
||||
private ServerChannelMessage message;
|
||||
|
||||
public static ReminderDisplay fromReminder(Reminder reminder) {
|
||||
ServerChannelMessage message = ServerChannelMessage
|
||||
.builder()
|
||||
.messageId(reminder.getMessageId())
|
||||
.channelId(reminder.getChannel().getId())
|
||||
.serverId(reminder.getServer().getId())
|
||||
.build();
|
||||
return ReminderDisplay
|
||||
.builder()
|
||||
.creationDate(reminder.getReminderDate())
|
||||
.targetDate(reminder.getTargetDate())
|
||||
.id(reminder.getId())
|
||||
.reminded(reminder.isReminded())
|
||||
.message(message)
|
||||
.text(reminder.getText())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,4 +15,6 @@ public interface ReminderParticipantManagementService {
|
||||
Optional<ReminderParticipant> getReminderParticipant(Reminder reminder, AUserInAServer aUserInAServer);
|
||||
boolean isReminderParticipator(Reminder reminder, AUserInAServer aUserInAServer);
|
||||
List<ReminderParticipant> getReminderParticipants(Reminder reminder);
|
||||
List<ReminderParticipant> getReminders(AUserInAServer participant);
|
||||
List<ReminderParticipant> getActiveReminders(AUserInAServer participant);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user