improve hierachi of classes for contents and posts
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
package com.insanusmokrassar.postssystem.core.server
|
||||
|
||||
import com.insanusmokrassar.postssystem.core.post.Post
|
||||
import com.insanusmokrassar.postssystem.core.post.SimplePost
|
||||
import com.insanusmokrassar.postssystem.core.post.SimpleRegisteredPost
|
||||
import com.insanusmokrassar.postssystem.core.utils.pagination.PaginationResult
|
||||
import io.ktor.application.ApplicationCall
|
||||
import io.ktor.http.ContentType
|
||||
@@ -15,8 +15,8 @@ import kotlinx.serialization.internal.NullableSerializer
|
||||
import kotlinx.serialization.json.Json
|
||||
|
||||
|
||||
internal val postsSerializer = ArrayListSerializer(SimplePost.serializer())
|
||||
internal val paginationResultSerializer = PaginationResult.serializer(SimplePost.serializer())
|
||||
internal val postsSerializer = ArrayListSerializer(SimpleRegisteredPost.serializer())
|
||||
internal val paginationResultSerializer = PaginationResult.serializer(SimpleRegisteredPost.serializer())
|
||||
|
||||
internal val List<Post>.asSimplePostList
|
||||
get() = map { post ->
|
||||
@@ -25,8 +25,8 @@ internal val List<Post>.asSimplePostList
|
||||
|
||||
internal val Post.asSimplePost
|
||||
get() = when (this) {
|
||||
is SimplePost -> this
|
||||
else -> SimplePost(id, content, meta)
|
||||
is SimpleRegisteredPost -> this
|
||||
else -> SimpleRegisteredPost(id, content, meta)
|
||||
}
|
||||
|
||||
@InternalSerializationApi
|
||||
|
@@ -8,17 +8,10 @@ import com.insanusmokrassar.postssystem.core.post.*
|
||||
import com.insanusmokrassar.postssystem.core.utils.pagination.PaginationRequest
|
||||
import com.insanusmokrassar.postssystem.core.utils.pagination.PaginationResult
|
||||
import io.ktor.application.*
|
||||
import io.ktor.features.ContentNegotiation
|
||||
import io.ktor.http.ContentType
|
||||
import io.ktor.http.HttpStatusCode
|
||||
import io.ktor.request.receiveOrNull
|
||||
import io.ktor.response.respond
|
||||
import io.ktor.response.respondText
|
||||
import io.ktor.routing.Route
|
||||
import io.ktor.routing.post
|
||||
import io.ktor.serialization.serialization
|
||||
import kotlinx.serialization.InternalSerializationApi
|
||||
import kotlinx.serialization.json.Json
|
||||
import org.joda.time.DateTime
|
||||
|
||||
@InternalSerializationApi
|
||||
@@ -26,7 +19,7 @@ fun Route.includePostsCoreReadModules(readPostsAPI: ReadPostsAPI) {
|
||||
post(getPostByIdAddress) {
|
||||
call.receiveOrNull<PostId>() ?.also { id ->
|
||||
val post = readPostsAPI.getPostById(id)
|
||||
call.answer(SimplePost.serializer(), post ?.asSimplePost)
|
||||
call.answer(SimpleRegisteredPost.serializer(), post ?.asSimplePost)
|
||||
} ?: call.answerBadRequest("Id of post")
|
||||
}
|
||||
post(getPostsByContentIdAddress) {
|
||||
|
@@ -5,14 +5,10 @@ import com.insanusmokrassar.postssystem.core.clientserver.common.*
|
||||
import com.insanusmokrassar.postssystem.core.clientserver.common.models.UpdatePostRequest
|
||||
import com.insanusmokrassar.postssystem.core.post.*
|
||||
import io.ktor.application.*
|
||||
import io.ktor.features.ContentNegotiation
|
||||
import io.ktor.http.ContentType
|
||||
import io.ktor.http.cio.websocket.Frame
|
||||
import io.ktor.request.receiveOrNull
|
||||
import io.ktor.routing.Route
|
||||
import io.ktor.routing.post
|
||||
import io.ktor.serialization.serialization
|
||||
import io.ktor.websocket.WebSockets
|
||||
import io.ktor.websocket.webSocket
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.collect
|
||||
@@ -24,7 +20,7 @@ private inline fun Route.createWebsocket(path: String, flow: Flow<Post>) {
|
||||
webSocket("/$path") {
|
||||
flow.collect {
|
||||
val simplePost = it.asSimplePost
|
||||
outgoing.send(Frame.Text(Json.plain.stringify(SimplePost.serializer(), simplePost)))
|
||||
outgoing.send(Frame.Text(Json.plain.stringify(SimpleRegisteredPost.serializer(), simplePost)))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41,7 +37,7 @@ fun Route.includePostsCoreWriteModules(
|
||||
call.receiveOrNull<PostContents>() ?.also { contents ->
|
||||
val post = writePostsAPI.createPost(contents)
|
||||
|
||||
call.answer(SimplePost.serializer(), post ?.asSimplePost)
|
||||
call.answer(SimpleRegisteredPost.serializer(), post ?.asSimplePost)
|
||||
} ?: call.answerBadRequest("Contents (List of Content)")
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user