Skip to content

Latest commit

 

History

History
25 lines (16 loc) · 2.09 KB

File metadata and controls

25 lines (16 loc) · 2.09 KB

Метаданные проекта

Проект (сущность Project в БД или ProjectInfo) основная сущность в JoinRpg. Почти любой запрос или действие идут в контексте конкретного проекта. Почти все данные проекта можно получить из ProjectInfo. Чтобы получить ProjectInfo, можно вызывать IProjectMetadataRepository.GetProjectMetadata. Это действие почти бесплатно (т.к. в рамках обработки конкретного веб-запроса ProjectInfo почти всегда в кеше).

Какие сущности стоит добавлять в ProjectInfo

Все настройки проекта, которые настраивает или меняет мастер.

Что не стоит добавлять в ProjectInfo

  • Персонажи (Character) и все их зависимые сущности — Claim, Comment и прочее.
  • Все, не связанное с проектом
  • То, что редко применяется и занимает много места — например анонс проекта.

Как добавлять новую сущность в настройки проекта.

  1. Нужно добавить новую сущность в JoinRpg.DataModel и не забыть сделать миграцию.
  2. Добавить какой-то иммутабельный объект (например record), описывающий сущность, в JoinRpg.PrimitiveTypes.ProjectMetadata
  3. Добавить его в ProjectInfo
  4. Добавить загрузку этой сущности в ProjectLoaderCommon.GetProjectWithFieldsAsync чтобы не плодить LazyLoad
  5. Добавить меппинг из БД в ProjectMetadataRepository.CreateInfoFromProject

Дополнительные материалы