diff --git a/server/src/main/java/com/usatiuk/tjv/y/server/controller/ChatController.java b/server/src/main/java/com/usatiuk/tjv/y/server/controller/ChatController.java index b105348..56400d2 100644 --- a/server/src/main/java/com/usatiuk/tjv/y/server/controller/ChatController.java +++ b/server/src/main/java/com/usatiuk/tjv/y/server/controller/ChatController.java @@ -15,6 +15,7 @@ import org.springframework.web.server.ResponseStatusException; import java.security.Principal; import java.util.Arrays; import java.util.Objects; +import java.util.stream.Stream; @RestController @RequestMapping(value = "/chat", produces = MediaType.APPLICATION_JSON_VALUE) @@ -55,5 +56,10 @@ public class ChatController { return chatMapper.makeDto(chat); } + @GetMapping(path = "/my") + public Stream getMy(Principal principal) { + return chatService.readByMember(principal.getName()).stream().map(chatMapper::makeDto); + } + } diff --git a/server/src/main/java/com/usatiuk/tjv/y/server/repository/ChatRepository.java b/server/src/main/java/com/usatiuk/tjv/y/server/repository/ChatRepository.java index d1f8421..0433797 100644 --- a/server/src/main/java/com/usatiuk/tjv/y/server/repository/ChatRepository.java +++ b/server/src/main/java/com/usatiuk/tjv/y/server/repository/ChatRepository.java @@ -3,8 +3,11 @@ package com.usatiuk.tjv.y.server.repository; import com.usatiuk.tjv.y.server.entity.Chat; import org.springframework.data.repository.CrudRepository; +import java.util.Collection; import java.util.Optional; public interface ChatRepository extends CrudRepository { Optional findByName(String name); + + Collection findByMembers_uuid(String memberUuid); } diff --git a/server/src/main/java/com/usatiuk/tjv/y/server/service/ChatService.java b/server/src/main/java/com/usatiuk/tjv/y/server/service/ChatService.java index 0ab8d46..8a6159d 100644 --- a/server/src/main/java/com/usatiuk/tjv/y/server/service/ChatService.java +++ b/server/src/main/java/com/usatiuk/tjv/y/server/service/ChatService.java @@ -2,5 +2,8 @@ package com.usatiuk.tjv.y.server.service; import com.usatiuk.tjv.y.server.entity.Chat; +import java.util.Collection; + public interface ChatService extends CrudService { + Collection readByMember(String memberUuid); } 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 d66f1e2..313ddb6 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 @@ -5,6 +5,8 @@ import com.usatiuk.tjv.y.server.repository.ChatRepository; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Service; +import java.util.Collection; + @Service public class ChatServiceImpl extends CrudServiceImpl implements ChatService { @@ -18,4 +20,9 @@ public class ChatServiceImpl extends CrudServiceImpl implements Chat protected CrudRepository getRepository() { return chatRepository; } + + @Override + public Collection readByMember(String memberUuid) { + return chatRepository.findByMembers_uuid(memberUuid); + } } diff --git a/server/src/test/java/com/usatiuk/tjv/y/server/controller/ChatControllerTest.java b/server/src/test/java/com/usatiuk/tjv/y/server/controller/ChatControllerTest.java index 198a2b0..a8e760a 100644 --- a/server/src/test/java/com/usatiuk/tjv/y/server/controller/ChatControllerTest.java +++ b/server/src/test/java/com/usatiuk/tjv/y/server/controller/ChatControllerTest.java @@ -14,6 +14,7 @@ import org.springframework.http.HttpEntity; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; +import java.util.Arrays; import java.util.stream.Stream; public class ChatControllerTest extends DemoDataDbTest { @@ -60,6 +61,21 @@ public class ChatControllerTest extends DemoDataDbTest { } } + @Test + void shouldGetChatsUserIsMemberOf() { + var response = restTemplate.exchange(addr + "/chat/my", HttpMethod.GET, + new HttpEntity<>(createAuthHeaders(person2Auth)), + ChatTo[].class); + + Assertions.assertNotNull(response); + Assertions.assertEquals(HttpStatus.OK, response.getStatusCode()); + + var toResponse = response.getBody(); + Assertions.assertNotNull(toResponse); + + Assertions.assertIterableEquals(Stream.of(chat1, chat2).map(chatMapper::makeDto).toList(), Arrays.asList(toResponse)); + } + @Test void shouldNotChatUnauthorized() { var response = restTemplate.exchange(addr + "/chat/by-id/" + chat1.getId(), HttpMethod.GET,