try to fix bug

develop
bvn13 2020-04-21 02:34:14 +03:00
parent 5264c5c870
commit 5504a0b063
2 changed files with 14 additions and 10 deletions

View File

@ -32,13 +32,19 @@ import java.util.Optional;
@Repository
public interface CovidUpdatesRepository extends JpaRepository<CovidUpdate, Long> {
@Query("select new com.bvn13.covid19.site.dtos.CovidUpdateInfoDto(max(U.createdOn)) from CovidUpdate U")
@Query("select new com.bvn13.covid19.site.dtos.CovidUpdateInfoDto(max(U.createdOn))" +
" from CovidUpdate U")
Optional<CovidUpdateInfoDto> findLastUpdate();
@Query("select U from CovidUpdate U where U.datetime >= :date1 and U.datetime < :date2")
Optional<CovidUpdate> findByDateOfUpdate(@Param("date1") ZonedDateTime date1, @Param("date2") ZonedDateTime date2);
@Query("select new com.bvn13.covid19.site.dtos.CovidUpdateInfoDto(max(U.createdOn))" +
" from CovidUpdate U" +
" where U.datetime >= :date1" +
" and U.datetime < :date2")
Optional<CovidUpdateInfoDto> findByDateOfUpdate(@Param("date1") ZonedDateTime date1, @Param("date2") ZonedDateTime date2);
@Query("select U from CovidUpdate U where U.id in (select max(U1.id) from CovidUpdate U1 group by U1.datetime)")
@Query("select U" +
" from CovidUpdate U" +
" where U.id in (select max(U1.id) from CovidUpdate U1 group by U1.datetime)")
Collection<CovidUpdate> findAllLastUpdatesPerDay();
Optional<CovidUpdate> findFirstByCreatedOn(LocalDateTime createdOn);

View File

@ -19,6 +19,7 @@ package com.bvn13.covid19.site.service;
import com.bvn13.covid19.model.entities.CovidStat;
import com.bvn13.covid19.model.entities.CovidUpdate;
import com.bvn13.covid19.model.entities.Region;
import com.bvn13.covid19.site.dtos.CovidUpdateInfoDto;
import com.bvn13.covid19.site.repositories.CovidStatsRepository;
import com.bvn13.covid19.site.repositories.CovidUpdatesRepository;
import com.bvn13.covid19.site.repositories.RegionsRepository;
@ -92,15 +93,12 @@ public class StatisticsPreparator {
if (date.isBefore(projectStartZonedDate)) {
return Optional.empty();
} else {
Optional<CovidUpdate> update = updatesRepository.findByDateOfUpdate(
Optional<CovidUpdateInfoDto> update = updatesRepository.findByDateOfUpdate(
dateWithTime(prevDate(date), 0, 0, 0),
dateWithTime(date, 0, 0, 0)
);
if (update.isPresent()) {
return update;
} else {
return findPrevUpdateByDate(prevDate(date));
}
return update.map(upd -> updatesRepository.findFirstByCreatedOn(update.get().getCreatedOn()))
.orElse(findPrevUpdateByDate(prevDate(date)));
}
}