package com.mattrixwv.raidbuilder.service; import java.util.List; import java.util.UUID; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.mattrixwv.raidbuilder.entity.PersonCharacter; import com.mattrixwv.raidbuilder.repository.person_character.PersonCharacterRepository; import lombok.RequiredArgsConstructor; @Service @Transactional(rollbackFor = Exception.class) @RequiredArgsConstructor public class PersonCharacterService{ private final PersonCharacterRepository personCharacterRepository; //Write public PersonCharacter createPersonCharacter(PersonCharacter personCharacter){ return personCharacterRepository.save(personCharacter); } public PersonCharacter updatePersonCharacter(PersonCharacter personCharacter){ return personCharacterRepository.save(personCharacter); } public void deletePersonCharacter(UUID personCharacterId){ personCharacterRepository.deleteById(personCharacterId); } public void deletePersonCharactersByPersonId(UUID personId){ personCharacterRepository.deleteAllByPersonId(personId); } public void deletePersonCharactersByPersonIds(Iterable personIds){ personCharacterRepository.deleteAllByPersonIdIn(personIds); } //Read public List getByPersonId(UUID personId){ return personCharacterRepository.findAllByPersonId(personId); } public List getByPersonId(UUID personId, int page, int pageSize){ return personCharacterRepository.findAllByPersonId(personId, PageRequest.of(page, pageSize, Sort.by("characterName").ascending())); } public List getByPersonId(UUID personId, int page, int pageSize, String searchTerm){ return personCharacterRepository.findAllByPersonIdAndCharacterNameContainingIgnoreCase(personId, searchTerm, PageRequest.of(page, pageSize, Sort.by("characterName").ascending())); } public long getCountByPersonId(UUID personId){ return personCharacterRepository.countByPersonId(personId); } public long getCountByPersonId(UUID personId, String searchTerm){ return personCharacterRepository.countByPersonIdAndCharacterNameContainingIgnoreCase(personId, searchTerm); } }