add storing of content
This commit is contained in:
client/src/commonMain/kotlin/dev/inmo/postssystem/client
features
content
binary
server
server
text
server
files
client
src
commonMain
kotlin
dev
inmo
postssystem
features
files
common
src
commonMain
kotlin
dev
inmo
postssystem
features
files
jvmMain
kotlin
dev
inmo
postssystem
features
files
common
server
src
jvmMain
kotlin
dev
inmo
postssystem
features
files
server/src/main/java/dev/inmo/postssystem/server
@ -18,4 +18,9 @@ data class Config(
|
||||
) {
|
||||
val filesFolderFile: File
|
||||
get() = File(filesFolder)
|
||||
|
||||
val commonFilesFolder: File
|
||||
get() = File(filesFolderFile, "common").also { it.mkdirs() }
|
||||
val binaryFilesFolder: File
|
||||
get() = File(filesFolderFile, "binary_content").also { it.mkdirs() }
|
||||
}
|
||||
|
@ -26,9 +26,12 @@ import dev.inmo.micro_utils.repos.exposed.keyvalue.ExposedKeyValueRepo
|
||||
import dev.inmo.micro_utils.repos.exposed.onetomany.ExposedOneToManyKeyValueRepo
|
||||
import dev.inmo.postssystem.features.common.common.*
|
||||
import dev.inmo.postssystem.features.content.binary.common.BinaryContentSerializerModuleConfigurator
|
||||
import dev.inmo.postssystem.features.content.common.ContentSerializersModuleConfigurator
|
||||
import dev.inmo.postssystem.features.content.common.OtherContentSerializerModuleConfigurator
|
||||
import dev.inmo.postssystem.features.content.binary.server.BinaryServerContentStorage
|
||||
import dev.inmo.postssystem.features.content.common.*
|
||||
import dev.inmo.postssystem.features.content.server.ServerContentStorage
|
||||
import dev.inmo.postssystem.features.content.server.ServerContentStorageAggregator
|
||||
import dev.inmo.postssystem.features.content.text.common.TextContentSerializerModuleConfigurator
|
||||
import dev.inmo.postssystem.features.content.text.server.TextServerContentStorage
|
||||
import dev.inmo.postssystem.features.publication.server.PublicationManager
|
||||
import dev.inmo.postssystem.features.publication.server.PublicationTarget
|
||||
import dev.inmo.postssystem.targets.telegram.publication.server.PublicationTargetTelegram
|
||||
@ -70,8 +73,12 @@ fun getDIModule(
|
||||
val config = configJson.decodeFromString(Config.serializer(), File(args.first()).readText())
|
||||
|
||||
val originalFilesMetasKeyValueRepoQualifier = StringQualifier("OriginalFilesMetaKV")
|
||||
val filesMetasKeyValueRepoQualifier = StringQualifier("FilesMetaKV")
|
||||
val filesFolderQualifier = StringQualifier("filesFolder")
|
||||
val binaryOriginalFilesMetasKeyValueRepoQualifier = StringQualifier("BinaryOriginalFilesMetaKV")
|
||||
val commonFilesMetasKeyValueRepoQualifier = StringQualifier("CommonFilesMetaKV")
|
||||
val binaryFilesMetasKeyValueRepoQualifier = StringQualifier("BinaryFilesMetaKV")
|
||||
val filesFolderQualifier = StringQualifier("rootFilesFolder")
|
||||
val commonFilesFolderQualifier = StringQualifier("commonFilesFolder")
|
||||
val binaryFilesFolderQualifier = StringQualifier("binaryFilesFolder")
|
||||
val usersRolesKeyValueFactoryQualifier = StringQualifier("usersRolesKeyValueFactory")
|
||||
|
||||
return module {
|
||||
@ -100,20 +107,25 @@ fun getDIModule(
|
||||
singleWithBinds { get<Config>().databaseConfig }
|
||||
singleWithBinds { get<Config>().authConfig }
|
||||
singleWithBinds(filesFolderQualifier) { get<Config>().filesFolderFile }
|
||||
singleWithBinds(commonFilesFolderQualifier) { get<Config>().commonFilesFolder }
|
||||
singleWithBinds(binaryFilesFolderQualifier) { get<Config>().binaryFilesFolder }
|
||||
|
||||
singleWithBinds { get<DatabaseConfig>().database }
|
||||
singleWithBinds(originalFilesMetasKeyValueRepoQualifier) {
|
||||
ExposedKeyValueRepo(get(), { text("fileid") }, { text("metaInfo") }, "FileIdsToMetas")
|
||||
}
|
||||
singleWithBinds(filesMetasKeyValueRepoQualifier) {
|
||||
singleWithBinds(binaryOriginalFilesMetasKeyValueRepoQualifier) {
|
||||
ExposedKeyValueRepo(get(), { text("fileid") }, { text("metaInfo") }, "BinaryContentFileIdsToMetas")
|
||||
}
|
||||
singleWithBinds(commonFilesMetasKeyValueRepoQualifier) {
|
||||
MetasKeyValueRepo(
|
||||
get(),
|
||||
get(originalFilesMetasKeyValueRepoQualifier)
|
||||
)
|
||||
}
|
||||
single<FilesStorage> { DiskFilesStorage(get(filesFolderQualifier), get(filesMetasKeyValueRepoQualifier)) }
|
||||
single<WriteFilesStorage> { WriteDistFilesStorage(get(filesFolderQualifier), get(filesMetasKeyValueRepoQualifier)) }
|
||||
single<FullFilesStorage> { DefaultFullFilesStorage(get(), get()) }
|
||||
single<ReadFilesStorage> { DiskReadFilesStorage(get(commonFilesFolderQualifier), get(commonFilesMetasKeyValueRepoQualifier)) }
|
||||
single<WriteFilesStorage> { WriteDistFilesStorage(get(commonFilesFolderQualifier), get(commonFilesMetasKeyValueRepoQualifier)) }
|
||||
single<FilesStorage> { DefaultFilesStorage(get(), get()) }
|
||||
singleWithBinds { ExposedUsersStorage(get()) }
|
||||
singleWithBinds { exposedUsersAuthenticator(get(), get()) }
|
||||
|
||||
@ -142,6 +154,25 @@ fun getDIModule(
|
||||
|
||||
factory<CoroutineScope> { baseScope.LinkedSupervisorScope() }
|
||||
|
||||
// Content storages
|
||||
val binaryStorageFilesQualifier = StringQualifier("binaryContentFiles")
|
||||
singleWithBinds(binaryFilesMetasKeyValueRepoQualifier) {
|
||||
MetasKeyValueRepo(
|
||||
get(),
|
||||
get(binaryOriginalFilesMetasKeyValueRepoQualifier)
|
||||
)
|
||||
}
|
||||
single<FilesStorage>(binaryStorageFilesQualifier) {
|
||||
DefaultFilesStorage(
|
||||
DiskReadFilesStorage(get(binaryFilesFolderQualifier), get(binaryFilesMetasKeyValueRepoQualifier)),
|
||||
WriteDistFilesStorage(get(binaryFilesFolderQualifier), get(binaryFilesMetasKeyValueRepoQualifier))
|
||||
)
|
||||
}
|
||||
singleWithRandomQualifier { BinaryServerContentStorage(get(binaryStorageFilesQualifier)) }
|
||||
singleWithRandomQualifier { TextServerContentStorage(get()) }
|
||||
|
||||
single<ServerContentStorage<Content>> { ServerContentStorageAggregator(getAll(), get()) }
|
||||
|
||||
// Routing configurators
|
||||
singleWithBinds { FilesRoutingConfigurator(get(), null, get()) }
|
||||
singleWithBinds { StatusRoutingConfigurator }
|
||||
|
Reference in New Issue
Block a user