mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-01-25 20:04:01 +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.RemindFeatureDefinition;
|
||||||
import dev.sheldan.abstracto.remind.config.RemindSlashCommandNames;
|
import dev.sheldan.abstracto.remind.config.RemindSlashCommandNames;
|
||||||
import dev.sheldan.abstracto.remind.model.database.Reminder;
|
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.ReminderDisplay;
|
||||||
import dev.sheldan.abstracto.remind.model.template.commands.RemindersModel;
|
import dev.sheldan.abstracto.remind.model.template.commands.RemindersModel;
|
||||||
import dev.sheldan.abstracto.remind.service.management.ReminderManagementService;
|
import dev.sheldan.abstracto.remind.service.management.ReminderManagementService;
|
||||||
|
import dev.sheldan.abstracto.remind.service.management.ReminderParticipantManagementService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||||
@@ -52,6 +54,9 @@ public class Reminders extends AbstractConditionableCommand {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private InteractionService interactionService;
|
private InteractionService interactionService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ReminderParticipantManagementService reminderParticipantManagementService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture<CommandResult> executeAsync(CommandContext commandContext) {
|
public CompletableFuture<CommandResult> executeAsync(CommandContext commandContext) {
|
||||||
Long serverId = commandContext.getGuild().getIdLong();
|
Long serverId = commandContext.getGuild().getIdLong();
|
||||||
@@ -64,19 +69,19 @@ public class Reminders extends AbstractConditionableCommand {
|
|||||||
private MessageToSend getMessageToSend(Long serverId, Member member) {
|
private MessageToSend getMessageToSend(Long serverId, Member member) {
|
||||||
AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(member);
|
AUserInAServer aUserInAServer = userInServerManagementService.loadOrCreateUser(member);
|
||||||
List<Reminder> activeReminders = reminderManagementService.getActiveRemindersForUser(aUserInAServer);
|
List<Reminder> activeReminders = reminderManagementService.getActiveRemindersForUser(aUserInAServer);
|
||||||
List<ReminderDisplay> reminders = activeReminders.stream().map(reminder -> {
|
List<Reminder> joinedReminders = reminderParticipantManagementService.getActiveReminders(aUserInAServer)
|
||||||
ServerChannelMessage originMessage = ServerChannelMessage
|
.stream()
|
||||||
.builder()
|
.map(ReminderParticipant::getReminder)
|
||||||
.messageId(reminder.getMessageId())
|
.collect(Collectors.toList());
|
||||||
.channelId(reminder.getChannel().getId())
|
List<ReminderDisplay> reminders = activeReminders
|
||||||
.serverId(serverId)
|
.stream()
|
||||||
.build();
|
.map(ReminderDisplay::fromReminder)
|
||||||
return ReminderDisplay
|
.collect(Collectors.toList());
|
||||||
.builder()
|
reminders.addAll(joinedReminders
|
||||||
.reminder(reminder)
|
.stream()
|
||||||
.message(originMessage)
|
.map(ReminderDisplay::fromReminder)
|
||||||
.build();
|
.peek(reminderDisplay -> reminderDisplay.setJoined(true))
|
||||||
}).collect(Collectors.toList());
|
.collect(Collectors.toList()));
|
||||||
RemindersModel model = RemindersModel
|
RemindersModel model = RemindersModel
|
||||||
.builder()
|
.builder()
|
||||||
.reminders(reminders)
|
.reminders(reminders)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package dev.sheldan.abstracto.remind.repository;
|
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.Reminder;
|
||||||
import dev.sheldan.abstracto.remind.model.database.ReminderParticipant;
|
import dev.sheldan.abstracto.remind.model.database.ReminderParticipant;
|
||||||
import dev.sheldan.abstracto.remind.model.database.embed.ReminderUserId;
|
import dev.sheldan.abstracto.remind.model.database.embed.ReminderUserId;
|
||||||
@@ -11,4 +12,6 @@ import java.util.List;
|
|||||||
@Repository
|
@Repository
|
||||||
public interface ReminderParticipantRepository extends JpaRepository<ReminderParticipant, ReminderUserId> {
|
public interface ReminderParticipantRepository extends JpaRepository<ReminderParticipant, ReminderUserId> {
|
||||||
List<ReminderParticipant> findAllByReminder(Reminder reminder);
|
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<ReminderParticipant> participants = reminderParticipantManagementService.getReminderParticipants(reminder);
|
||||||
List<MemberDisplay> participantsDisplays = participants
|
List<MemberDisplay> participantsDisplays = participants
|
||||||
.stream()
|
.stream()
|
||||||
.map(reminderParticipant -> MemberDisplay.fromAUserInAServer(reminderParticipant.getParticipator()))
|
.map(reminderParticipant -> MemberDisplay.fromAUserInAServer(reminderParticipant.getParticipant()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
ExecutedReminderModel build = ExecutedReminderModel
|
ExecutedReminderModel build = ExecutedReminderModel
|
||||||
.builder()
|
.builder()
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ public class ReminderParticipantManagementServiceBean implements ReminderPartici
|
|||||||
ReminderParticipant reminderParticipant = ReminderParticipant
|
ReminderParticipant reminderParticipant = ReminderParticipant
|
||||||
.builder()
|
.builder()
|
||||||
.reminder(reminder)
|
.reminder(reminder)
|
||||||
.participator(aUserInAServer)
|
.participant(aUserInAServer)
|
||||||
.server(aUserInAServer.getServerReference())
|
.server(aUserInAServer.getServerReference())
|
||||||
.reminderParticipantId(id)
|
.reminderParticipantId(id)
|
||||||
.build();
|
.build();
|
||||||
@@ -58,4 +58,14 @@ public class ReminderParticipantManagementServiceBean implements ReminderPartici
|
|||||||
public List<ReminderParticipant> getReminderParticipants(Reminder reminder) {
|
public List<ReminderParticipant> getReminderParticipants(Reminder reminder) {
|
||||||
return reminderParticipantRepository.findAllByReminder(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})
|
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||||
@MapsId("participantUserInServerId")
|
@MapsId("participantUserInServerId")
|
||||||
@JoinColumn(name = "reminder_participant_user_in_server_id", nullable = false)
|
@JoinColumn(name = "reminder_participant_user_in_server_id", nullable = false)
|
||||||
private AUserInAServer participator;
|
private AUserInAServer participant;
|
||||||
|
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
|
|||||||
@@ -6,10 +6,36 @@ import lombok.Builder;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@Builder
|
@Builder
|
||||||
public class ReminderDisplay {
|
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;
|
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);
|
Optional<ReminderParticipant> getReminderParticipant(Reminder reminder, AUserInAServer aUserInAServer);
|
||||||
boolean isReminderParticipator(Reminder reminder, AUserInAServer aUserInAServer);
|
boolean isReminderParticipator(Reminder reminder, AUserInAServer aUserInAServer);
|
||||||
List<ReminderParticipant> getReminderParticipants(Reminder reminder);
|
List<ReminderParticipant> getReminderParticipants(Reminder reminder);
|
||||||
|
List<ReminderParticipant> getReminders(AUserInAServer participant);
|
||||||
|
List<ReminderParticipant> getActiveReminders(AUserInAServer participant);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user