From 25d7f7543fd844ebb895645ec295784b7a703b12 Mon Sep 17 00:00:00 2001 From: NadezhdaTA Date: Fri, 12 Sep 2025 16:42:58 +0400 Subject: [PATCH 01/11] =?UTF-8?q?3=D0=B8=D0=B9=20=D1=8D=D1=82=D0=B0=D0=BF?= =?UTF-8?q?=20=D0=B4=D0=B8=D0=BF=D0=BB=D0=BE=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Postman/feature.json | 276 ++++++++++++++++++ .../Controller/CommentPrivateController.java | 45 +++ .../Controller/CommentPublicController.java | 25 ++ .../ru/practicum/Comments/DTO/CommentDTO.java | 28 ++ .../practicum/Comments/DTO/NewCommentDTO.java | 27 ++ .../Comments/DTO/UpdateCommentDTO.java | 26 ++ .../Comments/DTO/UpdatedCommentDTO.java | 7 + .../Comments/Mapper/CommentsMapper.java | 19 ++ .../ru/practicum/Comments/Model/Comment.java | 44 +++ .../ru/practicum/Comments/Model/Status.java | 6 + .../Repository/CommentsRepository.java | 20 ++ .../Private/CommentPrivateService.java | 15 + .../Private/CommentPrivateServiceImpl.java | 112 +++++++ .../Public/CommentPublicInterface.java | 9 + .../Public/CommentPublicInterfaceImpl.java | 34 +++ .../practicum/Event/DTO/EventCommentsDTO.java | 25 ++ .../practicum/Event/Mapper/EventMapper.java | 7 +- evm-service/src/main/resources/schema.sql | 14 +- 18 files changed, 734 insertions(+), 5 deletions(-) create mode 100644 Postman/feature.json create mode 100644 evm-service/src/main/java/ru/practicum/Comments/Controller/CommentPrivateController.java create mode 100644 evm-service/src/main/java/ru/practicum/Comments/Controller/CommentPublicController.java create mode 100644 evm-service/src/main/java/ru/practicum/Comments/DTO/CommentDTO.java create mode 100644 evm-service/src/main/java/ru/practicum/Comments/DTO/NewCommentDTO.java create mode 100644 evm-service/src/main/java/ru/practicum/Comments/DTO/UpdateCommentDTO.java create mode 100644 evm-service/src/main/java/ru/practicum/Comments/DTO/UpdatedCommentDTO.java create mode 100644 evm-service/src/main/java/ru/practicum/Comments/Mapper/CommentsMapper.java create mode 100644 evm-service/src/main/java/ru/practicum/Comments/Model/Comment.java create mode 100644 evm-service/src/main/java/ru/practicum/Comments/Model/Status.java create mode 100644 evm-service/src/main/java/ru/practicum/Comments/Repository/CommentsRepository.java create mode 100644 evm-service/src/main/java/ru/practicum/Comments/Service/Private/CommentPrivateService.java create mode 100644 evm-service/src/main/java/ru/practicum/Comments/Service/Private/CommentPrivateServiceImpl.java create mode 100644 evm-service/src/main/java/ru/practicum/Comments/Service/Public/CommentPublicInterface.java create mode 100644 evm-service/src/main/java/ru/practicum/Comments/Service/Public/CommentPublicInterfaceImpl.java create mode 100644 evm-service/src/main/java/ru/practicum/Event/DTO/EventCommentsDTO.java diff --git a/Postman/feature.json b/Postman/feature.json new file mode 100644 index 0000000..f849a76 --- /dev/null +++ b/Postman/feature.json @@ -0,0 +1,276 @@ +{ + "info": { + "_postman_id": "0839b33c-c656-44a1-8b32-a74814f2c75b", + "name": "feature.json", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", + "_exporter_id": "42528419" + }, + "item": [ + { + "name": "Добавление комментария", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 201\", function () {\r", + " pm.response.to.have.status(201);\r", + "});" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "X-User-Id", + "value": "{{userId}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \"comment\":\"lzkgh oiyu cktyhj xlitu\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseURL}}/events/comments/:eventId", + "host": [ + "{{baseURL}}" + ], + "path": [ + "events", + "comments", + ":eventId" + ], + "variable": [ + { + "key": "eventId", + "value": "{{uid}}" + } + ] + } + }, + "response": [] + }, + { + "name": "Удаление комментария", + "request": { + "method": "DELETE", + "header": [ + { + "key": "X-User-Id", + "value": "{{userId}}", + "type": "text" + } + ], + "url": { + "raw": "{{baseURL}}/events/comments/:commentId", + "host": [ + "{{baseURL}}" + ], + "path": [ + "events", + "comments", + ":commentId" + ], + "variable": [ + { + "key": "commentId", + "value": "{{commentId}}" + } + ] + } + }, + "response": [] + }, + { + "name": "Обновление комментария", + "request": { + "method": "PATCH", + "header": [ + { + "key": "X-User-Id", + "value": "{{userId}}", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \"comment\":\"zlsieurzdrof zprouztpiurz;id pdrgjcblkjgjdjf .kujh.\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{baseURL}}/events/comments/:commentId", + "host": [ + "{{baseURL}}" + ], + "path": [ + "events", + "comments", + ":commentId" + ], + "variable": [ + { + "key": "commentId", + "value": "{{commentId}}" + } + ] + } + }, + "response": [] + }, + { + "name": "Получение комментариев события", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Ответ должен содержать код статуса 200 и данные в формате json\", function () {\r", + " pm.response.to.be.ok; \r", + " pm.response.to.be.withBody;\r", + " pm.response.to.be.json;\r", + "});\r", + "\r", + "const source = pm.collectionVariables.get('response');\r", + "const target = pm.response.json();\r", + "\r", + "pm.test(\"Комментарий должен содержать поля: id, comment, author, event, createdAt, status\", function () {\r", + "pm.expect(target).to.have.property('id');\r", + "pm.expect(target).to.have.property('comment');\r", + "pm.expect(target).to.have.property('author');\r", + "pm.expect(target).to.have.property('event');\r", + "pm.expect(target).to.have.property('createdAt');\r", + "pm.expect(target).to.have.property('status');\r", + "});" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "", + "value": "", + "type": "text", + "disabled": true + } + ], + "url": { + "raw": "{{baseURL}}/event/:eventId/comments?from=0&size=15", + "host": [ + "{{baseURL}}" + ], + "path": [ + "event", + ":eventId", + "comments" + ], + "query": [ + { + "key": "from", + "value": "0" + }, + { + "key": "size", + "value": "15" + } + ], + "variable": [ + { + "key": "eventId", + "value": "{{eventId}}" + } + ] + } + }, + "response": [] + }, + { + "name": "Получение комментария пользователя к событию", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "", + "value": "", + "type": "text", + "disabled": true + } + ], + "url": { + "raw": "{{baseURL}}/events/comments/:commentId", + "host": [ + "{{baseURL}}" + ], + "path": [ + "events", + "comments", + ":commentId" + ], + "variable": [ + { + "key": "commentId", + "value": "{{commentId}}" + } + ] + } + }, + "response": [] + } + ], + "variable": [ + { + "key": "baseURL", + "value": "", + "type": "default" + } + ] +} \ No newline at end of file diff --git a/evm-service/src/main/java/ru/practicum/Comments/Controller/CommentPrivateController.java b/evm-service/src/main/java/ru/practicum/Comments/Controller/CommentPrivateController.java new file mode 100644 index 0000000..85dd67e --- /dev/null +++ b/evm-service/src/main/java/ru/practicum/Comments/Controller/CommentPrivateController.java @@ -0,0 +1,45 @@ +package ru.practicum.Comments.Controller; + +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; +import ru.practicum.Comments.DTO.CommentDTO; +import ru.practicum.Comments.DTO.NewCommentDTO; +import ru.practicum.Comments.DTO.UpdateCommentDTO; +import ru.practicum.Comments.Service.Private.CommentPrivateServiceImpl; + + +@RestController +@RequestMapping("/events/comments") +@RequiredArgsConstructor +public class CommentPrivateController { + private final CommentPrivateServiceImpl commentService; + public static final String USER_ID = "X-User-Id"; + + @PostMapping("/{eventId}") + @ResponseStatus(HttpStatus.CREATED) + public CommentDTO addComment(@RequestBody NewCommentDTO commentDTO, + @RequestHeader(USER_ID) Integer userId, + @PathVariable Integer eventId) { + return commentService.addComment(commentDTO, userId, eventId); + } + + @GetMapping("/{commentId}") + public CommentDTO getComment(@PathVariable Integer commentId) { + return commentService.getComment(commentId); + } + + @PatchMapping("/{commentId}") + public CommentDTO updateComment(@RequestHeader(USER_ID) Integer userId, + @RequestBody UpdateCommentDTO dto, + @PathVariable Integer commentId) { + return commentService.updateComment(dto, userId, commentId); + } + + @DeleteMapping("/{commentId}") + public void deleteComment(@RequestHeader(USER_ID) Integer userId, + @PathVariable Integer commentId){ + commentService.deleteComment(commentId, userId); + } + +} diff --git a/evm-service/src/main/java/ru/practicum/Comments/Controller/CommentPublicController.java b/evm-service/src/main/java/ru/practicum/Comments/Controller/CommentPublicController.java new file mode 100644 index 0000000..0a2ad52 --- /dev/null +++ b/evm-service/src/main/java/ru/practicum/Comments/Controller/CommentPublicController.java @@ -0,0 +1,25 @@ +package ru.practicum.Comments.Controller; + +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Positive; +import jakarta.validation.constraints.PositiveOrZero; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; +import ru.practicum.Comments.DTO.CommentDTO; +import ru.practicum.Comments.Service.Public.CommentPublicInterface; + +import java.util.List; + +@RestController +@RequestMapping("/event/{eventId}/comments") +@RequiredArgsConstructor +public class CommentPublicController { + private final CommentPublicInterface commentPublicInterface; + + @GetMapping + public List getComments(@PathVariable @NotNull Integer eventId, + @RequestParam(defaultValue = "0") @PositiveOrZero Integer from, + @RequestParam(defaultValue = "10") @Positive Integer size) { + return commentPublicInterface.getComments(eventId, from, size); + } +} diff --git a/evm-service/src/main/java/ru/practicum/Comments/DTO/CommentDTO.java b/evm-service/src/main/java/ru/practicum/Comments/DTO/CommentDTO.java new file mode 100644 index 0000000..edf1688 --- /dev/null +++ b/evm-service/src/main/java/ru/practicum/Comments/DTO/CommentDTO.java @@ -0,0 +1,28 @@ +package ru.practicum.Comments.DTO; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import ru.practicum.Comments.Model.Status; +import ru.practicum.Event.DTO.EventCommentsDTO; +import ru.practicum.User.Model.User; + +import java.time.LocalDateTime; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class CommentDTO { + + private Integer id; + + private String comment; + + private User author; + + private EventCommentsDTO event; + + private LocalDateTime createdAt; + + private Status status; +} diff --git a/evm-service/src/main/java/ru/practicum/Comments/DTO/NewCommentDTO.java b/evm-service/src/main/java/ru/practicum/Comments/DTO/NewCommentDTO.java new file mode 100644 index 0000000..78aec33 --- /dev/null +++ b/evm-service/src/main/java/ru/practicum/Comments/DTO/NewCommentDTO.java @@ -0,0 +1,27 @@ +package ru.practicum.Comments.DTO; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; +import ru.practicum.StatsRequestDTO; + +import java.time.LocalDateTime; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class NewCommentDTO { + + @NotNull + @Size(max = 7000) + @JsonProperty("comment") + private String comment; + + @DateTimeFormat(pattern = StatsRequestDTO.DATE_FORMAT) + private final LocalDateTime createdAt = LocalDateTime.now(); + +} diff --git a/evm-service/src/main/java/ru/practicum/Comments/DTO/UpdateCommentDTO.java b/evm-service/src/main/java/ru/practicum/Comments/DTO/UpdateCommentDTO.java new file mode 100644 index 0000000..778fa29 --- /dev/null +++ b/evm-service/src/main/java/ru/practicum/Comments/DTO/UpdateCommentDTO.java @@ -0,0 +1,26 @@ +package ru.practicum.Comments.DTO; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; +import ru.practicum.StatsRequestDTO; + +import java.time.LocalDateTime; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class UpdateCommentDTO { + + @NotNull + @Size(max = 7000) + @JsonProperty("comment") + private String comment; + + @DateTimeFormat(pattern = StatsRequestDTO.DATE_FORMAT) + private final LocalDateTime updatedAt = LocalDateTime.now(); +} diff --git a/evm-service/src/main/java/ru/practicum/Comments/DTO/UpdatedCommentDTO.java b/evm-service/src/main/java/ru/practicum/Comments/DTO/UpdatedCommentDTO.java new file mode 100644 index 0000000..dd3afa6 --- /dev/null +++ b/evm-service/src/main/java/ru/practicum/Comments/DTO/UpdatedCommentDTO.java @@ -0,0 +1,7 @@ +package ru.practicum.Comments.DTO; + +import java.time.LocalDateTime; + +public class UpdatedCommentDTO extends CommentDTO { + private LocalDateTime updatedAt; +} diff --git a/evm-service/src/main/java/ru/practicum/Comments/Mapper/CommentsMapper.java b/evm-service/src/main/java/ru/practicum/Comments/Mapper/CommentsMapper.java new file mode 100644 index 0000000..a41f20f --- /dev/null +++ b/evm-service/src/main/java/ru/practicum/Comments/Mapper/CommentsMapper.java @@ -0,0 +1,19 @@ +package ru.practicum.Comments.Mapper; + +import org.mapstruct.Mapper; +import ru.practicum.Comments.DTO.CommentDTO; +import ru.practicum.Comments.DTO.NewCommentDTO; +import ru.practicum.Comments.DTO.UpdateCommentDTO; +import ru.practicum.Comments.DTO.UpdatedCommentDTO; +import ru.practicum.Comments.Model.Comment; + +@Mapper(componentModel = "spring") +public interface CommentsMapper { + CommentDTO toCommentDTO(Comment comment); + + Comment toComment(NewCommentDTO commentDTO); + + UpdatedCommentDTO toUpdatedCommentDTO(Comment comment); + + Comment toComment(UpdateCommentDTO commentDTO); +} diff --git a/evm-service/src/main/java/ru/practicum/Comments/Model/Comment.java b/evm-service/src/main/java/ru/practicum/Comments/Model/Comment.java new file mode 100644 index 0000000..94b3ef1 --- /dev/null +++ b/evm-service/src/main/java/ru/practicum/Comments/Model/Comment.java @@ -0,0 +1,44 @@ +package ru.practicum.Comments.Model; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import ru.practicum.Event.Model.Event; +import ru.practicum.User.Model.User; + +import java.time.LocalDateTime; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "comments") +public class Comment { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Integer id; + + @Column(name = "comment", length = 7000) + private String comment; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "author_id") + private User author; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "event_id") + private Event event; + + @Column(name = "created_at") + private final LocalDateTime createdAt = LocalDateTime.now(); + + @Column(name = "updated_at") + private LocalDateTime updatedAt; + + @Enumerated(EnumType.STRING) + @Column(name = "status") + private Status status; +} diff --git a/evm-service/src/main/java/ru/practicum/Comments/Model/Status.java b/evm-service/src/main/java/ru/practicum/Comments/Model/Status.java new file mode 100644 index 0000000..06d8886 --- /dev/null +++ b/evm-service/src/main/java/ru/practicum/Comments/Model/Status.java @@ -0,0 +1,6 @@ +package ru.practicum.Comments.Model; + +public enum Status { + CREATED, + UPDATED +} diff --git a/evm-service/src/main/java/ru/practicum/Comments/Repository/CommentsRepository.java b/evm-service/src/main/java/ru/practicum/Comments/Repository/CommentsRepository.java new file mode 100644 index 0000000..395f2bb --- /dev/null +++ b/evm-service/src/main/java/ru/practicum/Comments/Repository/CommentsRepository.java @@ -0,0 +1,20 @@ +package ru.practicum.Comments.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import ru.practicum.Comments.Model.Comment; + +import org.springframework.data.domain.Pageable; +import java.util.List; +import java.util.Optional; + +public interface CommentsRepository extends JpaRepository { + Comment save(Comment comment); + + List findCommentsByEvent_Id(Integer eventId, Pageable pageable); + + Optional findById(Integer commentId); + + Comment findCommentByEvent_IdAndAuthor_Id(Integer eventId, Integer authorId); + + Optional findCommentById(Integer commentId); +} diff --git a/evm-service/src/main/java/ru/practicum/Comments/Service/Private/CommentPrivateService.java b/evm-service/src/main/java/ru/practicum/Comments/Service/Private/CommentPrivateService.java new file mode 100644 index 0000000..4bcd39a --- /dev/null +++ b/evm-service/src/main/java/ru/practicum/Comments/Service/Private/CommentPrivateService.java @@ -0,0 +1,15 @@ +package ru.practicum.Comments.Service.Private; + +import ru.practicum.Comments.DTO.CommentDTO; +import ru.practicum.Comments.DTO.NewCommentDTO; +import ru.practicum.Comments.DTO.UpdateCommentDTO; + +public interface CommentPrivateService { + CommentDTO addComment(NewCommentDTO commentDTO, Integer userId, Integer eventId); + + CommentDTO getComment(Integer commentId); + + CommentDTO updateComment(UpdateCommentDTO commentDTO, Integer userId, Integer commentId); + + void deleteComment(Integer commentId, Integer userId); +} diff --git a/evm-service/src/main/java/ru/practicum/Comments/Service/Private/CommentPrivateServiceImpl.java b/evm-service/src/main/java/ru/practicum/Comments/Service/Private/CommentPrivateServiceImpl.java new file mode 100644 index 0000000..d5b7cb3 --- /dev/null +++ b/evm-service/src/main/java/ru/practicum/Comments/Service/Private/CommentPrivateServiceImpl.java @@ -0,0 +1,112 @@ +package ru.practicum.Comments.Service.Private; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import ru.practicum.Comments.DTO.CommentDTO; +import ru.practicum.Comments.DTO.NewCommentDTO; +import ru.practicum.Comments.DTO.UpdateCommentDTO; +import ru.practicum.Comments.Mapper.CommentsMapper; +import ru.practicum.Comments.Model.Comment; +import ru.practicum.Comments.Model.Status; +import ru.practicum.Comments.Repository.CommentsRepository; +import ru.practicum.Event.Model.Event; +import ru.practicum.Event.Model.State; +import ru.practicum.Event.Repository.EventRepository; +import ru.practicum.Exception.NotFoundException; +import ru.practicum.Exception.ValidationException; +import ru.practicum.Request.Model.Request; +import ru.practicum.Request.Repository.RequestRepository; +import ru.practicum.User.Model.User; +import ru.practicum.User.Repository.UserRepository; + +import java.util.Objects; + +@Service +@RequiredArgsConstructor +public class CommentPrivateServiceImpl implements CommentPrivateService { + private final CommentsRepository commentsRepository; + private final CommentsMapper commentsMapper; + private final UserRepository userRepository; + private final EventRepository eventRepository; + private final RequestRepository requestRepository; + + @Override + public CommentDTO addComment(NewCommentDTO commentDTO, Integer userId, Integer eventId) { + User user = checkUser(userId); + Event event = checkEvent(eventId); + + if (event.getEventDate().isBefore(commentDTO.getCreatedAt())) { + throw new ValidationException("Event date is before comment date"); + } + + Request request; + try { + request = requestRepository.findRequestsByEvent_IdAndRequester_Id(eventId, userId); + } catch (NotFoundException e) { + throw new NotFoundException("Request for user with id " + userId + + " and event with id " + eventId + " not found"); + } + + if (!request.getStatus().equals(State.CONFIRMED)) { + throw new ValidationException("Request is not confirmed"); + } + + Comment comment = commentsMapper.toComment(commentDTO); + comment.setStatus(Status.CREATED); + comment.setAuthor(user); + comment.setEvent(event); + + return commentsMapper.toCommentDTO(commentsRepository.save(comment)); + } + + @Override + public CommentDTO getComment(Integer commentId) { + Comment comment = commentsRepository.findById(commentId) + .orElseThrow(() -> new NotFoundException("Comment with id " + commentId + " not found")); + + if (comment.getStatus().equals(Status.CREATED)) { + return commentsMapper.toCommentDTO(comment); + } else { + return commentsMapper.toUpdatedCommentDTO(comment); + } + } + + @Override + public CommentDTO updateComment(UpdateCommentDTO commentDTO, Integer userId, Integer commentId) { + User user = checkUser(userId); + Comment comment = commentsRepository.findById(commentId) + .orElseThrow(() -> new NotFoundException("Comment with id " + commentId + " not found")); + + if (!Objects.equals(comment.getAuthor().getId(), user.getId())) { + throw new ValidationException("You are not allowed to update this comment"); + } + + comment.setComment(commentDTO.getComment()); + comment.setStatus(Status.UPDATED); + comment.setUpdatedAt(commentDTO.getUpdatedAt()); + + return commentsMapper.toUpdatedCommentDTO(commentsRepository.save(comment)); + } + + @Override + public void deleteComment(Integer commentId, Integer userId) { + User user = checkUser(userId); + Comment comment = commentsRepository.findById(commentId) + .orElseThrow(() -> new NotFoundException("Comment with id " + commentId + " not found")); + if (!Objects.equals(comment.getAuthor().getId(), user.getId())) { + throw new ValidationException("You are not allowed to delete this comment"); + } + commentsRepository.deleteById(commentId); + } + + + private User checkUser(Integer id) { + return userRepository.findById(id) + .orElseThrow(() -> new NotFoundException("User with id " + id + " not found")); + } + + private Event checkEvent(Integer id) { + return eventRepository.findEventById(id) + .orElseThrow(() -> new NotFoundException("Event with id " + id + " not found")); + } +} diff --git a/evm-service/src/main/java/ru/practicum/Comments/Service/Public/CommentPublicInterface.java b/evm-service/src/main/java/ru/practicum/Comments/Service/Public/CommentPublicInterface.java new file mode 100644 index 0000000..45589fd --- /dev/null +++ b/evm-service/src/main/java/ru/practicum/Comments/Service/Public/CommentPublicInterface.java @@ -0,0 +1,9 @@ +package ru.practicum.Comments.Service.Public; + +import ru.practicum.Comments.DTO.CommentDTO; + +import java.util.List; + +public interface CommentPublicInterface { + List getComments(Integer eventId, Integer from, Integer size); +} diff --git a/evm-service/src/main/java/ru/practicum/Comments/Service/Public/CommentPublicInterfaceImpl.java b/evm-service/src/main/java/ru/practicum/Comments/Service/Public/CommentPublicInterfaceImpl.java new file mode 100644 index 0000000..595d9b8 --- /dev/null +++ b/evm-service/src/main/java/ru/practicum/Comments/Service/Public/CommentPublicInterfaceImpl.java @@ -0,0 +1,34 @@ +package ru.practicum.Comments.Service.Public; + +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import ru.practicum.Comments.DTO.CommentDTO; +import ru.practicum.Comments.Mapper.CommentsMapper; +import ru.practicum.Comments.Repository.CommentsRepository; +import ru.practicum.Event.Model.Event; +import ru.practicum.Event.Repository.EventRepository; +import ru.practicum.Exception.NotFoundException; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class CommentPublicInterfaceImpl implements CommentPublicInterface { + private final CommentsRepository commentsRepository; + private final CommentsMapper commentsMapper; + private final EventRepository eventRepository; + + @Override + public List getComments(Integer eventId, Integer from, Integer size) { + Event event = eventRepository.findById(eventId) + .orElseThrow(() -> new NotFoundException("Event with id " + eventId + " not found")); + + Pageable pageable = PageRequest.of(from, size); + + return commentsRepository.findCommentsByEvent_Id(eventId, pageable).stream() + .map(commentsMapper::toCommentDTO) + .toList(); + } +} diff --git a/evm-service/src/main/java/ru/practicum/Event/DTO/EventCommentsDTO.java b/evm-service/src/main/java/ru/practicum/Event/DTO/EventCommentsDTO.java new file mode 100644 index 0000000..0450bac --- /dev/null +++ b/evm-service/src/main/java/ru/practicum/Event/DTO/EventCommentsDTO.java @@ -0,0 +1,25 @@ +package ru.practicum.Event.DTO; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EventCommentsDTO { + + private Integer id; + + private String title; + + private String annotation; + + private String description; + + private LocalDateTime eventDate; + +} diff --git a/evm-service/src/main/java/ru/practicum/Event/Mapper/EventMapper.java b/evm-service/src/main/java/ru/practicum/Event/Mapper/EventMapper.java index 74afdec..1d3a346 100644 --- a/evm-service/src/main/java/ru/practicum/Event/Mapper/EventMapper.java +++ b/evm-service/src/main/java/ru/practicum/Event/Mapper/EventMapper.java @@ -1,10 +1,7 @@ package ru.practicum.Event.Mapper; import org.mapstruct.*; -import ru.practicum.Event.DTO.EventFullDTO; -import ru.practicum.Event.DTO.EventShortDTO; -import ru.practicum.Event.DTO.NewEventDTO; -import ru.practicum.Event.DTO.UpdateEventAdminRequest; +import ru.practicum.Event.DTO.*; import ru.practicum.Event.Model.Event; @Mapper(componentModel = "spring") @@ -18,4 +15,6 @@ public interface EventMapper { @BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE) @Mapping(target = "category", ignore = true) Event toEvent(UpdateEventAdminRequest request, @MappingTarget Event event); + + EventCommentsDTO toEventCommentsDTO(Event event); } diff --git a/evm-service/src/main/resources/schema.sql b/evm-service/src/main/resources/schema.sql index 97956c5..fc80410 100644 --- a/evm-service/src/main/resources/schema.sql +++ b/evm-service/src/main/resources/schema.sql @@ -1,4 +1,4 @@ -DROP TABLE IF EXISTS users, categories, events, requests, compilations, compilation_events; +DROP TABLE IF EXISTS users, categories, events, requests, compilations, compilation_events, comments; CREATE TABLE IF NOT EXISTS users ( id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, @@ -64,3 +64,15 @@ CREATE TABLE IF NOT EXISTS compilation_events ( CONSTRAINT fk_compilation_events_to_events FOREIGN KEY (event_id) REFERENCES events (id) ON DELETE CASCADE ); +CREATE TABLE IF NOT EXISTS comments ( + id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + comment VARCHAR(7000) NOT NULL, + author_id INT NOT NULL, + event_id INT NOT NULL, + created_at TIMESTAMP WITHOUT TIME ZONE, + updated_at TIMESTAMP WITHOUT TIME ZONE, + status VARCHAR(50), + CONSTRAINT fk_comments_to_users FOREIGN KEY (author_id) REFERENCES users (id) ON DELETE CASCADE, + CONSTRAINT fk_comments_to_events FOREIGN KEY (event_id) REFERENCES events (id) ON DELETE CASCADE +) + From d121091d5624f47694aec27a25d24fd849d13739 Mon Sep 17 00:00:00 2001 From: NadezhdaTA Date: Fri, 12 Sep 2025 16:45:55 +0400 Subject: [PATCH 02/11] =?UTF-8?q?3=D0=B8=D0=B9=20=D1=8D=D1=82=D0=B0=D0=BF?= =?UTF-8?q?=20=D0=B4=D0=B8=D0=BF=D0=BB=D0=BE=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../practicum/Comments/Controller/CommentPrivateController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/evm-service/src/main/java/ru/practicum/Comments/Controller/CommentPrivateController.java b/evm-service/src/main/java/ru/practicum/Comments/Controller/CommentPrivateController.java index 85dd67e..affcc6e 100644 --- a/evm-service/src/main/java/ru/practicum/Comments/Controller/CommentPrivateController.java +++ b/evm-service/src/main/java/ru/practicum/Comments/Controller/CommentPrivateController.java @@ -38,7 +38,7 @@ public CommentDTO updateComment(@RequestHeader(USER_ID) Integer userId, @DeleteMapping("/{commentId}") public void deleteComment(@RequestHeader(USER_ID) Integer userId, - @PathVariable Integer commentId){ + @PathVariable Integer commentId) { commentService.deleteComment(commentId, userId); } From cd3d3a8bf6d5db51c7a4a26221b316f3bf740aaa Mon Sep 17 00:00:00 2001 From: NadezhdaTA Date: Fri, 12 Sep 2025 16:51:25 +0400 Subject: [PATCH 03/11] =?UTF-8?q?3=D0=B8=D0=B9=20=D1=8D=D1=82=D0=B0=D0=BF?= =?UTF-8?q?=20=D0=B4=D0=B8=D0=BF=D0=BB=D0=BE=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Postman/feature.json | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/Postman/feature.json b/Postman/feature.json index f849a76..a9ffb96 100644 --- a/Postman/feature.json +++ b/Postman/feature.json @@ -192,7 +192,7 @@ } ], "url": { - "raw": "{{baseURL}}/event/:eventId/comments?from=0&size=15", + "raw": "{{baseURL}}/event/:eventId/comments", "host": [ "{{baseURL}}" ], @@ -201,16 +201,6 @@ ":eventId", "comments" ], - "query": [ - { - "key": "from", - "value": "0" - }, - { - "key": "size", - "value": "15" - } - ], "variable": [ { "key": "eventId", From 7384003e3b54a85ebf11c973dcde58b20e6d61f4 Mon Sep 17 00:00:00 2001 From: NadezhdaTA Date: Fri, 12 Sep 2025 16:57:06 +0400 Subject: [PATCH 04/11] =?UTF-8?q?3=D0=B8=D0=B9=20=D1=8D=D1=82=D0=B0=D0=BF?= =?UTF-8?q?=20=D0=B4=D0=B8=D0=BF=D0=BB=D0=BE=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- {Postman => postman}/feature.json | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Postman => postman}/feature.json (100%) diff --git a/Postman/feature.json b/postman/feature.json similarity index 100% rename from Postman/feature.json rename to postman/feature.json From 47d10cb73e0fe2a1f104a2500cfbff2b4f9806a9 Mon Sep 17 00:00:00 2001 From: NadezhdaTA Date: Fri, 12 Sep 2025 17:08:21 +0400 Subject: [PATCH 05/11] =?UTF-8?q?3=D0=B8=D0=B9=20=D1=8D=D1=82=D0=B0=D0=BF?= =?UTF-8?q?=20=D0=B4=D0=B8=D0=BF=D0=BB=D0=BE=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- postman/feature.json | 92 ++++++++++++++++++++++++++------------------ 1 file changed, 54 insertions(+), 38 deletions(-) diff --git a/postman/feature.json b/postman/feature.json index a9ffb96..f58fada 100644 --- a/postman/feature.json +++ b/postman/feature.json @@ -37,13 +37,13 @@ "header": [ { "key": "X-User-Id", - "value": "{{userId}}", + "value": "15", "type": "text" } ], "body": { "mode": "raw", - "raw": "{\r\n \"comment\":\"lzkgh oiyu cktyhj xlitu\"\r\n}", + "raw": "{\r\n \"comment\":\"Добавление нового комментария\"\r\n}", "options": { "raw": { "language": "json" @@ -51,20 +51,14 @@ } }, "url": { - "raw": "{{baseURL}}/events/comments/:eventId", + "raw": "{{baseURL}}/events/comments/6", "host": [ "{{baseURL}}" ], "path": [ "events", "comments", - ":eventId" - ], - "variable": [ - { - "key": "eventId", - "value": "{{uid}}" - } + "6" ] } }, @@ -72,12 +66,26 @@ }, { "name": "Удаление комментария", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], "request": { "method": "DELETE", "header": [ { "key": "X-User-Id", - "value": "{{userId}}", + "value": "15", "type": "text" } ], @@ -94,7 +102,7 @@ "variable": [ { "key": "commentId", - "value": "{{commentId}}" + "value": "2" } ] } @@ -103,18 +111,32 @@ }, { "name": "Обновление комментария", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], "request": { "method": "PATCH", "header": [ { "key": "X-User-Id", - "value": "{{userId}}", + "value": "15", "type": "text" } ], "body": { "mode": "raw", - "raw": "{\r\n \"comment\":\"zlsieurzdrof zprouztpiurz;id pdrgjcblkjgjdjf .kujh.\"\r\n}", + "raw": "{\r\n \"comment\":\"Обновление комментария\"\r\n}", "options": { "raw": { "language": "json" @@ -122,20 +144,14 @@ } }, "url": { - "raw": "{{baseURL}}/events/comments/:commentId", + "raw": "{{baseURL}}/events/comments/1", "host": [ "{{baseURL}}" ], "path": [ "events", "comments", - ":commentId" - ], - "variable": [ - { - "key": "commentId", - "value": "{{commentId}}" - } + "1" ] } }, @@ -192,20 +208,14 @@ } ], "url": { - "raw": "{{baseURL}}/event/:eventId/comments", + "raw": "{{baseURL}}/event/6/comments", "host": [ "{{baseURL}}" ], "path": [ "event", - ":eventId", + "6", "comments" - ], - "variable": [ - { - "key": "eventId", - "value": "{{eventId}}" - } ] } }, @@ -223,6 +233,18 @@ "type": "text/javascript", "packages": {} } + }, + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});" + ], + "type": "text/javascript", + "packages": {} + } } ], "request": { @@ -236,20 +258,14 @@ } ], "url": { - "raw": "{{baseURL}}/events/comments/:commentId", + "raw": "{{baseURL}}/events/comments/1", "host": [ "{{baseURL}}" ], "path": [ "events", "comments", - ":commentId" - ], - "variable": [ - { - "key": "commentId", - "value": "{{commentId}}" - } + "1" ] } }, From 7324f13bbed7e5fb7e829eb402f56c874ec36c41 Mon Sep 17 00:00:00 2001 From: NadezhdaTA Date: Fri, 12 Sep 2025 17:15:48 +0400 Subject: [PATCH 06/11] =?UTF-8?q?3=D0=B8=D0=B9=20=D1=8D=D1=82=D0=B0=D0=BF?= =?UTF-8?q?=20=D0=B4=D0=B8=D0=BF=D0=BB=D0=BE=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- postman/feature.json | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/postman/feature.json b/postman/feature.json index f58fada..3106426 100644 --- a/postman/feature.json +++ b/postman/feature.json @@ -164,22 +164,8 @@ "listen": "test", "script": { "exec": [ - "pm.test(\"Ответ должен содержать код статуса 200 и данные в формате json\", function () {\r", - " pm.response.to.be.ok; \r", - " pm.response.to.be.withBody;\r", - " pm.response.to.be.json;\r", - "});\r", - "\r", - "const source = pm.collectionVariables.get('response');\r", - "const target = pm.response.json();\r", - "\r", - "pm.test(\"Комментарий должен содержать поля: id, comment, author, event, createdAt, status\", function () {\r", - "pm.expect(target).to.have.property('id');\r", - "pm.expect(target).to.have.property('comment');\r", - "pm.expect(target).to.have.property('author');\r", - "pm.expect(target).to.have.property('event');\r", - "pm.expect(target).to.have.property('createdAt');\r", - "pm.expect(target).to.have.property('status');\r", + "pm.test(\"Status code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", "});" ], "type": "text/javascript", From 2cf05228b285b4d37a61cdd6c90e0476c817745d Mon Sep 17 00:00:00 2001 From: NadezhdaTA Date: Fri, 12 Sep 2025 17:23:58 +0400 Subject: [PATCH 07/11] =?UTF-8?q?3=D0=B8=D0=B9=20=D1=8D=D1=82=D0=B0=D0=BF?= =?UTF-8?q?=20=D0=B4=D0=B8=D0=BF=D0=BB=D0=BE=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- postman/feature.json | 44 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/postman/feature.json b/postman/feature.json index 3106426..e12af32 100644 --- a/postman/feature.json +++ b/postman/feature.json @@ -51,10 +51,12 @@ } }, "url": { - "raw": "{{baseURL}}/events/comments/6", + "raw": "http://localhost:8080/events/comments/6", + "protocol": "http", "host": [ - "{{baseURL}}" + "localhost" ], + "port": "8080", "path": [ "events", "comments", @@ -78,6 +80,13 @@ "type": "text/javascript", "packages": {} } + }, + { + "listen": "prerequest", + "script": { + "packages": {}, + "type": "text/javascript" + } } ], "request": { @@ -90,10 +99,12 @@ } ], "url": { - "raw": "{{baseURL}}/events/comments/:commentId", + "raw": "http://localhost:8080/events/comments/:commentId", + "protocol": "http", "host": [ - "{{baseURL}}" + "localhost" ], + "port": "8080", "path": [ "events", "comments", @@ -123,6 +134,13 @@ "type": "text/javascript", "packages": {} } + }, + { + "listen": "prerequest", + "script": { + "packages": {}, + "type": "text/javascript" + } } ], "request": { @@ -144,10 +162,12 @@ } }, "url": { - "raw": "{{baseURL}}/events/comments/1", + "raw": "http://localhost:8080/events/comments/1", + "protocol": "http", "host": [ - "{{baseURL}}" + "localhost" ], + "port": "8080", "path": [ "events", "comments", @@ -194,10 +214,12 @@ } ], "url": { - "raw": "{{baseURL}}/event/6/comments", + "raw": "http://localhost:8080/event/6/comments", + "protocol": "http", "host": [ - "{{baseURL}}" + "localhost" ], + "port": "8080", "path": [ "event", "6", @@ -244,10 +266,12 @@ } ], "url": { - "raw": "{{baseURL}}/events/comments/1", + "raw": "http://localhost:8080/events/comments/1", + "protocol": "http", "host": [ - "{{baseURL}}" + "localhost" ], + "port": "8080", "path": [ "events", "comments", From 91546e962aeb73b76a3ee876fe942a462e89c0ed Mon Sep 17 00:00:00 2001 From: NadezhdaTA Date: Fri, 12 Sep 2025 17:29:59 +0400 Subject: [PATCH 08/11] =?UTF-8?q?3=D0=B8=D0=B9=20=D1=8D=D1=82=D0=B0=D0=BF?= =?UTF-8?q?=20=D0=B4=D0=B8=D0=BF=D0=BB=D0=BE=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- postman/feature.json | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/postman/feature.json b/postman/feature.json index e12af32..247c997 100644 --- a/postman/feature.json +++ b/postman/feature.json @@ -84,8 +84,11 @@ { "listen": "prerequest", "script": { - "packages": {}, - "type": "text/javascript" + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} } } ], @@ -99,7 +102,7 @@ } ], "url": { - "raw": "http://localhost:8080/events/comments/:commentId", + "raw": "http://localhost:8080/events/comments/1", "protocol": "http", "host": [ "localhost" @@ -108,13 +111,7 @@ "path": [ "events", "comments", - ":commentId" - ], - "variable": [ - { - "key": "commentId", - "value": "2" - } + "1" ] } }, From ae773a688b1cfe20a2feb7b97d9a394600787be8 Mon Sep 17 00:00:00 2001 From: NadezhdaTA Date: Fri, 12 Sep 2025 17:35:58 +0400 Subject: [PATCH 09/11] =?UTF-8?q?3=D0=B8=D0=B9=20=D1=8D=D1=82=D0=B0=D0=BF?= =?UTF-8?q?=20=D0=B4=D0=B8=D0=BF=D0=BB=D0=BE=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- postman/feature.json | 102 +++++++++++++++++++++---------------------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/postman/feature.json b/postman/feature.json index 247c997..fbf4018 100644 --- a/postman/feature.json +++ b/postman/feature.json @@ -66,57 +66,6 @@ }, "response": [] }, - { - "name": "Удаление комментария", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 200\", function () {\r", - " pm.response.to.have.status(200);\r", - "});" - ], - "type": "text/javascript", - "packages": {} - } - }, - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "method": "DELETE", - "header": [ - { - "key": "X-User-Id", - "value": "15", - "type": "text" - } - ], - "url": { - "raw": "http://localhost:8080/events/comments/1", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "8080", - "path": [ - "events", - "comments", - "1" - ] - } - }, - "response": [] - }, { "name": "Обновление комментария", "event": [ @@ -284,6 +233,57 @@ "key": "baseURL", "value": "", "type": "default" + }, + { + "name": "Удаление комментария", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "X-User-Id", + "value": "15", + "type": "text" + } + ], + "url": { + "raw": "http://localhost:8080/events/comments/1", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8080", + "path": [ + "events", + "comments", + "1" + ] + } + }, + "response": [] } ] } \ No newline at end of file From a6fc8da21805945e565d1182460a5bb0efac8577 Mon Sep 17 00:00:00 2001 From: NadezhdaTA Date: Fri, 12 Sep 2025 17:40:34 +0400 Subject: [PATCH 10/11] =?UTF-8?q?3=D0=B8=D0=B9=20=D1=8D=D1=82=D0=B0=D0=BF?= =?UTF-8?q?=20=D0=B4=D0=B8=D0=BF=D0=BB=D0=BE=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 18a246e..8896883 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,5 @@ # java-explore-with-me Template repository for ExploreWithMe project. + + +https://github.com/NadezhdaTA/java-explore-with-me/pull/4 \ No newline at end of file From 0a49c0e605e6c317d2050439a63addfd7e8bd6a0 Mon Sep 17 00:00:00 2001 From: NadezhdaTA Date: Tue, 16 Sep 2025 17:13:49 +0400 Subject: [PATCH 11/11] =?UTF-8?q?3=D0=B8=D0=B9=20=D1=8D=D1=82=D0=B0=D0=BF?= =?UTF-8?q?=20=D0=B4=D0=B8=D0=BF=D0=BB=D0=BE=D0=BC=D0=B0(=D0=B8=D1=81?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BD=D1=8B=D0=B9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/practicum/Category/Model/Category.java | 22 ------- .../Public/CommentPublicInterface.java | 9 --- .../java/ru/practicum/User/Model/User.java | 24 -------- .../controller}/CategoryAdminController.java | 15 +++-- .../controller}/CategoryPublicController.java | 10 +++- .../DTO => category/dto}/CategoryDTO.java | 2 +- .../DTO => category/dto}/NewCategoryDTO.java | 2 +- .../mapper}/CategoryMapper.java | 8 +-- .../ru/practicum/category/model/Category.java | 37 ++++++++++++ .../repository}/CategoryRepository.java | 4 +- .../service/admin}/CategoryAdminService.java | 6 +- .../admin}/CategoryAdminServiceImpl.java | 37 ++++++------ .../service/open}/CategoryPublicService.java | 4 +- .../open}/CategoryPublicServiceImpl.java | 21 ++++--- .../controller}/CommentPrivateController.java | 19 +++++-- .../controller}/CommentPublicController.java | 11 ++-- .../DTO => comment/dto}/CommentDTO.java | 8 +-- .../DTO => comment/dto}/NewCommentDTO.java | 2 +- .../DTO => comment/dto}/UpdateCommentDTO.java | 2 +- .../dto}/UpdatedCommentDTO.java | 2 +- .../mapper}/CommentsMapper.java | 12 ++-- .../Model => comment/model}/Comment.java | 28 ++++++--- .../Model => comment/model}/Status.java | 2 +- .../repository}/CommentsRepository.java | 4 +- .../service/close}/CommentPrivateService.java | 8 +-- .../close}/CommentPrivateServiceImpl.java | 57 ++++++++++++------- .../service/open/CommentPublicService.java | 9 +++ .../open/CommentPublicServiceImpl.java} | 19 ++++--- .../compilationDTO}/CompilationDTO.java | 4 +- .../CompilationsListRequestParams.java | 2 +- .../compilationDTO}/NewCompilationDTO.java | 2 +- .../UpdateCompilationRequest.java | 2 +- .../CompilationAdminController.java | 17 ++++-- .../CompilationPublicController.java | 14 +++-- .../mapper}/CompilationMapper.java | 8 +-- .../model}/Compilation.java | 27 +++++++-- .../repository}/CompilationRepository.java | 4 +- .../admin}/CompilationAdminService.java | 8 +-- .../admin}/CompilationAdminServiceImpl.java | 33 ++++++----- .../open}/CompilationPublicService.java | 6 +- .../open}/CompilationPublicServiceImpl.java | 25 ++++---- .../controller}/EventAdminController.java | 14 +++-- .../controller}/EventPrivateController.java | 18 ++++-- .../controller}/EventPublicController.java | 16 ++++-- .../DTO => event/dto}/EventCommentsDTO.java | 2 +- .../DTO => event/dto}/EventFullDTO.java | 10 ++-- .../DTO => event/dto}/EventPublicParams.java | 2 +- .../dto}/EventRequestStatusUpdateRequest.java | 4 +- .../dto}/EventRequestStatusUpdateResult.java | 4 +- .../DTO => event/dto}/EventShortDTO.java | 6 +- .../{Event/DTO => event/dto}/NewEventDTO.java | 4 +- .../DTO => event/dto}/SearchEventsDTO.java | 4 +- .../dto}/UpdateEventAdminRequest.java | 6 +- .../dto}/UpdateEventUserRequest.java | 6 +- .../Mapper => event/mapper}/EventMapper.java | 6 +- .../{Event/Model => event/model}/Event.java | 28 ++++++--- .../Model => event/model}/Location.java | 2 +- .../{Event/Model => event/model}/State.java | 2 +- .../repository}/EventRepository.java | 6 +- .../service/admin}/EventAdminService.java | 8 +-- .../service/admin}/EventAdminServiceImpl.java | 31 +++++----- .../service/close}/EventPrivateService.java | 6 +- .../close}/EventPrivateServiceImpl.java | 56 +++++++++++------- .../service/open}/EventPublicService.java | 8 +-- .../service/open}/EventPublicServiceImpl.java | 31 +++++----- .../ConflictException.java | 2 +- .../ErrorResponse.java | 2 +- .../EvmErrorHandler.java | 2 +- .../NotFoundException.java | 2 +- .../UniqueException.java | 2 +- .../ValidationException.java | 2 +- .../controller}/RequestPrivateController.java | 13 +++-- .../mapper}/RequestMapper.java | 6 +- .../Model => request/model}/Request.java | 30 +++++++--- .../repository}/RequestRepository.java | 6 +- .../requestDTO}/ParticipationRequestDto.java | 4 +- .../service}/RequestPrivateService.java | 4 +- .../service}/RequestPrivateServiceImpl.java | 39 ++++++++----- .../controller}/UserAdminController.java | 18 ++++-- .../DTO => user/dto}/NewUserRequest.java | 2 +- .../{User/DTO => user/dto}/UserDTO.java | 2 +- .../{User/DTO => user/dto}/UserShortDTO.java | 2 +- .../DTO => user/dto}/UsersListRequest.java | 2 +- .../Mapper => user/mapper}/UserMapper.java | 10 ++-- .../java/ru/practicum/user/model/User.java | 39 +++++++++++++ .../repository}/UserRepository.java | 4 +- .../service}/UserAdminService.java | 8 +-- .../service}/UserAdminServiceImpl.java | 28 +++++---- .../controller/StatsServerController.java | 4 ++ ...erviceInterface.java => StatsService.java} | 2 +- .../practicum/service/StatsServiceImpl.java | 6 +- 91 files changed, 642 insertions(+), 415 deletions(-) delete mode 100644 evm-service/src/main/java/ru/practicum/Category/Model/Category.java delete mode 100644 evm-service/src/main/java/ru/practicum/Comments/Service/Public/CommentPublicInterface.java delete mode 100644 evm-service/src/main/java/ru/practicum/User/Model/User.java rename evm-service/src/main/java/ru/practicum/{Category/Controller => category/controller}/CategoryAdminController.java (66%) rename evm-service/src/main/java/ru/practicum/{Category/Controller => category/controller}/CategoryPublicController.java (73%) rename evm-service/src/main/java/ru/practicum/{Category/DTO => category/dto}/CategoryDTO.java (90%) rename evm-service/src/main/java/ru/practicum/{Category/DTO => category/dto}/NewCategoryDTO.java (90%) rename evm-service/src/main/java/ru/practicum/{Category/Mapper => category/mapper}/CategoryMapper.java (59%) create mode 100644 evm-service/src/main/java/ru/practicum/category/model/Category.java rename evm-service/src/main/java/ru/practicum/{Category/Repository => category/repository}/CategoryRepository.java (77%) rename evm-service/src/main/java/ru/practicum/{Category/Service/Admin => category/service/admin}/CategoryAdminService.java (59%) rename evm-service/src/main/java/ru/practicum/{Category/Service/Admin => category/service/admin}/CategoryAdminServiceImpl.java (56%) rename evm-service/src/main/java/ru/practicum/{Category/Service/Public => category/service/open}/CategoryPublicService.java (66%) rename evm-service/src/main/java/ru/practicum/{Category/Service/Public => category/service/open}/CategoryPublicServiceImpl.java (67%) rename evm-service/src/main/java/ru/practicum/{Comments/Controller => comment/controller}/CommentPrivateController.java (65%) rename evm-service/src/main/java/ru/practicum/{Comments/Controller => comment/controller}/CommentPublicController.java (68%) rename evm-service/src/main/java/ru/practicum/{Comments/DTO => comment/dto}/CommentDTO.java (69%) rename evm-service/src/main/java/ru/practicum/{Comments/DTO => comment/dto}/NewCommentDTO.java (94%) rename evm-service/src/main/java/ru/practicum/{Comments/DTO => comment/dto}/UpdateCommentDTO.java (94%) rename evm-service/src/main/java/ru/practicum/{Comments/DTO => comment/dto}/UpdatedCommentDTO.java (78%) rename evm-service/src/main/java/ru/practicum/{Comments/Mapper => comment/mapper}/CommentsMapper.java (52%) rename evm-service/src/main/java/ru/practicum/{Comments/Model => comment/model}/Comment.java (61%) rename evm-service/src/main/java/ru/practicum/{Comments/Model => comment/model}/Status.java (56%) rename evm-service/src/main/java/ru/practicum/{Comments/Repository => comment/repository}/CommentsRepository.java (86%) rename evm-service/src/main/java/ru/practicum/{Comments/Service/Private => comment/service/close}/CommentPrivateService.java (63%) rename evm-service/src/main/java/ru/practicum/{Comments/Service/Private => comment/service/close}/CommentPrivateServiceImpl.java (69%) create mode 100644 evm-service/src/main/java/ru/practicum/comment/service/open/CommentPublicService.java rename evm-service/src/main/java/ru/practicum/{Comments/Service/Public/CommentPublicInterfaceImpl.java => comment/service/open/CommentPublicServiceImpl.java} (61%) rename evm-service/src/main/java/ru/practicum/{Compilation/CompilationDTO => compilation/compilationDTO}/CompilationDTO.java (82%) rename evm-service/src/main/java/ru/practicum/{Compilation/CompilationDTO => compilation/compilationDTO}/CompilationsListRequestParams.java (86%) rename evm-service/src/main/java/ru/practicum/{Compilation/CompilationDTO => compilation/compilationDTO}/NewCompilationDTO.java (89%) rename evm-service/src/main/java/ru/practicum/{Compilation/CompilationDTO => compilation/compilationDTO}/UpdateCompilationRequest.java (88%) rename evm-service/src/main/java/ru/practicum/{Compilation/Controller => compilation/controller}/CompilationAdminController.java (63%) rename evm-service/src/main/java/ru/practicum/{Compilation/Controller => compilation/controller}/CompilationPublicController.java (57%) rename evm-service/src/main/java/ru/practicum/{Compilation/Mapper => compilation/mapper}/CompilationMapper.java (64%) rename evm-service/src/main/java/ru/practicum/{Compilation/Model => compilation/model}/Compilation.java (56%) rename evm-service/src/main/java/ru/practicum/{Compilation/Repository => compilation/repository}/CompilationRepository.java (82%) rename evm-service/src/main/java/ru/practicum/{Compilation/Service/Admin => compilation/service/admin}/CompilationAdminService.java (52%) rename evm-service/src/main/java/ru/practicum/{Compilation/Service/Admin => compilation/service/admin}/CompilationAdminServiceImpl.java (62%) rename evm-service/src/main/java/ru/practicum/{Compilation/Service/Public => compilation/service/open}/CompilationPublicService.java (55%) rename evm-service/src/main/java/ru/practicum/{Compilation/Service/Public => compilation/service/open}/CompilationPublicServiceImpl.java (84%) rename evm-service/src/main/java/ru/practicum/{Event/Controller => event/controller}/EventAdminController.java (66%) rename evm-service/src/main/java/ru/practicum/{Event/Controller => event/controller}/EventPrivateController.java (72%) rename evm-service/src/main/java/ru/practicum/{Event/Controller => event/controller}/EventPublicController.java (62%) rename evm-service/src/main/java/ru/practicum/{Event/DTO => event/dto}/EventCommentsDTO.java (91%) rename evm-service/src/main/java/ru/practicum/{Event/DTO => event/dto}/EventFullDTO.java (83%) rename evm-service/src/main/java/ru/practicum/{Event/DTO => event/dto}/EventPublicParams.java (96%) rename evm-service/src/main/java/ru/practicum/{Event/DTO => event/dto}/EventRequestStatusUpdateRequest.java (85%) rename evm-service/src/main/java/ru/practicum/{Event/DTO => event/dto}/EventRequestStatusUpdateResult.java (77%) rename evm-service/src/main/java/ru/practicum/{Event/DTO => event/dto}/EventShortDTO.java (86%) rename evm-service/src/main/java/ru/practicum/{Event/DTO => event/dto}/NewEventDTO.java (93%) rename evm-service/src/main/java/ru/practicum/{Event/DTO => event/dto}/SearchEventsDTO.java (92%) rename evm-service/src/main/java/ru/practicum/{Event/DTO => event/dto}/UpdateEventAdminRequest.java (88%) rename evm-service/src/main/java/ru/practicum/{Event/DTO => event/dto}/UpdateEventUserRequest.java (89%) rename evm-service/src/main/java/ru/practicum/{Event/Mapper => event/mapper}/EventMapper.java (82%) rename evm-service/src/main/java/ru/practicum/{Event/Model => event/model}/Event.java (73%) rename evm-service/src/main/java/ru/practicum/{Event/Model => event/model}/Location.java (88%) rename evm-service/src/main/java/ru/practicum/{Event/Model => event/model}/State.java (83%) rename evm-service/src/main/java/ru/practicum/{Event/Repository => event/repository}/EventRepository.java (86%) rename evm-service/src/main/java/ru/practicum/{Event/Service/Admin => event/service/admin}/EventAdminService.java (53%) rename evm-service/src/main/java/ru/practicum/{Event/Service/Admin => event/service/admin}/EventAdminServiceImpl.java (81%) rename evm-service/src/main/java/ru/practicum/{Event/Service/Private => event/service/close}/EventPrivateService.java (80%) rename evm-service/src/main/java/ru/practicum/{Event/Service/Private => event/service/close}/EventPrivateServiceImpl.java (76%) rename evm-service/src/main/java/ru/practicum/{Event/Service/Public => event/service/open}/EventPublicService.java (60%) rename evm-service/src/main/java/ru/practicum/{Event/Service/Public => event/service/open}/EventPublicServiceImpl.java (87%) rename evm-service/src/main/java/ru/practicum/{Exception => exception}/ConflictException.java (85%) rename evm-service/src/main/java/ru/practicum/{Exception => exception}/ErrorResponse.java (92%) rename evm-service/src/main/java/ru/practicum/{Exception => exception}/EvmErrorHandler.java (98%) rename evm-service/src/main/java/ru/practicum/{Exception => exception}/NotFoundException.java (85%) rename evm-service/src/main/java/ru/practicum/{Exception => exception}/UniqueException.java (85%) rename evm-service/src/main/java/ru/practicum/{Exception => exception}/ValidationException.java (86%) rename evm-service/src/main/java/ru/practicum/{Request/Controller => request/controller}/RequestPrivateController.java (67%) rename evm-service/src/main/java/ru/practicum/{Request/Mapper => request/mapper}/RequestMapper.java (77%) rename evm-service/src/main/java/ru/practicum/{Request/Model => request/model}/Request.java (50%) rename evm-service/src/main/java/ru/practicum/{Request/Repository => request/repository}/RequestRepository.java (82%) rename evm-service/src/main/java/ru/practicum/{Request/RequestDTO => request/requestDTO}/ParticipationRequestDto.java (85%) rename evm-service/src/main/java/ru/practicum/{Request/Service => request/service}/RequestPrivateService.java (73%) rename evm-service/src/main/java/ru/practicum/{Request/Service => request/service}/RequestPrivateServiceImpl.java (68%) rename evm-service/src/main/java/ru/practicum/{User/Controller => user/controller}/UserAdminController.java (71%) rename evm-service/src/main/java/ru/practicum/{User/DTO => user/dto}/NewUserRequest.java (93%) rename evm-service/src/main/java/ru/practicum/{User/DTO => user/dto}/UserDTO.java (92%) rename evm-service/src/main/java/ru/practicum/{User/DTO => user/dto}/UserShortDTO.java (91%) rename evm-service/src/main/java/ru/practicum/{User/DTO => user/dto}/UsersListRequest.java (80%) rename evm-service/src/main/java/ru/practicum/{User/Mapper => user/mapper}/UserMapper.java (52%) create mode 100644 evm-service/src/main/java/ru/practicum/user/model/User.java rename evm-service/src/main/java/ru/practicum/{User/Repository => user/repository}/UserRepository.java (85%) rename evm-service/src/main/java/ru/practicum/{User/Service => user/service}/UserAdminService.java (59%) rename evm-service/src/main/java/ru/practicum/{User/Service => user/service}/UserAdminServiceImpl.java (65%) rename stat/stat-server/src/main/java/ru/practicum/service/{StatsServiceInterface.java => StatsService.java} (87%) diff --git a/evm-service/src/main/java/ru/practicum/Category/Model/Category.java b/evm-service/src/main/java/ru/practicum/Category/Model/Category.java deleted file mode 100644 index 92b44d1..0000000 --- a/evm-service/src/main/java/ru/practicum/Category/Model/Category.java +++ /dev/null @@ -1,22 +0,0 @@ -package ru.practicum.Category.Model; - -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@NoArgsConstructor -@AllArgsConstructor -@Entity -@Table(name = "categories") -public class Category { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "id") - private Integer id; - - @Column(name = "name", length = 50) - private String name; -} diff --git a/evm-service/src/main/java/ru/practicum/Comments/Service/Public/CommentPublicInterface.java b/evm-service/src/main/java/ru/practicum/Comments/Service/Public/CommentPublicInterface.java deleted file mode 100644 index 45589fd..0000000 --- a/evm-service/src/main/java/ru/practicum/Comments/Service/Public/CommentPublicInterface.java +++ /dev/null @@ -1,9 +0,0 @@ -package ru.practicum.Comments.Service.Public; - -import ru.practicum.Comments.DTO.CommentDTO; - -import java.util.List; - -public interface CommentPublicInterface { - List getComments(Integer eventId, Integer from, Integer size); -} diff --git a/evm-service/src/main/java/ru/practicum/User/Model/User.java b/evm-service/src/main/java/ru/practicum/User/Model/User.java deleted file mode 100644 index 9e08ef5..0000000 --- a/evm-service/src/main/java/ru/practicum/User/Model/User.java +++ /dev/null @@ -1,24 +0,0 @@ -package ru.practicum.User.Model; - -import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@NoArgsConstructor -@AllArgsConstructor -@Entity -@Table(name = "users") -public class User { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "id") - private Integer id; - - @Column(name = "email", length = 500) - private String email; - - @Column(name = "name", length = 250) - private String name; -} diff --git a/evm-service/src/main/java/ru/practicum/Category/Controller/CategoryAdminController.java b/evm-service/src/main/java/ru/practicum/category/controller/CategoryAdminController.java similarity index 66% rename from evm-service/src/main/java/ru/practicum/Category/Controller/CategoryAdminController.java rename to evm-service/src/main/java/ru/practicum/category/controller/CategoryAdminController.java index 6864f84..091f21d 100644 --- a/evm-service/src/main/java/ru/practicum/Category/Controller/CategoryAdminController.java +++ b/evm-service/src/main/java/ru/practicum/category/controller/CategoryAdminController.java @@ -1,34 +1,39 @@ -package ru.practicum.Category.Controller; +package ru.practicum.category.controller; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; -import ru.practicum.Category.DTO.CategoryDTO; -import ru.practicum.Category.DTO.NewCategoryDTO; -import ru.practicum.Category.Service.Admin.CategoryAdminServiceImpl; +import ru.practicum.category.dto.CategoryDTO; +import ru.practicum.category.dto.NewCategoryDTO; +import ru.practicum.category.service.admin.CategoryAdminService; @RestController @RequestMapping("/admin/categories") @RequiredArgsConstructor +@Slf4j public class CategoryAdminController { - private final CategoryAdminServiceImpl categoryService; + private final CategoryAdminService categoryService; @PostMapping @ResponseStatus(HttpStatus.CREATED) public CategoryDTO createCategory(@RequestBody @Valid NewCategoryDTO category) { + log.info("Create new category: {}", category); return categoryService.addCategory(category); } @DeleteMapping("/{catId}") @ResponseStatus(HttpStatus.NO_CONTENT) public void deleteCategory(@PathVariable Integer catId) { + log.info("Delete category: {}", catId); categoryService.deleteCategory(catId); } @PatchMapping("/{catId}") @ResponseStatus(HttpStatus.OK) public CategoryDTO updateCategory(@PathVariable Integer catId, @RequestBody @Valid CategoryDTO category) { + log.info("Update category: {}, {}", catId, category); return categoryService.updateCategory(catId, category); } diff --git a/evm-service/src/main/java/ru/practicum/Category/Controller/CategoryPublicController.java b/evm-service/src/main/java/ru/practicum/category/controller/CategoryPublicController.java similarity index 73% rename from evm-service/src/main/java/ru/practicum/Category/Controller/CategoryPublicController.java rename to evm-service/src/main/java/ru/practicum/category/controller/CategoryPublicController.java index 65cbea9..7958546 100644 --- a/evm-service/src/main/java/ru/practicum/Category/Controller/CategoryPublicController.java +++ b/evm-service/src/main/java/ru/practicum/category/controller/CategoryPublicController.java @@ -1,28 +1,32 @@ -package ru.practicum.Category.Controller; +package ru.practicum.category.controller; import jakarta.validation.constraints.Positive; import jakarta.validation.constraints.PositiveOrZero; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; -import ru.practicum.Category.DTO.CategoryDTO; -import ru.practicum.Category.Service.Public.CategoryPublicService; +import ru.practicum.category.dto.CategoryDTO; +import ru.practicum.category.service.open.CategoryPublicService; import java.util.List; @RestController @RequestMapping("/categories") @RequiredArgsConstructor +@Slf4j public class CategoryPublicController { private final CategoryPublicService categoryService; @GetMapping("/{catId}") public CategoryDTO getCategory(@PathVariable Integer catId) { + log.info("Get category: {}", catId); return categoryService.getCategory(catId); } @GetMapping public List getCategories(@RequestParam(defaultValue = "0") @PositiveOrZero Integer from, @RequestParam(defaultValue = "10") @Positive Integer size) { + log.info("Get categories: {}, {}", from, size); return categoryService.getCategories(from, size); } } diff --git a/evm-service/src/main/java/ru/practicum/Category/DTO/CategoryDTO.java b/evm-service/src/main/java/ru/practicum/category/dto/CategoryDTO.java similarity index 90% rename from evm-service/src/main/java/ru/practicum/Category/DTO/CategoryDTO.java rename to evm-service/src/main/java/ru/practicum/category/dto/CategoryDTO.java index fdc9e3d..c538012 100644 --- a/evm-service/src/main/java/ru/practicum/Category/DTO/CategoryDTO.java +++ b/evm-service/src/main/java/ru/practicum/category/dto/CategoryDTO.java @@ -1,4 +1,4 @@ -package ru.practicum.Category.DTO; +package ru.practicum.category.dto; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; diff --git a/evm-service/src/main/java/ru/practicum/Category/DTO/NewCategoryDTO.java b/evm-service/src/main/java/ru/practicum/category/dto/NewCategoryDTO.java similarity index 90% rename from evm-service/src/main/java/ru/practicum/Category/DTO/NewCategoryDTO.java rename to evm-service/src/main/java/ru/practicum/category/dto/NewCategoryDTO.java index 0e0dbfc..d08d156 100644 --- a/evm-service/src/main/java/ru/practicum/Category/DTO/NewCategoryDTO.java +++ b/evm-service/src/main/java/ru/practicum/category/dto/NewCategoryDTO.java @@ -1,4 +1,4 @@ -package ru.practicum.Category.DTO; +package ru.practicum.category.dto; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; diff --git a/evm-service/src/main/java/ru/practicum/Category/Mapper/CategoryMapper.java b/evm-service/src/main/java/ru/practicum/category/mapper/CategoryMapper.java similarity index 59% rename from evm-service/src/main/java/ru/practicum/Category/Mapper/CategoryMapper.java rename to evm-service/src/main/java/ru/practicum/category/mapper/CategoryMapper.java index a1d82dd..9c9e464 100644 --- a/evm-service/src/main/java/ru/practicum/Category/Mapper/CategoryMapper.java +++ b/evm-service/src/main/java/ru/practicum/category/mapper/CategoryMapper.java @@ -1,9 +1,9 @@ -package ru.practicum.Category.Mapper; +package ru.practicum.category.mapper; import org.mapstruct.Mapper; -import ru.practicum.Category.DTO.CategoryDTO; -import ru.practicum.Category.DTO.NewCategoryDTO; -import ru.practicum.Category.Model.Category; +import ru.practicum.category.dto.CategoryDTO; +import ru.practicum.category.dto.NewCategoryDTO; +import ru.practicum.category.model.Category; @Mapper(componentModel = "spring") public interface CategoryMapper { diff --git a/evm-service/src/main/java/ru/practicum/category/model/Category.java b/evm-service/src/main/java/ru/practicum/category/model/Category.java new file mode 100644 index 0000000..28b61ce --- /dev/null +++ b/evm-service/src/main/java/ru/practicum/category/model/Category.java @@ -0,0 +1,37 @@ +package ru.practicum.category.model; + +import jakarta.persistence.*; +import lombok.*; + +import java.util.Objects; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +@Entity +@Table(name = "categories") +public class Category { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Integer id; + + @Column(name = "name", length = 50) + private String name; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Category category = (Category) o; + return Objects.equals(id, category.id); + } + + @Override + public int hashCode() { + return getClass().hashCode(); + } +} diff --git a/evm-service/src/main/java/ru/practicum/Category/Repository/CategoryRepository.java b/evm-service/src/main/java/ru/practicum/category/repository/CategoryRepository.java similarity index 77% rename from evm-service/src/main/java/ru/practicum/Category/Repository/CategoryRepository.java rename to evm-service/src/main/java/ru/practicum/category/repository/CategoryRepository.java index f1634f8..66ca1a0 100644 --- a/evm-service/src/main/java/ru/practicum/Category/Repository/CategoryRepository.java +++ b/evm-service/src/main/java/ru/practicum/category/repository/CategoryRepository.java @@ -1,7 +1,7 @@ -package ru.practicum.Category.Repository; +package ru.practicum.category.repository; import org.springframework.data.jpa.repository.JpaRepository; -import ru.practicum.Category.Model.Category; +import ru.practicum.category.model.Category; import java.util.Optional; diff --git a/evm-service/src/main/java/ru/practicum/Category/Service/Admin/CategoryAdminService.java b/evm-service/src/main/java/ru/practicum/category/service/admin/CategoryAdminService.java similarity index 59% rename from evm-service/src/main/java/ru/practicum/Category/Service/Admin/CategoryAdminService.java rename to evm-service/src/main/java/ru/practicum/category/service/admin/CategoryAdminService.java index 4609760..f95304e 100644 --- a/evm-service/src/main/java/ru/practicum/Category/Service/Admin/CategoryAdminService.java +++ b/evm-service/src/main/java/ru/practicum/category/service/admin/CategoryAdminService.java @@ -1,7 +1,7 @@ -package ru.practicum.Category.Service.Admin; +package ru.practicum.category.service.admin; -import ru.practicum.Category.DTO.CategoryDTO; -import ru.practicum.Category.DTO.NewCategoryDTO; +import ru.practicum.category.dto.CategoryDTO; +import ru.practicum.category.dto.NewCategoryDTO; public interface CategoryAdminService { CategoryDTO addCategory(NewCategoryDTO categoryDTO); diff --git a/evm-service/src/main/java/ru/practicum/Category/Service/Admin/CategoryAdminServiceImpl.java b/evm-service/src/main/java/ru/practicum/category/service/admin/CategoryAdminServiceImpl.java similarity index 56% rename from evm-service/src/main/java/ru/practicum/Category/Service/Admin/CategoryAdminServiceImpl.java rename to evm-service/src/main/java/ru/practicum/category/service/admin/CategoryAdminServiceImpl.java index 3e13534..5ffd9e4 100644 --- a/evm-service/src/main/java/ru/practicum/Category/Service/Admin/CategoryAdminServiceImpl.java +++ b/evm-service/src/main/java/ru/practicum/category/service/admin/CategoryAdminServiceImpl.java @@ -1,21 +1,23 @@ -package ru.practicum.Category.Service.Admin; +package ru.practicum.category.service.admin; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import ru.practicum.Category.DTO.CategoryDTO; -import ru.practicum.Category.DTO.NewCategoryDTO; -import ru.practicum.Category.Mapper.CategoryMapper; -import ru.practicum.Category.Model.Category; -import ru.practicum.Category.Repository.CategoryRepository; -import ru.practicum.Event.Model.Event; -import ru.practicum.Event.Repository.EventRepository; -import ru.practicum.Exception.ConflictException; -import ru.practicum.Exception.NotFoundException; +import ru.practicum.category.dto.CategoryDTO; +import ru.practicum.category.dto.NewCategoryDTO; +import ru.practicum.category.mapper.CategoryMapper; +import ru.practicum.category.model.Category; +import ru.practicum.category.repository.CategoryRepository; +import ru.practicum.event.model.Event; +import ru.practicum.event.repository.EventRepository; +import ru.practicum.exception.ConflictException; +import ru.practicum.exception.NotFoundException; import java.util.List; @Service @RequiredArgsConstructor +@Slf4j public class CategoryAdminServiceImpl implements CategoryAdminService { private final CategoryMapper categoryMapper; private final CategoryRepository repository; @@ -24,7 +26,9 @@ public class CategoryAdminServiceImpl implements CategoryAdminService { @Override public CategoryDTO addCategory(NewCategoryDTO newCategory) { Category category = categoryMapper.toCategory(newCategory); - return categoryMapper.toCategoryDTO(repository.save(category)); + CategoryDTO categoryDTO = categoryMapper.toCategoryDTO(repository.save(category)); + log.info("Category is added: {}", categoryDTO); + return categoryDTO; } @Override @@ -37,9 +41,8 @@ public void deleteCategory(Integer catId) { throw new ConflictException("Category with id " + catId + " has connected events"); } - // Integer categoryEvents = - repository.deleteById(catId); + log.info("Category is deleted: {}", category); } @Override @@ -47,13 +50,15 @@ public CategoryDTO updateCategory(int id, CategoryDTO newCategory) { Category category = repository.findById(id) .orElseThrow(() -> new NotFoundException("Category with id " + id + " not found")); + CategoryDTO categoryDTO; if (category.getName().equals(newCategory.getName())) { - return categoryMapper.toCategoryDTO(category); + categoryDTO = categoryMapper.toCategoryDTO(category); } else { - return categoryMapper.toCategoryDTO(repository.save(categoryMapper.toCategory(newCategory))); + categoryDTO = categoryMapper.toCategoryDTO(repository.save(categoryMapper.toCategory(newCategory))); } - + log.info("Category is updated: {}", categoryDTO); + return categoryDTO; } diff --git a/evm-service/src/main/java/ru/practicum/Category/Service/Public/CategoryPublicService.java b/evm-service/src/main/java/ru/practicum/category/service/open/CategoryPublicService.java similarity index 66% rename from evm-service/src/main/java/ru/practicum/Category/Service/Public/CategoryPublicService.java rename to evm-service/src/main/java/ru/practicum/category/service/open/CategoryPublicService.java index 7d614ec..81d5fde 100644 --- a/evm-service/src/main/java/ru/practicum/Category/Service/Public/CategoryPublicService.java +++ b/evm-service/src/main/java/ru/practicum/category/service/open/CategoryPublicService.java @@ -1,6 +1,6 @@ -package ru.practicum.Category.Service.Public; +package ru.practicum.category.service.open; -import ru.practicum.Category.DTO.CategoryDTO; +import ru.practicum.category.dto.CategoryDTO; import java.util.List; diff --git a/evm-service/src/main/java/ru/practicum/Category/Service/Public/CategoryPublicServiceImpl.java b/evm-service/src/main/java/ru/practicum/category/service/open/CategoryPublicServiceImpl.java similarity index 67% rename from evm-service/src/main/java/ru/practicum/Category/Service/Public/CategoryPublicServiceImpl.java rename to evm-service/src/main/java/ru/practicum/category/service/open/CategoryPublicServiceImpl.java index fb00324..301327c 100644 --- a/evm-service/src/main/java/ru/practicum/Category/Service/Public/CategoryPublicServiceImpl.java +++ b/evm-service/src/main/java/ru/practicum/category/service/open/CategoryPublicServiceImpl.java @@ -1,21 +1,23 @@ -package ru.practicum.Category.Service.Public; +package ru.practicum.category.service.open; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; -import ru.practicum.Category.DTO.CategoryDTO; -import ru.practicum.Category.Mapper.CategoryMapper; -import ru.practicum.Category.Model.Category; -import ru.practicum.Category.Repository.CategoryRepository; -import ru.practicum.Exception.NotFoundException; +import ru.practicum.category.dto.CategoryDTO; +import ru.practicum.category.mapper.CategoryMapper; +import ru.practicum.category.model.Category; +import ru.practicum.category.repository.CategoryRepository; +import ru.practicum.exception.NotFoundException; import java.util.List; @Service @RequiredArgsConstructor +@Slf4j public class CategoryPublicServiceImpl implements CategoryPublicService { private final CategoryRepository repository; private final CategoryMapper categoryMapper; @@ -24,15 +26,16 @@ public class CategoryPublicServiceImpl implements CategoryPublicService { public CategoryDTO getCategory(Integer catId) { Category category = repository.findById(catId) .orElseThrow(() -> new NotFoundException("Category with id " + catId + " not found")); - return categoryMapper.toCategoryDTO(category); + CategoryDTO categoryDTO = categoryMapper.toCategoryDTO(category); + log.info("Category is found: {}", categoryDTO); + return categoryDTO; } - - @Override public List getCategories(Integer from, Integer size) { Pageable pageable = PageRequest.of(from, size, Sort.by("id").ascending()); Page categories = repository.findAll(pageable); + log.info("Found categories are sent"); return categories.getContent().stream() .map(categoryMapper::toCategoryDTO) .toList(); diff --git a/evm-service/src/main/java/ru/practicum/Comments/Controller/CommentPrivateController.java b/evm-service/src/main/java/ru/practicum/comment/controller/CommentPrivateController.java similarity index 65% rename from evm-service/src/main/java/ru/practicum/Comments/Controller/CommentPrivateController.java rename to evm-service/src/main/java/ru/practicum/comment/controller/CommentPrivateController.java index affcc6e..56d2ef1 100644 --- a/evm-service/src/main/java/ru/practicum/Comments/Controller/CommentPrivateController.java +++ b/evm-service/src/main/java/ru/practicum/comment/controller/CommentPrivateController.java @@ -1,19 +1,21 @@ -package ru.practicum.Comments.Controller; +package ru.practicum.comment.controller; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; -import ru.practicum.Comments.DTO.CommentDTO; -import ru.practicum.Comments.DTO.NewCommentDTO; -import ru.practicum.Comments.DTO.UpdateCommentDTO; -import ru.practicum.Comments.Service.Private.CommentPrivateServiceImpl; +import ru.practicum.comment.dto.CommentDTO; +import ru.practicum.comment.dto.NewCommentDTO; +import ru.practicum.comment.dto.UpdateCommentDTO; +import ru.practicum.comment.service.close.CommentPrivateService; @RestController @RequestMapping("/events/comments") @RequiredArgsConstructor +@Slf4j public class CommentPrivateController { - private final CommentPrivateServiceImpl commentService; + private final CommentPrivateService commentService; public static final String USER_ID = "X-User-Id"; @PostMapping("/{eventId}") @@ -21,11 +23,14 @@ public class CommentPrivateController { public CommentDTO addComment(@RequestBody NewCommentDTO commentDTO, @RequestHeader(USER_ID) Integer userId, @PathVariable Integer eventId) { + log.info("Adding comment to event with id = {}, userId = {}, " + + "comment : {}", eventId, userId, commentDTO); return commentService.addComment(commentDTO, userId, eventId); } @GetMapping("/{commentId}") public CommentDTO getComment(@PathVariable Integer commentId) { + log.info("Getting comment by id: {}", commentId); return commentService.getComment(commentId); } @@ -33,12 +38,14 @@ public CommentDTO getComment(@PathVariable Integer commentId) { public CommentDTO updateComment(@RequestHeader(USER_ID) Integer userId, @RequestBody UpdateCommentDTO dto, @PathVariable Integer commentId) { + log.info("Updating comment with id = {}, userId = {}, comment: {}", commentId, userId, dto); return commentService.updateComment(dto, userId, commentId); } @DeleteMapping("/{commentId}") public void deleteComment(@RequestHeader(USER_ID) Integer userId, @PathVariable Integer commentId) { + log.info("Deleting comment with id = {} by user with id = {}", commentId, userId); commentService.deleteComment(commentId, userId); } diff --git a/evm-service/src/main/java/ru/practicum/Comments/Controller/CommentPublicController.java b/evm-service/src/main/java/ru/practicum/comment/controller/CommentPublicController.java similarity index 68% rename from evm-service/src/main/java/ru/practicum/Comments/Controller/CommentPublicController.java rename to evm-service/src/main/java/ru/practicum/comment/controller/CommentPublicController.java index 0a2ad52..aef391f 100644 --- a/evm-service/src/main/java/ru/practicum/Comments/Controller/CommentPublicController.java +++ b/evm-service/src/main/java/ru/practicum/comment/controller/CommentPublicController.java @@ -1,25 +1,28 @@ -package ru.practicum.Comments.Controller; +package ru.practicum.comment.controller; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Positive; import jakarta.validation.constraints.PositiveOrZero; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; -import ru.practicum.Comments.DTO.CommentDTO; -import ru.practicum.Comments.Service.Public.CommentPublicInterface; +import ru.practicum.comment.dto.CommentDTO; +import ru.practicum.comment.service.open.CommentPublicService; import java.util.List; @RestController @RequestMapping("/event/{eventId}/comments") @RequiredArgsConstructor +@Slf4j public class CommentPublicController { - private final CommentPublicInterface commentPublicInterface; + private final CommentPublicService commentPublicInterface; @GetMapping public List getComments(@PathVariable @NotNull Integer eventId, @RequestParam(defaultValue = "0") @PositiveOrZero Integer from, @RequestParam(defaultValue = "10") @Positive Integer size) { + log.info("Getting comments to event with id = {}, from - {}, size - {}", eventId, from, size); return commentPublicInterface.getComments(eventId, from, size); } } diff --git a/evm-service/src/main/java/ru/practicum/Comments/DTO/CommentDTO.java b/evm-service/src/main/java/ru/practicum/comment/dto/CommentDTO.java similarity index 69% rename from evm-service/src/main/java/ru/practicum/Comments/DTO/CommentDTO.java rename to evm-service/src/main/java/ru/practicum/comment/dto/CommentDTO.java index edf1688..bf6140d 100644 --- a/evm-service/src/main/java/ru/practicum/Comments/DTO/CommentDTO.java +++ b/evm-service/src/main/java/ru/practicum/comment/dto/CommentDTO.java @@ -1,11 +1,11 @@ -package ru.practicum.Comments.DTO; +package ru.practicum.comment.dto; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import ru.practicum.Comments.Model.Status; -import ru.practicum.Event.DTO.EventCommentsDTO; -import ru.practicum.User.Model.User; +import ru.practicum.comment.model.Status; +import ru.practicum.event.dto.EventCommentsDTO; +import ru.practicum.user.model.User; import java.time.LocalDateTime; diff --git a/evm-service/src/main/java/ru/practicum/Comments/DTO/NewCommentDTO.java b/evm-service/src/main/java/ru/practicum/comment/dto/NewCommentDTO.java similarity index 94% rename from evm-service/src/main/java/ru/practicum/Comments/DTO/NewCommentDTO.java rename to evm-service/src/main/java/ru/practicum/comment/dto/NewCommentDTO.java index 78aec33..9a2fcda 100644 --- a/evm-service/src/main/java/ru/practicum/Comments/DTO/NewCommentDTO.java +++ b/evm-service/src/main/java/ru/practicum/comment/dto/NewCommentDTO.java @@ -1,4 +1,4 @@ -package ru.practicum.Comments.DTO; +package ru.practicum.comment.dto; import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.validation.constraints.NotNull; diff --git a/evm-service/src/main/java/ru/practicum/Comments/DTO/UpdateCommentDTO.java b/evm-service/src/main/java/ru/practicum/comment/dto/UpdateCommentDTO.java similarity index 94% rename from evm-service/src/main/java/ru/practicum/Comments/DTO/UpdateCommentDTO.java rename to evm-service/src/main/java/ru/practicum/comment/dto/UpdateCommentDTO.java index 778fa29..165f6d5 100644 --- a/evm-service/src/main/java/ru/practicum/Comments/DTO/UpdateCommentDTO.java +++ b/evm-service/src/main/java/ru/practicum/comment/dto/UpdateCommentDTO.java @@ -1,4 +1,4 @@ -package ru.practicum.Comments.DTO; +package ru.practicum.comment.dto; import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.validation.constraints.NotNull; diff --git a/evm-service/src/main/java/ru/practicum/Comments/DTO/UpdatedCommentDTO.java b/evm-service/src/main/java/ru/practicum/comment/dto/UpdatedCommentDTO.java similarity index 78% rename from evm-service/src/main/java/ru/practicum/Comments/DTO/UpdatedCommentDTO.java rename to evm-service/src/main/java/ru/practicum/comment/dto/UpdatedCommentDTO.java index dd3afa6..e8ff2f2 100644 --- a/evm-service/src/main/java/ru/practicum/Comments/DTO/UpdatedCommentDTO.java +++ b/evm-service/src/main/java/ru/practicum/comment/dto/UpdatedCommentDTO.java @@ -1,4 +1,4 @@ -package ru.practicum.Comments.DTO; +package ru.practicum.comment.dto; import java.time.LocalDateTime; diff --git a/evm-service/src/main/java/ru/practicum/Comments/Mapper/CommentsMapper.java b/evm-service/src/main/java/ru/practicum/comment/mapper/CommentsMapper.java similarity index 52% rename from evm-service/src/main/java/ru/practicum/Comments/Mapper/CommentsMapper.java rename to evm-service/src/main/java/ru/practicum/comment/mapper/CommentsMapper.java index a41f20f..a7702c6 100644 --- a/evm-service/src/main/java/ru/practicum/Comments/Mapper/CommentsMapper.java +++ b/evm-service/src/main/java/ru/practicum/comment/mapper/CommentsMapper.java @@ -1,11 +1,11 @@ -package ru.practicum.Comments.Mapper; +package ru.practicum.comment.mapper; import org.mapstruct.Mapper; -import ru.practicum.Comments.DTO.CommentDTO; -import ru.practicum.Comments.DTO.NewCommentDTO; -import ru.practicum.Comments.DTO.UpdateCommentDTO; -import ru.practicum.Comments.DTO.UpdatedCommentDTO; -import ru.practicum.Comments.Model.Comment; +import ru.practicum.comment.dto.CommentDTO; +import ru.practicum.comment.dto.NewCommentDTO; +import ru.practicum.comment.dto.UpdateCommentDTO; +import ru.practicum.comment.dto.UpdatedCommentDTO; +import ru.practicum.comment.model.Comment; @Mapper(componentModel = "spring") public interface CommentsMapper { diff --git a/evm-service/src/main/java/ru/practicum/Comments/Model/Comment.java b/evm-service/src/main/java/ru/practicum/comment/model/Comment.java similarity index 61% rename from evm-service/src/main/java/ru/practicum/Comments/Model/Comment.java rename to evm-service/src/main/java/ru/practicum/comment/model/Comment.java index 94b3ef1..3ccb1f1 100644 --- a/evm-service/src/main/java/ru/practicum/Comments/Model/Comment.java +++ b/evm-service/src/main/java/ru/practicum/comment/model/Comment.java @@ -1,17 +1,18 @@ -package ru.practicum.Comments.Model; +package ru.practicum.comment.model; import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import ru.practicum.Event.Model.Event; -import ru.practicum.User.Model.User; +import lombok.*; +import ru.practicum.event.model.Event; +import ru.practicum.user.model.User; import java.time.LocalDateTime; +import java.util.Objects; -@Data +@Getter +@Setter @NoArgsConstructor @AllArgsConstructor +@ToString @Entity @Table(name = "comments") public class Comment { @@ -41,4 +42,17 @@ public class Comment { @Enumerated(EnumType.STRING) @Column(name = "status") private Status status; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Comment comment = (Comment) o; + return Objects.equals(id, comment.id); + } + + @Override + public int hashCode() { + return getClass().hashCode(); + } } diff --git a/evm-service/src/main/java/ru/practicum/Comments/Model/Status.java b/evm-service/src/main/java/ru/practicum/comment/model/Status.java similarity index 56% rename from evm-service/src/main/java/ru/practicum/Comments/Model/Status.java rename to evm-service/src/main/java/ru/practicum/comment/model/Status.java index 06d8886..0b7a7e8 100644 --- a/evm-service/src/main/java/ru/practicum/Comments/Model/Status.java +++ b/evm-service/src/main/java/ru/practicum/comment/model/Status.java @@ -1,4 +1,4 @@ -package ru.practicum.Comments.Model; +package ru.practicum.comment.model; public enum Status { CREATED, diff --git a/evm-service/src/main/java/ru/practicum/Comments/Repository/CommentsRepository.java b/evm-service/src/main/java/ru/practicum/comment/repository/CommentsRepository.java similarity index 86% rename from evm-service/src/main/java/ru/practicum/Comments/Repository/CommentsRepository.java rename to evm-service/src/main/java/ru/practicum/comment/repository/CommentsRepository.java index 395f2bb..bf31e50 100644 --- a/evm-service/src/main/java/ru/practicum/Comments/Repository/CommentsRepository.java +++ b/evm-service/src/main/java/ru/practicum/comment/repository/CommentsRepository.java @@ -1,7 +1,7 @@ -package ru.practicum.Comments.Repository; +package ru.practicum.comment.repository; import org.springframework.data.jpa.repository.JpaRepository; -import ru.practicum.Comments.Model.Comment; +import ru.practicum.comment.model.Comment; import org.springframework.data.domain.Pageable; import java.util.List; diff --git a/evm-service/src/main/java/ru/practicum/Comments/Service/Private/CommentPrivateService.java b/evm-service/src/main/java/ru/practicum/comment/service/close/CommentPrivateService.java similarity index 63% rename from evm-service/src/main/java/ru/practicum/Comments/Service/Private/CommentPrivateService.java rename to evm-service/src/main/java/ru/practicum/comment/service/close/CommentPrivateService.java index 4bcd39a..2633c90 100644 --- a/evm-service/src/main/java/ru/practicum/Comments/Service/Private/CommentPrivateService.java +++ b/evm-service/src/main/java/ru/practicum/comment/service/close/CommentPrivateService.java @@ -1,8 +1,8 @@ -package ru.practicum.Comments.Service.Private; +package ru.practicum.comment.service.close; -import ru.practicum.Comments.DTO.CommentDTO; -import ru.practicum.Comments.DTO.NewCommentDTO; -import ru.practicum.Comments.DTO.UpdateCommentDTO; +import ru.practicum.comment.dto.CommentDTO; +import ru.practicum.comment.dto.NewCommentDTO; +import ru.practicum.comment.dto.UpdateCommentDTO; public interface CommentPrivateService { CommentDTO addComment(NewCommentDTO commentDTO, Integer userId, Integer eventId); diff --git a/evm-service/src/main/java/ru/practicum/Comments/Service/Private/CommentPrivateServiceImpl.java b/evm-service/src/main/java/ru/practicum/comment/service/close/CommentPrivateServiceImpl.java similarity index 69% rename from evm-service/src/main/java/ru/practicum/Comments/Service/Private/CommentPrivateServiceImpl.java rename to evm-service/src/main/java/ru/practicum/comment/service/close/CommentPrivateServiceImpl.java index d5b7cb3..45dc6d5 100644 --- a/evm-service/src/main/java/ru/practicum/Comments/Service/Private/CommentPrivateServiceImpl.java +++ b/evm-service/src/main/java/ru/practicum/comment/service/close/CommentPrivateServiceImpl.java @@ -1,28 +1,30 @@ -package ru.practicum.Comments.Service.Private; +package ru.practicum.comment.service.close; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import ru.practicum.Comments.DTO.CommentDTO; -import ru.practicum.Comments.DTO.NewCommentDTO; -import ru.practicum.Comments.DTO.UpdateCommentDTO; -import ru.practicum.Comments.Mapper.CommentsMapper; -import ru.practicum.Comments.Model.Comment; -import ru.practicum.Comments.Model.Status; -import ru.practicum.Comments.Repository.CommentsRepository; -import ru.practicum.Event.Model.Event; -import ru.practicum.Event.Model.State; -import ru.practicum.Event.Repository.EventRepository; -import ru.practicum.Exception.NotFoundException; -import ru.practicum.Exception.ValidationException; -import ru.practicum.Request.Model.Request; -import ru.practicum.Request.Repository.RequestRepository; -import ru.practicum.User.Model.User; -import ru.practicum.User.Repository.UserRepository; +import ru.practicum.comment.dto.CommentDTO; +import ru.practicum.comment.dto.NewCommentDTO; +import ru.practicum.comment.dto.UpdateCommentDTO; +import ru.practicum.comment.mapper.CommentsMapper; +import ru.practicum.comment.model.Comment; +import ru.practicum.comment.model.Status; +import ru.practicum.comment.repository.CommentsRepository; +import ru.practicum.event.model.Event; +import ru.practicum.event.model.State; +import ru.practicum.event.repository.EventRepository; +import ru.practicum.exception.NotFoundException; +import ru.practicum.exception.ValidationException; +import ru.practicum.request.model.Request; +import ru.practicum.request.repository.RequestRepository; +import ru.practicum.user.model.User; +import ru.practicum.user.repository.UserRepository; import java.util.Objects; @Service @RequiredArgsConstructor +@Slf4j public class CommentPrivateServiceImpl implements CommentPrivateService { private final CommentsRepository commentsRepository; private final CommentsMapper commentsMapper; @@ -42,7 +44,7 @@ public CommentDTO addComment(NewCommentDTO commentDTO, Integer userId, Integer e Request request; try { request = requestRepository.findRequestsByEvent_IdAndRequester_Id(eventId, userId); - } catch (NotFoundException e) { + } catch (RuntimeException e) { throw new NotFoundException("Request for user with id " + userId + " and event with id " + eventId + " not found"); } @@ -56,7 +58,10 @@ public CommentDTO addComment(NewCommentDTO commentDTO, Integer userId, Integer e comment.setAuthor(user); comment.setEvent(event); - return commentsMapper.toCommentDTO(commentsRepository.save(comment)); + CommentDTO dto = commentsMapper.toCommentDTO(commentsRepository.save(comment)); + log.info("Added comment: {}", dto); + + return dto; } @Override @@ -64,11 +69,15 @@ public CommentDTO getComment(Integer commentId) { Comment comment = commentsRepository.findById(commentId) .orElseThrow(() -> new NotFoundException("Comment with id " + commentId + " not found")); + CommentDTO dto; if (comment.getStatus().equals(Status.CREATED)) { - return commentsMapper.toCommentDTO(comment); + dto = commentsMapper.toCommentDTO(comment); } else { - return commentsMapper.toUpdatedCommentDTO(comment); + dto = commentsMapper.toUpdatedCommentDTO(comment); } + + log.info("Found comment: {}", dto); + return dto; } @Override @@ -85,7 +94,10 @@ public CommentDTO updateComment(UpdateCommentDTO commentDTO, Integer userId, Int comment.setStatus(Status.UPDATED); comment.setUpdatedAt(commentDTO.getUpdatedAt()); - return commentsMapper.toUpdatedCommentDTO(commentsRepository.save(comment)); + CommentDTO dto = commentsMapper.toUpdatedCommentDTO(commentsRepository.save(comment)); + log.info("Updated comment: {}", dto); + + return dto; } @Override @@ -97,6 +109,7 @@ public void deleteComment(Integer commentId, Integer userId) { throw new ValidationException("You are not allowed to delete this comment"); } commentsRepository.deleteById(commentId); + log.info("Comment with id = {} is deleted", commentId); } diff --git a/evm-service/src/main/java/ru/practicum/comment/service/open/CommentPublicService.java b/evm-service/src/main/java/ru/practicum/comment/service/open/CommentPublicService.java new file mode 100644 index 0000000..05bc37b --- /dev/null +++ b/evm-service/src/main/java/ru/practicum/comment/service/open/CommentPublicService.java @@ -0,0 +1,9 @@ +package ru.practicum.comment.service.open; + +import ru.practicum.comment.dto.CommentDTO; + +import java.util.List; + +public interface CommentPublicService { + List getComments(Integer eventId, Integer from, Integer size); +} diff --git a/evm-service/src/main/java/ru/practicum/Comments/Service/Public/CommentPublicInterfaceImpl.java b/evm-service/src/main/java/ru/practicum/comment/service/open/CommentPublicServiceImpl.java similarity index 61% rename from evm-service/src/main/java/ru/practicum/Comments/Service/Public/CommentPublicInterfaceImpl.java rename to evm-service/src/main/java/ru/practicum/comment/service/open/CommentPublicServiceImpl.java index 595d9b8..ba241a8 100644 --- a/evm-service/src/main/java/ru/practicum/Comments/Service/Public/CommentPublicInterfaceImpl.java +++ b/evm-service/src/main/java/ru/practicum/comment/service/open/CommentPublicServiceImpl.java @@ -1,21 +1,23 @@ -package ru.practicum.Comments.Service.Public; +package ru.practicum.comment.service.open; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import ru.practicum.Comments.DTO.CommentDTO; -import ru.practicum.Comments.Mapper.CommentsMapper; -import ru.practicum.Comments.Repository.CommentsRepository; -import ru.practicum.Event.Model.Event; -import ru.practicum.Event.Repository.EventRepository; -import ru.practicum.Exception.NotFoundException; +import ru.practicum.comment.dto.CommentDTO; +import ru.practicum.comment.mapper.CommentsMapper; +import ru.practicum.comment.repository.CommentsRepository; +import ru.practicum.event.model.Event; +import ru.practicum.event.repository.EventRepository; +import ru.practicum.exception.NotFoundException; import java.util.List; @Service @RequiredArgsConstructor -public class CommentPublicInterfaceImpl implements CommentPublicInterface { +@Slf4j +public class CommentPublicServiceImpl implements CommentPublicService { private final CommentsRepository commentsRepository; private final CommentsMapper commentsMapper; private final EventRepository eventRepository; @@ -27,6 +29,7 @@ public List getComments(Integer eventId, Integer from, Integer size) Pageable pageable = PageRequest.of(from, size); + log.info("Found comments to event with id = {} are sent (from = {}, size = {})", eventId, from, size); return commentsRepository.findCommentsByEvent_Id(eventId, pageable).stream() .map(commentsMapper::toCommentDTO) .toList(); diff --git a/evm-service/src/main/java/ru/practicum/Compilation/CompilationDTO/CompilationDTO.java b/evm-service/src/main/java/ru/practicum/compilation/compilationDTO/CompilationDTO.java similarity index 82% rename from evm-service/src/main/java/ru/practicum/Compilation/CompilationDTO/CompilationDTO.java rename to evm-service/src/main/java/ru/practicum/compilation/compilationDTO/CompilationDTO.java index 062239e..5adebfe 100644 --- a/evm-service/src/main/java/ru/practicum/Compilation/CompilationDTO/CompilationDTO.java +++ b/evm-service/src/main/java/ru/practicum/compilation/compilationDTO/CompilationDTO.java @@ -1,11 +1,11 @@ -package ru.practicum.Compilation.CompilationDTO; +package ru.practicum.compilation.compilationDTO; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import ru.practicum.Event.DTO.EventShortDTO; +import ru.practicum.event.dto.EventShortDTO; import java.util.Set; diff --git a/evm-service/src/main/java/ru/practicum/Compilation/CompilationDTO/CompilationsListRequestParams.java b/evm-service/src/main/java/ru/practicum/compilation/compilationDTO/CompilationsListRequestParams.java similarity index 86% rename from evm-service/src/main/java/ru/practicum/Compilation/CompilationDTO/CompilationsListRequestParams.java rename to evm-service/src/main/java/ru/practicum/compilation/compilationDTO/CompilationsListRequestParams.java index 02ca7bc..08d06fb 100644 --- a/evm-service/src/main/java/ru/practicum/Compilation/CompilationDTO/CompilationsListRequestParams.java +++ b/evm-service/src/main/java/ru/practicum/compilation/compilationDTO/CompilationsListRequestParams.java @@ -1,4 +1,4 @@ -package ru.practicum.Compilation.CompilationDTO; +package ru.practicum.compilation.compilationDTO; import jakarta.validation.constraints.Positive; import jakarta.validation.constraints.PositiveOrZero; diff --git a/evm-service/src/main/java/ru/practicum/Compilation/CompilationDTO/NewCompilationDTO.java b/evm-service/src/main/java/ru/practicum/compilation/compilationDTO/NewCompilationDTO.java similarity index 89% rename from evm-service/src/main/java/ru/practicum/Compilation/CompilationDTO/NewCompilationDTO.java rename to evm-service/src/main/java/ru/practicum/compilation/compilationDTO/NewCompilationDTO.java index 6286f29..5720699 100644 --- a/evm-service/src/main/java/ru/practicum/Compilation/CompilationDTO/NewCompilationDTO.java +++ b/evm-service/src/main/java/ru/practicum/compilation/compilationDTO/NewCompilationDTO.java @@ -1,4 +1,4 @@ -package ru.practicum.Compilation.CompilationDTO; +package ru.practicum.compilation.compilationDTO; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; diff --git a/evm-service/src/main/java/ru/practicum/Compilation/CompilationDTO/UpdateCompilationRequest.java b/evm-service/src/main/java/ru/practicum/compilation/compilationDTO/UpdateCompilationRequest.java similarity index 88% rename from evm-service/src/main/java/ru/practicum/Compilation/CompilationDTO/UpdateCompilationRequest.java rename to evm-service/src/main/java/ru/practicum/compilation/compilationDTO/UpdateCompilationRequest.java index 9339d0e..39116b4 100644 --- a/evm-service/src/main/java/ru/practicum/Compilation/CompilationDTO/UpdateCompilationRequest.java +++ b/evm-service/src/main/java/ru/practicum/compilation/compilationDTO/UpdateCompilationRequest.java @@ -1,4 +1,4 @@ -package ru.practicum.Compilation.CompilationDTO; +package ru.practicum.compilation.compilationDTO; import jakarta.validation.constraints.Size; import lombok.AllArgsConstructor; diff --git a/evm-service/src/main/java/ru/practicum/Compilation/Controller/CompilationAdminController.java b/evm-service/src/main/java/ru/practicum/compilation/controller/CompilationAdminController.java similarity index 63% rename from evm-service/src/main/java/ru/practicum/Compilation/Controller/CompilationAdminController.java rename to evm-service/src/main/java/ru/practicum/compilation/controller/CompilationAdminController.java index 24c1cf8..ecb496f 100644 --- a/evm-service/src/main/java/ru/practicum/Compilation/Controller/CompilationAdminController.java +++ b/evm-service/src/main/java/ru/practicum/compilation/controller/CompilationAdminController.java @@ -1,23 +1,26 @@ -package ru.practicum.Compilation.Controller; +package ru.practicum.compilation.controller; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; -import ru.practicum.Compilation.CompilationDTO.CompilationDTO; -import ru.practicum.Compilation.CompilationDTO.NewCompilationDTO; -import ru.practicum.Compilation.CompilationDTO.UpdateCompilationRequest; -import ru.practicum.Compilation.Service.Admin.CompilationAdminServiceImpl; +import ru.practicum.compilation.compilationDTO.CompilationDTO; +import ru.practicum.compilation.compilationDTO.NewCompilationDTO; +import ru.practicum.compilation.compilationDTO.UpdateCompilationRequest; +import ru.practicum.compilation.service.admin.CompilationAdminService; @RestController @RequestMapping("/admin/compilations") @RequiredArgsConstructor +@Slf4j public class CompilationAdminController { - private final CompilationAdminServiceImpl compilationService; + private final CompilationAdminService compilationService; @PostMapping @ResponseStatus(HttpStatus.CREATED) public CompilationDTO addCompilation(@RequestBody @Valid NewCompilationDTO compilationDTO) { + log.info("Adding new compilation {}", compilationDTO); return compilationService.addCompilation(compilationDTO); } @@ -25,12 +28,14 @@ public CompilationDTO addCompilation(@RequestBody @Valid NewCompilationDTO compi @DeleteMapping("/{compId}") @ResponseStatus(HttpStatus.NO_CONTENT) public void deleteCompilation(@PathVariable Integer compId) { + log.info("Deleting compilation {}", compId); compilationService.deleteCompilation(compId); } @PatchMapping("/{compId}") public CompilationDTO updateCompilation(@PathVariable Integer compId, @RequestBody @Valid UpdateCompilationRequest compilationDTO) { + log.info("Updating compilation {}, {}", compId, compilationDTO); return compilationService.updateCompilation(compId, compilationDTO); } diff --git a/evm-service/src/main/java/ru/practicum/Compilation/Controller/CompilationPublicController.java b/evm-service/src/main/java/ru/practicum/compilation/controller/CompilationPublicController.java similarity index 57% rename from evm-service/src/main/java/ru/practicum/Compilation/Controller/CompilationPublicController.java rename to evm-service/src/main/java/ru/practicum/compilation/controller/CompilationPublicController.java index 81fc643..73a4013 100644 --- a/evm-service/src/main/java/ru/practicum/Compilation/Controller/CompilationPublicController.java +++ b/evm-service/src/main/java/ru/practicum/compilation/controller/CompilationPublicController.java @@ -1,26 +1,30 @@ -package ru.practicum.Compilation.Controller; +package ru.practicum.compilation.controller; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; -import ru.practicum.Compilation.CompilationDTO.CompilationDTO; -import ru.practicum.Compilation.CompilationDTO.CompilationsListRequestParams; -import ru.practicum.Compilation.Service.Public.CompilationPublicServiceImpl; +import ru.practicum.compilation.compilationDTO.CompilationDTO; +import ru.practicum.compilation.compilationDTO.CompilationsListRequestParams; +import ru.practicum.compilation.service.open.CompilationPublicService; import java.util.List; @RestController @RequestMapping("/compilations") @RequiredArgsConstructor +@Slf4j public class CompilationPublicController { - private final CompilationPublicServiceImpl compilationService; + private final CompilationPublicService compilationService; @GetMapping("/{compId}") public CompilationDTO getCompilation(@PathVariable Integer compId) { + log.info("Getting compilation with id = {}", compId); return compilationService.getCompilation(compId); } @GetMapping public List getCompilations(@ModelAttribute CompilationsListRequestParams params) { + log.info("Getting compilations"); return compilationService.getCompilations(params); } } diff --git a/evm-service/src/main/java/ru/practicum/Compilation/Mapper/CompilationMapper.java b/evm-service/src/main/java/ru/practicum/compilation/mapper/CompilationMapper.java similarity index 64% rename from evm-service/src/main/java/ru/practicum/Compilation/Mapper/CompilationMapper.java rename to evm-service/src/main/java/ru/practicum/compilation/mapper/CompilationMapper.java index 6020c2c..fed9d1f 100644 --- a/evm-service/src/main/java/ru/practicum/Compilation/Mapper/CompilationMapper.java +++ b/evm-service/src/main/java/ru/practicum/compilation/mapper/CompilationMapper.java @@ -1,10 +1,10 @@ -package ru.practicum.Compilation.Mapper; +package ru.practicum.compilation.mapper; import org.mapstruct.Mapper; import org.mapstruct.Mapping; -import ru.practicum.Compilation.CompilationDTO.CompilationDTO; -import ru.practicum.Compilation.CompilationDTO.NewCompilationDTO; -import ru.practicum.Compilation.Model.Compilation; +import ru.practicum.compilation.compilationDTO.CompilationDTO; +import ru.practicum.compilation.compilationDTO.NewCompilationDTO; +import ru.practicum.compilation.model.Compilation; @Mapper(componentModel = "spring") public interface CompilationMapper { diff --git a/evm-service/src/main/java/ru/practicum/Compilation/Model/Compilation.java b/evm-service/src/main/java/ru/practicum/compilation/model/Compilation.java similarity index 56% rename from evm-service/src/main/java/ru/practicum/Compilation/Model/Compilation.java rename to evm-service/src/main/java/ru/practicum/compilation/model/Compilation.java index 221ebbe..cc87cfe 100644 --- a/evm-service/src/main/java/ru/practicum/Compilation/Model/Compilation.java +++ b/evm-service/src/main/java/ru/practicum/compilation/model/Compilation.java @@ -1,19 +1,21 @@ -package ru.practicum.Compilation.Model; +package ru.practicum.compilation.model; import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import ru.practicum.Event.Model.Event; +import lombok.*; +import ru.practicum.event.model.Event; +import java.util.Objects; import java.util.Set; -@Data +@Getter +@Setter +@ToString @NoArgsConstructor @AllArgsConstructor @Entity @Table(name = "compilations") public class Compilation { + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") @@ -32,4 +34,17 @@ public class Compilation { @Column(name = "title") private String title; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Compilation c = (Compilation) o; + return Objects.equals(id, c.id); + } + + @Override + public int hashCode() { + return getClass().hashCode(); + } } diff --git a/evm-service/src/main/java/ru/practicum/Compilation/Repository/CompilationRepository.java b/evm-service/src/main/java/ru/practicum/compilation/repository/CompilationRepository.java similarity index 82% rename from evm-service/src/main/java/ru/practicum/Compilation/Repository/CompilationRepository.java rename to evm-service/src/main/java/ru/practicum/compilation/repository/CompilationRepository.java index 8a4bc5c..6edbb07 100644 --- a/evm-service/src/main/java/ru/practicum/Compilation/Repository/CompilationRepository.java +++ b/evm-service/src/main/java/ru/practicum/compilation/repository/CompilationRepository.java @@ -1,8 +1,8 @@ -package ru.practicum.Compilation.Repository; +package ru.practicum.compilation.repository; import org.springframework.data.domain.Page; import org.springframework.data.jpa.repository.JpaRepository; -import ru.practicum.Compilation.Model.Compilation; +import ru.practicum.compilation.model.Compilation; import org.springframework.data.domain.Pageable; import java.util.Optional; diff --git a/evm-service/src/main/java/ru/practicum/Compilation/Service/Admin/CompilationAdminService.java b/evm-service/src/main/java/ru/practicum/compilation/service/admin/CompilationAdminService.java similarity index 52% rename from evm-service/src/main/java/ru/practicum/Compilation/Service/Admin/CompilationAdminService.java rename to evm-service/src/main/java/ru/practicum/compilation/service/admin/CompilationAdminService.java index 71b3a9e..46871ab 100644 --- a/evm-service/src/main/java/ru/practicum/Compilation/Service/Admin/CompilationAdminService.java +++ b/evm-service/src/main/java/ru/practicum/compilation/service/admin/CompilationAdminService.java @@ -1,8 +1,8 @@ -package ru.practicum.Compilation.Service.Admin; +package ru.practicum.compilation.service.admin; -import ru.practicum.Compilation.CompilationDTO.CompilationDTO; -import ru.practicum.Compilation.CompilationDTO.NewCompilationDTO; -import ru.practicum.Compilation.CompilationDTO.UpdateCompilationRequest; +import ru.practicum.compilation.compilationDTO.CompilationDTO; +import ru.practicum.compilation.compilationDTO.NewCompilationDTO; +import ru.practicum.compilation.compilationDTO.UpdateCompilationRequest; public interface CompilationAdminService { diff --git a/evm-service/src/main/java/ru/practicum/Compilation/Service/Admin/CompilationAdminServiceImpl.java b/evm-service/src/main/java/ru/practicum/compilation/service/admin/CompilationAdminServiceImpl.java similarity index 62% rename from evm-service/src/main/java/ru/practicum/Compilation/Service/Admin/CompilationAdminServiceImpl.java rename to evm-service/src/main/java/ru/practicum/compilation/service/admin/CompilationAdminServiceImpl.java index 764c182..8a7f3e4 100644 --- a/evm-service/src/main/java/ru/practicum/Compilation/Service/Admin/CompilationAdminServiceImpl.java +++ b/evm-service/src/main/java/ru/practicum/compilation/service/admin/CompilationAdminServiceImpl.java @@ -1,18 +1,19 @@ -package ru.practicum.Compilation.Service.Admin; +package ru.practicum.compilation.service.admin; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import ru.practicum.Compilation.CompilationDTO.CompilationDTO; -import ru.practicum.Compilation.CompilationDTO.NewCompilationDTO; -import ru.practicum.Compilation.CompilationDTO.UpdateCompilationRequest; -import ru.practicum.Compilation.Mapper.CompilationMapper; -import ru.practicum.Compilation.Model.Compilation; -import ru.practicum.Compilation.Repository.CompilationRepository; -import ru.practicum.Event.Mapper.EventMapper; -import ru.practicum.Event.Model.Event; -import ru.practicum.Event.Repository.EventRepository; -import ru.practicum.Exception.NotFoundException; +import ru.practicum.compilation.compilationDTO.CompilationDTO; +import ru.practicum.compilation.compilationDTO.NewCompilationDTO; +import ru.practicum.compilation.compilationDTO.UpdateCompilationRequest; +import ru.practicum.compilation.mapper.CompilationMapper; +import ru.practicum.compilation.model.Compilation; +import ru.practicum.compilation.repository.CompilationRepository; +import ru.practicum.event.mapper.EventMapper; +import ru.practicum.event.model.Event; +import ru.practicum.event.repository.EventRepository; +import ru.practicum.exception.NotFoundException; import java.util.HashSet; import java.util.List; @@ -20,6 +21,7 @@ @Service @RequiredArgsConstructor +@Slf4j public class CompilationAdminServiceImpl implements CompilationAdminService { private final CompilationRepository compilationRepository; private final EventRepository eventRepository; @@ -35,12 +37,15 @@ public CompilationDTO addCompilation(NewCompilationDTO compilationDTO) { compilation.setEvents(events); } - return compilationMapper.toDto(compilationRepository.save(compilation)); + CompilationDTO dto = compilationMapper.toDto(compilationRepository.save(compilation)); + log.info("Compilation is added: {}", dto); + return dto; } @Override public void deleteCompilation(Integer compId) { compilationRepository.delete(checkCompilation(compId)); + log.info("Compilation with id = {} is deleted", compId); } @Override @@ -52,7 +57,9 @@ public CompilationDTO updateCompilation(Integer compId, UpdateCompilationRequest compilation.setEvents(events); } - return compilationMapper.toDto(compilationRepository.save(compilation)); + CompilationDTO dto = compilationMapper.toDto(compilationRepository.save(compilation)); + log.info("Compilation with id = {} is updated: {}", compId, dto); + return dto; } private Compilation checkCompilation(Integer compId) { diff --git a/evm-service/src/main/java/ru/practicum/Compilation/Service/Public/CompilationPublicService.java b/evm-service/src/main/java/ru/practicum/compilation/service/open/CompilationPublicService.java similarity index 55% rename from evm-service/src/main/java/ru/practicum/Compilation/Service/Public/CompilationPublicService.java rename to evm-service/src/main/java/ru/practicum/compilation/service/open/CompilationPublicService.java index 3b76595..fb5ccab 100644 --- a/evm-service/src/main/java/ru/practicum/Compilation/Service/Public/CompilationPublicService.java +++ b/evm-service/src/main/java/ru/practicum/compilation/service/open/CompilationPublicService.java @@ -1,7 +1,7 @@ -package ru.practicum.Compilation.Service.Public; +package ru.practicum.compilation.service.open; -import ru.practicum.Compilation.CompilationDTO.CompilationDTO; -import ru.practicum.Compilation.CompilationDTO.CompilationsListRequestParams; +import ru.practicum.compilation.compilationDTO.CompilationDTO; +import ru.practicum.compilation.compilationDTO.CompilationsListRequestParams; import java.util.List; diff --git a/evm-service/src/main/java/ru/practicum/Compilation/Service/Public/CompilationPublicServiceImpl.java b/evm-service/src/main/java/ru/practicum/compilation/service/open/CompilationPublicServiceImpl.java similarity index 84% rename from evm-service/src/main/java/ru/practicum/Compilation/Service/Public/CompilationPublicServiceImpl.java rename to evm-service/src/main/java/ru/practicum/compilation/service/open/CompilationPublicServiceImpl.java index f8a14b9..3b64845 100644 --- a/evm-service/src/main/java/ru/practicum/Compilation/Service/Public/CompilationPublicServiceImpl.java +++ b/evm-service/src/main/java/ru/practicum/compilation/service/open/CompilationPublicServiceImpl.java @@ -1,19 +1,20 @@ -package ru.practicum.Compilation.Service.Public; +package ru.practicum.compilation.service.open; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; -import ru.practicum.Compilation.CompilationDTO.CompilationDTO; -import ru.practicum.Compilation.CompilationDTO.CompilationsListRequestParams; -import ru.practicum.Compilation.Mapper.CompilationMapper; -import ru.practicum.Compilation.Model.Compilation; -import ru.practicum.Compilation.Repository.CompilationRepository; -import ru.practicum.Event.Mapper.EventMapper; -import ru.practicum.Event.Model.Event; -import ru.practicum.Event.Repository.EventRepository; -import ru.practicum.Exception.NotFoundException; +import ru.practicum.compilation.compilationDTO.CompilationDTO; +import ru.practicum.compilation.compilationDTO.CompilationsListRequestParams; +import ru.practicum.compilation.mapper.CompilationMapper; +import ru.practicum.compilation.model.Compilation; +import ru.practicum.compilation.repository.CompilationRepository; +import ru.practicum.event.mapper.EventMapper; +import ru.practicum.event.model.Event; +import ru.practicum.event.repository.EventRepository; +import ru.practicum.exception.NotFoundException; import ru.practicum.StatsClient; import ru.practicum.ViewStatsDTO; @@ -24,6 +25,7 @@ @Service @RequiredArgsConstructor +@Slf4j public class CompilationPublicServiceImpl implements CompilationPublicService { private final CompilationRepository compilationRepository; private final CompilationMapper compilationMapper; @@ -44,6 +46,7 @@ public CompilationDTO getCompilation(Integer compId) { .peek(eventShortDTO -> eventShortDTO.setViews(views.get(eventShortDTO.getId()))); } + log.info("Compilation with id = {} is found: {}", compId, compilationDTO); return compilationDTO; } @@ -74,7 +77,7 @@ public List getCompilations(CompilationsListRequestParams params } ).toList(); } - + log.info("Found compilations are sent"); return compilationDtos; } diff --git a/evm-service/src/main/java/ru/practicum/Event/Controller/EventAdminController.java b/evm-service/src/main/java/ru/practicum/event/controller/EventAdminController.java similarity index 66% rename from evm-service/src/main/java/ru/practicum/Event/Controller/EventAdminController.java rename to evm-service/src/main/java/ru/practicum/event/controller/EventAdminController.java index 24f166c..626967a 100644 --- a/evm-service/src/main/java/ru/practicum/Event/Controller/EventAdminController.java +++ b/evm-service/src/main/java/ru/practicum/event/controller/EventAdminController.java @@ -1,24 +1,27 @@ -package ru.practicum.Event.Controller; +package ru.practicum.event.controller; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; -import ru.practicum.Event.DTO.EventFullDTO; -import ru.practicum.Event.DTO.SearchEventsDTO; -import ru.practicum.Event.DTO.UpdateEventAdminRequest; -import ru.practicum.Event.Service.Admin.EventAdminService; +import ru.practicum.event.dto.EventFullDTO; +import ru.practicum.event.dto.SearchEventsDTO; +import ru.practicum.event.dto.UpdateEventAdminRequest; +import ru.practicum.event.service.admin.EventAdminService; import java.util.List; @RestController @RequestMapping("/admin/events") @RequiredArgsConstructor +@Slf4j public class EventAdminController { private final EventAdminService eventAdminService; @GetMapping public List getEvents(@ModelAttribute @Valid SearchEventsDTO dto) { + log.info("Searching events with parameters {}", dto); return eventAdminService.getEvents(dto); } @@ -26,6 +29,7 @@ public List getEvents(@ModelAttribute @Valid SearchEventsDTO dto) @ResponseStatus(HttpStatus.OK) public EventFullDTO updateEvent(@PathVariable Integer eventId, @RequestBody @Valid UpdateEventAdminRequest request) { + log.info("Updating event with id {}: {}", eventId, request); return eventAdminService.updateEvent(eventId, request); } diff --git a/evm-service/src/main/java/ru/practicum/Event/Controller/EventPrivateController.java b/evm-service/src/main/java/ru/practicum/event/controller/EventPrivateController.java similarity index 72% rename from evm-service/src/main/java/ru/practicum/Event/Controller/EventPrivateController.java rename to evm-service/src/main/java/ru/practicum/event/controller/EventPrivateController.java index fb82c2c..cd1134a 100644 --- a/evm-service/src/main/java/ru/practicum/Event/Controller/EventPrivateController.java +++ b/evm-service/src/main/java/ru/practicum/event/controller/EventPrivateController.java @@ -1,26 +1,29 @@ -package ru.practicum.Event.Controller; +package ru.practicum.event.controller; import jakarta.validation.Valid; import jakarta.validation.constraints.Positive; import jakarta.validation.constraints.PositiveOrZero; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; -import ru.practicum.Event.DTO.*; -import ru.practicum.Event.Service.Private.EventPrivateServiceImpl; -import ru.practicum.Request.RequestDTO.ParticipationRequestDto; +import ru.practicum.event.dto.*; +import ru.practicum.event.service.close.EventPrivateService; +import ru.practicum.request.requestDTO.ParticipationRequestDto; import java.util.List; @RestController @RequestMapping("/users/{userId}/events") @RequiredArgsConstructor +@Slf4j public class EventPrivateController { - private final EventPrivateServiceImpl eventPrivateService; + private final EventPrivateService eventPrivateService; @PostMapping @ResponseStatus(HttpStatus.CREATED) public EventFullDTO addEvent(@PathVariable Integer userId, @RequestBody @Valid NewEventDTO event) { + log.info("Adding new event {}", event); return eventPrivateService.addEvent(userId, event); } @@ -28,11 +31,13 @@ public EventFullDTO addEvent(@PathVariable Integer userId, @RequestBody @Valid N public List getEvents(@PathVariable Integer userId, @RequestParam(defaultValue = "0") @PositiveOrZero Integer from, @RequestParam(defaultValue = "10") @Positive Integer size) { + log.info("Getting events by user with id = {} from {} to {}", userId, from, size); return eventPrivateService.getEvents(userId, from, size); } @GetMapping("/{eventId}") public EventFullDTO getEvent(@PathVariable Integer userId, @PathVariable Integer eventId) { + log.info("Getting event with id {} by user with id = {}", eventId, userId); return eventPrivateService.getEvent(userId, eventId); } @@ -40,12 +45,14 @@ public EventFullDTO getEvent(@PathVariable Integer userId, @PathVariable Integer public EventFullDTO updateEvent(@PathVariable Integer userId, @PathVariable Integer eventId, @RequestBody @Valid UpdateEventUserRequest event) { + log.info("Updating event with id {} by user with id = {}: {}", eventId, userId, event); return eventPrivateService.updateEvent(userId, eventId, event); } @GetMapping("/{eventId}/requests") public List getUserRequests(@PathVariable Integer userId, @PathVariable Integer eventId) { + log.info("Getting user participation requests by user with id = {} and event with id = {}", userId, eventId); return eventPrivateService.getUserRequests(userId, eventId); } @@ -53,6 +60,7 @@ public List getUserRequests(@PathVariable Integer userI public EventRequestStatusUpdateResult updateRequests(@RequestBody @Valid EventRequestStatusUpdateRequest request, @PathVariable Integer userId, @PathVariable Integer eventId) { + log.info("Updating participation request in event with id {} by user with id = {}: {}", eventId, userId, request); return eventPrivateService.updateRequests(request, userId, eventId); } diff --git a/evm-service/src/main/java/ru/practicum/Event/Controller/EventPublicController.java b/evm-service/src/main/java/ru/practicum/event/controller/EventPublicController.java similarity index 62% rename from evm-service/src/main/java/ru/practicum/Event/Controller/EventPublicController.java rename to evm-service/src/main/java/ru/practicum/event/controller/EventPublicController.java index d559408..8d46078 100644 --- a/evm-service/src/main/java/ru/practicum/Event/Controller/EventPublicController.java +++ b/evm-service/src/main/java/ru/practicum/event/controller/EventPublicController.java @@ -1,13 +1,14 @@ -package ru.practicum.Event.Controller; +package ru.practicum.event.controller; import jakarta.servlet.http.HttpServletRequest; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; -import ru.practicum.Event.DTO.EventFullDTO; -import ru.practicum.Event.DTO.EventPublicParams; -import ru.practicum.Event.DTO.EventShortDTO; -import ru.practicum.Event.Service.Public.EventPublicServiceImpl; +import ru.practicum.event.dto.EventFullDTO; +import ru.practicum.event.dto.EventPublicParams; +import ru.practicum.event.dto.EventShortDTO; +import ru.practicum.event.service.open.EventPublicService; import java.util.List; @@ -15,17 +16,20 @@ @RestController @RequestMapping("/events") @RequiredArgsConstructor +@Slf4j public class EventPublicController { - private final EventPublicServiceImpl eventPublicService; + private final EventPublicService eventPublicService; @GetMapping("/{id}") public EventFullDTO findEventById(@PathVariable Integer id, HttpServletRequest request) { + log.info("Finding event with id {}", id); return eventPublicService.findEventById(id, request); } @GetMapping public List findAllEvents(@ModelAttribute @Valid EventPublicParams params, HttpServletRequest request) { + log.info("Finding all events with {} params", params); return eventPublicService.findAllEvents(params, request); } } diff --git a/evm-service/src/main/java/ru/practicum/Event/DTO/EventCommentsDTO.java b/evm-service/src/main/java/ru/practicum/event/dto/EventCommentsDTO.java similarity index 91% rename from evm-service/src/main/java/ru/practicum/Event/DTO/EventCommentsDTO.java rename to evm-service/src/main/java/ru/practicum/event/dto/EventCommentsDTO.java index 0450bac..72e6e96 100644 --- a/evm-service/src/main/java/ru/practicum/Event/DTO/EventCommentsDTO.java +++ b/evm-service/src/main/java/ru/practicum/event/dto/EventCommentsDTO.java @@ -1,4 +1,4 @@ -package ru.practicum.Event.DTO; +package ru.practicum.event.dto; import lombok.AllArgsConstructor; diff --git a/evm-service/src/main/java/ru/practicum/Event/DTO/EventFullDTO.java b/evm-service/src/main/java/ru/practicum/event/dto/EventFullDTO.java similarity index 83% rename from evm-service/src/main/java/ru/practicum/Event/DTO/EventFullDTO.java rename to evm-service/src/main/java/ru/practicum/event/dto/EventFullDTO.java index 71d8c1e..576b116 100644 --- a/evm-service/src/main/java/ru/practicum/Event/DTO/EventFullDTO.java +++ b/evm-service/src/main/java/ru/practicum/event/dto/EventFullDTO.java @@ -1,14 +1,14 @@ -package ru.practicum.Event.DTO; +package ru.practicum.event.dto; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import ru.practicum.Category.DTO.CategoryDTO; +import ru.practicum.category.dto.CategoryDTO; import ru.practicum.StatsRequestDTO; -import ru.practicum.User.DTO.UserShortDTO; -import ru.practicum.Event.Model.Location; -import ru.practicum.Event.Model.State; +import ru.practicum.user.dto.UserShortDTO; +import ru.practicum.event.model.Location; +import ru.practicum.event.model.State; import java.time.LocalDateTime; diff --git a/evm-service/src/main/java/ru/practicum/Event/DTO/EventPublicParams.java b/evm-service/src/main/java/ru/practicum/event/dto/EventPublicParams.java similarity index 96% rename from evm-service/src/main/java/ru/practicum/Event/DTO/EventPublicParams.java rename to evm-service/src/main/java/ru/practicum/event/dto/EventPublicParams.java index 0224c91..5d502d6 100644 --- a/evm-service/src/main/java/ru/practicum/Event/DTO/EventPublicParams.java +++ b/evm-service/src/main/java/ru/practicum/event/dto/EventPublicParams.java @@ -1,4 +1,4 @@ -package ru.practicum.Event.DTO; +package ru.practicum.event.dto; import jakarta.validation.constraints.Positive; import jakarta.validation.constraints.PositiveOrZero; diff --git a/evm-service/src/main/java/ru/practicum/Event/DTO/EventRequestStatusUpdateRequest.java b/evm-service/src/main/java/ru/practicum/event/dto/EventRequestStatusUpdateRequest.java similarity index 85% rename from evm-service/src/main/java/ru/practicum/Event/DTO/EventRequestStatusUpdateRequest.java rename to evm-service/src/main/java/ru/practicum/event/dto/EventRequestStatusUpdateRequest.java index b7bade6..f8942cd 100644 --- a/evm-service/src/main/java/ru/practicum/Event/DTO/EventRequestStatusUpdateRequest.java +++ b/evm-service/src/main/java/ru/practicum/event/dto/EventRequestStatusUpdateRequest.java @@ -1,11 +1,11 @@ -package ru.practicum.Event.DTO; +package ru.practicum.event.dto; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import ru.practicum.Event.Model.State; +import ru.practicum.event.model.State; import java.util.ArrayList; diff --git a/evm-service/src/main/java/ru/practicum/Event/DTO/EventRequestStatusUpdateResult.java b/evm-service/src/main/java/ru/practicum/event/dto/EventRequestStatusUpdateResult.java similarity index 77% rename from evm-service/src/main/java/ru/practicum/Event/DTO/EventRequestStatusUpdateResult.java rename to evm-service/src/main/java/ru/practicum/event/dto/EventRequestStatusUpdateResult.java index 215b2be..0f8a350 100644 --- a/evm-service/src/main/java/ru/practicum/Event/DTO/EventRequestStatusUpdateResult.java +++ b/evm-service/src/main/java/ru/practicum/event/dto/EventRequestStatusUpdateResult.java @@ -1,9 +1,9 @@ -package ru.practicum.Event.DTO; +package ru.practicum.event.dto; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import ru.practicum.Request.RequestDTO.ParticipationRequestDto; +import ru.practicum.request.requestDTO.ParticipationRequestDto; import java.util.List; diff --git a/evm-service/src/main/java/ru/practicum/Event/DTO/EventShortDTO.java b/evm-service/src/main/java/ru/practicum/event/dto/EventShortDTO.java similarity index 86% rename from evm-service/src/main/java/ru/practicum/Event/DTO/EventShortDTO.java rename to evm-service/src/main/java/ru/practicum/event/dto/EventShortDTO.java index b268a70..74a528b 100644 --- a/evm-service/src/main/java/ru/practicum/Event/DTO/EventShortDTO.java +++ b/evm-service/src/main/java/ru/practicum/event/dto/EventShortDTO.java @@ -1,4 +1,4 @@ -package ru.practicum.Event.DTO; +package ru.practicum.event.dto; import com.fasterxml.jackson.annotation.JsonFormat; import jakarta.validation.constraints.NotBlank; @@ -6,9 +6,9 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import ru.practicum.Category.DTO.CategoryDTO; +import ru.practicum.category.dto.CategoryDTO; import ru.practicum.StatsRequestDTO; -import ru.practicum.User.DTO.UserShortDTO; +import ru.practicum.user.dto.UserShortDTO; import java.time.LocalDateTime; diff --git a/evm-service/src/main/java/ru/practicum/Event/DTO/NewEventDTO.java b/evm-service/src/main/java/ru/practicum/event/dto/NewEventDTO.java similarity index 93% rename from evm-service/src/main/java/ru/practicum/Event/DTO/NewEventDTO.java rename to evm-service/src/main/java/ru/practicum/event/dto/NewEventDTO.java index 8d840c2..f559788 100644 --- a/evm-service/src/main/java/ru/practicum/Event/DTO/NewEventDTO.java +++ b/evm-service/src/main/java/ru/practicum/event/dto/NewEventDTO.java @@ -1,4 +1,4 @@ -package ru.practicum.Event.DTO; +package ru.practicum.event.dto; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonProperty; @@ -6,7 +6,7 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import ru.practicum.Event.Model.Location; +import ru.practicum.event.model.Location; import ru.practicum.StatsRequestDTO; import java.time.LocalDateTime; diff --git a/evm-service/src/main/java/ru/practicum/Event/DTO/SearchEventsDTO.java b/evm-service/src/main/java/ru/practicum/event/dto/SearchEventsDTO.java similarity index 92% rename from evm-service/src/main/java/ru/practicum/Event/DTO/SearchEventsDTO.java rename to evm-service/src/main/java/ru/practicum/event/dto/SearchEventsDTO.java index f037783..510c8c4 100644 --- a/evm-service/src/main/java/ru/practicum/Event/DTO/SearchEventsDTO.java +++ b/evm-service/src/main/java/ru/practicum/event/dto/SearchEventsDTO.java @@ -1,4 +1,4 @@ -package ru.practicum.Event.DTO; +package ru.practicum.event.dto; import jakarta.validation.constraints.Positive; import jakarta.validation.constraints.PositiveOrZero; @@ -6,7 +6,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.format.annotation.DateTimeFormat; -import ru.practicum.Event.Model.State; +import ru.practicum.event.model.State; import ru.practicum.StatsRequestDTO; import java.time.LocalDateTime; diff --git a/evm-service/src/main/java/ru/practicum/Event/DTO/UpdateEventAdminRequest.java b/evm-service/src/main/java/ru/practicum/event/dto/UpdateEventAdminRequest.java similarity index 88% rename from evm-service/src/main/java/ru/practicum/Event/DTO/UpdateEventAdminRequest.java rename to evm-service/src/main/java/ru/practicum/event/dto/UpdateEventAdminRequest.java index 52d08f6..7793ded 100644 --- a/evm-service/src/main/java/ru/practicum/Event/DTO/UpdateEventAdminRequest.java +++ b/evm-service/src/main/java/ru/practicum/event/dto/UpdateEventAdminRequest.java @@ -1,4 +1,4 @@ -package ru.practicum.Event.DTO; +package ru.practicum.event.dto; import com.fasterxml.jackson.annotation.JsonFormat; import jakarta.validation.constraints.Future; @@ -6,8 +6,8 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import ru.practicum.Event.Model.Location; -import ru.practicum.Event.Model.State; +import ru.practicum.event.model.Location; +import ru.practicum.event.model.State; import ru.practicum.StatsRequestDTO; import java.time.LocalDateTime; diff --git a/evm-service/src/main/java/ru/practicum/Event/DTO/UpdateEventUserRequest.java b/evm-service/src/main/java/ru/practicum/event/dto/UpdateEventUserRequest.java similarity index 89% rename from evm-service/src/main/java/ru/practicum/Event/DTO/UpdateEventUserRequest.java rename to evm-service/src/main/java/ru/practicum/event/dto/UpdateEventUserRequest.java index b605ab0..952835f 100644 --- a/evm-service/src/main/java/ru/practicum/Event/DTO/UpdateEventUserRequest.java +++ b/evm-service/src/main/java/ru/practicum/event/dto/UpdateEventUserRequest.java @@ -1,4 +1,4 @@ -package ru.practicum.Event.DTO; +package ru.practicum.event.dto; import com.fasterxml.jackson.annotation.JsonFormat; import jakarta.validation.constraints.Future; @@ -7,8 +7,8 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import ru.practicum.Event.Model.Location; -import ru.practicum.Event.Model.State; +import ru.practicum.event.model.Location; +import ru.practicum.event.model.State; import ru.practicum.StatsRequestDTO; import java.time.LocalDateTime; diff --git a/evm-service/src/main/java/ru/practicum/Event/Mapper/EventMapper.java b/evm-service/src/main/java/ru/practicum/event/mapper/EventMapper.java similarity index 82% rename from evm-service/src/main/java/ru/practicum/Event/Mapper/EventMapper.java rename to evm-service/src/main/java/ru/practicum/event/mapper/EventMapper.java index 1d3a346..92f4264 100644 --- a/evm-service/src/main/java/ru/practicum/Event/Mapper/EventMapper.java +++ b/evm-service/src/main/java/ru/practicum/event/mapper/EventMapper.java @@ -1,8 +1,8 @@ -package ru.practicum.Event.Mapper; +package ru.practicum.event.mapper; import org.mapstruct.*; -import ru.practicum.Event.DTO.*; -import ru.practicum.Event.Model.Event; +import ru.practicum.event.model.Event; +import ru.practicum.event.dto.*; @Mapper(componentModel = "spring") public interface EventMapper { diff --git a/evm-service/src/main/java/ru/practicum/Event/Model/Event.java b/evm-service/src/main/java/ru/practicum/event/model/Event.java similarity index 73% rename from evm-service/src/main/java/ru/practicum/Event/Model/Event.java rename to evm-service/src/main/java/ru/practicum/event/model/Event.java index 2b81c22..383a494 100644 --- a/evm-service/src/main/java/ru/practicum/Event/Model/Event.java +++ b/evm-service/src/main/java/ru/practicum/event/model/Event.java @@ -1,15 +1,16 @@ -package ru.practicum.Event.Model; +package ru.practicum.event.model; import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import ru.practicum.Category.Model.Category; -import ru.practicum.User.Model.User; +import lombok.*; +import ru.practicum.category.model.Category; +import ru.practicum.user.model.User; import java.time.LocalDateTime; +import java.util.Objects; -@Data +@Getter +@Setter +@ToString @NoArgsConstructor @AllArgsConstructor @Entity @@ -67,4 +68,17 @@ public class Event { @Column(name = "views") private Integer views = 0; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Event event = (Event) o; + return Objects.equals(id, event.id); + } + + @Override + public int hashCode() { + return getClass().hashCode(); + } } diff --git a/evm-service/src/main/java/ru/practicum/Event/Model/Location.java b/evm-service/src/main/java/ru/practicum/event/model/Location.java similarity index 88% rename from evm-service/src/main/java/ru/practicum/Event/Model/Location.java rename to evm-service/src/main/java/ru/practicum/event/model/Location.java index f97e67e..04fc8cb 100644 --- a/evm-service/src/main/java/ru/practicum/Event/Model/Location.java +++ b/evm-service/src/main/java/ru/practicum/event/model/Location.java @@ -1,4 +1,4 @@ -package ru.practicum.Event.Model; +package ru.practicum.event.model; import jakarta.persistence.*; import lombok.AllArgsConstructor; diff --git a/evm-service/src/main/java/ru/practicum/Event/Model/State.java b/evm-service/src/main/java/ru/practicum/event/model/State.java similarity index 83% rename from evm-service/src/main/java/ru/practicum/Event/Model/State.java rename to evm-service/src/main/java/ru/practicum/event/model/State.java index 33b5d70..3c83bf1 100644 --- a/evm-service/src/main/java/ru/practicum/Event/Model/State.java +++ b/evm-service/src/main/java/ru/practicum/event/model/State.java @@ -1,4 +1,4 @@ -package ru.practicum.Event.Model; +package ru.practicum.event.model; public enum State { diff --git a/evm-service/src/main/java/ru/practicum/Event/Repository/EventRepository.java b/evm-service/src/main/java/ru/practicum/event/repository/EventRepository.java similarity index 86% rename from evm-service/src/main/java/ru/practicum/Event/Repository/EventRepository.java rename to evm-service/src/main/java/ru/practicum/event/repository/EventRepository.java index 22782e2..afbbf0b 100644 --- a/evm-service/src/main/java/ru/practicum/Event/Repository/EventRepository.java +++ b/evm-service/src/main/java/ru/practicum/event/repository/EventRepository.java @@ -1,11 +1,11 @@ -package ru.practicum.Event.Repository; +package ru.practicum.event.repository; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.repository.JpaRepository; -import ru.practicum.Event.Model.Event; -import ru.practicum.Event.Model.State; +import ru.practicum.event.model.Event; +import ru.practicum.event.model.State; import java.util.List; import java.util.Optional; diff --git a/evm-service/src/main/java/ru/practicum/Event/Service/Admin/EventAdminService.java b/evm-service/src/main/java/ru/practicum/event/service/admin/EventAdminService.java similarity index 53% rename from evm-service/src/main/java/ru/practicum/Event/Service/Admin/EventAdminService.java rename to evm-service/src/main/java/ru/practicum/event/service/admin/EventAdminService.java index 1b4a0c9..7b0c53d 100644 --- a/evm-service/src/main/java/ru/practicum/Event/Service/Admin/EventAdminService.java +++ b/evm-service/src/main/java/ru/practicum/event/service/admin/EventAdminService.java @@ -1,8 +1,8 @@ -package ru.practicum.Event.Service.Admin; +package ru.practicum.event.service.admin; -import ru.practicum.Event.DTO.EventFullDTO; -import ru.practicum.Event.DTO.SearchEventsDTO; -import ru.practicum.Event.DTO.UpdateEventAdminRequest; +import ru.practicum.event.dto.EventFullDTO; +import ru.practicum.event.dto.SearchEventsDTO; +import ru.practicum.event.dto.UpdateEventAdminRequest; import java.util.List; diff --git a/evm-service/src/main/java/ru/practicum/Event/Service/Admin/EventAdminServiceImpl.java b/evm-service/src/main/java/ru/practicum/event/service/admin/EventAdminServiceImpl.java similarity index 81% rename from evm-service/src/main/java/ru/practicum/Event/Service/Admin/EventAdminServiceImpl.java rename to evm-service/src/main/java/ru/practicum/event/service/admin/EventAdminServiceImpl.java index b5200e9..1f9e876 100644 --- a/evm-service/src/main/java/ru/practicum/Event/Service/Admin/EventAdminServiceImpl.java +++ b/evm-service/src/main/java/ru/practicum/event/service/admin/EventAdminServiceImpl.java @@ -1,21 +1,22 @@ -package ru.practicum.Event.Service.Admin; +package ru.practicum.event.service.admin; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; -import ru.practicum.Category.Repository.CategoryRepository; -import ru.practicum.Event.DTO.EventFullDTO; -import ru.practicum.Event.DTO.SearchEventsDTO; -import ru.practicum.Event.DTO.UpdateEventAdminRequest; -import ru.practicum.Event.Mapper.EventMapper; -import ru.practicum.Event.Model.Event; -import ru.practicum.Event.Model.State; -import ru.practicum.Event.Repository.EventRepository; -import ru.practicum.Exception.ConflictException; -import ru.practicum.Exception.ValidationException; -import ru.practicum.User.Repository.UserRepository; +import ru.practicum.category.repository.CategoryRepository; +import ru.practicum.event.dto.EventFullDTO; +import ru.practicum.event.dto.SearchEventsDTO; +import ru.practicum.event.dto.UpdateEventAdminRequest; +import ru.practicum.event.mapper.EventMapper; +import ru.practicum.event.model.Event; +import ru.practicum.event.model.State; +import ru.practicum.event.repository.EventRepository; +import ru.practicum.exception.ConflictException; +import ru.practicum.exception.ValidationException; +import ru.practicum.user.repository.UserRepository; import java.time.LocalDateTime; import java.util.List; @@ -23,6 +24,7 @@ @Service @RequiredArgsConstructor +@Slf4j public class EventAdminServiceImpl implements EventAdminService { private final EventRepository eventRepository; private final EventMapper eventMapper; @@ -41,6 +43,7 @@ public List getEvents(SearchEventsDTO dto) { Pageable pageable = PageRequest.of(dto.getFrom(), dto.getSize()); List events = eventRepository.findAll(spec, pageable).getContent(); + log.info("Found events with params {} are sent, size - {}", dto, events.size()); return events.stream() .map(eventMapper::toEventFullDTO) @@ -82,8 +85,10 @@ public EventFullDTO updateEvent(Integer eventId, UpdateEventAdminRequest request } Event updatedEvent = eventMapper.toEvent(request, event); + EventFullDTO eventFullDTO = eventMapper.toEventFullDTO(eventRepository.save(updatedEvent)); + log.info("Event with id = {} and parameters {} is updated: {}", eventId, request, eventFullDTO); - return eventMapper.toEventFullDTO(eventRepository.save(updatedEvent)); + return eventFullDTO; } private Specification getEventSpecification(SearchEventsDTO event) { diff --git a/evm-service/src/main/java/ru/practicum/Event/Service/Private/EventPrivateService.java b/evm-service/src/main/java/ru/practicum/event/service/close/EventPrivateService.java similarity index 80% rename from evm-service/src/main/java/ru/practicum/Event/Service/Private/EventPrivateService.java rename to evm-service/src/main/java/ru/practicum/event/service/close/EventPrivateService.java index 5ac76da..a2ad702 100644 --- a/evm-service/src/main/java/ru/practicum/Event/Service/Private/EventPrivateService.java +++ b/evm-service/src/main/java/ru/practicum/event/service/close/EventPrivateService.java @@ -1,7 +1,7 @@ -package ru.practicum.Event.Service.Private; +package ru.practicum.event.service.close; -import ru.practicum.Event.DTO.*; -import ru.practicum.Request.RequestDTO.ParticipationRequestDto; +import ru.practicum.request.requestDTO.ParticipationRequestDto; +import ru.practicum.event.dto.*; import java.util.List; diff --git a/evm-service/src/main/java/ru/practicum/Event/Service/Private/EventPrivateServiceImpl.java b/evm-service/src/main/java/ru/practicum/event/service/close/EventPrivateServiceImpl.java similarity index 76% rename from evm-service/src/main/java/ru/practicum/Event/Service/Private/EventPrivateServiceImpl.java rename to evm-service/src/main/java/ru/practicum/event/service/close/EventPrivateServiceImpl.java index d5c52bb..a27a383 100644 --- a/evm-service/src/main/java/ru/practicum/Event/Service/Private/EventPrivateServiceImpl.java +++ b/evm-service/src/main/java/ru/practicum/event/service/close/EventPrivateServiceImpl.java @@ -1,35 +1,37 @@ -package ru.practicum.Event.Service.Private; +package ru.practicum.event.service.close; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import ru.practicum.Category.Model.Category; -import ru.practicum.Category.Repository.CategoryRepository; -import ru.practicum.Event.DTO.*; -import ru.practicum.Event.Mapper.EventMapper; -import ru.practicum.Event.Model.Event; -import ru.practicum.Event.Repository.EventRepository; -import ru.practicum.Exception.ConflictException; -import ru.practicum.Exception.NotFoundException; -import ru.practicum.Exception.ValidationException; -import ru.practicum.Request.Mapper.RequestMapper; -import ru.practicum.Request.Model.Request; -import ru.practicum.Request.Repository.RequestRepository; -import ru.practicum.Request.RequestDTO.ParticipationRequestDto; -import ru.practicum.User.Model.User; -import ru.practicum.User.Repository.UserRepository; +import ru.practicum.event.dto.*; +import ru.practicum.category.model.Category; +import ru.practicum.category.repository.CategoryRepository; +import ru.practicum.event.mapper.EventMapper; +import ru.practicum.event.model.Event; +import ru.practicum.event.repository.EventRepository; +import ru.practicum.exception.ConflictException; +import ru.practicum.exception.NotFoundException; +import ru.practicum.exception.ValidationException; +import ru.practicum.request.mapper.RequestMapper; +import ru.practicum.request.model.Request; +import ru.practicum.request.repository.RequestRepository; +import ru.practicum.request.requestDTO.ParticipationRequestDto; +import ru.practicum.user.model.User; +import ru.practicum.user.repository.UserRepository; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Objects; -import static ru.practicum.Event.Model.State.*; +import static ru.practicum.event.model.State.*; @Service @RequiredArgsConstructor +@Slf4j public class EventPrivateServiceImpl implements EventPrivateService { private final EventRepository eventRepository; private final EventMapper eventMapper; @@ -48,14 +50,20 @@ public EventFullDTO addEvent(Integer userId, NewEventDTO event) { newEvent.setInitiator(user); newEvent.setCategory(category); newEvent.setState(PENDING); - return eventMapper.toEventFullDTO(eventRepository.save(newEvent)); + + EventFullDTO eventFullDTO = eventMapper.toEventFullDTO(eventRepository.save(newEvent)); + log.info("Event is added: {}", eventFullDTO); + + return eventFullDTO; } @Override public EventFullDTO getEvent(Integer userId, Integer eventId) { Event event = checkEvent(eventId); int confirmedRequests = requestRepository.findRequestsByEvent_IdAndStatus(eventId, CONFIRMED).size(); - return eventMapper.toEventFullDTO(event); + EventFullDTO eventFullDTO = eventMapper.toEventFullDTO(event); + log.info("Event with id = {} is found: {}", eventId, eventFullDTO); + return eventFullDTO; } @Override @@ -88,7 +96,9 @@ public EventFullDTO updateEvent(Integer userId, Integer eventId, UpdateEventUser eventFound.setEventDate(event.getEventDate()); } - return eventMapper.toEventFullDTO(eventRepository.save(eventFound)); + EventFullDTO eventFullDTO = eventMapper.toEventFullDTO(eventRepository.save(eventFound)); + log.info("Event with id = {} is updated: {}", eventId, eventFullDTO); + return eventFullDTO; } @Override @@ -96,6 +106,7 @@ public List getUserRequests(Integer userId, Integer eve checkUser(userId); checkEvent(eventId); + log.info("Participation requests for event with id = {} by user with id = {} are found", eventId, userId); return requestRepository.findRequestsByEvent_IdAndEvent_Initiator_Id(eventId, userId).stream() .map(requestMapper::toParticipationRequestDto) .toList(); @@ -139,7 +150,9 @@ public EventRequestStatusUpdateResult updateRequests(EventRequestStatusUpdateReq } } - return new EventRequestStatusUpdateResult(confirmedRequests, rejectedRequests); + EventRequestStatusUpdateResult result = new EventRequestStatusUpdateResult(confirmedRequests, rejectedRequests); + log.info("Status is updated: {}", result); + return result; } @Override @@ -147,6 +160,7 @@ public List getEvents(Integer userId, Integer from, Integer size) checkUser(userId); Pageable pageable = PageRequest.of(from, size); Page events = eventRepository.getEventByInitiator_Id(userId, pageable); + log.info("Number of events for user with id = {} found: {}", userId, events.getTotalElements()); return events.getContent().stream() .map(eventMapper::toEventShortDTO) .toList(); diff --git a/evm-service/src/main/java/ru/practicum/Event/Service/Public/EventPublicService.java b/evm-service/src/main/java/ru/practicum/event/service/open/EventPublicService.java similarity index 60% rename from evm-service/src/main/java/ru/practicum/Event/Service/Public/EventPublicService.java rename to evm-service/src/main/java/ru/practicum/event/service/open/EventPublicService.java index db38b40..39b1240 100644 --- a/evm-service/src/main/java/ru/practicum/Event/Service/Public/EventPublicService.java +++ b/evm-service/src/main/java/ru/practicum/event/service/open/EventPublicService.java @@ -1,9 +1,9 @@ -package ru.practicum.Event.Service.Public; +package ru.practicum.event.service.open; import jakarta.servlet.http.HttpServletRequest; -import ru.practicum.Event.DTO.EventFullDTO; -import ru.practicum.Event.DTO.EventPublicParams; -import ru.practicum.Event.DTO.EventShortDTO; +import ru.practicum.event.dto.EventFullDTO; +import ru.practicum.event.dto.EventPublicParams; +import ru.practicum.event.dto.EventShortDTO; import java.util.List; diff --git a/evm-service/src/main/java/ru/practicum/Event/Service/Public/EventPublicServiceImpl.java b/evm-service/src/main/java/ru/practicum/event/service/open/EventPublicServiceImpl.java similarity index 87% rename from evm-service/src/main/java/ru/practicum/Event/Service/Public/EventPublicServiceImpl.java rename to evm-service/src/main/java/ru/practicum/event/service/open/EventPublicServiceImpl.java index 044d22f..3efe915 100644 --- a/evm-service/src/main/java/ru/practicum/Event/Service/Public/EventPublicServiceImpl.java +++ b/evm-service/src/main/java/ru/practicum/event/service/open/EventPublicServiceImpl.java @@ -1,23 +1,24 @@ -package ru.practicum.Event.Service.Public; +package ru.practicum.event.service.open; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; -import ru.practicum.Category.Repository.CategoryRepository; -import ru.practicum.Event.DTO.EventFullDTO; -import ru.practicum.Event.DTO.EventPublicParams; -import ru.practicum.Event.DTO.EventShortDTO; -import ru.practicum.Event.Mapper.EventMapper; -import ru.practicum.Event.Model.Event; -import ru.practicum.Event.Model.State; -import ru.practicum.Event.Repository.EventRepository; -import ru.practicum.Exception.NotFoundException; -import ru.practicum.Exception.ValidationException; -import ru.practicum.Request.Repository.RequestRepository; +import ru.practicum.category.repository.CategoryRepository; +import ru.practicum.event.dto.EventFullDTO; +import ru.practicum.event.dto.EventPublicParams; +import ru.practicum.event.dto.EventShortDTO; +import ru.practicum.event.mapper.EventMapper; +import ru.practicum.event.model.Event; +import ru.practicum.event.model.State; +import ru.practicum.event.repository.EventRepository; +import ru.practicum.exception.NotFoundException; +import ru.practicum.exception.ValidationException; +import ru.practicum.request.repository.RequestRepository; import ru.practicum.StatsClient; import ru.practicum.ViewStatsDTO; @@ -29,6 +30,7 @@ @Service @RequiredArgsConstructor +@Slf4j public class EventPublicServiceImpl implements EventPublicService { private final EventRepository eventRepository; private final EventMapper eventMapper; @@ -47,7 +49,9 @@ public EventFullDTO findEventById(Integer id, HttpServletRequest request) { Map views = getStats(uris, request); event.setViews(views.get(event.getId())); - return eventMapper.toEventFullDTO(event); + EventFullDTO eventFullDTO = eventMapper.toEventFullDTO(event); + log.info("Event with id = {} and is found: {}", id, eventFullDTO); + return eventFullDTO; } @Override @@ -96,6 +100,7 @@ public List findAllEvents(EventPublicParams params, HttpServletRe .toList(); } + log.info("Found {} events", events.size()); return events; } diff --git a/evm-service/src/main/java/ru/practicum/Exception/ConflictException.java b/evm-service/src/main/java/ru/practicum/exception/ConflictException.java similarity index 85% rename from evm-service/src/main/java/ru/practicum/Exception/ConflictException.java rename to evm-service/src/main/java/ru/practicum/exception/ConflictException.java index cd46f5b..f2f0173 100644 --- a/evm-service/src/main/java/ru/practicum/Exception/ConflictException.java +++ b/evm-service/src/main/java/ru/practicum/exception/ConflictException.java @@ -1,4 +1,4 @@ -package ru.practicum.Exception; +package ru.practicum.exception; public class ConflictException extends RuntimeException { public ConflictException(String message) { diff --git a/evm-service/src/main/java/ru/practicum/Exception/ErrorResponse.java b/evm-service/src/main/java/ru/practicum/exception/ErrorResponse.java similarity index 92% rename from evm-service/src/main/java/ru/practicum/Exception/ErrorResponse.java rename to evm-service/src/main/java/ru/practicum/exception/ErrorResponse.java index eefbe00..c7d1f2c 100644 --- a/evm-service/src/main/java/ru/practicum/Exception/ErrorResponse.java +++ b/evm-service/src/main/java/ru/practicum/exception/ErrorResponse.java @@ -1,4 +1,4 @@ -package ru.practicum.Exception; +package ru.practicum.exception; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; diff --git a/evm-service/src/main/java/ru/practicum/Exception/EvmErrorHandler.java b/evm-service/src/main/java/ru/practicum/exception/EvmErrorHandler.java similarity index 98% rename from evm-service/src/main/java/ru/practicum/Exception/EvmErrorHandler.java rename to evm-service/src/main/java/ru/practicum/exception/EvmErrorHandler.java index 7d23cde..70c9277 100644 --- a/evm-service/src/main/java/ru/practicum/Exception/EvmErrorHandler.java +++ b/evm-service/src/main/java/ru/practicum/exception/EvmErrorHandler.java @@ -1,4 +1,4 @@ -package ru.practicum.Exception; +package ru.practicum.exception; import lombok.extern.slf4j.Slf4j; import org.springframework.dao.DataIntegrityViolationException; diff --git a/evm-service/src/main/java/ru/practicum/Exception/NotFoundException.java b/evm-service/src/main/java/ru/practicum/exception/NotFoundException.java similarity index 85% rename from evm-service/src/main/java/ru/practicum/Exception/NotFoundException.java rename to evm-service/src/main/java/ru/practicum/exception/NotFoundException.java index 982e60a..63b6602 100644 --- a/evm-service/src/main/java/ru/practicum/Exception/NotFoundException.java +++ b/evm-service/src/main/java/ru/practicum/exception/NotFoundException.java @@ -1,4 +1,4 @@ -package ru.practicum.Exception; +package ru.practicum.exception; public class NotFoundException extends RuntimeException { public NotFoundException(String message) { diff --git a/evm-service/src/main/java/ru/practicum/Exception/UniqueException.java b/evm-service/src/main/java/ru/practicum/exception/UniqueException.java similarity index 85% rename from evm-service/src/main/java/ru/practicum/Exception/UniqueException.java rename to evm-service/src/main/java/ru/practicum/exception/UniqueException.java index ca6b3a6..d1607cc 100644 --- a/evm-service/src/main/java/ru/practicum/Exception/UniqueException.java +++ b/evm-service/src/main/java/ru/practicum/exception/UniqueException.java @@ -1,4 +1,4 @@ -package ru.practicum.Exception; +package ru.practicum.exception; public class UniqueException extends RuntimeException { public UniqueException(final String message) { diff --git a/evm-service/src/main/java/ru/practicum/Exception/ValidationException.java b/evm-service/src/main/java/ru/practicum/exception/ValidationException.java similarity index 86% rename from evm-service/src/main/java/ru/practicum/Exception/ValidationException.java rename to evm-service/src/main/java/ru/practicum/exception/ValidationException.java index 06bd106..a03f561 100644 --- a/evm-service/src/main/java/ru/practicum/Exception/ValidationException.java +++ b/evm-service/src/main/java/ru/practicum/exception/ValidationException.java @@ -1,4 +1,4 @@ -package ru.practicum.Exception; +package ru.practicum.exception; public class ValidationException extends RuntimeException { public ValidationException() { diff --git a/evm-service/src/main/java/ru/practicum/Request/Controller/RequestPrivateController.java b/evm-service/src/main/java/ru/practicum/request/controller/RequestPrivateController.java similarity index 67% rename from evm-service/src/main/java/ru/practicum/Request/Controller/RequestPrivateController.java rename to evm-service/src/main/java/ru/practicum/request/controller/RequestPrivateController.java index 8c25286..0ed66b9 100644 --- a/evm-service/src/main/java/ru/practicum/Request/Controller/RequestPrivateController.java +++ b/evm-service/src/main/java/ru/practicum/request/controller/RequestPrivateController.java @@ -1,35 +1,40 @@ -package ru.practicum.Request.Controller; +package ru.practicum.request.controller; import jakarta.validation.constraints.Positive; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; -import ru.practicum.Request.RequestDTO.ParticipationRequestDto; -import ru.practicum.Request.Service.RequestPrivateServiceImpl; +import ru.practicum.request.requestDTO.ParticipationRequestDto; +import ru.practicum.request.service.RequestPrivateService; import java.util.List; @RestController @RequestMapping("/users/{userId}/requests") @RequiredArgsConstructor +@Slf4j public class RequestPrivateController { - private final RequestPrivateServiceImpl requestService; + private final RequestPrivateService requestService; @PostMapping @ResponseStatus(HttpStatus.CREATED) public ParticipationRequestDto addRequest(@PathVariable @Positive Integer userId, @RequestParam @Positive Integer eventId) { + log.info("Adding request by user with id = {} to event with id = {}", userId, eventId); return requestService.addRequest(userId, eventId); } @PatchMapping("/{requestId}/cancel") public ParticipationRequestDto cancelRequest(@PathVariable @Positive Integer userId, @PathVariable @Positive Integer requestId) { + log.info("Canceling request with id = {} for user with id = {}", requestId, userId); return requestService.cancelRequest(userId, requestId); } @GetMapping List getRequests(@PathVariable @Positive Integer userId) { + log.info("Get requests by user with id = {}", userId); return requestService.getRequests(userId); } } diff --git a/evm-service/src/main/java/ru/practicum/Request/Mapper/RequestMapper.java b/evm-service/src/main/java/ru/practicum/request/mapper/RequestMapper.java similarity index 77% rename from evm-service/src/main/java/ru/practicum/Request/Mapper/RequestMapper.java rename to evm-service/src/main/java/ru/practicum/request/mapper/RequestMapper.java index e232dad..8c4c172 100644 --- a/evm-service/src/main/java/ru/practicum/Request/Mapper/RequestMapper.java +++ b/evm-service/src/main/java/ru/practicum/request/mapper/RequestMapper.java @@ -1,9 +1,9 @@ -package ru.practicum.Request.Mapper; +package ru.practicum.request.mapper; import org.mapstruct.Mapper; import org.mapstruct.Mapping; -import ru.practicum.Request.Model.Request; -import ru.practicum.Request.RequestDTO.ParticipationRequestDto; +import ru.practicum.request.model.Request; +import ru.practicum.request.requestDTO.ParticipationRequestDto; @Mapper(componentModel = "spring") public interface RequestMapper { diff --git a/evm-service/src/main/java/ru/practicum/Request/Model/Request.java b/evm-service/src/main/java/ru/practicum/request/model/Request.java similarity index 50% rename from evm-service/src/main/java/ru/practicum/Request/Model/Request.java rename to evm-service/src/main/java/ru/practicum/request/model/Request.java index 3e5b1d5..304a0a1 100644 --- a/evm-service/src/main/java/ru/practicum/Request/Model/Request.java +++ b/evm-service/src/main/java/ru/practicum/request/model/Request.java @@ -1,16 +1,17 @@ -package ru.practicum.Request.Model; +package ru.practicum.request.model; import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import ru.practicum.Event.Model.Event; -import ru.practicum.Event.Model.State; -import ru.practicum.User.Model.User; +import lombok.*; +import ru.practicum.event.model.Event; +import ru.practicum.event.model.State; +import ru.practicum.user.model.User; import java.time.LocalDateTime; +import java.util.Objects; -@Data +@Getter +@Setter +@ToString @AllArgsConstructor @NoArgsConstructor @Entity @@ -34,4 +35,17 @@ public class Request { @Column(name = "state_id") @Enumerated(EnumType.ORDINAL) private State status; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Request request = (Request) o; + return Objects.equals(id, request.id); + } + + @Override + public int hashCode() { + return getClass().hashCode(); + } } diff --git a/evm-service/src/main/java/ru/practicum/Request/Repository/RequestRepository.java b/evm-service/src/main/java/ru/practicum/request/repository/RequestRepository.java similarity index 82% rename from evm-service/src/main/java/ru/practicum/Request/Repository/RequestRepository.java rename to evm-service/src/main/java/ru/practicum/request/repository/RequestRepository.java index 43d0400..f942480 100644 --- a/evm-service/src/main/java/ru/practicum/Request/Repository/RequestRepository.java +++ b/evm-service/src/main/java/ru/practicum/request/repository/RequestRepository.java @@ -1,8 +1,8 @@ -package ru.practicum.Request.Repository; +package ru.practicum.request.repository; import org.springframework.data.jpa.repository.JpaRepository; -import ru.practicum.Event.Model.State; -import ru.practicum.Request.Model.Request; +import ru.practicum.event.model.State; +import ru.practicum.request.model.Request; import java.util.List; import java.util.Optional; diff --git a/evm-service/src/main/java/ru/practicum/Request/RequestDTO/ParticipationRequestDto.java b/evm-service/src/main/java/ru/practicum/request/requestDTO/ParticipationRequestDto.java similarity index 85% rename from evm-service/src/main/java/ru/practicum/Request/RequestDTO/ParticipationRequestDto.java rename to evm-service/src/main/java/ru/practicum/request/requestDTO/ParticipationRequestDto.java index 1e3edc8..68797c1 100644 --- a/evm-service/src/main/java/ru/practicum/Request/RequestDTO/ParticipationRequestDto.java +++ b/evm-service/src/main/java/ru/practicum/request/requestDTO/ParticipationRequestDto.java @@ -1,10 +1,10 @@ -package ru.practicum.Request.RequestDTO; +package ru.practicum.request.requestDTO; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import ru.practicum.Event.Model.State; +import ru.practicum.event.model.State; import java.time.LocalDateTime; diff --git a/evm-service/src/main/java/ru/practicum/Request/Service/RequestPrivateService.java b/evm-service/src/main/java/ru/practicum/request/service/RequestPrivateService.java similarity index 73% rename from evm-service/src/main/java/ru/practicum/Request/Service/RequestPrivateService.java rename to evm-service/src/main/java/ru/practicum/request/service/RequestPrivateService.java index 29be91e..a2872bb 100644 --- a/evm-service/src/main/java/ru/practicum/Request/Service/RequestPrivateService.java +++ b/evm-service/src/main/java/ru/practicum/request/service/RequestPrivateService.java @@ -1,6 +1,6 @@ -package ru.practicum.Request.Service; +package ru.practicum.request.service; -import ru.practicum.Request.RequestDTO.ParticipationRequestDto; +import ru.practicum.request.requestDTO.ParticipationRequestDto; import java.util.List; diff --git a/evm-service/src/main/java/ru/practicum/Request/Service/RequestPrivateServiceImpl.java b/evm-service/src/main/java/ru/practicum/request/service/RequestPrivateServiceImpl.java similarity index 68% rename from evm-service/src/main/java/ru/practicum/Request/Service/RequestPrivateServiceImpl.java rename to evm-service/src/main/java/ru/practicum/request/service/RequestPrivateServiceImpl.java index 7cfbc06..4732c83 100644 --- a/evm-service/src/main/java/ru/practicum/Request/Service/RequestPrivateServiceImpl.java +++ b/evm-service/src/main/java/ru/practicum/request/service/RequestPrivateServiceImpl.java @@ -1,23 +1,25 @@ -package ru.practicum.Request.Service; +package ru.practicum.request.service; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import ru.practicum.Event.Model.Event; -import ru.practicum.Event.Model.State; -import ru.practicum.Event.Repository.EventRepository; -import ru.practicum.Exception.ConflictException; -import ru.practicum.Exception.NotFoundException; -import ru.practicum.Request.Mapper.RequestMapper; -import ru.practicum.Request.Model.Request; -import ru.practicum.Request.Repository.RequestRepository; -import ru.practicum.Request.RequestDTO.ParticipationRequestDto; -import ru.practicum.User.Model.User; -import ru.practicum.User.Repository.UserRepository; +import ru.practicum.event.model.Event; +import ru.practicum.event.model.State; +import ru.practicum.event.repository.EventRepository; +import ru.practicum.exception.ConflictException; +import ru.practicum.exception.NotFoundException; +import ru.practicum.request.mapper.RequestMapper; +import ru.practicum.request.model.Request; +import ru.practicum.request.repository.RequestRepository; +import ru.practicum.request.requestDTO.ParticipationRequestDto; +import ru.practicum.user.model.User; +import ru.practicum.user.repository.UserRepository; import java.util.List; @Service @RequiredArgsConstructor +@Slf4j public class RequestPrivateServiceImpl implements RequestPrivateService { private final RequestRepository requestRepository; private final EventRepository eventRepository; @@ -58,7 +60,11 @@ public ParticipationRequestDto addRequest(Integer userId, Integer eventId) { request.setEvent(event); request.setRequester(user); - return requestMapper.toParticipationRequestDto(requestRepository.save(request)); + ParticipationRequestDto participationRequestDto = requestMapper.toParticipationRequestDto( + requestRepository.save(request)); + log.info("Request is added: {}", participationRequestDto); + + return participationRequestDto; } @Override @@ -70,12 +76,17 @@ public ParticipationRequestDto cancelRequest(Integer userId, Integer requestId) request.setStatus(State.CANCELED); - return requestMapper.toParticipationRequestDto(requestRepository.save(request)); + ParticipationRequestDto participationRequestDto = requestMapper.toParticipationRequestDto( + requestRepository.save(request)); + log.info("Request is cancelled: {}", participationRequestDto); + + return participationRequestDto; } @Override public List getRequests(Integer userId) { checkUser(userId); + log.info("Found requests for user with id = {} are sent", userId); return requestRepository.findRequestsByRequester_Id(userId).stream() .map(requestMapper::toParticipationRequestDto) .toList(); diff --git a/evm-service/src/main/java/ru/practicum/User/Controller/UserAdminController.java b/evm-service/src/main/java/ru/practicum/user/controller/UserAdminController.java similarity index 71% rename from evm-service/src/main/java/ru/practicum/User/Controller/UserAdminController.java rename to evm-service/src/main/java/ru/practicum/user/controller/UserAdminController.java index 3ee9657..ecce57c 100644 --- a/evm-service/src/main/java/ru/practicum/User/Controller/UserAdminController.java +++ b/evm-service/src/main/java/ru/practicum/user/controller/UserAdminController.java @@ -1,33 +1,37 @@ -package ru.practicum.User.Controller; +package ru.practicum.user.controller; import jakarta.validation.Valid; import jakarta.validation.constraints.Positive; import jakarta.validation.constraints.PositiveOrZero; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; -import ru.practicum.User.DTO.NewUserRequest; -import ru.practicum.User.DTO.UserDTO; -import ru.practicum.User.DTO.UsersListRequest; -import ru.practicum.User.Service.UserAdminServiceImpl; +import ru.practicum.user.dto.NewUserRequest; +import ru.practicum.user.dto.UserDTO; +import ru.practicum.user.dto.UsersListRequest; +import ru.practicum.user.service.UserAdminService; import java.util.List; @RestController @RequestMapping("/admin/users") @RequiredArgsConstructor +@Slf4j public class UserAdminController { - private final UserAdminServiceImpl userAdminService; + private final UserAdminService userAdminService; @PostMapping @ResponseStatus(HttpStatus.CREATED) public UserDTO addUser(@RequestBody @Valid NewUserRequest newUser) { + log.info("Adding new user {}", newUser); return userAdminService.addUser(newUser); } @GetMapping("/{userId}") @ResponseStatus(HttpStatus.OK) public UserDTO getUserById(@PathVariable Integer userId) { + log.info("Getting user with id = {}", userId); return userAdminService.getUserById(userId); } @@ -36,12 +40,14 @@ public UserDTO getUserById(@PathVariable Integer userId) { public List getUsers(@RequestParam(required = false) List ids, @RequestParam(defaultValue = "0") @PositiveOrZero int from, @RequestParam(defaultValue = "10") @Positive int size) { + log.info("Getting users with ids {}, from {}, size {}", ids, from, size); return userAdminService.getUsers(new UsersListRequest(ids, from, size)); } @DeleteMapping("/{userId}") @ResponseStatus(HttpStatus.NO_CONTENT) public void deleteUser(@PathVariable Integer userId) { + log.info("Deleting user with id = {}", userId); userAdminService.deleteUserById(userId); } } diff --git a/evm-service/src/main/java/ru/practicum/User/DTO/NewUserRequest.java b/evm-service/src/main/java/ru/practicum/user/dto/NewUserRequest.java similarity index 93% rename from evm-service/src/main/java/ru/practicum/User/DTO/NewUserRequest.java rename to evm-service/src/main/java/ru/practicum/user/dto/NewUserRequest.java index 9e2e7f4..3121655 100644 --- a/evm-service/src/main/java/ru/practicum/User/DTO/NewUserRequest.java +++ b/evm-service/src/main/java/ru/practicum/user/dto/NewUserRequest.java @@ -1,4 +1,4 @@ -package ru.practicum.User.DTO; +package ru.practicum.user.dto; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; diff --git a/evm-service/src/main/java/ru/practicum/User/DTO/UserDTO.java b/evm-service/src/main/java/ru/practicum/user/dto/UserDTO.java similarity index 92% rename from evm-service/src/main/java/ru/practicum/User/DTO/UserDTO.java rename to evm-service/src/main/java/ru/practicum/user/dto/UserDTO.java index 552d020..e53222b 100644 --- a/evm-service/src/main/java/ru/practicum/User/DTO/UserDTO.java +++ b/evm-service/src/main/java/ru/practicum/user/dto/UserDTO.java @@ -1,4 +1,4 @@ -package ru.practicum.User.DTO; +package ru.practicum.user.dto; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; diff --git a/evm-service/src/main/java/ru/practicum/User/DTO/UserShortDTO.java b/evm-service/src/main/java/ru/practicum/user/dto/UserShortDTO.java similarity index 91% rename from evm-service/src/main/java/ru/practicum/User/DTO/UserShortDTO.java rename to evm-service/src/main/java/ru/practicum/user/dto/UserShortDTO.java index 6f8c646..7c08013 100644 --- a/evm-service/src/main/java/ru/practicum/User/DTO/UserShortDTO.java +++ b/evm-service/src/main/java/ru/practicum/user/dto/UserShortDTO.java @@ -1,4 +1,4 @@ -package ru.practicum.User.DTO; +package ru.practicum.user.dto; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; diff --git a/evm-service/src/main/java/ru/practicum/User/DTO/UsersListRequest.java b/evm-service/src/main/java/ru/practicum/user/dto/UsersListRequest.java similarity index 80% rename from evm-service/src/main/java/ru/practicum/User/DTO/UsersListRequest.java rename to evm-service/src/main/java/ru/practicum/user/dto/UsersListRequest.java index c194ba8..3098551 100644 --- a/evm-service/src/main/java/ru/practicum/User/DTO/UsersListRequest.java +++ b/evm-service/src/main/java/ru/practicum/user/dto/UsersListRequest.java @@ -1,4 +1,4 @@ -package ru.practicum.User.DTO; +package ru.practicum.user.dto; import java.util.List; diff --git a/evm-service/src/main/java/ru/practicum/User/Mapper/UserMapper.java b/evm-service/src/main/java/ru/practicum/user/mapper/UserMapper.java similarity index 52% rename from evm-service/src/main/java/ru/practicum/User/Mapper/UserMapper.java rename to evm-service/src/main/java/ru/practicum/user/mapper/UserMapper.java index 6ee6e70..91f4dd6 100644 --- a/evm-service/src/main/java/ru/practicum/User/Mapper/UserMapper.java +++ b/evm-service/src/main/java/ru/practicum/user/mapper/UserMapper.java @@ -1,10 +1,10 @@ -package ru.practicum.User.Mapper; +package ru.practicum.user.mapper; import org.mapstruct.Mapper; -import ru.practicum.User.DTO.NewUserRequest; -import ru.practicum.User.DTO.UserDTO; -import ru.practicum.User.DTO.UserShortDTO; -import ru.practicum.User.Model.User; +import ru.practicum.user.dto.NewUserRequest; +import ru.practicum.user.dto.UserDTO; +import ru.practicum.user.dto.UserShortDTO; +import ru.practicum.user.model.User; @Mapper(componentModel = "spring") public interface UserMapper { diff --git a/evm-service/src/main/java/ru/practicum/user/model/User.java b/evm-service/src/main/java/ru/practicum/user/model/User.java new file mode 100644 index 0000000..1bd1e94 --- /dev/null +++ b/evm-service/src/main/java/ru/practicum/user/model/User.java @@ -0,0 +1,39 @@ +package ru.practicum.user.model; + +import jakarta.persistence.*; +import lombok.*; + +import java.util.Objects; + +@Getter +@Setter +@ToString +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "users") +public class User { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Integer id; + + @Column(name = "email", length = 500) + private String email; + + @Column(name = "name", length = 250) + private String name; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + User user = (User) o; + return Objects.equals(id, user.id); + } + + @Override + public int hashCode() { + return getClass().hashCode(); + } +} diff --git a/evm-service/src/main/java/ru/practicum/User/Repository/UserRepository.java b/evm-service/src/main/java/ru/practicum/user/repository/UserRepository.java similarity index 85% rename from evm-service/src/main/java/ru/practicum/User/Repository/UserRepository.java rename to evm-service/src/main/java/ru/practicum/user/repository/UserRepository.java index 4f34f21..c2651f1 100644 --- a/evm-service/src/main/java/ru/practicum/User/Repository/UserRepository.java +++ b/evm-service/src/main/java/ru/practicum/user/repository/UserRepository.java @@ -1,9 +1,9 @@ -package ru.practicum.User.Repository; +package ru.practicum.user.repository; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; -import ru.practicum.User.Model.User; +import ru.practicum.user.model.User; import java.util.Collection; import java.util.Optional; diff --git a/evm-service/src/main/java/ru/practicum/User/Service/UserAdminService.java b/evm-service/src/main/java/ru/practicum/user/service/UserAdminService.java similarity index 59% rename from evm-service/src/main/java/ru/practicum/User/Service/UserAdminService.java rename to evm-service/src/main/java/ru/practicum/user/service/UserAdminService.java index 75a8beb..769098a 100644 --- a/evm-service/src/main/java/ru/practicum/User/Service/UserAdminService.java +++ b/evm-service/src/main/java/ru/practicum/user/service/UserAdminService.java @@ -1,8 +1,8 @@ -package ru.practicum.User.Service; +package ru.practicum.user.service; -import ru.practicum.User.DTO.NewUserRequest; -import ru.practicum.User.DTO.UserDTO; -import ru.practicum.User.DTO.UsersListRequest; +import ru.practicum.user.dto.NewUserRequest; +import ru.practicum.user.dto.UserDTO; +import ru.practicum.user.dto.UsersListRequest; import java.util.List; diff --git a/evm-service/src/main/java/ru/practicum/User/Service/UserAdminServiceImpl.java b/evm-service/src/main/java/ru/practicum/user/service/UserAdminServiceImpl.java similarity index 65% rename from evm-service/src/main/java/ru/practicum/User/Service/UserAdminServiceImpl.java rename to evm-service/src/main/java/ru/practicum/user/service/UserAdminServiceImpl.java index 378cbf0..05ce975 100644 --- a/evm-service/src/main/java/ru/practicum/User/Service/UserAdminServiceImpl.java +++ b/evm-service/src/main/java/ru/practicum/user/service/UserAdminServiceImpl.java @@ -1,30 +1,34 @@ -package ru.practicum.User.Service; +package ru.practicum.user.service; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; -import ru.practicum.Exception.NotFoundException; -import ru.practicum.User.DTO.NewUserRequest; -import ru.practicum.User.DTO.UserDTO; -import ru.practicum.User.DTO.UsersListRequest; -import ru.practicum.User.Mapper.UserMapper; -import ru.practicum.User.Model.User; -import ru.practicum.User.Repository.UserRepository; +import ru.practicum.exception.NotFoundException; +import ru.practicum.user.dto.NewUserRequest; +import ru.practicum.user.dto.UserDTO; +import ru.practicum.user.dto.UsersListRequest; +import ru.practicum.user.mapper.UserMapper; +import ru.practicum.user.model.User; +import ru.practicum.user.repository.UserRepository; import java.util.List; @Service @RequiredArgsConstructor +@Slf4j public class UserAdminServiceImpl implements UserAdminService { private final UserRepository userRepository; private final UserMapper userMapper; @Override public UserDTO addUser(NewUserRequest newUser) { - return userMapper.toUserDTO(userRepository.save(userMapper.toUser(newUser))); + UserDTO userDTO = userMapper.toUserDTO(userRepository.save(userMapper.toUser(newUser))); + log.info("User is added: {}", userDTO); + return userDTO; } @Override @@ -33,6 +37,7 @@ public void deleteUserById(Integer id) { .orElseThrow(() -> new NotFoundException("User with id " + id + " not found")); userRepository.delete(user); + log.info("User with id {} deleted", id); } @Override @@ -40,7 +45,9 @@ public UserDTO getUserById(Integer id) { User user = userRepository.findById(id) .orElseThrow(() -> new NotFoundException("User with id " + id + " not found")); - return userMapper.toUserDTO(user); + UserDTO userDTO = userMapper.toUserDTO(user); + log.info("User with id = {} is found: {}", id, userDTO); + return userDTO; } @Override @@ -52,6 +59,7 @@ public List getUsers(UsersListRequest request) { ? userRepository.findAll(pageable).getContent() : userRepository.findByIdIn(request.ids(), pageable).getContent(); + log.info("Found {} users are sent", users.size()); return users.stream() .map(userMapper::toUserDTO) .toList(); diff --git a/stat/stat-server/src/main/java/ru/practicum/controller/StatsServerController.java b/stat/stat-server/src/main/java/ru/practicum/controller/StatsServerController.java index 4ac455b..bca96c2 100644 --- a/stat/stat-server/src/main/java/ru/practicum/controller/StatsServerController.java +++ b/stat/stat-server/src/main/java/ru/practicum/controller/StatsServerController.java @@ -2,6 +2,7 @@ import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; import ru.practicum.EndpointHitDTO; @@ -13,17 +14,20 @@ @RestController @RequiredArgsConstructor +@Slf4j public class StatsServerController { private final StatsServiceImpl statsService; @GetMapping("/stats") private List viewStats(@ModelAttribute @Valid StatsRequestDTO statsRequestDTO) { + log.info("Getting view stats"); return statsService.getStats(statsRequestDTO); } @PostMapping("/hit") @ResponseStatus(HttpStatus.CREATED) private void createHit(@RequestBody @Valid EndpointHitDTO hitDTO) { + log.info("Creating hit {}", hitDTO); statsService.createHit(hitDTO); } } diff --git a/stat/stat-server/src/main/java/ru/practicum/service/StatsServiceInterface.java b/stat/stat-server/src/main/java/ru/practicum/service/StatsService.java similarity index 87% rename from stat/stat-server/src/main/java/ru/practicum/service/StatsServiceInterface.java rename to stat/stat-server/src/main/java/ru/practicum/service/StatsService.java index 0263295..e829ef5 100644 --- a/stat/stat-server/src/main/java/ru/practicum/service/StatsServiceInterface.java +++ b/stat/stat-server/src/main/java/ru/practicum/service/StatsService.java @@ -6,7 +6,7 @@ import java.util.List; -public interface StatsServiceInterface { +public interface StatsService { List getStats(StatsRequestDTO statsRequestDTO); void createHit(EndpointHitDTO hitDTO); diff --git a/stat/stat-server/src/main/java/ru/practicum/service/StatsServiceImpl.java b/stat/stat-server/src/main/java/ru/practicum/service/StatsServiceImpl.java index c824a8c..27163cd 100644 --- a/stat/stat-server/src/main/java/ru/practicum/service/StatsServiceImpl.java +++ b/stat/stat-server/src/main/java/ru/practicum/service/StatsServiceImpl.java @@ -1,6 +1,7 @@ package ru.practicum.service; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import ru.practicum.EndpointHitDTO; import ru.practicum.StatsRequestDTO; @@ -16,7 +17,8 @@ @Service @RequiredArgsConstructor -public class StatsServiceImpl implements StatsServiceInterface { +@Slf4j +public class StatsServiceImpl implements StatsService { private final StatsServerRepository statsService; private final ViewStatsMapper viewStatsMapper; private final HitsMapper hitsMapper; @@ -42,6 +44,7 @@ public List getStats(StatsRequestDTO statsRequestDTO) { .toList(); } + log.info("Found {} stats", stats.size()); return stats; } @@ -49,5 +52,6 @@ public List getStats(StatsRequestDTO statsRequestDTO) { public void createHit(EndpointHitDTO hitDTO) { EndpointHit hit = hitsMapper.mapHitDTO(hitDTO); statsService.createHit(hit); + log.info("Created hit {}", hit); } }