From b6fb636dddbffa5c29daf2c6839a354371804127 Mon Sep 17 00:00:00 2001 From: Mattrixwv Date: Sun, 16 Mar 2025 15:07:05 -0400 Subject: [PATCH] Fix adhoc Raid Instance saving --- .../controller/RaidInstanceController.java | 4 +-- .../RaidInstanceCustomRepository.java | 5 ++++ .../raid_instance/RaidInstanceRepository.java | 1 + .../RaidInstanceRepositoryImpl.java | 30 +++++++++++++++++++ .../service/RaidInstanceService.java | 18 ++++++++--- 5 files changed, 52 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/mattrixwv/raidbuilder/controller/RaidInstanceController.java b/src/main/java/com/mattrixwv/raidbuilder/controller/RaidInstanceController.java index a5f683f..9593930 100644 --- a/src/main/java/com/mattrixwv/raidbuilder/controller/RaidInstanceController.java +++ b/src/main/java/com/mattrixwv/raidbuilder/controller/RaidInstanceController.java @@ -46,10 +46,10 @@ public class RaidInstanceController{ List raidInstances; if(searchTerm == null || searchTerm.isEmpty()){ - raidInstances = raidInstanceService.findAllByRaidGroupIdAndEndDate(raidGroupId, ZonedDateTime.now(), page, pageSize); + raidInstances = raidInstanceService.findAllByRaidGroupIdAndEndDate(raidGroupId, ZonedDateTime.now().minusYears(1), page, pageSize); } else{ - raidInstances = raidInstanceService.findAllByRaidGroupIdAndEndDate(raidGroupId, ZonedDateTime.now(), page, pageSize, searchTerm); + raidInstances = raidInstanceService.findAllByRaidGroupIdAndEndDate(raidGroupId, ZonedDateTime.now().minusYears(1), page, pageSize, searchTerm); } log.debug("Found {} raid instances", raidInstances.size()); diff --git a/src/main/java/com/mattrixwv/raidbuilder/repository/raid_instance/RaidInstanceCustomRepository.java b/src/main/java/com/mattrixwv/raidbuilder/repository/raid_instance/RaidInstanceCustomRepository.java index 94a60f6..17ea9ff 100644 --- a/src/main/java/com/mattrixwv/raidbuilder/repository/raid_instance/RaidInstanceCustomRepository.java +++ b/src/main/java/com/mattrixwv/raidbuilder/repository/raid_instance/RaidInstanceCustomRepository.java @@ -1,5 +1,10 @@ package com.mattrixwv.raidbuilder.repository.raid_instance; +import java.util.UUID; + + public interface RaidInstanceCustomRepository{ + public void clearRaidLayoutId(UUID raidLayoutId); + public void clearRaidLayoutIdIn(Iterable raidLayoutIds); } diff --git a/src/main/java/com/mattrixwv/raidbuilder/repository/raid_instance/RaidInstanceRepository.java b/src/main/java/com/mattrixwv/raidbuilder/repository/raid_instance/RaidInstanceRepository.java index 1a76aa4..dcea600 100644 --- a/src/main/java/com/mattrixwv/raidbuilder/repository/raid_instance/RaidInstanceRepository.java +++ b/src/main/java/com/mattrixwv/raidbuilder/repository/raid_instance/RaidInstanceRepository.java @@ -19,6 +19,7 @@ public interface RaidInstanceRepository extends RaidInstanceCustomRepository, Jp public List findAllByRaidGroupId(UUID raidGroupId); + public List findAllByRaidGroupIdIn(Iterable raidGroupIds); public List findAllByRaidGroupId(UUID raidGroupId, PageRequest pageRequest); public List findAllByRaidGroupIdAndRaidInstanceNameContainingIgnoreCase(UUID raidGroupId, String searchTerm, PageRequest pageRequest); public List findAllByRaidGroupIdAndRaidEndDateAfter(UUID raidGroupId, ZonedDateTime raidEndDate, PageRequest pageRequest); diff --git a/src/main/java/com/mattrixwv/raidbuilder/repository/raid_instance/RaidInstanceRepositoryImpl.java b/src/main/java/com/mattrixwv/raidbuilder/repository/raid_instance/RaidInstanceRepositoryImpl.java index 21906a2..2ec5961 100644 --- a/src/main/java/com/mattrixwv/raidbuilder/repository/raid_instance/RaidInstanceRepositoryImpl.java +++ b/src/main/java/com/mattrixwv/raidbuilder/repository/raid_instance/RaidInstanceRepositoryImpl.java @@ -1,9 +1,39 @@ package com.mattrixwv.raidbuilder.repository.raid_instance; +import java.util.UUID; + import org.springframework.stereotype.Repository; +import jakarta.persistence.EntityManager; +import lombok.RequiredArgsConstructor; + @Repository +@RequiredArgsConstructor public class RaidInstanceRepositoryImpl implements RaidInstanceCustomRepository{ + private final EntityManager entityManager; + + + @Override + public void clearRaidLayoutId(UUID raidLayoutId){ + entityManager.createQuery(""" + UPDATE RaidInstance r + SET r.raidLayoutId = NULL + WHERE r.raidLayoutId = :raidLayoutId + """) + .setParameter("raidLayoutId", raidLayoutId) + .executeUpdate(); + } + + @Override + public void clearRaidLayoutIdIn(Iterable raidLayoutIds){ + entityManager.createQuery(""" + UPDATE RaidInstance r + SET r.raidLayoutId = NULL + WHERE r.raidLayoutId IN :raidLayoutIds + """) + .setParameter("raidLayoutIds", raidLayoutIds) + .executeUpdate(); + } } diff --git a/src/main/java/com/mattrixwv/raidbuilder/service/RaidInstanceService.java b/src/main/java/com/mattrixwv/raidbuilder/service/RaidInstanceService.java index 506aac1..4525fa5 100644 --- a/src/main/java/com/mattrixwv/raidbuilder/service/RaidInstanceService.java +++ b/src/main/java/com/mattrixwv/raidbuilder/service/RaidInstanceService.java @@ -14,13 +14,16 @@ import com.mattrixwv.raidbuilder.entity.RaidInstance; import com.mattrixwv.raidbuilder.repository.raid_instance.RaidInstanceRepository; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +@Slf4j @Service @Transactional(rollbackFor = Exception.class) @RequiredArgsConstructor public class RaidInstanceService{ private final RaidInstanceRepository raidInstanceRepository; + private final RaidInstancePersonCharacterXrefService ripcXrefService; //Write @@ -33,23 +36,30 @@ public class RaidInstanceService{ } public void deleteById(UUID raidInstanceId){ + ripcXrefService.deleteByRaidInstanceId(raidInstanceId); raidInstanceRepository.deleteById(raidInstanceId); } public void deleteByRaidGroupId(UUID raidGroupId){ + List raidInstances = raidInstanceRepository.findAllByRaidGroupId(raidGroupId); + ripcXrefService.deleteByRaidInstanceIds(raidInstances.stream().map(RaidInstance::getRaidInstanceId).toList()); + raidInstanceRepository.deleteAllByRaidGroupId(raidGroupId); } public void deleteByRaidGroupIds(Iterable raidGroupIds){ + List raidInstances = raidInstanceRepository.findAllByRaidGroupIdIn(raidGroupIds); + ripcXrefService.deleteByRaidInstanceIds(raidInstances.stream().map(RaidInstance::getRaidInstanceId).toList()); + raidInstanceRepository.deleteAllByRaidGroupIdIn(raidGroupIds); } public void deleteByRaidLayoutId(UUID raidLayoutId){ - raidInstanceRepository.deleteAllByRaidLayoutId(raidLayoutId); + raidInstanceRepository.clearRaidLayoutId(raidLayoutId); } public void deleteByRaidLayoutIds(Iterable raidLayoutIds){ - raidInstanceRepository.deleteAllByRaidLayoutIdIn(raidLayoutIds); + raidInstanceRepository.clearRaidLayoutIdIn(raidLayoutIds); } @@ -71,11 +81,11 @@ public class RaidInstanceService{ } public List findAllByRaidGroupIdAndEndDate(UUID raidGroupId, ZonedDateTime endDate, int page, int pageSize){ - return raidInstanceRepository.findAllByRaidGroupIdAndRaidEndDateAfter(raidGroupId, endDate, PageRequest.of(page, pageSize, Sort.by("raidInstanceName").ascending())); + return raidInstanceRepository.findAllByRaidGroupIdAndRaidEndDateAfter(raidGroupId, endDate, PageRequest.of(page, pageSize, Sort.by("raidEndDate").descending())); } public List findAllByRaidGroupIdAndEndDate(UUID raidGroupId, ZonedDateTime endDate, int page, int pageSize, String searchTerm){ - return raidInstanceRepository.findAllByRaidGroupIdAndRaidEndDateAfterAndRaidInstanceNameContainingIgnoreCase(raidGroupId, endDate, searchTerm, PageRequest.of(page, pageSize, Sort.by("raidInstanceName").ascending())); + return raidInstanceRepository.findAllByRaidGroupIdAndRaidEndDateAfterAndRaidInstanceNameContainingIgnoreCase(raidGroupId, endDate, searchTerm, PageRequest.of(page, pageSize, Sort.by("raidEndDate").descending())); } public long countByRaidGroupId(UUID raidGroupId){