diff --git a/exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedContentAPI.kt b/exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedContentAPI.kt index 938db144..3c60adc7 100644 --- a/exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedContentAPI.kt +++ b/exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedContentAPI.kt @@ -4,10 +4,12 @@ import com.insanusmokrassar.postssystem.core.content.* 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.Dispatchers import kotlinx.coroutines.channels.BroadcastChannel import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.withContext import kotlinx.serialization.json.Json import org.jetbrains.exposed.sql.* import org.jetbrains.exposed.sql.transactions.transaction @@ -18,10 +20,12 @@ 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) + private suspend inline fun transaction(noinline body: Transaction.() -> T): T = withContext(Dispatchers.IO) { + database.transaction(body) + } init { - transaction { + database.transaction { SchemaUtils.createMissingTablesAndColumns(this@ContentAPIDatabaseTable) } } diff --git a/exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedPostsAPI.kt b/exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedPostsAPI.kt index ac50e1c7..29875c7c 100644 --- a/exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedPostsAPI.kt +++ b/exposed/src/main/kotlin/com/insanusmokrassar/postssystem/core/exposed/ExposedPostsAPI.kt @@ -6,10 +6,12 @@ import com.insanusmokrassar.postssystem.core.post.api.PostsAPI import com.insanusmokrassar.postssystem.core.utils.generatePostId import com.insanusmokrassar.postssystem.core.utils.pagination.* import com.soywiz.klock.DateTime +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.channels.BroadcastChannel import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.asFlow +import kotlinx.coroutines.withContext import org.jetbrains.exposed.sql.* private class PostsAPIContentRelations( @@ -77,10 +79,12 @@ private class PostsAPIDatabaseTable( private val postUpdatedBroadcastChannel = BroadcastChannel(Channel.BUFFERED) override val postUpdatedFlow: Flow = postUpdatedBroadcastChannel.asFlow() - private inline fun transaction(noinline body: Transaction.() -> T): T = database.transaction(body) + private suspend inline fun transaction(noinline body: Transaction.() -> T): T = withContext(Dispatchers.IO) { + database.transaction(body) + } init { - transaction { + database.transaction { SchemaUtils.createMissingTablesAndColumns(this@PostsAPIDatabaseTable) } }