diff --git a/src/main/kotlin/chatserver/MessageResult.kt b/src/main/kotlin/chatserver/MessageResult.kt new file mode 100644 index 0000000..56f4c5e --- /dev/null +++ b/src/main/kotlin/chatserver/MessageResult.kt @@ -0,0 +1,16 @@ +package chatserver + +import chatserver.ReadChatRepository.ReadResult + +data class MessageResult( + override val isOk: Boolean, + override val item: List, + override val error: Exception?, +) : + ReadResult> { + companion object { + fun ok(item: List): MessageResult = MessageResult(true, item, null) + + fun fail(e: Exception? = null): MessageResult = MessageResult(false, emptyList(), e) + } +} diff --git a/src/main/kotlin/chatserver/PresenceResult.kt b/src/main/kotlin/chatserver/PresenceResult.kt new file mode 100644 index 0000000..048bf07 --- /dev/null +++ b/src/main/kotlin/chatserver/PresenceResult.kt @@ -0,0 +1,16 @@ +package chatserver + +import chatserver.ReadChatRepository.ReadResult + +data class PresenceResult( + override val isOk: Boolean, + override val item: Map, + override val error: Exception?, +) : + ReadResult> { + companion object { + fun ok(item: Map): PresenceResult = PresenceResult(true, item, null) + + fun fail(e: Exception? = null): PresenceResult = PresenceResult(false, emptyMap(), e) + } +} diff --git a/src/main/kotlin/chatserver/ProfileResult.kt b/src/main/kotlin/chatserver/ProfileResult.kt new file mode 100644 index 0000000..2dca804 --- /dev/null +++ b/src/main/kotlin/chatserver/ProfileResult.kt @@ -0,0 +1,16 @@ +package chatserver + +import chatserver.ReadChatRepository.ReadResult + +data class ProfileResult( + override val isOk: Boolean, + override val item: Map, + override val error: Exception?, +) : + ReadResult> { + companion object { + fun ok(item: Map): ProfileResult = ProfileResult(true, item, null) + + fun fail(e: Exception? = null): ProfileResult = ProfileResult(false, emptyMap(), e) + } +} diff --git a/src/main/kotlin/chatserver/ReadChatRepository.kt b/src/main/kotlin/chatserver/ReadChatRepository.kt new file mode 100644 index 0000000..935ba4b --- /dev/null +++ b/src/main/kotlin/chatserver/ReadChatRepository.kt @@ -0,0 +1,15 @@ +package chatserver + +import kotlinx.coroutines.flow.Flow + +interface ReadChatRepository> { + fun latest(): T + + fun observe(): Flow + + interface ReadResult { + val isOk: Boolean + val item: T + val error: Exception? + } +} diff --git a/src/main/kotlin/chatserver/SubscribeChatRepository.kt b/src/main/kotlin/chatserver/SubscribeChatRepository.kt new file mode 100644 index 0000000..96c8cb3 --- /dev/null +++ b/src/main/kotlin/chatserver/SubscribeChatRepository.kt @@ -0,0 +1,7 @@ +package chatserver + +interface SubscribeChatRepository { + fun subscribe() + + fun unsubscribe() +} diff --git a/src/main/kotlin/chatserver/WriteChatRepository.kt b/src/main/kotlin/chatserver/WriteChatRepository.kt new file mode 100644 index 0000000..eb4c523 --- /dev/null +++ b/src/main/kotlin/chatserver/WriteChatRepository.kt @@ -0,0 +1,5 @@ +package chatserver + +interface WriteChatRepository { + fun write(item: T) +}