add information about content client provider to readme
This commit is contained in:
features
common
content
README.md
binary
server
src
jvmMain
kotlin
dev
inmo
postssystem
features
content
binary
text
server
src
jvmMain
kotlin
dev
inmo
postssystem
features
content
text
publicators/simple/server/src/jvmMain/kotlin/dev/inmo/postssystem/publicators/simple/server
server
targets/telegram/loader/server/src/jvmMain/kotlin/dev/inmo/postssystem/targets/telegram/loader/server
26
features/common/README.md
Normal file
26
features/common/README.md
Normal file
@ -0,0 +1,26 @@
|
||||
# Common
|
||||
|
||||
In that readme will be stored several notes about working with common parts in all your modules
|
||||
|
||||
## ModuleLoader
|
||||
|
||||
This module has been created to allow your plugins to load dynamically after build of the server and client
|
||||
|
||||
### Server
|
||||
|
||||
To declare your module loader you should create **_class_** realization of `ServerModuleLoader` and put the classname of that
|
||||
realization into the `modules` section as a string.
|
||||
|
||||
### Client
|
||||
|
||||
On the client side you also should create your own realization of `ModuleLoader`, but instead of some config you will
|
||||
need to create some `private val` property on the top level in your `ModuleLoader` realization file. Example:
|
||||
|
||||
```kotlin
|
||||
|
||||
object SomeModuleLoader : ModuleLoader {
|
||||
// body
|
||||
}
|
||||
|
||||
private val someModuleLoaderProperty = AdditionalModules.addModule(SomeModuleLoader) // that is important part
|
||||
```
|
15
features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/sessions/Qualifiers.kt
Normal file
15
features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/sessions/Qualifiers.kt
Normal file
@ -0,0 +1,15 @@
|
||||
package dev.inmo.postssystem.features.common.server.sessions
|
||||
|
||||
import org.koin.core.qualifier.StringQualifier
|
||||
|
||||
object Qualifiers {
|
||||
val binaryFilesFolderQualifier = StringQualifier("binaryFilesFolder")
|
||||
val originalFilesMetasKeyValueRepoQualifier = StringQualifier("OriginalFilesMetaKV")
|
||||
val binaryOriginalFilesMetasKeyValueRepoQualifier = StringQualifier("BinaryOriginalFilesMetaKV")
|
||||
val commonFilesMetasKeyValueRepoQualifier = StringQualifier("CommonFilesMetaKV")
|
||||
val binaryFilesMetasKeyValueRepoQualifier = StringQualifier("BinaryFilesMetaKV")
|
||||
val filesFolderQualifier = StringQualifier("rootFilesFolder")
|
||||
val commonFilesFolderQualifier = StringQualifier("commonFilesFolder")
|
||||
val usersRolesKeyValueFactoryQualifier = StringQualifier("usersRolesKeyValueFactory")
|
||||
val binaryStorageFilesQualifier = StringQualifier("binaryContentFiles")
|
||||
}
|
@ -3,6 +3,6 @@ package dev.inmo.postssystem.features.common.server.sessions
|
||||
import kotlinx.serialization.json.JsonObject
|
||||
import org.koin.core.module.Module
|
||||
|
||||
interface ModuleLoader {
|
||||
interface ServerModuleLoader {
|
||||
fun Module.load(config: JsonObject)
|
||||
}
|
@ -35,3 +35,14 @@ For example, you want to create content named `MyFormat`. To do this, you must p
|
||||
```kotlin
|
||||
singleWithRandomQualifier<ContentSerializersModuleConfigurator.Element> { MyFormatContentSerializerModuleConfigurator }
|
||||
```
|
||||
|
||||
## Client
|
||||
|
||||
**Currently, this information is actual only for JS (browser) clients. Other client platforms will be added later**
|
||||
|
||||
Besides, you may (and it is strongly recommended to) create your own client `ContentClientProvider` realization.
|
||||
This realization will contain all main functions for drawing of content on the client side.
|
||||
|
||||
## Server
|
||||
|
||||
On the server side it is required to
|
||||
|
@ -0,0 +1,20 @@
|
||||
package dev.inmo.postssystem.features.content.binary.server
|
||||
|
||||
import dev.inmo.postssystem.features.common.common.singleWithRandomQualifier
|
||||
import dev.inmo.postssystem.features.common.server.sessions.Qualifiers
|
||||
import dev.inmo.postssystem.features.common.server.sessions.ServerModuleLoader
|
||||
import dev.inmo.postssystem.features.content.common.BinaryContent
|
||||
import dev.inmo.postssystem.features.content.server.ServerContentStorageWrapper
|
||||
import kotlinx.serialization.json.JsonObject
|
||||
import org.koin.core.module.Module
|
||||
|
||||
class BinaryContentServerModuleLoader : ServerModuleLoader {
|
||||
override fun Module.load(config: JsonObject) {
|
||||
singleWithRandomQualifier {
|
||||
ServerContentStorageWrapper(
|
||||
BinaryServerContentStorage(get(Qualifiers.binaryStorageFilesQualifier)),
|
||||
BinaryContent::class
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
22
features/content/text/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/content/text/server/TextContentServerModuleLoader.kt
Normal file
22
features/content/text/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/content/text/server/TextContentServerModuleLoader.kt
Normal file
@ -0,0 +1,22 @@
|
||||
package dev.inmo.postssystem.features.content.text.server
|
||||
|
||||
import dev.inmo.postssystem.features.common.common.singleWithRandomQualifier
|
||||
import dev.inmo.postssystem.features.common.server.sessions.ServerModuleLoader
|
||||
import dev.inmo.postssystem.features.content.common.ContentSerializersModuleConfigurator
|
||||
import dev.inmo.postssystem.features.content.server.ServerContentStorageWrapper
|
||||
import dev.inmo.postssystem.features.content.text.common.TextContent
|
||||
import dev.inmo.postssystem.features.content.text.common.TextContentSerializerModuleConfigurator
|
||||
import kotlinx.serialization.json.JsonObject
|
||||
import org.koin.core.module.Module
|
||||
|
||||
class TextContentServerModuleLoader : ServerModuleLoader {
|
||||
override fun Module.load(config: JsonObject) {
|
||||
singleWithRandomQualifier<ContentSerializersModuleConfigurator.Element> { TextContentSerializerModuleConfigurator }
|
||||
singleWithRandomQualifier {
|
||||
ServerContentStorageWrapper(
|
||||
TextServerContentStorage(get()),
|
||||
TextContent::class
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user