Go to file
2021-11-28 11:48:51 +00:00
.github/workflows full reborn 2021-11-24 15:24:52 +06:00
client добавлены сериализаторы 2021-11-28 08:06:39 +00:00
features roles update and gradle scripts fixes 2021-11-28 01:11:04 +06:00
gradle/wrapper full reborn 2021-11-24 15:24:52 +06:00
server добавлены сериализаторы 2021-11-28 08:06:39 +00:00
.gitignore update scripts 2020-11-25 18:40:45 +06:00
build.gradle full reborn 2021-11-24 15:24:52 +06:00
changelog_parser.sh update scripts 2020-11-25 18:40:45 +06:00
defaultAndroidSettings.gradle full reborn 2021-11-24 15:24:52 +06:00
extensions.gradle full reborn 2021-11-24 15:24:52 +06:00
github_release.gradle update scripts 2020-11-25 18:40:45 +06:00
gradle.properties добавлен binary 2021-11-27 17:02:14 +00:00
gradlew full reborn 2021-11-24 15:24:52 +06:00
gradlew.bat full reborn 2021-11-24 15:24:52 +06:00
mppAndroidProject.gradle full reborn 2021-11-24 15:24:52 +06:00
mppJavaProject.gradle roles update and gradle scripts fixes 2021-11-28 01:11:04 +06:00
mppJsProject.gradle roles update and gradle scripts fixes 2021-11-28 01:11:04 +06:00
mppProjectWithSerialization.gradle roles update and gradle scripts fixes 2021-11-28 01:11:04 +06:00
PostsSystem.drawio several additions 2021-02-27 19:46:23 +06:00
publish.gradle full reborn 2021-11-24 15:24:52 +06:00
publish.kpsb full reborn 2021-11-24 15:24:52 +06:00
README.md Описана процедура добавления контента 2021-11-28 11:48:51 +00:00
settings.gradle добавлен binary 2021-11-27 17:02:14 +00:00

Структура проекта

  • Features - набор законченных фич проекта. Считается, что любая фича, находящаяся в мастере может быть добавлена в клиент и использована в нем. Исключением является common - это набор вещей, используемых везде. В подпунктах представлены части, на которые обычно разделяется фича
    • Common - общая для фичи часть. Тут, как правило, хранятся конвенции путей для сетевых соединений, общие типы и пр.
    • Server - часть, включаемая в сервер для подключения фичи. Обычно содержит работу с бд, определение модулей сервера и пр.
    • 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 добавить
    ":features:content:binary:common",
    ":features:content:binary:client",
    ":features:content:binary:server",
  1. В папке core/features/content/binary/common/src создать серию вложенных ддруг в друга папок commonMain/kotlin/dev/inmo/postssystem/features/content/binary/common
  2. В последней папке common создать по ниже приведенным примерам data class
   @Serializable
   data class BinaryContent(
   val bytes: ByteArray
   ) : Content

и конфигуратор

object BinaryContentSerializerModuleConfigurator : ContentSerializersModuleConfigurator.Element {
    override fun PolymorphicModuleBuilder<Content>.invoke() {
        subclass(BinaryContent::class, BinaryContent.serializer())
    }
}
  1. В двух файлах Di, расположенных в core/client/src/commonMain/kotlin/dev/inmo/postsystem/client и core/server/src/main/java/dev/inmo/postsystem/client соответственно
    singleWithRandomQualifier<ContentSerializersModuleConfigurator.Element> { BinaryContentSerializerModuleConfigurator }
  1. Наверное нужно написать что делать с этим теперь можно?