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.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")
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ public interface FilmRepository extends CrudRepository<FilmEntity, Integer> {
|
||||
@Query(value = "SELECT * FROM film f WHERE f.title = :title", nativeQuery = true)
|
||||
Optional<FilmEntity> 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();
|
||||
}
|
||||
|
||||
@@ -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
|
||||
public CountStatisticDto countStatistic() {
|
||||
CountStatistic countStatistic = filmRepository.countTableStatisticCount();
|
||||
return filmMapper.toCountDto(countStatistic);
|
||||
// CountStatistic countStatistic = filmRepository.countTableStatisticCount();
|
||||
// return filmMapper.toCountDto(countStatistic);
|
||||
return null;
|
||||
}
|
||||
|
||||
@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