new query add
This commit is contained in:
@@ -18,6 +18,7 @@ import ru.ip.example.domain.FilmRequestDto;
|
|||||||
import ru.ip.example.domain.FilmResponseDto;
|
import ru.ip.example.domain.FilmResponseDto;
|
||||||
import ru.ip.example.domain.entity.CountStatistic;
|
import ru.ip.example.domain.entity.CountStatistic;
|
||||||
import ru.ip.example.service.FilmService;
|
import ru.ip.example.service.FilmService;
|
||||||
|
import ru.ip.example.service.StatisticService;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -28,6 +29,8 @@ public class FilmController {
|
|||||||
|
|
||||||
private final FilmService filmService;
|
private final FilmService filmService;
|
||||||
|
|
||||||
|
private final StatisticService statisticService;
|
||||||
|
|
||||||
@GetMapping("/films/filter")
|
@GetMapping("/films/filter")
|
||||||
@Operation(description = "Ищет фильм по названию")
|
@Operation(description = "Ищет фильм по названию")
|
||||||
public FilmResponseDto getFilmByTitle(@RequestParam(name = "title") String title) {
|
public FilmResponseDto getFilmByTitle(@RequestParam(name = "title") String title) {
|
||||||
@@ -37,7 +40,7 @@ public class FilmController {
|
|||||||
@GetMapping("/films/count")
|
@GetMapping("/films/count")
|
||||||
@Operation(description = "Статистика по кол-вам сущностей")
|
@Operation(description = "Статистика по кол-вам сущностей")
|
||||||
public CountStatisticDto count() {
|
public CountStatisticDto count() {
|
||||||
return filmService.countStatistic();
|
return statisticService.getCountStatistic();
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/films")
|
@GetMapping("/films")
|
||||||
|
|||||||
@@ -1,15 +1,21 @@
|
|||||||
package ru.ip.example.domain;
|
package ru.ip.example.domain;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
public class CountStatisticDto {
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ public interface FilmRepository extends CrudRepository<FilmEntity, Integer> {
|
|||||||
@Query(value = "SELECT * FROM film f WHERE f.title = :title", nativeQuery = true)
|
@Query(value = "SELECT * FROM film f WHERE f.title = :title", nativeQuery = true)
|
||||||
Optional<FilmEntity> findFilmByTitle(@Param("title") String title);
|
Optional<FilmEntity> findFilmByTitle(@Param("title") String title);
|
||||||
|
|
||||||
@Query(value = "SELECT (SELECT count(*) FROM FILM) as filmCount, (SELECT count(*) FROM SEAZON) as seazonCount, " +
|
// @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)
|
// "(SELECT count(*) FROM SERIES) as seriesCount, (SELECT count(*) FROM SUBSCRIBE) as subscribeCount", nativeQuery = true)
|
||||||
CountStatistic countTableStatisticCount();
|
// CountStatistic countTableStatisticCount();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package ru.ip.example.service;
|
||||||
|
|
||||||
|
import ru.ip.example.domain.CountStatisticDto;
|
||||||
|
|
||||||
|
public interface StatisticService {
|
||||||
|
|
||||||
|
CountStatisticDto getCountStatistic();
|
||||||
|
}
|
||||||
@@ -30,8 +30,9 @@ public class FilmServiceImpl implements FilmService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CountStatisticDto countStatistic() {
|
public CountStatisticDto countStatistic() {
|
||||||
CountStatistic countStatistic = filmRepository.countTableStatisticCount();
|
// CountStatistic countStatistic = filmRepository.countTableStatisticCount();
|
||||||
return filmMapper.toCountDto(countStatistic);
|
// return filmMapper.toCountDto(countStatistic);
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user