diff --git a/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/content/Content.kt b/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/content/Content.kt index c21ffb42..55f08b41 100644 --- a/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/content/Content.kt +++ b/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/content/Content.kt @@ -1,17 +1,30 @@ package com.insanusmokrassar.postssystem.core.content +import kotlinx.serialization.Serializable + typealias ContentId = String /** * Content which is planned to be registered in database */ -interface Content +sealed class Content + +@Serializable +data class SimpleSpecialContent( + val internalId: ContentId +) : Content() + +@Serializable +data class SimpleTextContent( + val text: String +) : Content() /** * Content which is already registered in database. Using its [id] you can retrieve all known * [com.insanusmokrassar.postssystem.core.post.RegisteredPost]s by using * [com.insanusmokrassar.postssystem.core.post.api.ReadPostsAPI.getPostsByContent] */ -interface RegisteredContent : Content { - val id: ContentId -} +data class RegisteredContent( + val id: ContentId, + val content: Content +) diff --git a/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/content/SpecialContent.kt b/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/content/SpecialContent.kt deleted file mode 100644 index f4100390..00000000 --- a/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/content/SpecialContent.kt +++ /dev/null @@ -1,31 +0,0 @@ -package com.insanusmokrassar.postssystem.core.content - -import kotlinx.serialization.Serializable - -/** - * Special content, which usually better known in some plugin or system, but is not representable in others. For - * example, it could be issue in some git system, which is unknown for all other systems. - * - * @property internalId Represent Id of this content in system which knows exact type and can correctly handle this - * content - */ -interface SpecialContent : Content { - val internalId: ContentId -} - -/** - * As [SpecialContent], but already registered in posts system - */ -interface SpecialRegisteredContent : RegisteredContent, SpecialContent - -@Serializable -data class SimpleSpecialContent( - override val internalId: ContentId -) : SpecialContent - -@Serializable -data class SimpleSpecialRegisteredContent( - override val id: ContentId, - override val internalId: ContentId -) : SpecialRegisteredContent - diff --git a/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/content/TextContent.kt b/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/content/TextContent.kt deleted file mode 100644 index af2608e6..00000000 --- a/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/content/TextContent.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.insanusmokrassar.postssystem.core.content - -import kotlinx.serialization.Serializable - -interface TextContent : Content { - val text: String -} - -interface TextRegisteredContent : RegisteredContent, TextContent - -@Serializable -data class SimpleTextContent( - override val text: String -) : TextContent - -@Serializable -data class SimpleTextRegisteredContent( - override val id: ContentId, - override val text: String -) : TextRegisteredContent diff --git a/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/utils/IdUtils.kt b/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/utils/IdUtils.kt new file mode 100644 index 00000000..8abc485c --- /dev/null +++ b/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/utils/IdUtils.kt @@ -0,0 +1,2 @@ +package com.insanusmokrassar.postssystem.core.utils + diff --git a/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/utils/pagination/PaginationResult.kt b/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/utils/pagination/PaginationResult.kt index 9808f22d..b7b5e783 100644 --- a/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/utils/pagination/PaginationResult.kt +++ b/core/src/main/kotlin/com/insanusmokrassar/postssystem/core/utils/pagination/PaginationResult.kt @@ -2,7 +2,6 @@ package com.insanusmokrassar.postssystem.core.utils.pagination import kotlinx.serialization.Serializable -@Serializable data class PaginationResult( override val page: Int, val pagesNumber: Int, diff --git a/core/src/test/kotlin/com/insanusmokrassar/postssystem/core/api/InMemoryContentAPI.kt b/core/src/test/kotlin/com/insanusmokrassar/postssystem/core/api/InMemoryContentAPI.kt index 00c101dc..ed0fd2e2 100644 --- a/core/src/test/kotlin/com/insanusmokrassar/postssystem/core/api/InMemoryContentAPI.kt +++ b/core/src/test/kotlin/com/insanusmokrassar/postssystem/core/api/InMemoryContentAPI.kt @@ -31,7 +31,10 @@ class InMemoryContentAPI( .toMutableMap() override suspend fun createContent(content: Content): RegisteredContent? { - return content.createRegisteredEntity(generateId())?.also { registeredContent -> + return RegisteredContent( + generateId(), + content + ).also { registeredContent -> contents[registeredContent.id] = registeredContent contentCreatedBroadcastChannel.send(registeredContent) } @@ -51,12 +54,4 @@ class InMemoryContentAPI( contentDeletedBroadcastChannel.send(content) } != null } - - private fun Content.createRegisteredEntity(id: ContentId): RegisteredContent? { - return when(this) { - is TextContent -> SimpleTextRegisteredContent(id, text) - is SpecialContent -> SimpleTextRegisteredContent(id, internalId) - else -> null - } - } } \ No newline at end of file