From 50cc02351d590599b0a6561d8d444e131a6b8409 Mon Sep 17 00:00:00 2001 From: Stepan Usatiuk Date: Thu, 4 Jan 2024 17:41:11 +0100 Subject: [PATCH] entire services in transactions --- .../y/server/controller/annotations/ApiConflictResponse.java | 2 +- .../main/java/com/usatiuk/tjv/y/server/entity/Message.java | 2 +- .../src/main/java/com/usatiuk/tjv/y/server/entity/Post.java | 2 +- .../com/usatiuk/tjv/y/server/service/ChatServiceImpl.java | 2 ++ .../usatiuk/tjv/y/server/service/LoginTokenServiceImpl.java | 2 ++ .../com/usatiuk/tjv/y/server/service/MessageServiceImpl.java | 2 ++ .../com/usatiuk/tjv/y/server/service/PersonServiceImpl.java | 4 +--- .../com/usatiuk/tjv/y/server/service/PostServiceImpl.java | 2 ++ .../com/usatiuk/tjv/y/server/spasupport/AppRootContoller.java | 2 ++ 9 files changed, 14 insertions(+), 6 deletions(-) diff --git a/server/src/main/java/com/usatiuk/tjv/y/server/controller/annotations/ApiConflictResponse.java b/server/src/main/java/com/usatiuk/tjv/y/server/controller/annotations/ApiConflictResponse.java index 40b75d5..be411a1 100644 --- a/server/src/main/java/com/usatiuk/tjv/y/server/controller/annotations/ApiConflictResponse.java +++ b/server/src/main/java/com/usatiuk/tjv/y/server/controller/annotations/ApiConflictResponse.java @@ -14,7 +14,7 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @ApiResponse( responseCode = "409", - description = "Conflict - creating/updating what is requested would conflict with existing data", + description = "Conflict - creating/updating what is requested would conflict with existing data (e.g. usernames must be unique)", content = @Content( mediaType = "application/json", schema = @Schema(implementation = ErrorTo.class) diff --git a/server/src/main/java/com/usatiuk/tjv/y/server/entity/Message.java b/server/src/main/java/com/usatiuk/tjv/y/server/entity/Message.java index c50ec56..1890a58 100644 --- a/server/src/main/java/com/usatiuk/tjv/y/server/entity/Message.java +++ b/server/src/main/java/com/usatiuk/tjv/y/server/entity/Message.java @@ -29,7 +29,7 @@ public class Message { private Person author; @CreationTimestamp - private Instant createdAt; + private Instant createdAt = Instant.now(); @Lob @NotBlank(message = "Message can't be empty") diff --git a/server/src/main/java/com/usatiuk/tjv/y/server/entity/Post.java b/server/src/main/java/com/usatiuk/tjv/y/server/entity/Post.java index bc1ec4a..88ab7be 100644 --- a/server/src/main/java/com/usatiuk/tjv/y/server/entity/Post.java +++ b/server/src/main/java/com/usatiuk/tjv/y/server/entity/Post.java @@ -30,5 +30,5 @@ public class Post { private String text; @CreationTimestamp - private Instant createdAt; + private Instant createdAt = Instant.now(); } diff --git a/server/src/main/java/com/usatiuk/tjv/y/server/service/ChatServiceImpl.java b/server/src/main/java/com/usatiuk/tjv/y/server/service/ChatServiceImpl.java index 9074e32..f505020 100644 --- a/server/src/main/java/com/usatiuk/tjv/y/server/service/ChatServiceImpl.java +++ b/server/src/main/java/com/usatiuk/tjv/y/server/service/ChatServiceImpl.java @@ -11,6 +11,7 @@ import com.usatiuk.tjv.y.server.repository.ChatRepository; import com.usatiuk.tjv.y.server.service.exceptions.BadInputException; import com.usatiuk.tjv.y.server.service.exceptions.NotFoundException; import jakarta.persistence.EntityManager; +import jakarta.transaction.Transactional; import org.springframework.security.core.Authentication; import org.springframework.stereotype.Service; @@ -20,6 +21,7 @@ import java.util.Collection; import java.util.Objects; @Service("chatService") +@Transactional public class ChatServiceImpl implements ChatService { private final ChatRepository chatRepository; diff --git a/server/src/main/java/com/usatiuk/tjv/y/server/service/LoginTokenServiceImpl.java b/server/src/main/java/com/usatiuk/tjv/y/server/service/LoginTokenServiceImpl.java index febd9d4..68bcad5 100644 --- a/server/src/main/java/com/usatiuk/tjv/y/server/service/LoginTokenServiceImpl.java +++ b/server/src/main/java/com/usatiuk/tjv/y/server/service/LoginTokenServiceImpl.java @@ -3,12 +3,14 @@ package com.usatiuk.tjv.y.server.service; import com.usatiuk.tjv.y.server.dto.TokenRequestTo; import com.usatiuk.tjv.y.server.dto.TokenResponseTo; import com.usatiuk.tjv.y.server.security.JwtTokenService; +import jakarta.transaction.Transactional; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.stereotype.Service; @Service +@Transactional public class LoginTokenServiceImpl implements LoginTokenService { private final AuthenticationManager authenticationManager; private final JwtTokenService jwtTokenService; diff --git a/server/src/main/java/com/usatiuk/tjv/y/server/service/MessageServiceImpl.java b/server/src/main/java/com/usatiuk/tjv/y/server/service/MessageServiceImpl.java index 79339f7..64c9d5e 100644 --- a/server/src/main/java/com/usatiuk/tjv/y/server/service/MessageServiceImpl.java +++ b/server/src/main/java/com/usatiuk/tjv/y/server/service/MessageServiceImpl.java @@ -9,6 +9,7 @@ import com.usatiuk.tjv.y.server.entity.Person; import com.usatiuk.tjv.y.server.repository.MessageRepository; import com.usatiuk.tjv.y.server.service.exceptions.NotFoundException; import jakarta.persistence.EntityManager; +import jakarta.transaction.Transactional; import org.springframework.security.core.Authentication; import org.springframework.stereotype.Service; @@ -17,6 +18,7 @@ import java.util.Objects; import java.util.stream.StreamSupport; @Service("messageService") +@Transactional public class MessageServiceImpl implements MessageService { private final MessageRepository messageRepository; diff --git a/server/src/main/java/com/usatiuk/tjv/y/server/service/PersonServiceImpl.java b/server/src/main/java/com/usatiuk/tjv/y/server/service/PersonServiceImpl.java index e206485..efe4444 100644 --- a/server/src/main/java/com/usatiuk/tjv/y/server/service/PersonServiceImpl.java +++ b/server/src/main/java/com/usatiuk/tjv/y/server/service/PersonServiceImpl.java @@ -20,6 +20,7 @@ import java.util.Optional; import java.util.stream.StreamSupport; @Service +@Transactional public class PersonServiceImpl implements PersonService { private final PersonRepository personRepository; private final PasswordEncoder passwordEncoder; @@ -76,7 +77,6 @@ public class PersonServiceImpl implements PersonService { } @Override - @Transactional public PersonTo update(Authentication authentication, PersonCreateTo person) { var found = personRepository.findById(authentication.getName()).orElseThrow(NotFoundException::new); @@ -90,7 +90,6 @@ public class PersonServiceImpl implements PersonService { return personMapper.makeDto(found); } - @Transactional public void deleteByUuid(String uuid) { var person = personRepository.findById(uuid).orElseThrow(NotFoundException::new); for (Chat c : person.getChats()) { @@ -104,7 +103,6 @@ public class PersonServiceImpl implements PersonService { } @Override - @Transactional public void deleteSelf(Authentication authentication) { deleteByUuid(authentication.getName()); } diff --git a/server/src/main/java/com/usatiuk/tjv/y/server/service/PostServiceImpl.java b/server/src/main/java/com/usatiuk/tjv/y/server/service/PostServiceImpl.java index 7c276be..aac360e 100644 --- a/server/src/main/java/com/usatiuk/tjv/y/server/service/PostServiceImpl.java +++ b/server/src/main/java/com/usatiuk/tjv/y/server/service/PostServiceImpl.java @@ -8,6 +8,7 @@ import com.usatiuk.tjv.y.server.entity.Post; import com.usatiuk.tjv.y.server.repository.PostRepository; import com.usatiuk.tjv.y.server.service.exceptions.NotFoundException; import jakarta.persistence.EntityManager; +import jakarta.transaction.Transactional; import org.springframework.security.core.Authentication; import org.springframework.stereotype.Service; @@ -16,6 +17,7 @@ import java.util.Objects; import java.util.stream.StreamSupport; @Service("postService") +@Transactional public class PostServiceImpl implements PostService { private final PostRepository postRepository; private final PostMapper postMapper; diff --git a/server/src/main/java/com/usatiuk/tjv/y/server/spasupport/AppRootContoller.java b/server/src/main/java/com/usatiuk/tjv/y/server/spasupport/AppRootContoller.java index 2b637e7..8f8cd66 100644 --- a/server/src/main/java/com/usatiuk/tjv/y/server/spasupport/AppRootContoller.java +++ b/server/src/main/java/com/usatiuk/tjv/y/server/spasupport/AppRootContoller.java @@ -1,5 +1,6 @@ package com.usatiuk.tjv.y.server.spasupport; +import io.swagger.v3.oas.annotations.Hidden; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Profile; import org.springframework.http.MediaType; @@ -14,6 +15,7 @@ import java.nio.file.Files; @RestController @RequestMapping(value = "/app", produces = MediaType.TEXT_HTML_VALUE) @Profile("prod") +@Hidden class AppRootContoller { private final File indexFile;