projects
/
demos
/
kafka
/
chat
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
feat: Introduced `ChatHome` that gives multiple `Chatroom`s a home
[demos/kafka/chat]
/
src
/
main
/
java
/
de
/
juplo
/
kafka
/
chat
/
backend
/
api
/
ChatBackendController.java
diff --git
a/src/main/java/de/juplo/kafka/chat/backend/api/ChatBackendController.java
b/src/main/java/de/juplo/kafka/chat/backend/api/ChatBackendController.java
index
17d2b1f
..
385c95c
100644
(file)
--- a/
src/main/java/de/juplo/kafka/chat/backend/api/ChatBackendController.java
+++ b/
src/main/java/de/juplo/kafka/chat/backend/api/ChatBackendController.java
@@
-1,7
+1,7
@@
package de.juplo.kafka.chat.backend.api;
package de.juplo.kafka.chat.backend.api;
+import de.juplo.kafka.chat.backend.domain.ChatHome;
import de.juplo.kafka.chat.backend.domain.Chatroom;
import de.juplo.kafka.chat.backend.domain.Chatroom;
-import de.juplo.kafka.chat.backend.domain.PersistenceStrategy;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
@@
-11,8
+11,6
@@
import reactor.core.publisher.Mono;
import java.time.Clock;
import java.time.LocalDateTime;
import java.util.Collection;
import java.time.Clock;
import java.time.LocalDateTime;
import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
import java.util.UUID;
import java.util.UUID;
@@
-20,29
+18,26
@@
import java.util.UUID;
@RequiredArgsConstructor
public class ChatBackendController
{
@RequiredArgsConstructor
public class ChatBackendController
{
- private final Map<UUID, Chatroom> chatrooms = new HashMap<>();
- private final PersistenceStrategy persistenceStrategy;
+ private final ChatHome chatHome;
private final Clock clock;
@PostMapping("create")
public Chatroom create(@RequestBody String name)
{
private final Clock clock;
@PostMapping("create")
public Chatroom create(@RequestBody String name)
{
- Chatroom chatroom = new Chatroom(UUID.randomUUID(), name, persistenceStrategy);
- chatrooms.put(chatroom.getId(), chatroom);
- return chatroom;
+ return chatHome.createChatroom(name);
}
@GetMapping("list")
public Collection<Chatroom> list()
{
}
@GetMapping("list")
public Collection<Chatroom> list()
{
- return chat
rooms.values
();
+ return chat
Home.list
();
}
@GetMapping("get/{chatroomId}")
public Chatroom get(@PathVariable UUID chatroomId)
{
}
@GetMapping("get/{chatroomId}")
public Chatroom get(@PathVariable UUID chatroomId)
{
- return chat
rooms.get
(chatroomId);
+ return chat
Home.getChatroom
(chatroomId);
}
@PutMapping("put/{chatroomId}/{username}/{messageId}")
}
@PutMapping("put/{chatroomId}/{username}/{messageId}")
@@
-52,7
+47,7
@@
public class ChatBackendController
@PathVariable Long messageId,
@RequestBody String text)
{
@PathVariable Long messageId,
@RequestBody String text)
{
- Chatroom chatroom = chat
rooms.get
(chatroomId);
+ Chatroom chatroom = chat
Home.getChatroom
(chatroomId);
return
chatroom
.addMessage(
return
chatroom
.addMessage(
@@
-71,8
+66,8
@@
public class ChatBackendController
@PathVariable Long messageId)
{
return
@PathVariable Long messageId)
{
return
- chat
rooms
- .get(chatroomId)
+ chat
Home
+ .get
Chatroom
(chatroomId)
.getMessage(username, messageId)
.map(message -> MessageTo.from(message));
}
.getMessage(username, messageId)
.map(message -> MessageTo.from(message));
}
@@
-82,8
+77,8
@@
public class ChatBackendController
produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<MessageTo> listen(@PathVariable UUID chatroomId)
{
produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<MessageTo> listen(@PathVariable UUID chatroomId)
{
- return chat
rooms
- .get(chatroomId)
+ return chat
Home
+ .get
Chatroom
(chatroomId)
.listen()
.log()
.map(message -> MessageTo.from(message));
.listen()
.log()
.map(message -> MessageTo.from(message));