diff --git a/src/main/kotlin/com/github/insanusmokrassar/postssystem/core/api/PostsAPI.kt b/src/main/kotlin/com/github/insanusmokrassar/postssystem/core/api/PostsAPI.kt index d46b15dd..df7633f5 100644 --- a/src/main/kotlin/com/github/insanusmokrassar/postssystem/core/api/PostsAPI.kt +++ b/src/main/kotlin/com/github/insanusmokrassar/postssystem/core/api/PostsAPI.kt @@ -3,10 +3,13 @@ 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 PostsAPI { suspend fun getPostById(id: PostId): Post? suspend fun getPostsByContent(id: ContentId): List suspend fun getPostsByDates(from: DateTime? = null, to: DateTime? = null): List + + suspend fun getPostsByPagination(pagination: Pagination): PaginationResult } \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/postssystem/core/utils/pagination/Pagination.kt b/src/main/kotlin/com/github/insanusmokrassar/postssystem/core/utils/pagination/Pagination.kt new file mode 100644 index 00000000..b5cea5d5 --- /dev/null +++ b/src/main/kotlin/com/github/insanusmokrassar/postssystem/core/utils/pagination/Pagination.kt @@ -0,0 +1,6 @@ +package com.github.insanusmokrassar.postssystem.core.utils.pagination + +interface Pagination { + val page: Int + val size: Int +} \ No newline at end of file diff --git a/src/main/kotlin/com/github/insanusmokrassar/postssystem/core/utils/pagination/PaginationRequest.kt b/src/main/kotlin/com/github/insanusmokrassar/postssystem/core/utils/pagination/PaginationRequest.kt new file mode 100644 index 00000000..18533721 --- /dev/null +++ b/src/main/kotlin/com/github/insanusmokrassar/postssystem/core/utils/pagination/PaginationRequest.kt @@ -0,0 +1,9 @@ +package com.github.insanusmokrassar.postssystem.core.utils.pagination + +import kotlinx.serialization.Serializable + +@Serializable +data class PaginationRequest( + override val page: Int, + override val size: Int +) : Pagination diff --git a/src/main/kotlin/com/github/insanusmokrassar/postssystem/core/utils/pagination/PaginationResult.kt b/src/main/kotlin/com/github/insanusmokrassar/postssystem/core/utils/pagination/PaginationResult.kt new file mode 100644 index 00000000..af8ed0a6 --- /dev/null +++ b/src/main/kotlin/com/github/insanusmokrassar/postssystem/core/utils/pagination/PaginationResult.kt @@ -0,0 +1,14 @@ +package com.github.insanusmokrassar.postssystem.core.utils.pagination + +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@Serializable +data class PaginationResult( + override val page: Int, + val pagesNumber: Int, + val results: List +) : Pagination { + @Transient + override val size: Int = results.size +}