fix(comp): rm permission and empty poule list on rm

This commit is contained in:
Thibaut Valentin 2025-03-11 10:52:24 +01:00
parent 42711cde5d
commit 15c88c4943

View File

@ -256,16 +256,16 @@ public class CompetitionService {
public Uni<?> delete(SecurityCtx securityCtx, Long id) { public Uni<?> delete(SecurityCtx securityCtx, Long id) {
return repository.findById(id).invoke(Unchecked.consumer(c -> { return repository.findById(id).invoke(Unchecked.consumer(c -> {
if (!securityCtx.getSubject().equals(c.getOwner()) || securityCtx.roleHas("federation_admin")) if (!(securityCtx.getSubject().equals(c.getOwner()) || securityCtx.roleHas("federation_admin")))
throw new DForbiddenException(); throw new DForbiddenException();
})) }))
.call(competitionModel -> pouleRepository.list("compet = ?1", competitionModel) .call(competitionModel -> pouleRepository.list("compet = ?1", competitionModel)
.call(pouleModels -> Uni.join() .call(pouleModels -> pouleModels.isEmpty() ? Uni.createFrom().nullItem() :
.all(pouleModels.stream() Uni.join().all(pouleModels.stream()
.map(pouleModel -> Panache.withTransaction( .map(pouleModel -> Panache.withTransaction(
() -> matchRepository.delete("poule = ?1", pouleModel.getId()))) () -> matchRepository.delete("poule = ?1", pouleModel.getId())))
.toList()) .toList())
.andCollectFailures())) .andCollectFailures()))
.call(competitionModel -> Panache.withTransaction( .call(competitionModel -> Panache.withTransaction(
() -> pouleRepository.delete("compet = ?1", competitionModel))) () -> pouleRepository.delete("compet = ?1", competitionModel)))
.chain(model -> Panache.withTransaction(() -> repository.delete("id", model.getId()))) .chain(model -> Panache.withTransaction(() -> repository.delete("id", model.getId())))