© 2021 WebHive

Phoenix и контексты - разбираемся что к чему

В предыдущей статье про новшества в phoenix 1.3 уже писал про контексты. Тема эта очень интересная в особенности потому, что касается организации логики приложения. Фактически основа основ. В связи с тем, что новый phoenix эти основы сотрясает, крушит и ломает стоит углубиться в эти дебри и разобраться.

Приложения

Собственно с релиза phoenix-а версии 1.3 можно смело выбросить из головы всё, что вы знали о работе с данными в этом фреймворке. Так будет проще, ибо старые знания утратили свою ценность.

Ну и возвращаясь к теме что же такое контекст. Это фактически модуль где реализуется логика работы с данными, и который предоставляет остальным частям приложения интерфейсы для работы с данными. Как бы банально это не звучало, но вот это фактически всё чем являются контексты.

Для тех кто не в теме — раньше вся бизнес логика фактически была сосредоточена в контроллерах — по крайней мере всё было организовано именно так. Именно в контроллерах происходило создание модели и её сохранения в репозитарий. Теперь же контроллеры просто вызывают интерфейсы которые предлагает тот или иной контекст, а вся остальная логика сосредоточена уже внутри контекста.

Связи

Лично для меня сразу возник вопрос —, а как же быть со связями. В особенностями связями между контекстами. Ну старые добрые один ко многим и т. п. Собственно ничего нового тут не предлагается — либо передавать идентификаторы из контекста в контекст и выполнять подзапросы, либо дублировать схемы внутри контекстов и делать сложные выборки там.

Выводы

Крайне полезное новшество для phoenix, хотя для rails программиста оно выглядит довольно банально.

Источники вдохновения

Комментарии