started to fill client part
This commit is contained in:
ClientPart
ClientServerCommon
Core
build.gradlegradle/wrapper
settings.gradlesrc/main/kotlin/com/github/insanusmokrassar/postssystem/core
40
Core/build.gradle
Normal file
40
Core/build.gradle
Normal file
@ -0,0 +1,40 @@
|
||||
project.version = "0.1.0"
|
||||
project.group = "com.insanusmokrassar"
|
||||
|
||||
buildscript {
|
||||
repositories {
|
||||
mavenLocal()
|
||||
jcenter()
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
|
||||
classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:$gradle_bintray_plugin_version"
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: 'java-library'
|
||||
apply plugin: 'kotlin'
|
||||
apply plugin: 'kotlinx-serialization'
|
||||
|
||||
repositories {
|
||||
mavenLocal()
|
||||
jcenter()
|
||||
mavenCentral()
|
||||
maven { url "https://kotlin.bintray.com/kotlinx" }
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||
api "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutines_version"
|
||||
api "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$kotlin_serialisation_runtime_version"
|
||||
api "joda-time:joda-time:$joda_time_version"
|
||||
}
|
||||
|
||||
compileKotlin {
|
||||
kotlinOptions {
|
||||
freeCompilerArgs = [ disableImplicitReflectionSerializerAnnotation ]
|
||||
}
|
||||
}
|
1
Core/settings.gradle
Normal file
1
Core/settings.gradle
Normal file
@ -0,0 +1 @@
|
||||
rootProject.name = 'postssystem.core'
|
@ -0,0 +1,4 @@
|
||||
package com.insanusmokrassar.postssystem.core.api
|
||||
|
||||
interface PostsAPI : ReadPostsAPI,
|
||||
WritePostsAPI
|
@ -0,0 +1,17 @@
|
||||
package com.insanusmokrassar.postssystem.core.api
|
||||
|
||||
import com.insanusmokrassar.postssystem.core.post.Post
|
||||
import com.insanusmokrassar.postssystem.core.post.PostId
|
||||
import com.insanusmokrassar.postssystem.core.content.ContentId
|
||||
import com.insanusmokrassar.postssystem.core.utils.pagination.*
|
||||
import com.insanusmokrassar.postssystem.core.utils.pagination.Pagination
|
||||
import com.insanusmokrassar.postssystem.core.utils.pagination.PaginationResult
|
||||
import org.joda.time.DateTime
|
||||
|
||||
interface ReadPostsAPI {
|
||||
suspend fun getPostById(id: PostId): Post?
|
||||
suspend fun getPostsByContent(id: ContentId): List<Post>
|
||||
suspend fun getPostsByDates(from: DateTime? = null, to: DateTime? = null): List<Post>
|
||||
|
||||
suspend fun getPostsByPagination(pagination: Pagination): PaginationResult<Post>
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package com.insanusmokrassar.postssystem.core.api
|
||||
|
||||
import com.insanusmokrassar.postssystem.core.post.*
|
||||
import com.insanusmokrassar.postssystem.core.post.*
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
interface WritePostsAPI {
|
||||
val postCreatedFlow: Flow<Post>
|
||||
val postDeletedFlow: Flow<Post>
|
||||
val postUpdatedFlow: Flow<Post>
|
||||
|
||||
suspend fun createPost(content: PostContents): Post?
|
||||
suspend fun deletePost(id: PostId): Boolean
|
||||
|
||||
suspend fun updatePostContent(postId: PostId, content: PostContents): Boolean
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
package com.insanusmokrassar.postssystem.core.content
|
||||
|
||||
import org.joda.time.DateTime
|
||||
|
||||
typealias ContentId = String
|
||||
|
||||
interface Content {
|
||||
val id: ContentId
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
package com.insanusmokrassar.postssystem.core.content
|
||||
|
||||
interface TextContent : Content {
|
||||
val text: String
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package com.insanusmokrassar.postssystem.core.post
|
||||
|
||||
import com.insanusmokrassar.postssystem.core.content.Content
|
||||
|
||||
typealias PostId = String
|
||||
typealias PostContents = List<Content>
|
||||
|
||||
interface Post {
|
||||
val id: PostId
|
||||
val content: PostContents
|
||||
|
||||
val meta: PostMetaInfo
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
package com.insanusmokrassar.postssystem.core.post
|
||||
|
||||
import org.joda.time.DateTime
|
||||
|
||||
interface PostMetaInfo {
|
||||
val postId: PostId
|
||||
val creationDate: DateTime
|
||||
val modificationDate: DateTime
|
||||
}
|
6
Core/src/main/kotlin/com/insanusmokrassar/postssystem/core/utils/pagination/Pagination.kt
Normal file
6
Core/src/main/kotlin/com/insanusmokrassar/postssystem/core/utils/pagination/Pagination.kt
Normal file
@ -0,0 +1,6 @@
|
||||
package com.insanusmokrassar.postssystem.core.utils.pagination
|
||||
|
||||
interface Pagination {
|
||||
val page: Int
|
||||
val size: Int
|
||||
}
|
9
Core/src/main/kotlin/com/insanusmokrassar/postssystem/core/utils/pagination/PaginationRequest.kt
Normal file
9
Core/src/main/kotlin/com/insanusmokrassar/postssystem/core/utils/pagination/PaginationRequest.kt
Normal file
@ -0,0 +1,9 @@
|
||||
package com.insanusmokrassar.postssystem.core.utils.pagination
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class PaginationRequest(
|
||||
override val page: Int,
|
||||
override val size: Int
|
||||
) : Pagination
|
14
Core/src/main/kotlin/com/insanusmokrassar/postssystem/core/utils/pagination/PaginationResult.kt
Normal file
14
Core/src/main/kotlin/com/insanusmokrassar/postssystem/core/utils/pagination/PaginationResult.kt
Normal file
@ -0,0 +1,14 @@
|
||||
package com.insanusmokrassar.postssystem.core.utils.pagination
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.Transient
|
||||
|
||||
@Serializable
|
||||
data class PaginationResult<T>(
|
||||
override val page: Int,
|
||||
val pagesNumber: Int,
|
||||
val results: List<T>
|
||||
) : Pagination {
|
||||
@Transient
|
||||
override val size: Int = results.size
|
||||
}
|
Reference in New Issue
Block a user