custom request

This commit is contained in:
2025-05-21 17:51:37 +04:00
parent ac625cd19e
commit 827bed6437
4 changed files with 24 additions and 0 deletions

View File

@@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import ru.ip.example.domain.AddSeazonDto;
import ru.ip.example.domain.FilmDto;
@@ -24,6 +25,12 @@ public class FilmController {
private final FilmService filmService;
@GetMapping("/films/filter")
@Operation(description = "Ищет фильм по названию")
public FilmDto getFilmByTitle(@RequestParam(name = "title") String title) {
return filmService.findFilmByTitle(title);
}
@GetMapping("/films")
@Operation(description = "Возвращает список всех фильмов")
public List<FilmDto> getAll() {

View File

@@ -1,7 +1,14 @@
package ru.ip.example.repository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import ru.ip.example.domain.entity.FilmEntity;
import java.util.Optional;
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);
}

View File

@@ -7,6 +7,8 @@ import java.util.List;
public interface FilmService {
FilmDto findFilmByTitle(String title);
FilmDto saveFilm(FilmDto dto);
FilmDto updateFilm(Integer id, FilmDto dto);

View File

@@ -15,6 +15,7 @@ import ru.ip.example.service.FilmService;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@Service
@RequiredArgsConstructor
@@ -26,6 +27,13 @@ public class FilmServiceImpl implements FilmService {
private final SeazonRepository seazonRepository;
@Transactional(readOnly = true)
@Override
public FilmDto findFilmByTitle(String title) {
FilmEntity filmByTitle = filmRepository.findFilmByTitle(title).orElseThrow();
return filmMapper.toDto(filmByTitle);
}
@Transactional
@Override
public FilmDto saveFilm(FilmDto dto) {