репозитории используются по минимуму, однако такой код мне нравится меньше
This commit is contained in:
parent
e7fc79a52b
commit
6c6e8f96aa
@ -4,6 +4,7 @@ package com.LabWork.app.MangaStore.controller;
|
||||
import com.LabWork.app.MangaStore.model.Dto.MangaReaderDto;
|
||||
import com.LabWork.app.MangaStore.model.Dto.ReaderMangaDto;
|
||||
import com.LabWork.app.MangaStore.model.Dto.SupportDto.MangaDto;
|
||||
import com.LabWork.app.MangaStore.service.CreatorService;
|
||||
import com.LabWork.app.MangaStore.service.MangaService;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@ -14,9 +15,11 @@ import java.util.List;
|
||||
@RequestMapping("/manga")
|
||||
public class MangaController {
|
||||
private final MangaService mangaService;
|
||||
|
||||
public MangaController(MangaService mangaService) {
|
||||
private final CreatorService creatorService;
|
||||
public MangaController(MangaService mangaService,
|
||||
CreatorService creatorService) {
|
||||
this.mangaService = mangaService;
|
||||
this.creatorService = creatorService;
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
@ -58,7 +61,7 @@ public class MangaController {
|
||||
|
||||
@PostMapping
|
||||
public MangaDto createManga(@RequestBody @Valid MangaDto mangaDto) {
|
||||
return new MangaDto(mangaService.addManga(mangaDto));
|
||||
return new MangaDto(creatorService.addManga(mangaDto));
|
||||
}
|
||||
|
||||
@PutMapping("/{id}")
|
||||
|
@ -3,6 +3,8 @@ package com.LabWork.app.MangaStore.controller;
|
||||
|
||||
import com.LabWork.app.MangaStore.model.Dto.ReaderMangaDto;
|
||||
import com.LabWork.app.MangaStore.model.Dto.SupportDto.MangaDto;
|
||||
import com.LabWork.app.MangaStore.service.CreatorService;
|
||||
import com.LabWork.app.MangaStore.service.MangaService;
|
||||
import com.LabWork.app.MangaStore.service.ReaderService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@ -12,9 +14,12 @@ import java.util.List;
|
||||
@RequestMapping("/reader")
|
||||
public class ReaderController {
|
||||
private final ReaderService readerService;
|
||||
private final MangaService mangaService;
|
||||
|
||||
public ReaderController(ReaderService readerService) {
|
||||
public ReaderController(ReaderService readerService,
|
||||
MangaService mangaService) {
|
||||
this.readerService = readerService;
|
||||
this.mangaService = mangaService;
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
@ -45,13 +50,13 @@ public class ReaderController {
|
||||
@PutMapping("/{id}/addManga")
|
||||
public MangaDto addManga(@PathVariable Long id,
|
||||
@RequestParam("mangaId") Long mangaId) {
|
||||
return new MangaDto(readerService.addManga(mangaId, id));
|
||||
return new MangaDto(mangaService.addMangaToReader(mangaId, id));
|
||||
}
|
||||
|
||||
@PutMapping("/{id}/removeManga")
|
||||
public MangaDto removeManga(@PathVariable Long id,
|
||||
@RequestParam("mangaId") Long mangaId) {
|
||||
return new MangaDto(readerService.removeManga(mangaId, id));
|
||||
return new MangaDto(mangaService.removeMangaToReader(mangaId, id));
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
|
@ -3,6 +3,7 @@ package com.LabWork.app.MangaStore.service;
|
||||
import com.LabWork.app.MangaStore.model.Default.Creator;
|
||||
import com.LabWork.app.MangaStore.model.Default.Manga;
|
||||
import com.LabWork.app.MangaStore.model.Default.Reader;
|
||||
import com.LabWork.app.MangaStore.model.Dto.SupportDto.MangaDto;
|
||||
import com.LabWork.app.MangaStore.service.Exception.MangaNotFoundException;
|
||||
import com.LabWork.app.MangaStore.service.Repository.CreatorRepository;
|
||||
import com.LabWork.app.MangaStore.service.Exception.CreatorNotFoundException;
|
||||
@ -18,13 +19,16 @@ import java.util.Optional;
|
||||
public class CreatorService {
|
||||
private final CreatorRepository creatorRepository;
|
||||
private final MangaService mangaService;
|
||||
private final MangaRepository mangaRepository;
|
||||
private final ValidatorUtil validatorUtil;
|
||||
|
||||
public CreatorService(CreatorRepository creatorRepository,
|
||||
MangaService mangaService,
|
||||
ValidatorUtil validatorUtil) {
|
||||
ValidatorUtil validatorUtil,
|
||||
MangaRepository mangaRepository) {
|
||||
this.creatorRepository = creatorRepository;
|
||||
this.mangaService = mangaService;
|
||||
this.mangaRepository = mangaRepository;
|
||||
this.validatorUtil = validatorUtil;
|
||||
}
|
||||
|
||||
@ -70,4 +74,20 @@ public class CreatorService {
|
||||
public void deleteAllCreators() {
|
||||
creatorRepository.deleteAll();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Manga addManga(Long creatorId, Integer chapterCount, String mangaName) {
|
||||
final Creator currentCreator = findCreator(creatorId);
|
||||
final Manga manga = new Manga(currentCreator, mangaName, chapterCount);
|
||||
validatorUtil.validate(manga);
|
||||
return mangaRepository.save(manga);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Manga addManga(MangaDto mangaDto) {
|
||||
final Creator currentCreator = findCreator(mangaDto.getCreatorId());
|
||||
final Manga manga = new Manga(currentCreator, mangaDto);
|
||||
validatorUtil.validate(manga);
|
||||
return mangaRepository.save(manga);
|
||||
}
|
||||
}
|
||||
|
@ -17,17 +17,14 @@ import java.util.Optional;
|
||||
@Service
|
||||
public class MangaService {
|
||||
public final MangaRepository mangaRepository;
|
||||
public final CreatorRepository creatorRepository;
|
||||
public final ReaderService readerService;
|
||||
private final ValidatorUtil validatorUtil;
|
||||
|
||||
public MangaService(MangaRepository mangaRepository,
|
||||
CreatorRepository creatorRepository,
|
||||
ReaderService readerService,
|
||||
ValidatorUtil validatorUtil) {
|
||||
this.mangaRepository = mangaRepository;
|
||||
this.readerService = readerService;
|
||||
this.creatorRepository = creatorRepository;
|
||||
this.validatorUtil = validatorUtil;
|
||||
}
|
||||
|
||||
@ -49,28 +46,6 @@ public class MangaService {
|
||||
return mangaRepository.findAll();
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public Creator findCreator(Long id) {
|
||||
final Optional<Creator> creator = creatorRepository.findById(id);
|
||||
return creator.orElseThrow(() -> new CreatorNotFoundException(id));
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Manga addManga(Long creatorId, Integer chapterCount, String mangaName) {
|
||||
final Creator currentCreator = findCreator(creatorId);
|
||||
final Manga manga = new Manga(currentCreator, mangaName, chapterCount);
|
||||
validatorUtil.validate(manga);
|
||||
return mangaRepository.save(manga);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Manga addManga(MangaDto mangaDto) {
|
||||
final Creator currentCreator = findCreator(mangaDto.getCreatorId());
|
||||
final Manga manga = new Manga(currentCreator, mangaDto);
|
||||
validatorUtil.validate(manga);
|
||||
return mangaRepository.save(manga);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Manga updateManga(Long id, Integer chapterCount) {
|
||||
final Manga currentManga = findManga(id);
|
||||
@ -103,4 +78,25 @@ public class MangaService {
|
||||
public void deleteAllMangas() {
|
||||
mangaRepository.deleteAll();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Manga addMangaToReader(Long mangaId, Long readerId) {
|
||||
final Manga manga = findManga(mangaId);
|
||||
final Reader reader = readerService.findReader(readerId);
|
||||
validatorUtil.validate(reader);
|
||||
if (reader.getMangas().contains(manga))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
reader.getMangas().add(manga);
|
||||
return manga;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Manga removeMangaToReader(Long mangaId, Long readerId) {
|
||||
final Reader currentReader = readerService.findReader(readerId);
|
||||
final Manga currentManga = findManga(mangaId);
|
||||
currentReader.getMangas().remove(currentManga);
|
||||
return currentManga;
|
||||
}
|
||||
}
|
||||
|
@ -16,14 +16,11 @@ import java.util.Optional;
|
||||
@Service
|
||||
public class ReaderService {
|
||||
private final ReaderRepository readerRepository;
|
||||
private final MangaRepository mangaRepository;
|
||||
private final ValidatorUtil validatorUtil;
|
||||
|
||||
public ReaderService(ReaderRepository readerRepository,
|
||||
ValidatorUtil validatorUtil,
|
||||
MangaRepository mangaRepository) {
|
||||
ValidatorUtil validatorUtil) {
|
||||
this.readerRepository = readerRepository;
|
||||
this.mangaRepository = mangaRepository;
|
||||
this.validatorUtil = validatorUtil;
|
||||
}
|
||||
|
||||
@ -54,10 +51,6 @@ public class ReaderService {
|
||||
return currentReader;
|
||||
}
|
||||
|
||||
public void addManga(Long readerId, List<Manga> mangas) {
|
||||
readerRepository.findById(readerId).get().setMangas(mangas);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Reader deleteReader(Long id) {
|
||||
final Reader currentReader = findReader(id);
|
||||
@ -70,31 +63,4 @@ public class ReaderService {
|
||||
public void deleteAllReaders() {
|
||||
readerRepository.deleteAll();
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
public Manga findManga(Long id) {
|
||||
final Optional<Manga> manga = mangaRepository.findById(id);
|
||||
return manga.orElseThrow(() -> new MangaNotFoundException(id));
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Manga addManga(Long mangaId, Long readerId) {
|
||||
final Manga manga = findManga(mangaId);
|
||||
final Reader reader = findReader(readerId);
|
||||
validatorUtil.validate(reader);
|
||||
if (reader.getMangas().contains(manga))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
reader.getMangas().add(manga);
|
||||
return manga;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Manga removeManga(Long mangaId, Long readerId) {
|
||||
final Reader currentReader = findReader(readerId);
|
||||
final Manga currentManga = findManga(mangaId);
|
||||
currentReader.getMangas().remove(currentManga);
|
||||
return currentManga;
|
||||
}
|
||||
}
|
||||
|
@ -32,12 +32,12 @@ public class ReMangaTest {
|
||||
mangaService.deleteAllMangas();
|
||||
creatorService.deleteAllCreators();
|
||||
Creator c1 = creatorService.addCreator("first_C", "1");
|
||||
Manga m1 = mangaService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = mangaService.addManga(c1.getId(), 10, "Berserk");
|
||||
Manga m1 = creatorService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = creatorService.addManga(c1.getId(), 10, "Berserk");
|
||||
Reader r1 = readerService.addReader("first_R", "1");
|
||||
|
||||
readerService.addManga(m1.getId(), r1.getId());
|
||||
readerService.addManga(m2.getId(), r1.getId());
|
||||
mangaService.addMangaToReader(m1.getId(), r1.getId());
|
||||
mangaService.addMangaToReader(m2.getId(), r1.getId());
|
||||
|
||||
Reader r11 = readerService.findReader(r1.getId());
|
||||
readerService.deleteReader(r11.getId());
|
||||
@ -54,13 +54,13 @@ public class ReMangaTest {
|
||||
mangaService.deleteAllMangas();
|
||||
creatorService.deleteAllCreators();
|
||||
Creator c1 = creatorService.addCreator("first_C", "1");
|
||||
Manga m1 = mangaService.addManga(c1.getId(), 0, "vagabond");
|
||||
Manga m1 = creatorService.addManga(c1.getId(), 0, "vagabond");
|
||||
Reader r1 = readerService.addReader("first_R", "1");
|
||||
Reader r2 = readerService.addReader("2", "2");
|
||||
Reader r3 = readerService.addReader("3", "3");
|
||||
|
||||
readerService.addManga(m1.getId(), r1.getId());
|
||||
readerService.addManga(m1.getId(), r2.getId());
|
||||
mangaService.addMangaToReader(m1.getId(), r1.getId());
|
||||
mangaService.addMangaToReader(m1.getId(), r2.getId());
|
||||
|
||||
log.info(r1.getMangas().toString());
|
||||
|
||||
@ -93,9 +93,9 @@ public class ReMangaTest {
|
||||
mangaService.deleteAllMangas();
|
||||
creatorService.deleteAllCreators();
|
||||
Creator c1 = creatorService.addCreator("first", "1");
|
||||
Manga m1 = mangaService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = mangaService.addManga(c1.getId(), 10, "Berserk");
|
||||
Manga m3 = mangaService.addManga(c1.getId(), 0, "Manga_3");
|
||||
Manga m1 = creatorService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = creatorService.addManga(c1.getId(), 10, "Berserk");
|
||||
Manga m3 = creatorService.addManga(c1.getId(), 0, "Manga_3");
|
||||
Creator c2 = creatorService.findCreator(c1.getId());
|
||||
Assertions.assertEquals(3, c2.getMangas().size());
|
||||
readerService.deleteAllReaders();
|
||||
@ -187,8 +187,8 @@ public class ReMangaTest {
|
||||
mangaService.deleteAllMangas();
|
||||
creatorService.deleteAllCreators();
|
||||
Creator c1 = creatorService.addCreator("first", "1");
|
||||
Manga m1 = mangaService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = mangaService.addManga(c1.getId(), 10, "Berserk");
|
||||
Manga m1 = creatorService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = creatorService.addManga(c1.getId(), 10, "Berserk");
|
||||
creatorService.deleteCreator(c1.getId());
|
||||
log.info(mangaService.findAllMangas().toString());
|
||||
Assertions.assertEquals(0, mangaService.findAllMangas().size());
|
||||
@ -217,11 +217,11 @@ public class ReMangaTest {
|
||||
mangaService.deleteAllMangas();
|
||||
creatorService.deleteAllCreators();
|
||||
Creator c1 = creatorService.addCreator("first", "1");
|
||||
Manga m1 = mangaService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = mangaService.addManga(c1.getId(), 10, "Berserk");
|
||||
Manga m1 = creatorService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = creatorService.addManga(c1.getId(), 10, "Berserk");
|
||||
Reader r1 = readerService.addReader("1", "1");
|
||||
readerService.addManga(m1.getId(), r1.getId());
|
||||
readerService.addManga(m2.getId(), r1.getId());
|
||||
mangaService.addMangaToReader(m1.getId(), r1.getId());
|
||||
mangaService.addMangaToReader(m2.getId(), r1.getId());
|
||||
creatorService.deleteCreator(c1.getId());
|
||||
log.info(mangaService.findAllMangas().toString());
|
||||
Assertions.assertEquals(0, mangaService.findAllMangas().size());
|
||||
@ -236,8 +236,8 @@ public class ReMangaTest {
|
||||
mangaService.deleteAllMangas();
|
||||
creatorService.deleteAllCreators();
|
||||
Creator c1 = creatorService.addCreator("first", "1");
|
||||
Manga m1 = mangaService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = mangaService.addManga(c1.getId(), 10, "Berserk");
|
||||
Manga m1 = creatorService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = creatorService.addManga(c1.getId(), 10, "Berserk");
|
||||
c1 = creatorService.findCreator(c1.getId());
|
||||
m1 = mangaService.findManga(m1.getId());
|
||||
log.info(c1.getMangas().toString());
|
||||
@ -254,7 +254,7 @@ public class ReMangaTest {
|
||||
mangaService.deleteAllMangas();
|
||||
creatorService.deleteAllCreators();
|
||||
Creator c1 = creatorService.addCreator("first", "1");
|
||||
Manga m1 = mangaService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m1 = creatorService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = mangaService.updateManga(m1.getId(), 10);
|
||||
m2 = mangaService.findManga(m2.getId());
|
||||
c1 = creatorService.findCreator(c1.getId());
|
||||
@ -274,12 +274,12 @@ public class ReMangaTest {
|
||||
mangaService.deleteAllMangas();
|
||||
creatorService.deleteAllCreators();
|
||||
Creator c1 = creatorService.addCreator("first", "1");
|
||||
Manga m1 = mangaService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = mangaService.addManga(c1.getId(), 10, "Berserk");
|
||||
Manga m1 = creatorService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = creatorService.addManga(c1.getId(), 10, "Berserk");
|
||||
Reader r1 = readerService.addReader("reader1", "password1");
|
||||
|
||||
readerService.addManga(m1.getId(), r1.getId());
|
||||
readerService.addManga(m2.getId(), r1.getId());
|
||||
mangaService.addMangaToReader(m1.getId(), r1.getId());
|
||||
mangaService.addMangaToReader(m2.getId(), r1.getId());
|
||||
mangaService.deleteManga(m1.getId());
|
||||
r1 = readerService.findReader(r1.getId());
|
||||
|
||||
@ -299,8 +299,8 @@ public class ReMangaTest {
|
||||
mangaService.deleteAllMangas();
|
||||
creatorService.deleteAllCreators();
|
||||
Creator c1 = creatorService.addCreator("first", "1");
|
||||
Manga m1 = mangaService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = mangaService.addManga(c1.getId(), 10, "Berserk");
|
||||
Manga m1 = creatorService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = creatorService.addManga(c1.getId(), 10, "Berserk");
|
||||
mangaService.deleteAllMangas();
|
||||
Assertions.assertEquals(0, mangaService.findAllMangas().size());
|
||||
readerService.deleteAllReaders();
|
||||
@ -314,12 +314,12 @@ public class ReMangaTest {
|
||||
mangaService.deleteAllMangas();
|
||||
creatorService.deleteAllCreators();
|
||||
Creator c1 = creatorService.addCreator("first_C", "1");
|
||||
Manga m1 = mangaService.addManga(c1.getId(), 0, "vagabond");
|
||||
Manga m2 = mangaService.addManga(c1.getId(), 10, "Berserk");
|
||||
Manga m1 = creatorService.addManga(c1.getId(), 0, "vagabond");
|
||||
Manga m2 = creatorService.addManga(c1.getId(), 10, "Berserk");
|
||||
Reader r1 = readerService.addReader("first_R", "1");
|
||||
|
||||
readerService.addManga(m1.getId(), r1.getId());
|
||||
readerService.addManga(m2.getId(), r1.getId());
|
||||
mangaService.addMangaToReader(m1.getId(), r1.getId());
|
||||
mangaService.addMangaToReader(m2.getId(), r1.getId());
|
||||
|
||||
log.info(r1.getMangas().toString());
|
||||
|
||||
@ -358,15 +358,15 @@ public class ReMangaTest {
|
||||
mangaService.deleteAllMangas();
|
||||
creatorService.deleteAllCreators();
|
||||
Creator c1 = creatorService.addCreator("first_C", "1");
|
||||
Manga m1 = mangaService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = mangaService.addManga(c1.getId(), 10, "Berserk");
|
||||
Manga m1 = creatorService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = creatorService.addManga(c1.getId(), 10, "Berserk");
|
||||
Reader r1 = readerService.addReader("first_R", "1");
|
||||
|
||||
readerService.addManga(m1.getId(), r1.getId());
|
||||
readerService.addManga(m2.getId(), r1.getId());
|
||||
mangaService.addMangaToReader(m1.getId(), r1.getId());
|
||||
mangaService.addMangaToReader(m2.getId(), r1.getId());
|
||||
|
||||
Reader r11 = readerService.findReader(r1.getId());
|
||||
readerService.removeManga(m1.getId(), r11.getId());
|
||||
mangaService.removeMangaToReader(m1.getId(), r11.getId());
|
||||
Reader r12 = readerService.findReader(r11.getId());
|
||||
|
||||
Manga m11 = mangaService.findManga(m1.getId());
|
||||
@ -384,13 +384,13 @@ public class ReMangaTest {
|
||||
mangaService.deleteAllMangas();
|
||||
creatorService.deleteAllCreators();
|
||||
Creator c1 = creatorService.addCreator("first_C", "1");
|
||||
Manga m1 = mangaService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = mangaService.addManga(c1.getId(), 10, "Berserk");
|
||||
Manga m1 = creatorService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = creatorService.addManga(c1.getId(), 10, "Berserk");
|
||||
Reader r1 = readerService.addReader("first_R", "1");
|
||||
Reader r2 = readerService.addReader("2_R", "2");
|
||||
|
||||
readerService.addManga(m1.getId(), r1.getId());
|
||||
readerService.addManga(m2.getId(), r1.getId());
|
||||
mangaService.addMangaToReader(m1.getId(), r1.getId());
|
||||
mangaService.addMangaToReader(m2.getId(), r1.getId());
|
||||
|
||||
Reader r11 = readerService.findReader(r1.getId());
|
||||
readerService.deleteReader(r11.getId());
|
||||
@ -410,12 +410,12 @@ public class ReMangaTest {
|
||||
mangaService.deleteAllMangas();
|
||||
creatorService.deleteAllCreators();
|
||||
Creator c1 = creatorService.addCreator("first_C", "1");
|
||||
Manga m1 = mangaService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = mangaService.addManga(c1.getId(), 10, "Berserk");
|
||||
Manga m1 = creatorService.addManga(c1.getId(), 0, "Vagabond");
|
||||
Manga m2 = creatorService.addManga(c1.getId(), 10, "Berserk");
|
||||
Reader r1 = readerService.addReader("first_R", "1");
|
||||
|
||||
readerService.addManga(m1.getId(), r1.getId());
|
||||
readerService.addManga(m2.getId(), r1.getId());
|
||||
mangaService.addMangaToReader(m1.getId(), r1.getId());
|
||||
mangaService.addMangaToReader(m2.getId(), r1.getId());
|
||||
|
||||
Reader r11 = readerService.updateReader(r1.getId(), "reader", "password");
|
||||
r11 = readerService.findReader(r11.getId());
|
||||
|
Loading…
x
Reference in New Issue
Block a user