db addition
This commit is contained in:
10
pom.xml
10
pom.xml
@@ -35,6 +35,16 @@
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springdoc</groupId>
|
||||
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
package ru.ip.example.domain.entity;
|
||||
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.GeneratedValue;
|
||||
import jakarta.persistence.Id;
|
||||
import jakarta.persistence.JoinColumn;
|
||||
import jakarta.persistence.OneToMany;
|
||||
import jakarta.persistence.Table;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
@@ -7,9 +13,13 @@ import lombok.ToString;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Entity
|
||||
@Table(name = "film")
|
||||
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
|
||||
public class FilmEntity {
|
||||
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@EqualsAndHashCode.Include
|
||||
private Integer id;
|
||||
|
||||
@@ -20,5 +30,7 @@ public class FilmEntity {
|
||||
private Integer releaseYear;
|
||||
|
||||
@ToString.Exclude
|
||||
@OneToMany
|
||||
@JoinColumn(name = "film_id", referencedColumnName = "id")
|
||||
private List<SeazonEntity> seazons;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
package ru.ip.example.domain.entity;
|
||||
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.GeneratedValue;
|
||||
import jakarta.persistence.Id;
|
||||
import jakarta.persistence.JoinColumn;
|
||||
import jakarta.persistence.OneToMany;
|
||||
import jakarta.persistence.Table;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
@@ -7,14 +13,20 @@ import lombok.ToString;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Entity
|
||||
@Table(name = "seazon")
|
||||
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
|
||||
public class SeazonEntity {
|
||||
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@EqualsAndHashCode.Include
|
||||
private Integer id;
|
||||
|
||||
private Integer number;
|
||||
|
||||
@ToString.Exclude
|
||||
@OneToMany
|
||||
@JoinColumn(name = "seazon_id", referencedColumnName = "id")
|
||||
private List<SeriesEntity> series;
|
||||
}
|
||||
|
||||
@@ -1,14 +1,22 @@
|
||||
package ru.ip.example.domain.entity;
|
||||
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.GeneratedValue;
|
||||
import jakarta.persistence.Id;
|
||||
import jakarta.persistence.Table;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@Data
|
||||
@Entity
|
||||
@Table(name = "series")
|
||||
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
|
||||
public class SeriesEntity {
|
||||
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@EqualsAndHashCode.Include
|
||||
private Integer id;
|
||||
|
||||
|
||||
@@ -1,12 +1,20 @@
|
||||
package ru.ip.example.domain.entity;
|
||||
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.GeneratedValue;
|
||||
import jakarta.persistence.Id;
|
||||
import jakarta.persistence.Table;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@Entity
|
||||
@Table(name = "subscribe")
|
||||
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
|
||||
public class SubscribeEntity {
|
||||
|
||||
@Id
|
||||
@GeneratedValue
|
||||
@EqualsAndHashCode.Include
|
||||
private Integer id;
|
||||
|
||||
|
||||
@@ -1,15 +1,8 @@
|
||||
package ru.ip.example.repository;
|
||||
|
||||
import org.springframework.data.repository.CrudRepository;
|
||||
import ru.ip.example.domain.entity.FilmEntity;
|
||||
import java.util.List;
|
||||
|
||||
public interface FilmRepository {
|
||||
|
||||
FilmEntity save(FilmEntity entity);
|
||||
|
||||
List<FilmEntity> findAll();
|
||||
|
||||
FilmEntity findById(Integer id);
|
||||
|
||||
void deleteById(Integer id);
|
||||
public interface FilmRepository extends CrudRepository<FilmEntity, Integer> {
|
||||
}
|
||||
|
||||
@@ -1,18 +1,12 @@
|
||||
package ru.ip.example.repository;
|
||||
|
||||
import org.springframework.data.repository.CrudRepository;
|
||||
import ru.ip.example.domain.SeazonDto;
|
||||
import ru.ip.example.domain.entity.FilmEntity;
|
||||
import ru.ip.example.domain.entity.SeazonEntity;
|
||||
import ru.ip.example.domain.entity.SeriesEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface SeazonRepository {
|
||||
|
||||
List<SeazonEntity> findAll();
|
||||
|
||||
SeazonEntity findById(Integer id);
|
||||
|
||||
SeazonEntity save(SeazonEntity entity);
|
||||
|
||||
void delete(Integer id);
|
||||
public interface SeazonRepository extends CrudRepository<SeazonEntity, Integer> {
|
||||
}
|
||||
|
||||
@@ -1,16 +1,7 @@
|
||||
package ru.ip.example.repository;
|
||||
|
||||
import org.springframework.data.repository.CrudRepository;
|
||||
import ru.ip.example.domain.entity.SeriesEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface SeriesRepository {
|
||||
|
||||
List<SeriesEntity> findAll();
|
||||
|
||||
SeriesEntity findById(int id);
|
||||
|
||||
SeriesEntity save(SeriesEntity entity);
|
||||
|
||||
void delete(Integer id);
|
||||
public interface SeriesRepository extends CrudRepository<SeriesEntity, Integer> {
|
||||
}
|
||||
|
||||
@@ -1,16 +1,7 @@
|
||||
package ru.ip.example.repository;
|
||||
|
||||
import org.springframework.data.repository.CrudRepository;
|
||||
import ru.ip.example.domain.entity.SubscribeEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface SubscribeRepository {
|
||||
|
||||
SubscribeEntity save(SubscribeEntity entity);
|
||||
|
||||
List<SubscribeEntity> findAll();
|
||||
|
||||
SubscribeEntity findById(Integer id);
|
||||
|
||||
void deleteById(Integer id);
|
||||
public interface SubscribeRepository extends CrudRepository<SubscribeEntity, Integer> {
|
||||
}
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
package ru.ip.example.repository.impl;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.ip.example.domain.entity.FilmEntity;
|
||||
import ru.ip.example.repository.FilmRepository;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class FilmRepositoryDao implements FilmRepository {
|
||||
|
||||
private static Integer idSequence = 0;
|
||||
|
||||
private static List<FilmEntity> films = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public FilmEntity save(FilmEntity entity) {
|
||||
if (entity.getId() == null) {
|
||||
entity.setSeazons(new ArrayList<>());
|
||||
entity.setId(idSequence++);
|
||||
films.add(entity);
|
||||
} else if (films.contains(entity)) {
|
||||
FilmEntity film = findById(entity.getId());
|
||||
film.setCategory(entity.getCategory());
|
||||
film.setTitle(entity.getTitle());
|
||||
film.setReleaseYear(entity.getReleaseYear());
|
||||
}
|
||||
System.out.println("save/upd film: " + entity);
|
||||
return entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<FilmEntity> findAll() {
|
||||
return films;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FilmEntity findById(Integer id) {
|
||||
for (FilmEntity film : films) {
|
||||
if (film.getId().equals(id)) {
|
||||
return film;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
//equals реализован только с id, поэтому для remove в entity проставляем только id
|
||||
@Override
|
||||
public void deleteById(Integer id) {
|
||||
FilmEntity filmEntity = new FilmEntity();
|
||||
filmEntity.setId(id);
|
||||
films.remove(filmEntity);
|
||||
}
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
package ru.ip.example.repository.impl;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.ip.example.domain.entity.SeazonEntity;
|
||||
import ru.ip.example.repository.SeazonRepository;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class SeazonRepositoryDao implements SeazonRepository {
|
||||
|
||||
private static Integer SEAZON_SEQ = 0;
|
||||
|
||||
public static List<SeazonEntity> seazons = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public List<SeazonEntity> findAll() {
|
||||
return seazons;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SeazonEntity findById(Integer id) {
|
||||
SeazonEntity seazonEntity = new SeazonEntity();
|
||||
seazonEntity.setId(id);
|
||||
for (SeazonEntity seazon : seazons) {
|
||||
if (seazon.equals(seazonEntity)) {
|
||||
return seazon;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SeazonEntity save(SeazonEntity entity) {
|
||||
if (entity.getId() == null) {
|
||||
entity.setSeries(new ArrayList<>());
|
||||
entity.setId(SEAZON_SEQ++);
|
||||
seazons.add(entity);
|
||||
} else if (seazons.contains(entity)) {
|
||||
SeazonEntity seazon = findById(entity.getId());
|
||||
seazon.setNumber(entity.getNumber());
|
||||
}
|
||||
System.out.println("save/upd seazon: " + entity);
|
||||
return entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(Integer id) {
|
||||
SeazonEntity seazon = new SeazonEntity();
|
||||
seazon.setId(id);
|
||||
seazons.remove(seazon);
|
||||
}
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
package ru.ip.example.repository.impl;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.ip.example.domain.entity.SeriesEntity;
|
||||
import ru.ip.example.repository.SeriesRepository;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class SerialRepositoryDao implements SeriesRepository {
|
||||
|
||||
public static List<SeriesEntity> series = new ArrayList<>();
|
||||
|
||||
private static Integer SERIES_SEQ = 0;
|
||||
|
||||
@Override
|
||||
public List<SeriesEntity> findAll() {
|
||||
return series;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SeriesEntity findById(int id) {
|
||||
SeriesEntity seriesEntity = new SeriesEntity();
|
||||
seriesEntity.setId(id);
|
||||
for (SeriesEntity ser : series) {
|
||||
if (ser.equals(seriesEntity)) {
|
||||
return ser;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SeriesEntity save(SeriesEntity entity) {
|
||||
if (entity.getId() == null) {
|
||||
entity.setId(SERIES_SEQ++);
|
||||
series.add(entity);
|
||||
} else if (series.contains(entity)) {
|
||||
SeriesEntity series1 = findById(entity.getId());
|
||||
series1.setName(entity.getName());
|
||||
series1.setNumber(entity.getNumber());
|
||||
}
|
||||
System.out.println("save/upd series: " + entity);
|
||||
return entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(Integer id) {
|
||||
SeriesEntity seriesEntity = new SeriesEntity();
|
||||
seriesEntity.setId(id);
|
||||
series.remove(seriesEntity);
|
||||
}
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
package ru.ip.example.repository.impl;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.ip.example.domain.entity.SubscribeEntity;
|
||||
import ru.ip.example.repository.SubscribeRepository;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class SubscribeRepositoryDao implements SubscribeRepository {
|
||||
|
||||
private static Integer idSequence = 0;
|
||||
|
||||
private static List<SubscribeEntity> subscribes = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public SubscribeEntity save(SubscribeEntity entity) {
|
||||
if (entity.getId() == null) {
|
||||
entity.setId(idSequence++);
|
||||
subscribes.add(entity);
|
||||
} else if (subscribes.contains(entity)) {
|
||||
SubscribeEntity film = findById(entity.getId());
|
||||
film.setName(entity.getName());
|
||||
film.setSum(entity.getSum());
|
||||
}
|
||||
System.out.println("save/upd film: " + entity);
|
||||
return entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SubscribeEntity> findAll() {
|
||||
return subscribes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubscribeEntity findById(Integer id) {
|
||||
for (SubscribeEntity sub : subscribes) {
|
||||
if (sub.getId().equals(id)) {
|
||||
return sub;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
//equals реализован только с id, поэтому для remove в entity проставляем только id
|
||||
@Override
|
||||
public void deleteById(Integer id) {
|
||||
SubscribeEntity SubscribeEntity = new SubscribeEntity();
|
||||
SubscribeEntity.setId(id);
|
||||
subscribes.remove(SubscribeEntity);
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import ru.ip.example.domain.AddSeazonDto;
|
||||
import ru.ip.example.domain.FilmDto;
|
||||
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.repository.FilmRepository;
|
||||
import ru.ip.example.repository.SeazonRepository;
|
||||
@@ -41,7 +42,7 @@ public class FilmServiceImpl implements FilmService {
|
||||
|
||||
@Override
|
||||
public List<FilmDto> findAllFilms() {
|
||||
List<FilmEntity> filmEntities = filmRepository.findAll();
|
||||
Iterable<FilmEntity> filmEntities = filmRepository.findAll();
|
||||
List<FilmDto> films = new ArrayList<>();
|
||||
for (FilmEntity entity : filmEntities) {
|
||||
FilmDto dto = filmMapper.toDto(entity);
|
||||
@@ -52,7 +53,7 @@ public class FilmServiceImpl implements FilmService {
|
||||
|
||||
@Override
|
||||
public FilmDto findFilmById(Integer id) {
|
||||
FilmEntity film = filmRepository.findById(id);
|
||||
FilmEntity film = filmRepository.findById(id).orElseThrow();
|
||||
return filmMapper.toDto(film);
|
||||
}
|
||||
|
||||
@@ -63,12 +64,14 @@ public class FilmServiceImpl implements FilmService {
|
||||
|
||||
@Override
|
||||
public FilmDto addSeazon(AddSeazonDto addSeazonDto) {
|
||||
SeazonEntity seazonEntity = seazonRepository.findById(addSeazonDto.getSeazonId());
|
||||
FilmEntity film = filmRepository.findById(addSeazonDto.getFilmId());
|
||||
var film = filmRepository.findById(addSeazonDto.getFilmId());
|
||||
var seazon = seazonRepository.findById(addSeazonDto.getSeazonId());
|
||||
|
||||
if (seazonEntity != null && film != null && !film.getSeazons().contains(seazonEntity)) {
|
||||
film.getSeazons().add(seazonEntity);
|
||||
if (film.isPresent() && seazon.isPresent() && !seazon.get().getSeries().contains(film.get())) {
|
||||
film.get().getSeazons().add(seazon.get());
|
||||
FilmEntity save = filmRepository.save(film.get());
|
||||
return filmMapper.toDto(save);
|
||||
}
|
||||
return filmMapper.toDto(film);
|
||||
return filmMapper.toDto(film.get());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import ru.ip.example.service.SeazonService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@@ -26,7 +27,7 @@ public class SeazonServiceImpl implements SeazonService {
|
||||
|
||||
@Override
|
||||
public List<SeazonDto> findAll() {
|
||||
List<SeazonEntity> seazons = seazonRepository.findAll();
|
||||
Iterable<SeazonEntity> seazons = seazonRepository.findAll();
|
||||
List<SeazonDto> seazonDtos = new ArrayList<>();
|
||||
for(SeazonEntity seazon : seazons) {
|
||||
seazonDtos.add(seazonMapper.toDto(seazon));
|
||||
@@ -36,7 +37,7 @@ public class SeazonServiceImpl implements SeazonService {
|
||||
|
||||
@Override
|
||||
public SeazonDto findById(Integer id) {
|
||||
SeazonEntity seazon = seazonRepository.findById(id);
|
||||
SeazonEntity seazon = seazonRepository.findById(id).orElseThrow();
|
||||
return seazonMapper.toDto(seazon);
|
||||
}
|
||||
|
||||
@@ -57,17 +58,21 @@ public class SeazonServiceImpl implements SeazonService {
|
||||
|
||||
@Override
|
||||
public void delete(Integer id) {
|
||||
seazonRepository.delete(id);
|
||||
Optional<SeazonEntity> seazon = seazonRepository.findById(id);
|
||||
seazon.ifPresent(seazonRepository::delete);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SeazonDto addSeries(AddSeriesDto dto) {
|
||||
SeriesEntity series = seriesRepository.findById(dto.getSeriesId());
|
||||
SeazonEntity seazon = seazonRepository.findById(dto.getSeazonId());
|
||||
var series = seriesRepository.findById(dto.getSeriesId());
|
||||
var seazon = seazonRepository.findById(dto.getSeazonId());
|
||||
|
||||
if (series != null && seazon != null && !seazon.getSeries().contains(series)) {
|
||||
seazon.getSeries().add(series);
|
||||
if (series.isPresent() && seazon.isPresent() && !seazon.get().getSeries().contains(series.get())) {
|
||||
|
||||
seazon.get().getSeries().add(series.get());
|
||||
SeazonEntity seazonEntity = seazonRepository.save(seazon.get());
|
||||
return seazonMapper.toDto(seazonEntity);
|
||||
}
|
||||
return seazonMapper.toDto(seazon);
|
||||
return seazonMapper.toDto(seazon.get());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ public class SeriesServiceImpl implements SeriesService {
|
||||
|
||||
@Override
|
||||
public List<SeriesDto> findAll() {
|
||||
List<SeriesEntity> series = seriesRepository.findAll();
|
||||
Iterable<SeriesEntity> series = seriesRepository.findAll();
|
||||
List<SeriesDto> seriesDtos = new ArrayList<>();
|
||||
for(SeriesEntity seazon : series) {
|
||||
seriesDtos.add(seriesMapper.toDto(seazon));
|
||||
@@ -33,7 +33,7 @@ public class SeriesServiceImpl implements SeriesService {
|
||||
|
||||
@Override
|
||||
public SeriesDto findById(Integer id) {
|
||||
SeriesEntity series = seriesRepository.findById(id);
|
||||
SeriesEntity series = seriesRepository.findById(id).orElseThrow();
|
||||
return seriesMapper.toDto(series);
|
||||
}
|
||||
|
||||
@@ -54,6 +54,7 @@ public class SeriesServiceImpl implements SeriesService {
|
||||
|
||||
@Override
|
||||
public void delete(Integer id) {
|
||||
seriesRepository.delete(id);
|
||||
seriesRepository.findById(id)
|
||||
.ifPresent(seriesRepository::delete);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ public class SubscribeServiceImpl implements SubscribeService {
|
||||
|
||||
@Override
|
||||
public List<SubscribeDto> findAllSubscribes() {
|
||||
List<SubscribeEntity> subscribeEntities = subscribeRepository.findAll();
|
||||
Iterable<SubscribeEntity> subscribeEntities = subscribeRepository.findAll();
|
||||
List<SubscribeDto> subscribes = new ArrayList<>();
|
||||
for (SubscribeEntity entity : subscribeEntities) {
|
||||
SubscribeDto dto = subscribeMapper.toDto(entity);
|
||||
@@ -47,7 +47,7 @@ public class SubscribeServiceImpl implements SubscribeService {
|
||||
|
||||
@Override
|
||||
public SubscribeDto findSubscribeById(Integer id) {
|
||||
SubscribeEntity subscribe = subscribeRepository.findById(id);
|
||||
SubscribeEntity subscribe = subscribeRepository.findById(id).orElseThrow();
|
||||
return subscribeMapper.toDto(subscribe);
|
||||
}
|
||||
|
||||
|
||||
@@ -1 +1,7 @@
|
||||
spring.application.name=example
|
||||
spring.datasource.url=jdbc:h2:mem:testdb
|
||||
spring.datasource.driverClassName=org.h2.Driver
|
||||
spring.datasource.username=sa
|
||||
spring.datasource.password=password
|
||||
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
|
||||
spring.h2.console.enabled=true
|
||||
|
||||
Reference in New Issue
Block a user