started to fill client part
This commit is contained in:
parent
71c7880582
commit
631cfe9c28
41
ClientPart/build.gradle
Normal file
41
ClientPart/build.gradle
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
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 project(":Core")
|
||||||
|
api project(":ClientServerCommon")
|
||||||
|
|
||||||
|
api "io.ktor:ktor-client:$ktor_version"
|
||||||
|
}
|
||||||
|
|
||||||
|
compileKotlin {
|
||||||
|
kotlinOptions {
|
||||||
|
freeCompilerArgs = [ disableImplicitReflectionSerializerAnnotation ]
|
||||||
|
}
|
||||||
|
}
|
1
ClientPart/gradle.properties
Normal file
1
ClientPart/gradle.properties
Normal file
@ -0,0 +1 @@
|
|||||||
|
ktor_version=1.2.4
|
1
ClientPart/settings.gradle
Normal file
1
ClientPart/settings.gradle
Normal file
@ -0,0 +1 @@
|
|||||||
|
rootProject.name = 'postssystem.core.client'
|
@ -0,0 +1,38 @@
|
|||||||
|
package com.insanusmokrassar.postssystem.core.client
|
||||||
|
|
||||||
|
import com.insanusmokrassar.postssystem.core.api.ReadPostsAPI
|
||||||
|
import com.insanusmokrassar.postssystem.core.clientserver.common.*
|
||||||
|
import com.insanusmokrassar.postssystem.core.content.ContentId
|
||||||
|
import com.insanusmokrassar.postssystem.core.post.Post
|
||||||
|
import com.insanusmokrassar.postssystem.core.post.PostId
|
||||||
|
import com.insanusmokrassar.postssystem.core.utils.pagination.Pagination
|
||||||
|
import com.insanusmokrassar.postssystem.core.utils.pagination.PaginationResult
|
||||||
|
import io.ktor.client.HttpClient
|
||||||
|
import io.ktor.client.request.post
|
||||||
|
import org.joda.time.DateTime
|
||||||
|
|
||||||
|
class ReadableHttpPostsAPI(
|
||||||
|
private val client: HttpClient = HttpClient(),
|
||||||
|
private val baseAddress: String
|
||||||
|
) : ReadPostsAPI {
|
||||||
|
private val postByIdAddress = "$baseAddress/$getPostByIdAddress"
|
||||||
|
private val postsByContentIdAddress = "$baseAddress/$getPostsByContentIdAddress"
|
||||||
|
private val postsByDatesAddress = "$baseAddress/$getPostsByDatesAddress"
|
||||||
|
private val postsByPaginationAddress = "$baseAddress/$getPostsByPaginationAddress"
|
||||||
|
|
||||||
|
override suspend fun getPostById(id: PostId): Post? {
|
||||||
|
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
override suspend fun getPostsByContent(id: ContentId): List<Post> {
|
||||||
|
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
override suspend fun getPostsByDates(from: DateTime?, to: DateTime?): List<Post> {
|
||||||
|
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
override suspend fun getPostsByPagination(pagination: Pagination): PaginationResult<Post> {
|
||||||
|
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.insanusmokrassar.postssystem.core.client
|
||||||
|
|
||||||
|
import com.insanusmokrassar.postssystem.core.api.WritePostsAPI
|
||||||
|
import com.insanusmokrassar.postssystem.core.post.*
|
||||||
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
|
||||||
|
class WritableHttpPostsAPI : WritePostsAPI {
|
||||||
|
override val postCreatedFlow: Flow<Post>
|
||||||
|
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||||
|
override val postDeletedFlow: Flow<Post>
|
||||||
|
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||||
|
override val postUpdatedFlow: Flow<Post>
|
||||||
|
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||||
|
|
||||||
|
override suspend fun createPost(content: PostContents): Post? {
|
||||||
|
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
override suspend fun deletePost(id: PostId): Boolean {
|
||||||
|
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
override suspend fun updatePostContent(postId: PostId, content: PostContents): Boolean {
|
||||||
|
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||||
|
}
|
||||||
|
}
|
38
ClientServerCommon/build.gradle
Normal file
38
ClientServerCommon/build.gradle
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
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 project(":Core")
|
||||||
|
}
|
||||||
|
|
||||||
|
compileKotlin {
|
||||||
|
kotlinOptions {
|
||||||
|
freeCompilerArgs = [ disableImplicitReflectionSerializerAnnotation ]
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
package com.insanusmokrassar.postssystem.core.clientserver.common
|
||||||
|
|
||||||
|
const val getPostByIdAddress = "core/posts/get/id"
|
||||||
|
const val getPostsByContentIdAddress = "core/posts/get/content_id"
|
||||||
|
const val getPostsByDatesAddress = "core/posts/get/dates"
|
||||||
|
const val getPostsByPaginationAddress = "core/posts/get/pagination"
|
@ -0,0 +1,11 @@
|
|||||||
|
package com.insanusmokrassar.postssystem.core.clientserver.common
|
||||||
|
|
||||||
|
import com.insanusmokrassar.postssystem.core.post.PostId
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
sealed class ReadModel
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
class ReadPostsById(
|
||||||
|
val postId: PostId
|
||||||
|
)
|
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>
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
package com.github.insanusmokrassar.postssystem.core.api
|
package com.insanusmokrassar.postssystem.core.api
|
||||||
|
|
||||||
import com.github.insanusmokrassar.postssystem.core.post.*
|
import com.insanusmokrassar.postssystem.core.post.*
|
||||||
|
import com.insanusmokrassar.postssystem.core.post.*
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
|
||||||
interface WritePostsAPI {
|
interface WritePostsAPI {
|
@ -1,4 +1,4 @@
|
|||||||
package com.github.insanusmokrassar.postssystem.core.content
|
package com.insanusmokrassar.postssystem.core.content
|
||||||
|
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
|
|
@ -0,0 +1,5 @@
|
|||||||
|
package com.insanusmokrassar.postssystem.core.content
|
||||||
|
|
||||||
|
interface TextContent : Content {
|
||||||
|
val text: String
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
package com.github.insanusmokrassar.postssystem.core.post
|
package com.insanusmokrassar.postssystem.core.post
|
||||||
|
|
||||||
import com.github.insanusmokrassar.postssystem.core.content.Content
|
import com.insanusmokrassar.postssystem.core.content.Content
|
||||||
|
|
||||||
typealias PostId = String
|
typealias PostId = String
|
||||||
typealias PostContents = List<Content>
|
typealias PostContents = List<Content>
|
@ -1,4 +1,4 @@
|
|||||||
package com.github.insanusmokrassar.postssystem.core.post
|
package com.insanusmokrassar.postssystem.core.post
|
||||||
|
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
|
|
@ -0,0 +1,6 @@
|
|||||||
|
package com.insanusmokrassar.postssystem.core.utils.pagination
|
||||||
|
|
||||||
|
interface Pagination {
|
||||||
|
val page: Int
|
||||||
|
val size: Int
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package com.github.insanusmokrassar.postssystem.core.utils.pagination
|
package com.insanusmokrassar.postssystem.core.utils.pagination
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package com.github.insanusmokrassar.postssystem.core.utils.pagination
|
package com.insanusmokrassar.postssystem.core.utils.pagination
|
||||||
|
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import kotlinx.serialization.Transient
|
import kotlinx.serialization.Transient
|
28
build.gradle
28
build.gradle
@ -1,5 +1,4 @@
|
|||||||
project.version = "0.1.0"
|
project.group = "com.insanusmokrassar"
|
||||||
project.group = "com.github.insanusmokrassar"
|
|
||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
@ -7,19 +6,7 @@ buildscript {
|
|||||||
jcenter()
|
jcenter()
|
||||||
mavenCentral()
|
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'
|
|
||||||
|
|
||||||
apply from: "publish.gradle"
|
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenLocal()
|
mavenLocal()
|
||||||
@ -27,16 +14,3 @@ repositories {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
maven { url "https://kotlin.bintray.com/kotlinx" }
|
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 ]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
5
gradle/wrapper/gradle-wrapper.properties
vendored
5
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,5 +1,6 @@
|
|||||||
|
#Wed Oct 16 13:07:45 OMST 2019
|
||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-bin.zip
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
@ -15,4 +15,6 @@ include 'api'
|
|||||||
include 'services:webservice'
|
include 'services:webservice'
|
||||||
*/
|
*/
|
||||||
|
|
||||||
rootProject.name = 'PostsSystemCore'
|
include ':ClientPart'
|
||||||
|
include ':Core'
|
||||||
|
include ':ClientServerCommon'
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.postssystem.core.api
|
|
||||||
|
|
||||||
interface PostsAPI : ReadPostsAPI, WritePostsAPI
|
|
@ -1,15 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.postssystem.core.api
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.postssystem.core.post.Post
|
|
||||||
import com.github.insanusmokrassar.postssystem.core.post.PostId
|
|
||||||
import com.github.insanusmokrassar.postssystem.core.content.ContentId
|
|
||||||
import com.github.insanusmokrassar.postssystem.core.utils.pagination.*
|
|
||||||
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>
|
|
||||||
}
|
|
@ -1,5 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.postssystem.core.content
|
|
||||||
|
|
||||||
interface TextContent : Content {
|
|
||||||
val text: String
|
|
||||||
}
|
|
@ -1,6 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.postssystem.core.utils.pagination
|
|
||||||
|
|
||||||
interface Pagination {
|
|
||||||
val page: Int
|
|
||||||
val size: Int
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user