[SIS-3] adding cleanup of cancelled meetups to job

This commit is contained in:
Sheldan
2022-06-20 20:12:41 +02:00
parent 533c9e3a63
commit 9bc4ec0253
3 changed files with 18 additions and 5 deletions

View File

@@ -2,6 +2,7 @@ package dev.sheldan.sissi.module.meetup.repository;
import dev.sheldan.abstracto.core.models.ServerSpecificId; import dev.sheldan.abstracto.core.models.ServerSpecificId;
import dev.sheldan.sissi.module.meetup.model.database.Meetup; 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.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@@ -12,4 +13,5 @@ import java.util.List;
public interface MeetupRepository extends JpaRepository<Meetup, ServerSpecificId> { public interface MeetupRepository extends JpaRepository<Meetup, ServerSpecificId> {
List<Meetup> findByMeetupTimeLessThan(Instant date); List<Meetup> findByMeetupTimeLessThan(Instant date);
List<Meetup> findByMeetupTimeGreaterThan(Instant date); List<Meetup> findByMeetupTimeGreaterThan(Instant date);
List<Meetup> findByState(MeetupState state);
} }

View File

@@ -225,11 +225,18 @@ public class MeetupServiceBean {
@Transactional @Transactional
public void cleanupMeetups() { public void cleanupMeetups() {
Instant time = Instant.now().minus(1, ChronoUnit.DAYS); Instant time = Instant.now().minus(1, ChronoUnit.DAYS);
List<Meetup> oldMeetups = meetupManagementServiceBean.getMeetupsOlderThan(time) List<Meetup> oldMeetups = meetupManagementServiceBean.getMeetupsOlderThan(time);
.stream() deleteMeetups(oldMeetups);
.filter(meetup -> meetup.getMessageId() != null) List<Meetup> cancelledMeetups = meetupManagementServiceBean.findCancelledMeetups();
.collect(Collectors.toList()); deleteMeetups(cancelledMeetups);
oldMeetups.forEach(meetup -> messageService.deleteMessageInChannelInServer(meetup.getServer().getId(), meetup.getMeetupChannel().getId(), meetup.getMessageId())); }
private void deleteMeetups(List<Meetup> oldMeetups) {
oldMeetups.forEach(meetup -> {
if(meetup.getMessageId() != null) {
messageService.deleteMessageInChannelInServer(meetup.getServer().getId(), meetup.getMeetupChannel().getId(), meetup.getMessageId());
}
});
meetupManagementServiceBean.deleteMeetups(oldMeetups); meetupManagementServiceBean.deleteMeetups(oldMeetups);
} }
} }

View File

@@ -58,6 +58,10 @@ public class MeetupManagementServiceBean {
return meetupRepository.findAll(); return meetupRepository.findAll();
} }
public List<Meetup> findCancelledMeetups() {
return meetupRepository.findByState(MeetupState.CANCELLED);
}
public List<Meetup> getFutureMeetups() { public List<Meetup> getFutureMeetups() {
return meetupRepository.findByMeetupTimeGreaterThan(Instant.now()); return meetupRepository.findByMeetupTimeGreaterThan(Instant.now());
} }