diff --git a/README.md b/README.md index a632cd67..74745d62 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,41 @@ * Client - часть с клиентским кодом. В большинстве своём включает работу с сервером, MVVM часть (View при этом должны находиться в платформенной части, если их нельзя вынести в сommon часть клиента) * Client - итоговый клиент. На момент написания этой доки (`Пн окт 25 12:56:41 +06 2021`) предполагается два варианта: - * Мультиплатформенный проект со сборкой каждого таргета. Скорее всего, не будет использован в силу сложности настройки + * Мультиплатформенный проект со сборкой каждого таргета. Скорее всего, не будет использован в силу сложности настройки части клиентов (например, андроид) * Мультимодульный проект * Server - пока что JVM-only модуль, включающий все необходимые для сервера фичи + +____ +## Как создать контент? +К примеру требуется создать контент Binary. Для этого необходимо выполнить следующие действия +1. Скопировать папку template из core/features в core/features/content +2. Переименовать эту папку в binary +3. Внутри папки binary заменить все вхождения template на content.binary +4. В файле settings.gradle в массив includes добавить +```kt + ":features:content:binary:common", + ":features:content:binary:client", + ":features:content:binary:server", +``` +5. В папке core/features/content/binary/common/src создать серию вложенных ддруг в друга папок commonMain/kotlin/dev/inmo/postssystem/features/content/binary/common +6. В последней папке common создать по ниже приведенным примерам data class +```kt + @Serializable + data class BinaryContent( + val bytes: ByteArray + ) : Content +``` +и конфигуратор +```kt +object BinaryContentSerializerModuleConfigurator : ContentSerializersModuleConfigurator.Element { + override fun PolymorphicModuleBuilder.invoke() { + subclass(BinaryContent::class, BinaryContent.serializer()) + } +} +``` +7. В двух файлах Di, расположенных в core/client/src/commonMain/kotlin/dev/inmo/postsystem/client и core/server/src/main/java/dev/inmo/postsystem/client соответственно +```kt + singleWithRandomQualifier { BinaryContentSerializerModuleConfigurator } +``` +8. Наверное нужно написать что делать с этим теперь можно? \ No newline at end of file