continue reborn :(

This commit is contained in:
InsanusMokrassar 2024-08-26 23:58:53 +06:00
parent e98a484c4d
commit 546736690c
26 changed files with 65 additions and 53 deletions

1
.gitignore vendored
View File

@ -1,4 +1,5 @@
.idea .idea
.kotlin
out/* out/*
*.iml *.iml
target target

View File

@ -3,6 +3,7 @@ plugins {
id "org.jetbrains.kotlin.plugin.serialization" id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library" id "com.android.library"
alias(libs.plugins.compose) alias(libs.plugins.compose)
alias(libs.plugins.kt.jb.compose)
} }
apply from: "$mppProjectWithSerializationPresetPath" apply from: "$mppProjectWithSerializationPresetPath"

View File

@ -58,5 +58,6 @@
"semver": "^7.3.2", "semver": "^7.3.2",
"svgo": "^2.8.0", "svgo": "^2.8.0",
"watch-run": "^1.2.5" "watch-run": "^1.2.5"
} },
"packageManager": "yarn@1.22.19+sha1.4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447"
} }

View File

@ -6,6 +6,7 @@ android {
defaultConfig { defaultConfig {
minSdkVersion libs.versions.android.props.minSdk.get().toInteger() minSdkVersion libs.versions.android.props.minSdk.get().toInteger()
compileSdkVersion libs.versions.android.props.compileSdk.get().toInteger()
targetSdkVersion libs.versions.android.props.compileSdk.get().toInteger() targetSdkVersion libs.versions.android.props.compileSdk.get().toInteger()
versionCode "${android_code_version}".toInteger() versionCode "${android_code_version}".toInteger()
versionName "$version" versionName "$version"

View File

@ -3,6 +3,7 @@ plugins {
id "org.jetbrains.kotlin.plugin.serialization" id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library" id "com.android.library"
alias(libs.plugins.compose) alias(libs.plugins.compose)
alias(libs.plugins.kt.jb.compose)
} }
apply from: "$mppProjectWithSerializationPresetPath" apply from: "$mppProjectWithSerializationPresetPath"

View File

@ -3,6 +3,7 @@ plugins {
id "org.jetbrains.kotlin.plugin.serialization" id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library" id "com.android.library"
alias(libs.plugins.compose) alias(libs.plugins.compose)
alias(libs.plugins.kt.jb.compose)
} }
apply from: "$mppProjectWithSerializationPresetPath" apply from: "$mppProjectWithSerializationPresetPath"

View File

@ -1,6 +1,7 @@
package dev.inmo.postssystem.features.common.common package dev.inmo.postssystem.features.common.common
import dev.inmo.micro_utils.common.MPPFile import dev.inmo.micro_utils.common.MPPFile
import dev.inmo.micro_utils.common.filesize
import io.ktor.utils.io.core.* import io.ktor.utils.io.core.*
import kotlinx.serialization.KSerializer import kotlinx.serialization.KSerializer
import kotlinx.serialization.builtins.ByteArraySerializer import kotlinx.serialization.builtins.ByteArraySerializer
@ -27,9 +28,18 @@ class BytesBasedInputProvider(
} }
} }
@Serializable(SimpleInputProviderSerializer::class) internal interface FileInputProvider : SimpleInputProvider {
expect class FileBasedInputProvider : SimpleInputProvider {
val file: MPPFile val file: MPPFile
override val contentBytes: Long?
get() = file.filesize
}
@Serializable(SimpleInputProviderSerializer::class)
expect class FileBasedInputProvider : FileInputProvider {
override val file: MPPFile
override fun invoke(): Input
} }
@Serializable(SimpleInputProviderSerializer::class) @Serializable(SimpleInputProviderSerializer::class)

View File

@ -7,12 +7,9 @@ import kotlinx.serialization.Serializable
@Serializable(SimpleInputProviderSerializer::class) @Serializable(SimpleInputProviderSerializer::class)
actual class FileBasedInputProvider internal constructor( actual class FileBasedInputProvider internal constructor(
actual val file: MPPFile actual override val file: MPPFile
) : SimpleInputProvider { ) : FileInputProvider {
override val contentBytes: Long actual override fun invoke(): Input = error("Files inputs must not be used directly")
get() = file.filesize
override fun invoke(): Input = error("Files inputs must not be used directly")
} }
fun MPPFile.inputProvider() = FileBasedInputProvider(this) fun MPPFile.inputProvider() = FileBasedInputProvider(this)

View File

@ -8,10 +8,8 @@ import kotlinx.serialization.Serializable
@Serializable(SimpleInputProviderSerializer::class) @Serializable(SimpleInputProviderSerializer::class)
actual class FileBasedInputProvider( actual class FileBasedInputProvider(
actual val file: MPPFile actual override val file: MPPFile
) : SimpleInputProvider { ) : FileInputProvider {
override val contentBytes: Long?
get() = file.filesize
override fun invoke(): Input = file.inputStream().asInput() actual override fun invoke(): Input = file.inputStream().asInput()
} }

View File

@ -3,6 +3,7 @@ plugins {
id "org.jetbrains.kotlin.plugin.serialization" id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library" id "com.android.library"
alias(libs.plugins.compose) alias(libs.plugins.compose)
alias(libs.plugins.kt.jb.compose)
} }
apply from: "$mppProjectWithSerializationPresetPath" apply from: "$mppProjectWithSerializationPresetPath"

View File

@ -6,7 +6,6 @@ import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions
import dev.inmo.micro_utils.mime_types.KnownMimeTypes import dev.inmo.micro_utils.mime_types.KnownMimeTypes
import dev.inmo.micro_utils.pagination.* import dev.inmo.micro_utils.pagination.*
import dev.inmo.micro_utils.repos.* import dev.inmo.micro_utils.repos.*
import dev.inmo.postssystem.features.common.common.FileBasedInputProvider
import dev.inmo.postssystem.features.content.common.* import dev.inmo.postssystem.features.content.common.*
import dev.inmo.postssystem.features.content.server.storage.ServerContentStorage import dev.inmo.postssystem.features.content.server.storage.ServerContentStorage
import dev.inmo.postssystem.features.files.common.* import dev.inmo.postssystem.features.files.common.*

View File

@ -3,6 +3,7 @@ plugins {
id "org.jetbrains.kotlin.plugin.serialization" id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library" id "com.android.library"
alias(libs.plugins.compose) alias(libs.plugins.compose)
alias(libs.plugins.kt.jb.compose)
} }
apply from: "$mppProjectWithSerializationPresetPath" apply from: "$mppProjectWithSerializationPresetPath"

View File

@ -3,6 +3,7 @@ plugins {
id "org.jetbrains.kotlin.plugin.serialization" id "org.jetbrains.kotlin.plugin.serialization"
id "com.android.library" id "com.android.library"
alias(libs.plugins.compose) alias(libs.plugins.compose)
alias(libs.plugins.kt.jb.compose)
} }
apply from: "$mppProjectWithSerializationPresetPath" apply from: "$mppProjectWithSerializationPresetPath"

View File

@ -5,5 +5,5 @@ import dev.inmo.postssystem.features.auth.client.AuthorizedQualifiers
import dev.inmo.postssystem.features.files.common.storage.ReadFilesStorage import dev.inmo.postssystem.features.files.common.storage.ReadFilesStorage
val loader = AuthorizedModuleLoader { val loader = AuthorizedModuleLoader {
single<ReadFilesStorage> { ClientReadFilesStorage(get(AuthorizedQualifiers.ServerUrlQualifier), get(), get()) } single<ReadFilesStorage> { ClientReadFilesStorage(get(AuthorizedQualifiers.ServerUrlQualifier), get(), get(), get()) }
} }

View File

@ -1,7 +1,7 @@
package dev.inmo.postssystem.features.roles.client package dev.inmo.postssystem.features.roles.client
import dev.inmo.postssystem.features.roles.common.* import dev.inmo.postssystem.features.roles.common.*
import dev.inmo.micro_utils.ktor.client.UnifiedRequester import io.ktor.client.*
import kotlinx.serialization.KSerializer import kotlinx.serialization.KSerializer
class ClientRolesStorage<T : Role>( class ClientRolesStorage<T : Role>(

View File

@ -27,7 +27,7 @@ class ReadClientRolesStorage<T : Role>(
buildStandardUrl( buildStandardUrl(
userRolesFullUrl, userRolesFullUrl,
usersRolesGetSubjectsPathPart, usersRolesGetSubjectsPathPart,
usersRolesRoleQueryParameterName to unifiedRequester.encodeUrlQueryValue(serializer, role) usersRolesRoleQueryParameterName to role
) )
).body() ).body()

View File

@ -5,5 +5,5 @@ import dev.inmo.postssystem.features.auth.client.AuthorizedQualifiers
import dev.inmo.postssystem.features.users.common.ReadUsersStorage import dev.inmo.postssystem.features.users.common.ReadUsersStorage
val loader = AuthorizedModuleLoader { val loader = AuthorizedModuleLoader {
single<ReadUsersStorage> { UsersStorageKtorClient(get(AuthorizedQualifiers.ServerUrlQualifier), get()) } single<ReadUsersStorage> { UsersStorageKtorClient(get(AuthorizedQualifiers.ServerUrlQualifier), get(), get()) }
} }

View File

@ -1,19 +1,19 @@
package dev.inmo.postssystem.features.users.client package dev.inmo.postssystem.features.users.client
import dev.inmo.postssystem.features.users.common.* import dev.inmo.postssystem.features.users.common.*
import dev.inmo.micro_utils.ktor.client.UnifiedRequester
import dev.inmo.micro_utils.ktor.common.buildStandardUrl import dev.inmo.micro_utils.ktor.common.buildStandardUrl
import dev.inmo.micro_utils.repos.ReadCRUDRepo import dev.inmo.micro_utils.repos.ReadCRUDRepo
import dev.inmo.micro_utils.repos.ktor.client.crud.KtorReadStandardCrudRepo import dev.inmo.micro_utils.repos.ktor.client.crud.KtorReadCRUDRepoClient
import kotlinx.serialization.builtins.nullable import io.ktor.client.*
import io.ktor.http.*
class UsersStorageKtorClient( class UsersStorageKtorClient(
baseUrl: String, baseUrl: String,
client: HttpClient client: HttpClient,
) : ReadUsersStorage, ReadCRUDRepo<User, UserId> by KtorReadStandardCrudRepo( contentType: ContentType
) : ReadUsersStorage, ReadCRUDRepo<User, UserId> by KtorReadCRUDRepoClient(
buildStandardUrl(baseUrl, usersServerPathPart), buildStandardUrl(baseUrl, usersServerPathPart),
client, client,
User.serializer(), contentType,
User.serializer().nullable, { it.long.toString() }
UserId.serializer()
) )

View File

@ -30,7 +30,7 @@ class ExposedUsersStorage(override val database: Database) : UsersStorage, Abstr
initTable() initTable()
} }
override fun insert(value: NewUser, it: InsertStatement<Number>) { override fun insert(value: NewUser, it: UpdateBuilder<Int>) {
it[usernameColumn] = value.username.string it[usernameColumn] = value.username.string
it[firstNameColumn] = value.firstName it[firstNameColumn] = value.firstName
it[lastNameColumn] = value.lastName it[lastNameColumn] = value.lastName

View File

@ -1,21 +1,21 @@
[versions] [versions]
kotlin = "1.9.22" kotlin = "2.0.10"
kotlin-serialization = "1.6.2" kotlin-serialization = "1.7.1"
kotlin-coroutines = "1.7.3" kotlin-coroutines = "1.8.1"
jsuikit = "0.7.4" jsuikit = "0.7.6"
compose = "1.5.12" compose = "1.7.0-alpha02"
microutils = "0.20.34" microutils = "0.22.0"
tgbotapi = "10.0.1" tgbotapi = "17.0.0"
ktor = "2.3.8" ktor = "2.3.11"
korlibs = "5.3.1" korlibs = "5.4.0"
koin = "3.5.3" koin = "3.5.6"
exposed = "0.47.0" exposed = "0.53.0"
psql = "42.3.6" psql = "42.3.6"
scrimage = "4.1.1" scrimage = "4.1.1"
dokka = "1.9.10" dokka = "1.9.20"
logback = "1.2.10" logback = "1.2.10"
uuid = "0.8.2" uuid = "0.8.4"
android-junit = "4.12" android-junit = "4.12"
android-test-junit = "1.1.2" android-test-junit = "1.1.2"
@ -35,8 +35,8 @@ android-espresso = "3.3.0"
android-test = "1.1.2" android-test = "1.1.2"
android-props-minSdk = "21" android-props-minSdk = "21"
android-props-compileSdk = "34" android-props-compileSdk = "35"
android-props-buildTools = "34.0.0" android-props-buildTools = "35.0.0"
[libraries] [libraries]
@ -113,3 +113,4 @@ buildscript-android-dexcount = { module = "com.getkeepsafe.dexcount:dexcount-gra
[plugins] [plugins]
compose = { id = "org.jetbrains.compose", version.ref = "compose" } compose = { id = "org.jetbrains.compose", version.ref = "compose" }
kt-jb-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }

View File

@ -1,4 +1,4 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME

View File

@ -26,7 +26,6 @@ kotlin {
jsTest { jsTest {
dependencies { dependencies {
implementation kotlin('test-js') implementation kotlin('test-js')
implementation kotlin('test-junit')
} }
} }
} }

View File

@ -46,7 +46,6 @@ kotlin {
jsTest { jsTest {
dependencies { dependencies {
implementation kotlin('test-js') implementation kotlin('test-js')
implementation kotlin('test-junit')
} }
} }
androidUnitTest { androidUnitTest {

View File

@ -1,11 +1,13 @@
package dev.inmo.postssystem.publicators.simple.client package dev.inmo.postssystem.publicators.simple.client
import dev.inmo.micro_utils.ktor.client.UnifiedRequester
import dev.inmo.micro_utils.ktor.common.buildStandardUrl import dev.inmo.micro_utils.ktor.common.buildStandardUrl
import dev.inmo.postssystem.features.posts.common.PostId import dev.inmo.postssystem.features.posts.common.PostId
import dev.inmo.postssystem.features.publication.common.publicatorsRootPath import dev.inmo.postssystem.features.publication.common.publicatorsRootPath
import dev.inmo.postssystem.publicators.simple.common.simplePublicatorPublishPathPart import dev.inmo.postssystem.publicators.simple.common.simplePublicatorPublishPathPart
import dev.inmo.postssystem.publicators.simple.common.simplePublicatorRootPath import dev.inmo.postssystem.publicators.simple.common.simplePublicatorRootPath
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.request.*
import kotlinx.serialization.builtins.serializer import kotlinx.serialization.builtins.serializer
class SimplePublicatorServiceClient( class SimplePublicatorServiceClient(
@ -25,9 +27,9 @@ class SimplePublicatorServiceClient(
simplePublicatorPublishPathPart simplePublicatorPublishPathPart
) )
override suspend fun publish(postId: PostId) = unifiedRequester.unipost( override suspend fun publish(postId: PostId) = client.post(
publishFullUrl, publishFullUrl,
PostId.serializer() to postId, ) {
Unit.serializer() setBody(postId)
) }.body<Unit>()
} }

View File

@ -8,7 +8,6 @@ import dev.inmo.micro_utils.ktor.common.encodeHex
import dev.inmo.micro_utils.repos.ktor.common.crud.createRouting import dev.inmo.micro_utils.repos.ktor.common.crud.createRouting
import dev.inmo.micro_utils.repos.ktor.common.crud.updateRouting import dev.inmo.micro_utils.repos.ktor.common.crud.updateRouting
import dev.inmo.micro_utils.repos.ktor.common.one_to_many.removeRoute import dev.inmo.micro_utils.repos.ktor.common.one_to_many.removeRoute
import dev.inmo.postssystem.features.common.common.FileBasedInputProvider
import dev.inmo.postssystem.features.common.common.SimpleInputProvider import dev.inmo.postssystem.features.common.common.SimpleInputProvider
import dev.inmo.postssystem.features.content.common.* import dev.inmo.postssystem.features.content.common.*
import dev.inmo.postssystem.features.files.common.FileId import dev.inmo.postssystem.features.files.common.FileId

View File

@ -11,7 +11,6 @@ import dev.inmo.micro_utils.repos.ktor.common.crud.createRouting
import dev.inmo.micro_utils.repos.ktor.common.crud.updateRouting import dev.inmo.micro_utils.repos.ktor.common.crud.updateRouting
import dev.inmo.micro_utils.repos.ktor.common.one_to_many.removeRoute import dev.inmo.micro_utils.repos.ktor.common.one_to_many.removeRoute
import dev.inmo.micro_utils.repos.ktor.server.crud.configureReadCRUDRepoRoutes import dev.inmo.micro_utils.repos.ktor.server.crud.configureReadCRUDRepoRoutes
import dev.inmo.postssystem.features.common.common.FileBasedInputProvider
import dev.inmo.postssystem.features.content.common.* import dev.inmo.postssystem.features.content.common.*
import dev.inmo.postssystem.features.files.common.FileId import dev.inmo.postssystem.features.files.common.FileId
import dev.inmo.postssystem.features.posts.common.* import dev.inmo.postssystem.features.posts.common.*