diff --git a/src/main/java/ru/ip/example/controller/FilmController.java b/src/main/java/ru/ip/example/controller/FilmController.java index 947a3de..f9fc5d7 100644 --- a/src/main/java/ru/ip/example/controller/FilmController.java +++ b/src/main/java/ru/ip/example/controller/FilmController.java @@ -18,6 +18,7 @@ import ru.ip.example.domain.FilmRequestDto; import ru.ip.example.domain.FilmResponseDto; import ru.ip.example.domain.entity.CountStatistic; import ru.ip.example.service.FilmService; +import ru.ip.example.service.StatisticService; import java.util.List; @@ -28,6 +29,8 @@ public class FilmController { private final FilmService filmService; + private final StatisticService statisticService; + @GetMapping("/films/filter") @Operation(description = "Ищет фильм по названию") public FilmResponseDto getFilmByTitle(@RequestParam(name = "title") String title) { @@ -37,7 +40,7 @@ public class FilmController { @GetMapping("/films/count") @Operation(description = "Статистика по кол-вам сущностей") public CountStatisticDto count() { - return filmService.countStatistic(); + return statisticService.getCountStatistic(); } @GetMapping("/films") diff --git a/src/main/java/ru/ip/example/domain/CountStatisticDto.java b/src/main/java/ru/ip/example/domain/CountStatisticDto.java index 42b1048..ae6813f 100644 --- a/src/main/java/ru/ip/example/domain/CountStatisticDto.java +++ b/src/main/java/ru/ip/example/domain/CountStatisticDto.java @@ -1,15 +1,21 @@ package ru.ip.example.domain; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; @Data +@Builder +@NoArgsConstructor +@AllArgsConstructor public class CountStatisticDto { - private int filmCount; + private long filmCount; - private int seazonCount; + private long seazonCount; - private int seriesCount; + private long seriesCount; - private int subscribeCount; + private long subscribeCount; } diff --git a/src/main/java/ru/ip/example/repository/FilmRepository.java b/src/main/java/ru/ip/example/repository/FilmRepository.java index 1749392..5736f0a 100644 --- a/src/main/java/ru/ip/example/repository/FilmRepository.java +++ b/src/main/java/ru/ip/example/repository/FilmRepository.java @@ -13,7 +13,7 @@ public interface FilmRepository extends CrudRepository { @Query(value = "SELECT * FROM film f WHERE f.title = :title", nativeQuery = true) Optional findFilmByTitle(@Param("title") String title); - @Query(value = "SELECT (SELECT count(*) FROM FILM) as filmCount, (SELECT count(*) FROM SEAZON) as seazonCount, " + - "(SELECT count(*) FROM SERIES) as seriesCount, (SELECT count(*) FROM SUBSCRIBE) as subscribeCount", nativeQuery = true) - CountStatistic countTableStatisticCount(); +// @Query(value = "SELECT (SELECT count(*) FROM FILM) as filmCount, (SELECT count(*) FROM SEAZON) as seazonCount, " + +// "(SELECT count(*) FROM SERIES) as seriesCount, (SELECT count(*) FROM SUBSCRIBE) as subscribeCount", nativeQuery = true) +// CountStatistic countTableStatisticCount(); } diff --git a/src/main/java/ru/ip/example/service/StatisticService.java b/src/main/java/ru/ip/example/service/StatisticService.java new file mode 100644 index 0000000..38c7d7d --- /dev/null +++ b/src/main/java/ru/ip/example/service/StatisticService.java @@ -0,0 +1,8 @@ +package ru.ip.example.service; + +import ru.ip.example.domain.CountStatisticDto; + +public interface StatisticService { + + CountStatisticDto getCountStatistic(); +} diff --git a/src/main/java/ru/ip/example/service/impl/FilmServiceImpl.java b/src/main/java/ru/ip/example/service/impl/FilmServiceImpl.java index 792ea46..985f371 100644 --- a/src/main/java/ru/ip/example/service/impl/FilmServiceImpl.java +++ b/src/main/java/ru/ip/example/service/impl/FilmServiceImpl.java @@ -30,8 +30,9 @@ public class FilmServiceImpl implements FilmService { @Override public CountStatisticDto countStatistic() { - CountStatistic countStatistic = filmRepository.countTableStatisticCount(); - return filmMapper.toCountDto(countStatistic); +// CountStatistic countStatistic = filmRepository.countTableStatisticCount(); +// return filmMapper.toCountDto(countStatistic); + return null; } @Transactional(readOnly = true) diff --git a/src/main/java/ru/ip/example/service/impl/StatisticServiceImpl.java b/src/main/java/ru/ip/example/service/impl/StatisticServiceImpl.java new file mode 100644 index 0000000..ea48e6b --- /dev/null +++ b/src/main/java/ru/ip/example/service/impl/StatisticServiceImpl.java @@ -0,0 +1,37 @@ +package ru.ip.example.service.impl; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import ru.ip.example.domain.CountStatisticDto; +import ru.ip.example.repository.FilmRepository; +import ru.ip.example.repository.SeazonRepository; +import ru.ip.example.repository.SeriesRepository; +import ru.ip.example.repository.SubscribeRepository; +import ru.ip.example.service.StatisticService; + +@Service +@RequiredArgsConstructor +public class StatisticServiceImpl implements StatisticService { + + private final FilmRepository filmRepository; + + private final SeazonRepository seazonRepository; + + private final SeriesRepository seriesRepository; + + private final SubscribeRepository subscribeRepository; + + @Override + public CountStatisticDto getCountStatistic() { + long filmCount = filmRepository.count(); + long seazonCount = seazonRepository.count(); + long seriesCount = seriesRepository.count(); + long subscribeCount = subscribeRepository.count(); + return CountStatisticDto.builder() + .filmCount(filmCount) + .seazonCount(seazonCount) + .seriesCount(seriesCount) + .subscribeCount(subscribeCount) + .build(); + } +}