continue to adding workaround
This commit is contained in:
features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/sessions
server
settings.gradletargets/telegram/loader
client
build.gradle
src
common
build.gradle
src
server
@ -25,6 +25,7 @@ dependencies {
|
||||
|
||||
api project(":postssystem.services.posts.server")
|
||||
|
||||
api project(":postssystem.targets.telegram.loader.server")
|
||||
api project(":postssystem.targets.telegram.publication.server")
|
||||
|
||||
api libs.ktor.server.netty
|
||||
|
@ -1,5 +1,6 @@
|
||||
package dev.inmo.postssystem.server
|
||||
|
||||
import dev.inmo.postssystem.features.common.server.sessions.ModuleLoader
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import java.io.File
|
||||
@ -13,11 +14,25 @@ data class Config(
|
||||
@SerialName("auth")
|
||||
val authConfig: AuthConfig = AuthConfig(),
|
||||
val filesFolder: String,
|
||||
@SerialName("modules")
|
||||
val modulesClassPaths: List<String>,
|
||||
val debugMode: Boolean = false
|
||||
) {
|
||||
val filesFolderFile: File
|
||||
get() = File(filesFolder)
|
||||
|
||||
@kotlinx.serialization.Transient
|
||||
val modules by lazy {
|
||||
modulesClassPaths.mapNotNull { moduleClassPath ->
|
||||
runCatching {
|
||||
Class.forName(moduleClassPath).constructors.firstOrNull { it.parameterCount == 0 } ?.newInstance() as ModuleLoader
|
||||
}.onFailure {
|
||||
println("Unable to load $moduleClassPath")
|
||||
it.printStackTrace()
|
||||
}.getOrNull()
|
||||
}
|
||||
}
|
||||
|
||||
val commonFilesFolder: File
|
||||
get() = File(filesFolderFile, "common").also { it.mkdirs() }
|
||||
val binaryFilesFolder: File
|
||||
|
@ -27,14 +27,13 @@ import dev.inmo.micro_utils.repos.exposed.onetomany.ExposedOneToManyKeyValueRepo
|
||||
import dev.inmo.postssystem.features.common.common.*
|
||||
import dev.inmo.postssystem.features.content.binary.server.BinaryServerContentStorage
|
||||
import dev.inmo.postssystem.features.content.common.*
|
||||
import dev.inmo.postssystem.features.content.server.storage.ServerContentStorage
|
||||
import dev.inmo.postssystem.features.content.server.ServerContentStorageAggregator
|
||||
import dev.inmo.postssystem.features.content.server.ServerContentStorageWrapper
|
||||
import dev.inmo.postssystem.features.content.server.storage.*
|
||||
import dev.inmo.postssystem.features.content.text.common.TextContent
|
||||
import dev.inmo.postssystem.features.content.text.common.TextContentSerializerModuleConfigurator
|
||||
import dev.inmo.postssystem.features.content.text.server.TextServerContentStorage
|
||||
import dev.inmo.postssystem.features.posts.server.ExposedServerPostsStorage
|
||||
import dev.inmo.postssystem.features.posts.server.ServerPostsStorage
|
||||
import dev.inmo.postssystem.features.posts.server.*
|
||||
import dev.inmo.postssystem.features.publication.server.PublicationManager
|
||||
import dev.inmo.postssystem.features.publication.server.PublicationTarget
|
||||
import dev.inmo.postssystem.services.posts.server.*
|
||||
@ -50,7 +49,7 @@ import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.serialization.BinaryFormat
|
||||
import kotlinx.serialization.StringFormat
|
||||
import kotlinx.serialization.cbor.Cbor
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.json.*
|
||||
import kotlinx.serialization.modules.SerializersModule
|
||||
import org.jetbrains.exposed.sql.Database
|
||||
import org.koin.core.module.Module
|
||||
@ -75,7 +74,8 @@ fun getDIModule(
|
||||
val configJson = Json {
|
||||
ignoreUnknownKeys = true
|
||||
}
|
||||
val config = configJson.decodeFromString(Config.serializer(), File(args.first()).readText())
|
||||
val configJsonElement = configJson.decodeFromString(JsonObject.serializer(), File(args.first()).readText())
|
||||
val config = configJson.decodeFromJsonElement(Config.serializer(), configJsonElement)
|
||||
|
||||
val originalFilesMetasKeyValueRepoQualifier = StringQualifier("OriginalFilesMetaKV")
|
||||
val binaryOriginalFilesMetasKeyValueRepoQualifier = StringQualifier("BinaryOriginalFilesMetaKV")
|
||||
@ -148,10 +148,7 @@ fun getDIModule(
|
||||
}
|
||||
singleWithBinds<RolesStorage<Role>> { RolesAggregator(getAll()) }
|
||||
|
||||
// Publication targets
|
||||
singleWithRandomQualifier<PublicationTarget> { PublicationTargetTelegram(get(), get()) }
|
||||
|
||||
single { PublicationManager(getAll(), get(), get(), get()) }
|
||||
single(createdAtStart = true) { PublicationManager(getAll(), get(), get(), get()) }
|
||||
|
||||
// Roles checkers
|
||||
single<RolesChecker<Role>>(StringQualifier(RolesManagerRolesChecker.key)) { RolesManagerRolesChecker }
|
||||
@ -185,10 +182,16 @@ fun getDIModule(
|
||||
)
|
||||
}
|
||||
|
||||
single<ServerContentStorage<Content>> { ServerContentStorageAggregator(getAll(), get()) }
|
||||
single<ServerContentStorage<Content>> { ServerContentStorageAggregator(getAll(), get()) } binds arrayOf(
|
||||
ServerReadContentStorage::class,
|
||||
ServerWriteContentStorage::class
|
||||
)
|
||||
|
||||
// Posts storage
|
||||
single<ServerPostsStorage> { ExposedServerPostsStorage(get()) }
|
||||
single<ServerPostsStorage> { ExposedServerPostsStorage(get()) } binds arrayOf(
|
||||
ServerReadPostsStorage::class,
|
||||
ServerWritePostsStorage::class
|
||||
)
|
||||
|
||||
singleWithBinds {
|
||||
ServerPostsService(
|
||||
@ -254,5 +257,9 @@ fun getDIModule(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
config.modules.forEach {
|
||||
it.apply { load(configJsonElement) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,5 +5,12 @@
|
||||
"password": "test"
|
||||
},
|
||||
"filesFolder": "/tmp/files",
|
||||
"debugMode": true
|
||||
"debugMode": true,
|
||||
"modules": [
|
||||
"dev.inmo.postssystem.targets.telegram.loader.server.TelegramTargetModuleLoader"
|
||||
],
|
||||
"telegram": {
|
||||
"botToken": "YOUR BOT TOKEN",
|
||||
"targetChatId": "YOUR CHAT ID"
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user