fixes
This commit is contained in:
@@ -12,7 +12,8 @@ import org.springframework.web.bind.annotation.PutMapping;
|
|||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import ru.ip.example.domain.AddSeazonDto;
|
import ru.ip.example.domain.AddSeazonDto;
|
||||||
import ru.ip.example.domain.FilmDto;
|
import ru.ip.example.domain.FilmRequestDto;
|
||||||
|
import ru.ip.example.domain.FilmResponseDto;
|
||||||
import ru.ip.example.service.FilmService;
|
import ru.ip.example.service.FilmService;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -26,26 +27,26 @@ public class FilmController {
|
|||||||
|
|
||||||
@GetMapping("/films")
|
@GetMapping("/films")
|
||||||
@Operation(description = "Возвращает список всех фильмов")
|
@Operation(description = "Возвращает список всех фильмов")
|
||||||
public List<FilmDto> getAll() {
|
public List<FilmResponseDto> getAll() {
|
||||||
return filmService.findAllFilms();
|
return filmService.findAllFilms();
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/films/{id}")
|
@GetMapping("/films/{id}")
|
||||||
@Operation(description = "Возвращает фильм по id")
|
@Operation(description = "Возвращает фильм по id")
|
||||||
public FilmDto getById(@PathVariable("id") Integer id) {
|
public FilmResponseDto getById(@PathVariable("id") Integer id) {
|
||||||
return filmService.findFilmById(id);
|
return filmService.findFilmById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/films")
|
@PostMapping("/films")
|
||||||
@Operation(description = "Сохраняет фильм")
|
@Operation(description = "Сохраняет фильм")
|
||||||
public FilmDto save(@RequestBody FilmDto filmDto) {
|
public FilmResponseDto save(@RequestBody FilmRequestDto requestDto) {
|
||||||
return filmService.saveFilm(filmDto);
|
return filmService.saveFilm(requestDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PutMapping("/films/{id}")
|
@PutMapping("/films/{id}")
|
||||||
@Operation(description = "Обновляет фильм")
|
@Operation(description = "Обновляет фильм")
|
||||||
public FilmDto update(@Schema(description = "Id фильма") @PathVariable("id") Integer id, @RequestBody FilmDto filmDto) {
|
public FilmResponseDto update(@Schema(description = "Id фильма") @PathVariable("id") Integer id, @RequestBody FilmRequestDto requestDto) {
|
||||||
return filmService.updateFilm(id, filmDto);
|
return filmService.updateFilm(id, requestDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
@DeleteMapping("/films/{id}")
|
@DeleteMapping("/films/{id}")
|
||||||
@@ -56,7 +57,7 @@ public class FilmController {
|
|||||||
|
|
||||||
@PutMapping("/films/seazons")
|
@PutMapping("/films/seazons")
|
||||||
@Operation(description = "Привязать фильм к сезону")
|
@Operation(description = "Привязать фильм к сезону")
|
||||||
public FilmDto addSeazon(@RequestBody AddSeazonDto addSeazonDto) {
|
public FilmResponseDto addSeazon(@RequestBody AddSeazonDto addSeazonDto) {
|
||||||
return filmService.addSeazon(addSeazonDto);
|
return filmService.addSeazon(addSeazonDto);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,8 @@ import org.springframework.web.bind.annotation.PutMapping;
|
|||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import ru.ip.example.domain.AddSeriesDto;
|
import ru.ip.example.domain.AddSeriesDto;
|
||||||
import ru.ip.example.domain.SeazonDto;
|
import ru.ip.example.domain.SeazonRequestDto;
|
||||||
|
import ru.ip.example.domain.SeazonResponseDto;
|
||||||
import ru.ip.example.service.SeazonService;
|
import ru.ip.example.service.SeazonService;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -25,25 +26,25 @@ public class SeazonController {
|
|||||||
|
|
||||||
@GetMapping("/seazons")
|
@GetMapping("/seazons")
|
||||||
@Operation(description = "Получить список сезонов")
|
@Operation(description = "Получить список сезонов")
|
||||||
public List<SeazonDto> getSeazons() {
|
public List<SeazonResponseDto> getSeazons() {
|
||||||
return seazonService.findAll();
|
return seazonService.findAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/seazons/{id}")
|
@GetMapping("/seazons/{id}")
|
||||||
@Operation(description = "Получить сезон по id")
|
@Operation(description = "Получить сезон по id")
|
||||||
public SeazonDto getSeazon(@PathVariable("id") Integer id) {
|
public SeazonResponseDto getSeazon(@PathVariable("id") Integer id) {
|
||||||
return seazonService.findById(id);
|
return seazonService.findById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/seazons")
|
@PostMapping("/seazons")
|
||||||
@Operation(description = "Создать сезон")
|
@Operation(description = "Создать сезон")
|
||||||
public SeazonDto save(@RequestBody SeazonDto dto) {
|
public SeazonResponseDto save(@RequestBody SeazonRequestDto dto) {
|
||||||
return seazonService.save(dto);
|
return seazonService.save(dto);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PutMapping("/seazons/{id}")
|
@PutMapping("/seazons/{id}")
|
||||||
@Operation(description = "Обновить данные сезона")
|
@Operation(description = "Обновить данные сезона")
|
||||||
public SeazonDto update(@PathVariable("id") Integer id, @RequestBody SeazonDto dto) {
|
public SeazonResponseDto update(@PathVariable("id") Integer id, @RequestBody SeazonRequestDto dto) {
|
||||||
return seazonService.update(id, dto);
|
return seazonService.update(id, dto);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,7 +56,7 @@ public class SeazonController {
|
|||||||
|
|
||||||
@PutMapping("/seazons/series")
|
@PutMapping("/seazons/series")
|
||||||
@Operation(description = "Привязать сезон и серию")
|
@Operation(description = "Привязать сезон и серию")
|
||||||
public SeazonDto addSeries(@RequestBody AddSeriesDto dto) {
|
public SeazonResponseDto addSeries(@RequestBody AddSeriesDto dto) {
|
||||||
return seazonService.addSeries(dto);
|
return seazonService.addSeries(dto);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import org.springframework.web.bind.annotation.PostMapping;
|
|||||||
import org.springframework.web.bind.annotation.PutMapping;
|
import org.springframework.web.bind.annotation.PutMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import ru.ip.example.domain.SeazonDto;
|
|
||||||
import ru.ip.example.domain.SeriesDto;
|
import ru.ip.example.domain.SeriesDto;
|
||||||
import ru.ip.example.service.SeriesService;
|
import ru.ip.example.service.SeriesService;
|
||||||
|
|
||||||
|
|||||||
18
src/main/java/ru/ip/example/domain/FilmRequestDto.java
Normal file
18
src/main/java/ru/ip/example/domain/FilmRequestDto.java
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
package ru.ip.example.domain;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Schema(description = "Информация о фильме")
|
||||||
|
public class FilmRequestDto {
|
||||||
|
|
||||||
|
@Schema(description = "Название фильма")
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
@Schema(description = "Категория фильма")
|
||||||
|
private String category;
|
||||||
|
|
||||||
|
@Schema(description = "Год выпуска")
|
||||||
|
private Integer releaseYear;
|
||||||
|
}
|
||||||
@@ -9,7 +9,7 @@ import java.util.List;
|
|||||||
//dto - data transfer object
|
//dto - data transfer object
|
||||||
@Data
|
@Data
|
||||||
@Schema(description = "Информация о фильме")
|
@Schema(description = "Информация о фильме")
|
||||||
public class FilmDto {
|
public class FilmResponseDto {
|
||||||
|
|
||||||
@Schema(description = "Название фильма")
|
@Schema(description = "Название фильма")
|
||||||
private String title;
|
private String title;
|
||||||
@@ -22,5 +22,5 @@ public class FilmDto {
|
|||||||
|
|
||||||
@ToString.Exclude
|
@ToString.Exclude
|
||||||
@Schema(description = "Список сезонов")
|
@Schema(description = "Список сезонов")
|
||||||
private List<SeazonDto> seazons;
|
private List<SeazonResponseDto> seazons;
|
||||||
}
|
}
|
||||||
17
src/main/java/ru/ip/example/domain/SeazonRequestDto.java
Normal file
17
src/main/java/ru/ip/example/domain/SeazonRequestDto.java
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package ru.ip.example.domain;
|
||||||
|
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Schema(description = "Данные сезона")
|
||||||
|
public class SeazonRequestDto {
|
||||||
|
|
||||||
|
@Schema(description = "Номер сезона")
|
||||||
|
private Integer number;
|
||||||
|
|
||||||
|
@Schema(description = "Ссылка на видео анонса сезона")
|
||||||
|
private String anonsVideoLink;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -8,11 +8,14 @@ import java.util.List;
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Schema(description = "Данные сезона")
|
@Schema(description = "Данные сезона")
|
||||||
public class SeazonDto {
|
public class SeazonResponseDto {
|
||||||
|
|
||||||
@Schema(description = "Номер сезона")
|
@Schema(description = "Номер сезона")
|
||||||
private Integer number;
|
private Integer number;
|
||||||
|
|
||||||
|
@Schema(description = "Ссылка на видео анонса сезона")
|
||||||
|
private String anonsVideoLink;
|
||||||
|
|
||||||
@ToString.Exclude
|
@ToString.Exclude
|
||||||
@Schema(description = "Список серий")
|
@Schema(description = "Список серий")
|
||||||
private List<SeriesDto> series;
|
private List<SeriesDto> series;
|
||||||
@@ -27,6 +27,9 @@ public class SeazonEntity {
|
|||||||
@Column(name = "number")
|
@Column(name = "number")
|
||||||
private Integer number;
|
private Integer number;
|
||||||
|
|
||||||
|
@Column(name = "anons_video_link")
|
||||||
|
private String anonsVideoLink;
|
||||||
|
|
||||||
@ToString.Exclude
|
@ToString.Exclude
|
||||||
@OneToMany
|
@OneToMany
|
||||||
@JoinColumn(name = "seazon_id", referencedColumnName = "id")
|
@JoinColumn(name = "seazon_id", referencedColumnName = "id")
|
||||||
|
|||||||
@@ -2,8 +2,9 @@ package ru.ip.example.mapper;
|
|||||||
|
|
||||||
import org.mapstruct.Mapper;
|
import org.mapstruct.Mapper;
|
||||||
import org.mapstruct.Mapping;
|
import org.mapstruct.Mapping;
|
||||||
import ru.ip.example.domain.FilmDto;
|
import ru.ip.example.domain.FilmRequestDto;
|
||||||
import ru.ip.example.domain.SeazonDto;
|
import ru.ip.example.domain.FilmResponseDto;
|
||||||
|
import ru.ip.example.domain.SeazonResponseDto;
|
||||||
import ru.ip.example.domain.entity.FilmEntity;
|
import ru.ip.example.domain.entity.FilmEntity;
|
||||||
import ru.ip.example.domain.entity.SeazonEntity;
|
import ru.ip.example.domain.entity.SeazonEntity;
|
||||||
|
|
||||||
@@ -14,9 +15,9 @@ import java.util.List;
|
|||||||
public interface FilmMapper {
|
public interface FilmMapper {
|
||||||
|
|
||||||
@Mapping(source = "entity.seazons", target = "seazons")
|
@Mapping(source = "entity.seazons", target = "seazons")
|
||||||
FilmDto toDto(FilmEntity entity);
|
FilmResponseDto toDto(FilmEntity entity);
|
||||||
|
|
||||||
List<SeazonDto> toSeazonsList(List<SeazonEntity> seazonEntities);
|
List<SeazonResponseDto> toSeazonsList(List<SeazonEntity> seazonEntities);
|
||||||
|
|
||||||
FilmEntity toEntity(FilmDto dto);
|
FilmEntity toEntity(FilmRequestDto dto);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,8 @@ package ru.ip.example.mapper;
|
|||||||
|
|
||||||
import org.mapstruct.Mapper;
|
import org.mapstruct.Mapper;
|
||||||
import org.mapstruct.Mapping;
|
import org.mapstruct.Mapping;
|
||||||
import ru.ip.example.domain.SeazonDto;
|
import ru.ip.example.domain.SeazonRequestDto;
|
||||||
|
import ru.ip.example.domain.SeazonResponseDto;
|
||||||
import ru.ip.example.domain.SeriesDto;
|
import ru.ip.example.domain.SeriesDto;
|
||||||
import ru.ip.example.domain.entity.SeazonEntity;
|
import ru.ip.example.domain.entity.SeazonEntity;
|
||||||
import ru.ip.example.domain.entity.SeriesEntity;
|
import ru.ip.example.domain.entity.SeriesEntity;
|
||||||
@@ -13,9 +14,9 @@ import java.util.List;
|
|||||||
public interface SeazonMapper {
|
public interface SeazonMapper {
|
||||||
|
|
||||||
@Mapping(source = "entity.series", target = "series")
|
@Mapping(source = "entity.series", target = "series")
|
||||||
SeazonDto toDto(SeazonEntity entity);
|
SeazonResponseDto toDto(SeazonEntity entity);
|
||||||
|
|
||||||
List<SeriesDto> toSeriesList(List<SeriesEntity> seriesEntities);
|
List<SeriesDto> toSeriesList(List<SeriesEntity> seriesEntities);
|
||||||
|
|
||||||
SeazonEntity toEntity(SeazonDto dto);
|
SeazonEntity toEntity(SeazonRequestDto dto);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,22 @@
|
|||||||
package ru.ip.example.service;
|
package ru.ip.example.service;
|
||||||
|
|
||||||
import ru.ip.example.domain.AddSeazonDto;
|
import ru.ip.example.domain.AddSeazonDto;
|
||||||
import ru.ip.example.domain.FilmDto;
|
import ru.ip.example.domain.FilmRequestDto;
|
||||||
|
import ru.ip.example.domain.FilmResponseDto;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface FilmService {
|
public interface FilmService {
|
||||||
|
|
||||||
FilmDto saveFilm(FilmDto dto);
|
FilmResponseDto saveFilm(FilmRequestDto dto);
|
||||||
|
|
||||||
FilmDto updateFilm(Integer id, FilmDto dto);
|
FilmResponseDto updateFilm(Integer id, FilmRequestDto dto);
|
||||||
|
|
||||||
List<FilmDto> findAllFilms();
|
List<FilmResponseDto> findAllFilms();
|
||||||
|
|
||||||
FilmDto findFilmById(Integer id);
|
FilmResponseDto findFilmById(Integer id);
|
||||||
|
|
||||||
void deleteById(Integer id);
|
void deleteById(Integer id);
|
||||||
|
|
||||||
FilmDto addSeazon(AddSeazonDto addSeazonDto);
|
FilmResponseDto addSeazon(AddSeazonDto addSeazonDto);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,22 @@
|
|||||||
package ru.ip.example.service;
|
package ru.ip.example.service;
|
||||||
|
|
||||||
import ru.ip.example.domain.AddSeriesDto;
|
import ru.ip.example.domain.AddSeriesDto;
|
||||||
import ru.ip.example.domain.SeazonDto;
|
import ru.ip.example.domain.SeazonRequestDto;
|
||||||
|
import ru.ip.example.domain.SeazonResponseDto;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface SeazonService {
|
public interface SeazonService {
|
||||||
|
|
||||||
List<SeazonDto> findAll();
|
List<SeazonResponseDto> findAll();
|
||||||
|
|
||||||
SeazonDto findById(Integer id);
|
SeazonResponseDto findById(Integer id);
|
||||||
|
|
||||||
SeazonDto save(SeazonDto dto);
|
SeazonResponseDto save(SeazonRequestDto dto);
|
||||||
|
|
||||||
SeazonDto update(Integer id, SeazonDto dto);
|
SeazonResponseDto update(Integer id, SeazonRequestDto dto);
|
||||||
|
|
||||||
void delete(Integer id);
|
void delete(Integer id);
|
||||||
|
|
||||||
SeazonDto addSeries(AddSeriesDto dto);
|
SeazonResponseDto addSeries(AddSeriesDto dto);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,10 +4,9 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import ru.ip.example.domain.AddSeazonDto;
|
import ru.ip.example.domain.AddSeazonDto;
|
||||||
import ru.ip.example.domain.FilmDto;
|
import ru.ip.example.domain.FilmRequestDto;
|
||||||
|
import ru.ip.example.domain.FilmResponseDto;
|
||||||
import ru.ip.example.domain.entity.FilmEntity;
|
import ru.ip.example.domain.entity.FilmEntity;
|
||||||
import ru.ip.example.domain.entity.SeazonEntity;
|
|
||||||
import ru.ip.example.domain.entity.SeriesEntity;
|
|
||||||
import ru.ip.example.mapper.FilmMapper;
|
import ru.ip.example.mapper.FilmMapper;
|
||||||
import ru.ip.example.repository.FilmRepository;
|
import ru.ip.example.repository.FilmRepository;
|
||||||
import ru.ip.example.repository.SeazonRepository;
|
import ru.ip.example.repository.SeazonRepository;
|
||||||
@@ -28,7 +27,7 @@ public class FilmServiceImpl implements FilmService {
|
|||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public FilmDto saveFilm(FilmDto dto) {
|
public FilmResponseDto saveFilm(FilmRequestDto dto) {
|
||||||
FilmEntity entity = filmMapper.toEntity(dto);
|
FilmEntity entity = filmMapper.toEntity(dto);
|
||||||
FilmEntity savedFilm = filmRepository.save(entity);
|
FilmEntity savedFilm = filmRepository.save(entity);
|
||||||
return filmMapper.toDto(savedFilm);
|
return filmMapper.toDto(savedFilm);
|
||||||
@@ -36,7 +35,7 @@ public class FilmServiceImpl implements FilmService {
|
|||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public FilmDto updateFilm(Integer id, FilmDto dto) {
|
public FilmResponseDto updateFilm(Integer id, FilmRequestDto dto) {
|
||||||
FilmEntity filmEntity = filmMapper.toEntity(dto);
|
FilmEntity filmEntity = filmMapper.toEntity(dto);
|
||||||
filmEntity.setId(id);
|
filmEntity.setId(id);
|
||||||
FilmEntity updatedEntity = filmRepository.save(filmEntity);
|
FilmEntity updatedEntity = filmRepository.save(filmEntity);
|
||||||
@@ -45,11 +44,11 @@ public class FilmServiceImpl implements FilmService {
|
|||||||
|
|
||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
@Override
|
@Override
|
||||||
public List<FilmDto> findAllFilms() {
|
public List<FilmResponseDto> findAllFilms() {
|
||||||
Iterable<FilmEntity> filmEntities = filmRepository.findAll();
|
Iterable<FilmEntity> filmEntities = filmRepository.findAll();
|
||||||
List<FilmDto> films = new ArrayList<>();
|
List<FilmResponseDto> films = new ArrayList<>();
|
||||||
for (FilmEntity entity : filmEntities) {
|
for (FilmEntity entity : filmEntities) {
|
||||||
FilmDto dto = filmMapper.toDto(entity);
|
FilmResponseDto dto = filmMapper.toDto(entity);
|
||||||
films.add(dto);
|
films.add(dto);
|
||||||
}
|
}
|
||||||
return films;
|
return films;
|
||||||
@@ -57,7 +56,7 @@ public class FilmServiceImpl implements FilmService {
|
|||||||
|
|
||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
@Override
|
@Override
|
||||||
public FilmDto findFilmById(Integer id) {
|
public FilmResponseDto findFilmById(Integer id) {
|
||||||
FilmEntity film = filmRepository.findById(id).orElseThrow();
|
FilmEntity film = filmRepository.findById(id).orElseThrow();
|
||||||
return filmMapper.toDto(film);
|
return filmMapper.toDto(film);
|
||||||
}
|
}
|
||||||
@@ -70,11 +69,11 @@ public class FilmServiceImpl implements FilmService {
|
|||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public FilmDto addSeazon(AddSeazonDto addSeazonDto) {
|
public FilmResponseDto addSeazon(AddSeazonDto addSeazonDto) {
|
||||||
var film = filmRepository.findById(addSeazonDto.getFilmId());
|
var film = filmRepository.findById(addSeazonDto.getFilmId());
|
||||||
var seazon = seazonRepository.findById(addSeazonDto.getSeazonId());
|
var seazon = seazonRepository.findById(addSeazonDto.getSeazonId());
|
||||||
|
|
||||||
if (film.isPresent() && seazon.isPresent() && !seazon.get().getSeries().contains(film.get())) {
|
if (film.isPresent() && seazon.isPresent() && !film.get().getSeazons().contains(seazon.get())) {
|
||||||
film.get().getSeazons().add(seazon.get());
|
film.get().getSeazons().add(seazon.get());
|
||||||
FilmEntity save = filmRepository.save(film.get());
|
FilmEntity save = filmRepository.save(film.get());
|
||||||
return filmMapper.toDto(save);
|
return filmMapper.toDto(save);
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import ru.ip.example.domain.AddSeriesDto;
|
import ru.ip.example.domain.AddSeriesDto;
|
||||||
import ru.ip.example.domain.SeazonDto;
|
import ru.ip.example.domain.SeazonRequestDto;
|
||||||
|
import ru.ip.example.domain.SeazonResponseDto;
|
||||||
import ru.ip.example.domain.entity.SeazonEntity;
|
import ru.ip.example.domain.entity.SeazonEntity;
|
||||||
import ru.ip.example.domain.entity.SeriesEntity;
|
|
||||||
import ru.ip.example.mapper.SeazonMapper;
|
import ru.ip.example.mapper.SeazonMapper;
|
||||||
import ru.ip.example.repository.SeazonRepository;
|
import ru.ip.example.repository.SeazonRepository;
|
||||||
import ru.ip.example.repository.SeriesRepository;
|
import ru.ip.example.repository.SeriesRepository;
|
||||||
@@ -28,25 +28,25 @@ public class SeazonServiceImpl implements SeazonService {
|
|||||||
|
|
||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
@Override
|
@Override
|
||||||
public List<SeazonDto> findAll() {
|
public List<SeazonResponseDto> findAll() {
|
||||||
Iterable<SeazonEntity> seazons = seazonRepository.findAll();
|
Iterable<SeazonEntity> seazons = seazonRepository.findAll();
|
||||||
List<SeazonDto> seazonDtos = new ArrayList<>();
|
List<SeazonResponseDto> seazonResponseDtos = new ArrayList<>();
|
||||||
for(SeazonEntity seazon : seazons) {
|
for (SeazonEntity seazon : seazons) {
|
||||||
seazonDtos.add(seazonMapper.toDto(seazon));
|
seazonResponseDtos.add(seazonMapper.toDto(seazon));
|
||||||
}
|
}
|
||||||
return seazonDtos;
|
return seazonResponseDtos;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional(readOnly = true)
|
@Transactional(readOnly = true)
|
||||||
@Override
|
@Override
|
||||||
public SeazonDto findById(Integer id) {
|
public SeazonResponseDto findById(Integer id) {
|
||||||
SeazonEntity seazon = seazonRepository.findById(id).orElseThrow();
|
SeazonEntity seazon = seazonRepository.findById(id).orElseThrow();
|
||||||
return seazonMapper.toDto(seazon);
|
return seazonMapper.toDto(seazon);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public SeazonDto save(SeazonDto dto) {
|
public SeazonResponseDto save(SeazonRequestDto dto) {
|
||||||
SeazonEntity entity = seazonMapper.toEntity(dto);
|
SeazonEntity entity = seazonMapper.toEntity(dto);
|
||||||
SeazonEntity savedEntity = seazonRepository.save(entity);
|
SeazonEntity savedEntity = seazonRepository.save(entity);
|
||||||
return seazonMapper.toDto(savedEntity);
|
return seazonMapper.toDto(savedEntity);
|
||||||
@@ -54,7 +54,7 @@ public class SeazonServiceImpl implements SeazonService {
|
|||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public SeazonDto update(Integer id, SeazonDto dto) {
|
public SeazonResponseDto update(Integer id, SeazonRequestDto dto) {
|
||||||
SeazonEntity entity = seazonMapper.toEntity(dto);
|
SeazonEntity entity = seazonMapper.toEntity(dto);
|
||||||
entity.setId(id);
|
entity.setId(id);
|
||||||
SeazonEntity savedEntity = seazonRepository.save(entity);
|
SeazonEntity savedEntity = seazonRepository.save(entity);
|
||||||
@@ -70,7 +70,7 @@ public class SeazonServiceImpl implements SeazonService {
|
|||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public SeazonDto addSeries(AddSeriesDto dto) {
|
public SeazonResponseDto addSeries(AddSeriesDto dto) {
|
||||||
var series = seriesRepository.findById(dto.getSeriesId());
|
var series = seriesRepository.findById(dto.getSeriesId());
|
||||||
var seazon = seazonRepository.findById(dto.getSeazonId());
|
var seazon = seazonRepository.findById(dto.getSeazonId());
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,7 @@ package ru.ip.example.service.impl;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import ru.ip.example.domain.SeazonDto;
|
|
||||||
import ru.ip.example.domain.SeriesDto;
|
import ru.ip.example.domain.SeriesDto;
|
||||||
import ru.ip.example.domain.entity.SeazonEntity;
|
|
||||||
import ru.ip.example.domain.entity.SeriesEntity;
|
import ru.ip.example.domain.entity.SeriesEntity;
|
||||||
import ru.ip.example.mapper.SeriesMapper;
|
import ru.ip.example.mapper.SeriesMapper;
|
||||||
import ru.ip.example.repository.SeriesRepository;
|
import ru.ip.example.repository.SeriesRepository;
|
||||||
|
|||||||
@@ -12,9 +12,11 @@
|
|||||||
<column name="number" type="int">
|
<column name="number" type="int">
|
||||||
<constraints nullable="false" />
|
<constraints nullable="false" />
|
||||||
</column>
|
</column>
|
||||||
<column name="film_id" type="int">
|
<column name="anons_video_link" type="varchar(255)">
|
||||||
<constraints nullable="false" />
|
<constraints nullable="false" />
|
||||||
</column>
|
</column>
|
||||||
|
<column name="film_id" type="int">
|
||||||
|
</column>
|
||||||
</createTable>
|
</createTable>
|
||||||
<addForeignKeyConstraint baseTableName="seazon" baseColumnNames="film_id" constraintName="film_id_fk" referencedTableName="film"
|
<addForeignKeyConstraint baseTableName="seazon" baseColumnNames="film_id" constraintName="film_id_fk" referencedTableName="film"
|
||||||
referencedColumnNames="id" />
|
referencedColumnNames="id" />
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
<constraints nullable="false" />
|
<constraints nullable="false" />
|
||||||
</column>
|
</column>
|
||||||
<column name="seazon_id" type="int">
|
<column name="seazon_id" type="int">
|
||||||
<constraints nullable="false" />
|
|
||||||
</column>
|
</column>
|
||||||
</createTable>
|
</createTable>
|
||||||
<addForeignKeyConstraint baseTableName="series" baseColumnNames="seazon_id" constraintName="seazon_id_fk"
|
<addForeignKeyConstraint baseTableName="series" baseColumnNames="seazon_id" constraintName="seazon_id_fk"
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
<insert tableName="seazon">
|
<insert tableName="seazon">
|
||||||
<column name="id" value="0" />
|
<column name="id" value="0" />
|
||||||
<column name="number" value="1" />
|
<column name="number" value="1" />
|
||||||
|
<column name="anons_video_link" value="link_to_anons" />
|
||||||
<column name="film_id" value="0" />
|
<column name="film_id" value="0" />
|
||||||
</insert>
|
</insert>
|
||||||
</changeSet>
|
</changeSet>
|
||||||
|
|||||||
@@ -5,10 +5,10 @@
|
|||||||
|
|
||||||
<changeSet author="user" id="series-data">
|
<changeSet author="user" id="series-data">
|
||||||
<insert tableName="series">
|
<insert tableName="series">
|
||||||
<column name="id" value="0" />
|
<column name="id" value="0"/>
|
||||||
<column name="number" value="1" />
|
<column name="number" value="1"/>
|
||||||
<column name="name" value="Начало" />
|
<column name="name" value="Начало"/>
|
||||||
<column name="seazon_id" value="0" />
|
<column name="seazon_id" value="0"/>
|
||||||
</insert>
|
</insert>
|
||||||
</changeSet>
|
</changeSet>
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,6 @@
|
|||||||
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
|
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
|
||||||
<property name="now" value="now()" dbms="h2" />
|
|
||||||
<property name="floatType" value="float4" dbms="h2" />
|
|
||||||
<property name="uuidType" value="uuid" dbms="h2" />
|
|
||||||
<property name="datetimeType" value="datetime(6)" dbms="h2" />
|
|
||||||
<property name="clobType" value="longvarchar" dbms="h2" />
|
|
||||||
<property name="blobType" value="blob" dbms="h2" />
|
|
||||||
<property name="now" value="current_timestamp" dbms="postgresql" />
|
|
||||||
<property name="floatType" value="float4" dbms="postgresql" />
|
|
||||||
<property name="clobType" value="clob" dbms="postgresql" />
|
|
||||||
<property name="blobType" value="blob" dbms="postgresql" />
|
|
||||||
<property name="uuidType" value="uuid" dbms="postgresql" />
|
|
||||||
<property name="datetimeType" value="datetime" dbms="postgresql" />
|
|
||||||
|
|
||||||
<include file="db/migration/0-film-schema.xml" />
|
<include file="db/migration/0-film-schema.xml" />
|
||||||
<include file="db/migration/1-seazon-schema.xml" />
|
<include file="db/migration/1-seazon-schema.xml" />
|
||||||
|
|||||||
Reference in New Issue
Block a user