diff --git a/application/sissi-modules/meetup/src/main/java/dev/sheldan/sissi/module/meetup/repository/MeetupRepository.java b/application/sissi-modules/meetup/src/main/java/dev/sheldan/sissi/module/meetup/repository/MeetupRepository.java index 9e3745f2..a9fc84d6 100644 --- a/application/sissi-modules/meetup/src/main/java/dev/sheldan/sissi/module/meetup/repository/MeetupRepository.java +++ b/application/sissi-modules/meetup/src/main/java/dev/sheldan/sissi/module/meetup/repository/MeetupRepository.java @@ -2,6 +2,7 @@ package dev.sheldan.sissi.module.meetup.repository; import dev.sheldan.abstracto.core.models.ServerSpecificId; import dev.sheldan.sissi.module.meetup.model.database.Meetup; +import dev.sheldan.sissi.module.meetup.model.database.MeetupState; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -12,4 +13,5 @@ import java.util.List; public interface MeetupRepository extends JpaRepository { List findByMeetupTimeLessThan(Instant date); List findByMeetupTimeGreaterThan(Instant date); + List findByState(MeetupState state); } diff --git a/application/sissi-modules/meetup/src/main/java/dev/sheldan/sissi/module/meetup/service/MeetupServiceBean.java b/application/sissi-modules/meetup/src/main/java/dev/sheldan/sissi/module/meetup/service/MeetupServiceBean.java index 0e82a3b1..008af75d 100644 --- a/application/sissi-modules/meetup/src/main/java/dev/sheldan/sissi/module/meetup/service/MeetupServiceBean.java +++ b/application/sissi-modules/meetup/src/main/java/dev/sheldan/sissi/module/meetup/service/MeetupServiceBean.java @@ -225,11 +225,18 @@ public class MeetupServiceBean { @Transactional public void cleanupMeetups() { Instant time = Instant.now().minus(1, ChronoUnit.DAYS); - List oldMeetups = meetupManagementServiceBean.getMeetupsOlderThan(time) - .stream() - .filter(meetup -> meetup.getMessageId() != null) - .collect(Collectors.toList()); - oldMeetups.forEach(meetup -> messageService.deleteMessageInChannelInServer(meetup.getServer().getId(), meetup.getMeetupChannel().getId(), meetup.getMessageId())); + List oldMeetups = meetupManagementServiceBean.getMeetupsOlderThan(time); + deleteMeetups(oldMeetups); + List cancelledMeetups = meetupManagementServiceBean.findCancelledMeetups(); + deleteMeetups(cancelledMeetups); + } + + private void deleteMeetups(List oldMeetups) { + oldMeetups.forEach(meetup -> { + if(meetup.getMessageId() != null) { + messageService.deleteMessageInChannelInServer(meetup.getServer().getId(), meetup.getMeetupChannel().getId(), meetup.getMessageId()); + } + }); meetupManagementServiceBean.deleteMeetups(oldMeetups); } } diff --git a/application/sissi-modules/meetup/src/main/java/dev/sheldan/sissi/module/meetup/service/management/MeetupManagementServiceBean.java b/application/sissi-modules/meetup/src/main/java/dev/sheldan/sissi/module/meetup/service/management/MeetupManagementServiceBean.java index 4b8467d0..eaee103a 100644 --- a/application/sissi-modules/meetup/src/main/java/dev/sheldan/sissi/module/meetup/service/management/MeetupManagementServiceBean.java +++ b/application/sissi-modules/meetup/src/main/java/dev/sheldan/sissi/module/meetup/service/management/MeetupManagementServiceBean.java @@ -58,6 +58,10 @@ public class MeetupManagementServiceBean { return meetupRepository.findAll(); } + public List findCancelledMeetups() { + return meetupRepository.findByState(MeetupState.CANCELLED); + } + public List getFutureMeetups() { return meetupRepository.findByMeetupTimeGreaterThan(Instant.now()); }