Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 35 additions & 5 deletions src/main/java/ttv/poltoraha/pivka/controller/AuthorController.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
package ttv.poltoraha.pivka.controller;

import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import ttv.poltoraha.pivka.dao.dto.AuthorDto;
import ttv.poltoraha.pivka.entity.Author;
import ttv.poltoraha.pivka.entity.Book;
import ttv.poltoraha.pivka.exception.AuthorAlreadyExistsException;
import ttv.poltoraha.pivka.exception.AuthorNotFoundException;
import ttv.poltoraha.pivka.service.AuthorService;
import ttv.poltoraha.pivka.serviceImpl.AuthorServiceImpl;

import java.util.List;

Expand All @@ -14,20 +20,44 @@
@RequestMapping("/author")
@RequiredArgsConstructor
public class AuthorController {

private final AuthorService authorService;

private static final Logger logger = LoggerFactory.getLogger(AuthorController.class);

@PostMapping("/create")
public void createAuthor(@RequestBody Author author) {
authorService.create(author);
public void createAuthor(@RequestBody AuthorDto authorDto) {
logger.info("Получен запрос на создание автора: {}", authorDto);
try {
authorService.create(authorDto);
logger.info("Автор успешно создан: {}", authorDto);
} catch (AuthorAlreadyExistsException exception) {
logger.error("Ошибка при создании автора", exception);
throw exception;
}
}

@PostMapping("/delete")
@DeleteMapping("/delete")
public void deleteAuthorById(@RequestParam Integer id) {
authorService.delete(id);
logger.info("Получен запрос на создание автора с ID: {}", id);
try {
authorService.delete(id);
logger.info("Автор с ID успешно удален: {}", id);
} catch (AuthorNotFoundException exception) {
logger.error("Ошибка при удаление автора с ID: {}",id, exception);
throw exception;
}
}

@PostMapping("/add/books")
public void addBooksToAuthor(@RequestParam Integer id, @RequestBody List<Book> books) {
authorService.addBooks(id, books);
logger.info("Получен запрос на добавление списка книг для автора с ID {}:", id);
try {
authorService.addBooks(id, books);
logger.info("Список книг для автора с ID успешно добавлен: {}", id);
} catch (AuthorNotFoundException exception) {
logger.error("Ошибка при добавлении списка книг для автора с ID: {}",id, exception);
throw exception;
}
}
}
15 changes: 15 additions & 0 deletions src/main/java/ttv/poltoraha/pivka/dao/dto/AuthorDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package ttv.poltoraha.pivka.dao.dto;

import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;

@Data
@Builder
@Getter
@Setter
public class AuthorDto {
private String fullName;
private Double avgRating;
}
9 changes: 5 additions & 4 deletions src/main/java/ttv/poltoraha/pivka/entity/Author.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
package ttv.poltoraha.pivka.entity;
import jakarta.persistence.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.*;

import java.util.List;

// Энтити - это привязка класса к конкретной табличке в БД
@Entity(name="author")
@Data
@Entity(name="author")
@Builder
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Author {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Expand Down
17 changes: 17 additions & 0 deletions src/main/java/ttv/poltoraha/pivka/entity/Chapter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package ttv.poltoraha.pivka.entity;

import jakarta.persistence.*;

@Entity
@Table(name = "chapter")
public class Chapter {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String title;
private Integer pageNumber;

@ManyToOne
@JoinColumn(name = "book_id")
private Book book;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package ttv.poltoraha.pivka.exception;

public class AuthorAlreadyExistsException extends RuntimeException {
public AuthorAlreadyExistsException(String message) {
super(message);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package ttv.poltoraha.pivka.exception;

public class AuthorNotFoundException extends RuntimeException {
public AuthorNotFoundException(String message) {
super(message);
}
}
Loading