diff --git a/build.gradle b/build.gradle index c58bcd30..4f7abf8d 100644 --- a/build.gradle +++ b/build.gradle @@ -13,6 +13,15 @@ repositories { maven { url "https://kotlin.bintray.com/kotlinx" } } -subprojects.each { - println(it) +allprojects { + ext { + projectByName = { name -> + for (subproject in rootProject.subprojects) { + if (subproject.name == name) { + return subproject + } + } + return null + } + } } diff --git a/core/api/build.gradle b/core/api/build.gradle index b58b90b1..4371f0c4 100644 --- a/core/api/build.gradle +++ b/core/api/build.gradle @@ -41,7 +41,7 @@ kotlin { if ((project.hasProperty('RELEASE_MODE') && project.property('RELEASE_MODE') == "true") || System.getenv('RELEASE_MODE') == "true") { api "com.insanusmokrassar:postssystem.utils.repos:$core_version" } else { - api project(":utils:repos:postssystem.utils.repos.common") + api projectByName("postssystem.utils.repos.common") } } } diff --git a/core/exposed/build.gradle b/core/exposed/build.gradle index 2343c1ef..97c5f2aa 100644 --- a/core/exposed/build.gradle +++ b/core/exposed/build.gradle @@ -37,8 +37,8 @@ dependencies { api "com.insanusmokrassar:postssystem.core.api:$core_version" api "com.insanusmokrassar:postssystem.exposed.commons:$core_version" } else { - api project(":core:postssystem.core.api") - api project(":exposed:postssystem.exposed.commons") + api projectByName("postssystem.core.api") + api projectByName("postssystem.exposed.commons") } testImplementation "org.xerial:sqlite-jdbc:$test_sqlite_version" diff --git a/core/ktor/client/build.gradle b/core/ktor/client/build.gradle index e766987d..6f6a4456 100644 --- a/core/ktor/client/build.gradle +++ b/core/ktor/client/build.gradle @@ -42,8 +42,8 @@ kotlin { api "com.insanusmokrassar:postssystem.core.ktor.common:$core_version" api "com.insanusmokrassar:postssystem.ktor.client:$core_version" } else { - api project(":core:ktor:postssystem.core.ktor.common") - api project(":ktor:postssystem.ktor.client") + api projectByName("postssystem.core.ktor.common") + api projectByName("postssystem.ktor.client") } } } diff --git a/core/ktor/client/src/commonMain/kotlin/com/insanusmokrassar/postssystem/core/ktor/client/content/ReadContentRepoKtorClient.kt b/core/ktor/client/src/commonMain/kotlin/com/insanusmokrassar/postssystem/core/ktor/client/content/ReadContentRepoKtorClient.kt index 06c14148..c117dd56 100644 --- a/core/ktor/client/src/commonMain/kotlin/com/insanusmokrassar/postssystem/core/ktor/client/content/ReadContentRepoKtorClient.kt +++ b/core/ktor/client/src/commonMain/kotlin/com/insanusmokrassar/postssystem/core/ktor/client/content/ReadContentRepoKtorClient.kt @@ -1,32 +1,35 @@ package com.insanusmokrassar.postssystem.core.ktor.client.content -//import com.insanusmokrassar.postssystem.core.content.ContentId -//import com.insanusmokrassar.postssystem.core.content.RegisteredContent -//import com.insanusmokrassar.postssystem.core.content.api.ReadContentRepo -//import com.insanusmokrassar.postssystem.core.ktor.getContentByIdRoute -//import com.insanusmokrassar.postssystem.core.ktor.getContentsIdsRoute -//import com.insanusmokrassar.postssystem.utils.repos.pagination.Pagination -//import com.insanusmokrassar.postssystem.utils.repos.pagination.PaginationResult -//import io.ktor.client.HttpClient -//import io.ktor.client.request.get -//import io.ktor.client.statement.HttpResponse -//import kotlinx.io.InputStream -// -//class ReadContentRepoKtorClient( -// private val client: HttpClient, -// private val baseUrl: String -//) : ReadContentRepo { -// override suspend fun getContentsIds(): Set = client.get( -// "$baseUrl/$getContentsIdsRoute" -// ).content.let { -// TODO() -// } -// -// override suspend fun getContentById(id: ContentId): RegisteredContent? { -// TODO("Not yet implemented") -// } -// -// override suspend fun getContentByPagination(pagination: Pagination): PaginationResult { -// TODO("Not yet implemented") -// } -//} \ No newline at end of file +import com.insanusmokrassar.postssystem.core.content.ContentId +import com.insanusmokrassar.postssystem.core.content.RegisteredContent +import com.insanusmokrassar.postssystem.core.content.api.ReadContentRepo +import com.insanusmokrassar.postssystem.core.ktor.* +import com.insanusmokrassar.postssystem.ktor.standardKtorSerializer +import com.insanusmokrassar.postssystem.utils.repos.pagination.Pagination +import com.insanusmokrassar.postssystem.utils.repos.pagination.PaginationResult +import io.ktor.client.HttpClient +import io.ktor.client.request.get +import kotlinx.serialization.builtins.nullable + +class ReadContentRepoKtorClient( + private val client: HttpClient, + private val baseUrl: String +) : ReadContentRepo { + override suspend fun getContentsIds(): Set = client.get( + "$baseUrl/$getContentsIdsRoute" + ).let { + standardKtorSerializer.load(contentIdsSerializer, it) + } + + override suspend fun getContentById(id: ContentId): RegisteredContent? = client.get( + "$baseUrl/$getContentByIdRoute" + ).let { + standardKtorSerializer.load(RegisteredContent.serializer().nullable, it) + } + + override suspend fun getContentByPagination(pagination: Pagination): PaginationResult = client.get( + "$baseUrl/$getContentByPaginationRoute" + ).let { + standardKtorSerializer.load(registeredContentPaginationResultSerializer, it) + } +} \ No newline at end of file diff --git a/core/ktor/client/src/commonMain/kotlin/com/insanusmokrassar/postssystem/core/ktor/client/content/WriteContentRepoKtorClient.kt b/core/ktor/client/src/commonMain/kotlin/com/insanusmokrassar/postssystem/core/ktor/client/content/WriteContentRepoKtorClient.kt new file mode 100644 index 00000000..4d667694 --- /dev/null +++ b/core/ktor/client/src/commonMain/kotlin/com/insanusmokrassar/postssystem/core/ktor/client/content/WriteContentRepoKtorClient.kt @@ -0,0 +1,15 @@ +package com.insanusmokrassar.postssystem.core.ktor.client.content + +import com.insanusmokrassar.postssystem.core.content.* +import com.insanusmokrassar.postssystem.core.content.api.WriteContentRepo + +class WriteContentRepoKtorClient : WriteContentRepo { + override suspend fun registerContent(content: Content): RegisteredContent? { + TODO("Not yet implemented") + } + + override suspend fun deleteContent(id: ContentId): Boolean { + TODO("Not yet implemented") + } + +} \ No newline at end of file diff --git a/core/ktor/common/build.gradle b/core/ktor/common/build.gradle index 6fb480de..5a8f7c1b 100644 --- a/core/ktor/common/build.gradle +++ b/core/ktor/common/build.gradle @@ -42,8 +42,8 @@ kotlin { api "com.insanusmokrassar:postssystem.ktor.common:$core_version" api "com.insanusmokrassar:postssystem.core.api:$core_version" } else { - api project(":ktor:postssystem.ktor.common") - api project(":core:postssystem.core.api") + api projectByName("postssystem.ktor.common") + api projectByName("postssystem.core.api") } } } diff --git a/core/ktor/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/core/ktor/Routes.kt b/core/ktor/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/core/ktor/Routes.kt index fe6d11f7..2cec58e0 100644 --- a/core/ktor/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/core/ktor/Routes.kt +++ b/core/ktor/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/core/ktor/Routes.kt @@ -3,3 +3,6 @@ package com.insanusmokrassar.postssystem.core.ktor const val getContentsIdsRoute = "getContentsIds" const val getContentByIdRoute = "getContentById" const val getContentByPaginationRoute = "getContentByPagination" + +const val registerContentRoute = "registerContent" +const val deleteContentRoute = "deleteContent" diff --git a/core/ktor/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/core/ktor/Serializers.kt b/core/ktor/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/core/ktor/Serializers.kt new file mode 100644 index 00000000..576e9595 --- /dev/null +++ b/core/ktor/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/core/ktor/Serializers.kt @@ -0,0 +1,8 @@ +package com.insanusmokrassar.postssystem.core.ktor + +import com.insanusmokrassar.postssystem.core.content.RegisteredContent +import com.insanusmokrassar.postssystem.ktor.setIdsSerializer +import com.insanusmokrassar.postssystem.utils.repos.pagination.PaginationResult + +val contentIdsSerializer = setIdsSerializer +val registeredContentPaginationResultSerializer = PaginationResult.serializer(RegisteredContent.serializer()) diff --git a/exposed/commons/build.gradle b/exposed/commons/build.gradle index 2c240ae8..991f2635 100644 --- a/exposed/commons/build.gradle +++ b/exposed/commons/build.gradle @@ -38,7 +38,7 @@ dependencies { if ((project.hasProperty('RELEASE_MODE') && project.property('RELEASE_MODE') == "true") || System.getenv('RELEASE_MODE') == "true") { api "com.insanusmokrassar:postssystem.utils.repos:$core_version" } else { - api project(":utils:repos:postssystem.utils.repos.common") + api projectByName("postssystem.utils.repos.common") } testImplementation "org.jetbrains.kotlin:kotlin-test" diff --git a/ktor/client/build.gradle b/ktor/client/build.gradle index 3766bb38..55421d07 100644 --- a/ktor/client/build.gradle +++ b/ktor/client/build.gradle @@ -41,7 +41,7 @@ kotlin { if ((project.hasProperty('RELEASE_MODE') && project.property('RELEASE_MODE') == "true") || System.getenv('RELEASE_MODE') == "true") { api "com.insanusmokrassar:postssystem.ktor.common:$core_version" } else { - api project(":ktor:postssystem.ktor.common") + api projectByName("postssystem.ktor.common") } api "io.ktor:ktor-client-core:$ktor_version" diff --git a/ktor/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/ktor/CollectionsSerializers.kt b/ktor/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/ktor/CollectionsSerializers.kt new file mode 100644 index 00000000..0f0a6135 --- /dev/null +++ b/ktor/common/src/commonMain/kotlin/com/insanusmokrassar/postssystem/ktor/CollectionsSerializers.kt @@ -0,0 +1,6 @@ +package com.insanusmokrassar.postssystem.ktor + +import kotlinx.serialization.builtins.SetSerializer +import kotlinx.serialization.builtins.serializer + +val setIdsSerializer = SetSerializer(String.serializer()) diff --git a/markups/build.gradle b/markups/commons/build.gradle similarity index 97% rename from markups/build.gradle rename to markups/commons/build.gradle index 87783e84..106eb991 100644 --- a/markups/build.gradle +++ b/markups/commons/build.gradle @@ -43,7 +43,7 @@ kotlin { if ((project.hasProperty('RELEASE_MODE') && project.property('RELEASE_MODE') == "true") || System.getenv('RELEASE_MODE') == "true") { api "com.insanusmokrassar:postssystem.core.api:$core_version" } else { - api project(":core:postssystem.core.api") + api projectByName("postssystem.core.api") } api "com.soywiz.korlibs.klock:klock:$klockVersion" diff --git a/markups/maven.publish.gradle b/markups/commons/maven.publish.gradle similarity index 100% rename from markups/maven.publish.gradle rename to markups/commons/maven.publish.gradle diff --git a/markups/publish.gradle b/markups/commons/publish.gradle similarity index 100% rename from markups/publish.gradle rename to markups/commons/publish.gradle diff --git a/markups/publish_config.kpsb b/markups/commons/publish_config.kpsb similarity index 100% rename from markups/publish_config.kpsb rename to markups/commons/publish_config.kpsb diff --git a/markups/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/AbstractMarkupPlugin.kt b/markups/commons/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/AbstractMarkupPlugin.kt similarity index 100% rename from markups/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/AbstractMarkupPlugin.kt rename to markups/commons/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/AbstractMarkupPlugin.kt diff --git a/markups/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/MarkupPlugin.kt b/markups/commons/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/MarkupPlugin.kt similarity index 100% rename from markups/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/MarkupPlugin.kt rename to markups/commons/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/MarkupPlugin.kt diff --git a/markups/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/MarkupsSystem.kt b/markups/commons/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/MarkupsSystem.kt similarity index 100% rename from markups/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/MarkupsSystem.kt rename to markups/commons/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/MarkupsSystem.kt diff --git a/markups/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/utils/ListBuilder.kt b/markups/commons/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/utils/ListBuilder.kt similarity index 100% rename from markups/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/utils/ListBuilder.kt rename to markups/commons/src/commonMain/kotlin/com/insanusmokrassar/postssystem/markups/core/utils/ListBuilder.kt diff --git a/markups/html/build.gradle b/markups/html/build.gradle index 2780a39e..74947d60 100644 --- a/markups/html/build.gradle +++ b/markups/html/build.gradle @@ -13,8 +13,8 @@ buildscript { } plugins { - id "org.jetbrains.kotlin.multiplatform" - id "org.jetbrains.kotlin.plugin.serialization" + id "org.jetbrains.kotlin.multiplatform" version "$kotlin_version" + id "org.jetbrains.kotlin.plugin.serialization" version "$kotlin_version" } project.version = "$core_version" @@ -43,7 +43,7 @@ kotlin { if ((project.hasProperty('RELEASE_MODE') && project.property('RELEASE_MODE') == "true") || System.getenv('RELEASE_MODE') == "true") { api "com.insanusmokrassar:postssystem.markups.core:$core_version" } else { - api project(":markups") + api projectByName("postssystem.markups.commons") } } } diff --git a/publishing/api/build.gradle b/publishing/api/build.gradle index 7d3ed840..5590f780 100644 --- a/publishing/api/build.gradle +++ b/publishing/api/build.gradle @@ -41,7 +41,7 @@ kotlin { if ((project.hasProperty('RELEASE_MODE') && project.property('RELEASE_MODE') == "true") || System.getenv('RELEASE_MODE') == "true") { api "com.insanusmokrassar:postssystem.core.api:$core_version" } else { - api project(":core:postssystem.core.api") + api projectByName("postssystem.core.api") } } } diff --git a/publishing/exposed/build.gradle b/publishing/exposed/build.gradle index b198520d..95562167 100644 --- a/publishing/exposed/build.gradle +++ b/publishing/exposed/build.gradle @@ -37,8 +37,8 @@ dependencies { api "com.insanusmokrassar:postssystem.core.publishing:$core_version" api "com.insanusmokrassar:postssystem.exposed.commons:$core_version" } else { - api project(":publishing:postssystem.publishing.api") - api project(":exposed:postssystem.exposed.commons") + api projectByName("postssystem.publishing.api") + api projectByName("postssystem.exposed.commons") } testImplementation "org.xerial:sqlite-jdbc:$test_sqlite_version" diff --git a/settings.gradle b/settings.gradle index 1ae869cc..d3948ba0 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,30 +1,25 @@ rootProject.name='postssystem' String[] includes = [ - ':utils', ':utils:repos', ':utils:repos:common', ':utils:repos:exposed', - ':exposed', ':exposed:commons', - ':ktor', ':ktor:common', ':ktor:client', - ':core', ':core:api', ':core:exposed', ':core:ktor', ':core:ktor:common', ':core:ktor:client', - ':publishing', ':publishing:api', ':publishing:exposed', - ':markups', + ':markups:commons', ':markups:html' ] @@ -32,6 +27,5 @@ String[] includes = [ includes.each { include it ProjectDescriptor project = project(it) - println(project.projectDir.absolutePath.replace(rootDir.absolutePath, "")) project.name = rootProject.name + project.projectDir.absolutePath.replace(rootDir.absolutePath, "").replace("/", ".") } diff --git a/utils/repos/exposed/build.gradle b/utils/repos/exposed/build.gradle index 43cf9ca1..cd6df5b3 100644 --- a/utils/repos/exposed/build.gradle +++ b/utils/repos/exposed/build.gradle @@ -37,8 +37,8 @@ dependencies { api "com.insanusmokrassar:postssystem.utils.repos:$core_version" api "com.insanusmokrassar:postssystem.exposed.commons:$core_version" } else { - api project(":utils:repos:postssystem.utils.repos.common") - api project(":exposed:postssystem.exposed.commons") + api projectByName("postssystem.utils.repos.common") + api projectByName("postssystem.exposed.commons") } testImplementation "org.xerial:sqlite-jdbc:$test_sqlite_version"