From 42eda90a6ba0db65980e80ccbee404d1adcd5232 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Fri, 10 Apr 2020 12:35:33 +0600 Subject: [PATCH] updates in versions --- gradle.properties | 10 ++--- postssystem.core/gradle.properties | 3 -- postssystem.exposed/gradle.properties | 4 +- .../postssystem/core/exposed/ChannelsSizes.kt | 3 ++ .../core/exposed/ExposedContentAPI.kt | 19 ++++----- .../core/exposed/ExposedPostsAPI.kt | 40 +++++++++---------- .../postssystem/core/exposed/ExposedUtils.kt | 6 --- 7 files changed, 35 insertions(+), 50 deletions(-) delete mode 100644 postssystem.core/gradle.properties create mode 100644 postssystem.exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ChannelsSizes.kt delete mode 100644 postssystem.exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedUtils.kt diff --git a/gradle.properties b/gradle.properties index a0a41861..0176daf6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,9 +1,9 @@ kotlin.code.style=official -kotlin_version=1.3.61 -kotlin_coroutines_version=1.3.3 -kotlin_serialisation_runtime_version=0.14.0 +kotlin_version=1.3.71 +kotlin_coroutines_version=1.3.5 +kotlin_serialisation_runtime_version=0.20.0 -klockVersion=1.8.7 -uuidVersion=0.0.7 +klockVersion=1.10.3 +uuidVersion=0.1.0 gradle_bintray_plugin_version=1.8.4 diff --git a/postssystem.core/gradle.properties b/postssystem.core/gradle.properties deleted file mode 100644 index eea16254..00000000 --- a/postssystem.core/gradle.properties +++ /dev/null @@ -1,3 +0,0 @@ -project_public_name=PostsSystemCore - -kotlin.incremental.multiplatform=true diff --git a/postssystem.exposed/gradle.properties b/postssystem.exposed/gradle.properties index dbe4088e..896e963d 100644 --- a/postssystem.exposed/gradle.properties +++ b/postssystem.exposed/gradle.properties @@ -1,7 +1,5 @@ exposed_version=0.20.3 -test_sqlite_version=3.28.0 +test_sqlite_version=3.30.1 test_junit_version=5.5.2 core_version=0.2.0 - -kotlin.incremental.multiplatform=true diff --git a/postssystem.exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ChannelsSizes.kt b/postssystem.exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ChannelsSizes.kt new file mode 100644 index 00000000..a95847b6 --- /dev/null +++ b/postssystem.exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ChannelsSizes.kt @@ -0,0 +1,3 @@ +package com.insanusmokrassar.postssystem.core.exposed + +internal const val ChannelDefaultSize = 64 diff --git a/postssystem.exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedContentAPI.kt b/postssystem.exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedContentAPI.kt index 938db144..5407213c 100644 --- a/postssystem.exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedContentAPI.kt +++ b/postssystem.exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedContentAPI.kt @@ -5,7 +5,6 @@ import com.insanusmokrassar.postssystem.core.content.api.ContentAPI import com.insanusmokrassar.postssystem.core.utils.generateContentId import com.insanusmokrassar.postssystem.core.utils.pagination.* import kotlinx.coroutines.channels.BroadcastChannel -import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.asFlow import kotlinx.serialization.json.Json @@ -18,21 +17,19 @@ private class ContentAPIDatabaseTable( internal val idColumn = text("_id") internal val dataColumn = text("data") - private inline fun transaction(noinline body: Transaction.() -> T): T = database.transaction(body) - init { - transaction { + transaction(database) { SchemaUtils.createMissingTablesAndColumns(this@ContentAPIDatabaseTable) } } - private val contentCreatedBroadcastChannel = BroadcastChannel(Channel.BUFFERED) - private val contentDeletedBroadcastChannel = BroadcastChannel(Channel.BUFFERED) + private val contentCreatedBroadcastChannel = BroadcastChannel(ChannelDefaultSize) + private val contentDeletedBroadcastChannel = BroadcastChannel(ChannelDefaultSize) override val contentCreatedFlow: Flow = contentCreatedBroadcastChannel.asFlow() override val contentDeletedFlow: Flow = contentDeletedBroadcastChannel.asFlow() override suspend fun createContent(content: Content): RegisteredContent? { - return transaction { + return transaction(database) { insert { it[idColumn] = generateContentId() it[dataColumn] = Json.plain.stringify(Content.serializer(), content) @@ -48,7 +45,7 @@ private class ContentAPIDatabaseTable( } override suspend fun deleteContent(id: ContentId): Boolean { val content = getContentById(id) ?: return false - return transaction { + return transaction(database) { deleteWhere { idColumn.eq(id) } > 0 @@ -65,17 +62,17 @@ private class ContentAPIDatabaseTable( ) override suspend fun getContentsIds(): Set { - return transaction { + return transaction(database) { selectAll().map { it[idColumn] } }.toSet() } override suspend fun getContentById(id: ContentId): RegisteredContent? { - return transaction { + return transaction(database) { select { idColumn.eq(id) }.firstOrNull() ?.asRegisteredContent() } } override suspend fun getContentByPagination(pagination: Pagination): PaginationResult { - return transaction { + return transaction(database) { selectAll().count() to selectAll().limit(n = pagination.size, offset = pagination.firstIndex).map { it.asRegisteredContent() } }.let { (count, results) -> pagination.createResult(count, results) diff --git a/postssystem.exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedPostsAPI.kt b/postssystem.exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedPostsAPI.kt index 56083446..1d769cd8 100644 --- a/postssystem.exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedPostsAPI.kt +++ b/postssystem.exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedPostsAPI.kt @@ -7,10 +7,10 @@ import com.insanusmokrassar.postssystem.core.utils.generatePostId import com.insanusmokrassar.postssystem.core.utils.pagination.* import com.soywiz.klock.* import kotlinx.coroutines.channels.BroadcastChannel -import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.asFlow import org.jetbrains.exposed.sql.* +import org.jetbrains.exposed.sql.transactions.transaction private class PostsAPIContentRelations( private val database: Database @@ -18,28 +18,26 @@ private class PostsAPIContentRelations( private val postIdColumn = text("postId") private val contentIdColumn = text("contentId") - private inline fun transaction(noinline body: Transaction.() -> T): T = database.transaction(body) - init { - transaction { + transaction(database) { SchemaUtils.createMissingTablesAndColumns(this@PostsAPIContentRelations) } } fun getPostContents(postId: PostId): List { - return transaction { + return transaction(database) { select { postIdColumn.eq(postId) }.map { it[contentIdColumn] } } } fun getContentPosts(contentId: ContentId): List { - return transaction { + return transaction(database) { select { contentIdColumn.eq(contentId) }.map { it[postIdColumn] } } } fun linkPostAndContents(postId: PostId, vararg contentIds: ContentId) { - transaction { + transaction(database) { val leftToPut = contentIds.toSet() - getPostContents(postId) leftToPut.forEach { contentId -> insert { @@ -50,7 +48,7 @@ private class PostsAPIContentRelations( } } fun unlinkPostAndContents(postId: PostId, vararg contentIds: ContentId): Boolean { - return transaction { + return transaction(database) { deleteWhere { postIdColumn.eq(postId).and(contentIdColumn.inList(contentIds.toList())) } > 0 @@ -71,19 +69,17 @@ private class PostsAPIDatabaseTable( ) - private val postCreatedBroadcastChannel = BroadcastChannel(Channel.BUFFERED) + private val postCreatedBroadcastChannel = BroadcastChannel(ChannelDefaultSize) override val postCreatedFlow: Flow = postCreatedBroadcastChannel.asFlow() - private val postDeletedBroadcastChannel = BroadcastChannel(Channel.BUFFERED) + private val postDeletedBroadcastChannel = BroadcastChannel(ChannelDefaultSize) override val postDeletedFlow: Flow = postDeletedBroadcastChannel.asFlow() - private val postUpdatedBroadcastChannel = BroadcastChannel(Channel.BUFFERED) + private val postUpdatedBroadcastChannel = BroadcastChannel(ChannelDefaultSize) override val postUpdatedFlow: Flow = postUpdatedBroadcastChannel.asFlow() - private inline fun transaction(noinline body: Transaction.() -> T): T = database.transaction(body) - init { - transaction { + transaction(database) { SchemaUtils.createMissingTablesAndColumns(this@PostsAPIDatabaseTable) } } @@ -98,7 +94,7 @@ private class PostsAPIDatabaseTable( override suspend fun createPost(post: Post): RegisteredPost? { val id = generatePostId() - return transaction { + return transaction(database) { insert { it[idColumn] = id } @@ -111,7 +107,7 @@ private class PostsAPIDatabaseTable( override suspend fun deletePost(id: PostId): Boolean { val post = getPostById(id) ?: return false - return (transaction { + return (transaction(database) { deleteWhere { idColumn.eq(id) } } > 0).also { if (it) { @@ -122,7 +118,7 @@ private class PostsAPIDatabaseTable( } override suspend fun updatePostContent(postId: PostId, post: Post): Boolean { - return transaction { + return transaction(database) { val alreadyLinked = contentsTable.getPostContents(postId) val toRemove = alreadyLinked - post.content val toInsert = post.content - alreadyLinked @@ -138,32 +134,32 @@ private class PostsAPIDatabaseTable( } } override suspend fun getPostsIds(): Set { - return transaction { + return transaction(database) { selectAll().map { it[idColumn] }.toSet() } } override suspend fun getPostById(id: PostId): RegisteredPost? { - return transaction { + return transaction(database) { select { idColumn.eq(id) }.firstOrNull() ?.toRegisteredPost() } } override suspend fun getPostsByContent(id: ContentId): List { - return transaction { + return transaction(database) { val postsIds = contentsTable.getContentPosts(id) select { idColumn.inList(postsIds) }.map { it.toRegisteredPost() } } } override suspend fun getPostsByCreatingDates(from: DateTime, to: DateTime): List { - return transaction { + return transaction(database) { select { creationDateColumn.between(from, to) }.map { it.toRegisteredPost() } } } override suspend fun getPostsByPagination(pagination: Pagination): PaginationResult { - return transaction { + return transaction(database) { val posts = selectAll().limit(pagination.size, pagination.firstIndex).orderBy(creationDateColumn).map { it.toRegisteredPost() } diff --git a/postssystem.exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedUtils.kt b/postssystem.exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedUtils.kt deleted file mode 100644 index 6e0de410..00000000 --- a/postssystem.exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedUtils.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.insanusmokrassar.postssystem.core.exposed - -import org.jetbrains.exposed.sql.Database -import org.jetbrains.exposed.sql.Transaction - -inline fun Database.transaction(noinline body: Transaction.() -> T): T = org.jetbrains.exposed.sql.transactions.transaction(this, body)