Кто как разделяет модули с доступом к базе (т.е. где ecto queries + Repo вызовы) и остальные модули (например сервисы и остальная бизнес логика) внутри phoenix 1.3 контекстов?
Уже на 3 проекте пытаемся прийти к какому-то адекватному паттерну для структуры проекта и контекстов, но пока не нашли идеального варианта.
В основном руководствуюсь мантрой high cohesion, где родственные модули лежат вместе (соответственно все родственные schema,
query/repo, service модули лежат в одной куче внутри контекста), и для небольших контекстов это еще неплохо выглядит.
Но когда кол-во сервисов переваливает за 5-7 - получается каша и уже крайне сложно ориентироваться.
Видел в open source проектах иногда юзают более rails-way подход - выносится отдельный контекст - Repository или Database, в котором лежат все schema и queries модули (или только queries). А в остальных контекстах уже сервисы и бизнес логика.
И такой подход выглядит удобнее, но возможно только пч. .в rails так было, и привычка осталась.
Однако то, что все доступы в базу остаются внутри одного контекста, вместо расплывания по всему проекту - может быть и не такая плохая идея. Но опять-таки - это нарушает high cohesion.