Muito bacana Rômulo, obrigado por compartilhar! :)
É bacana perceber que tanto o design do Phoenix quanto do Ecto super combinam nesses aspectos!
Enquanto o Phoenix prega por isolar sua camada de dados entre contextos (Bounded-contexts), para garantir que eles sejam responsáveis por uma parte do domínio do seu negócio, ele também funciona para garantir que o contexto será o módulo que irá executar tudo relacionado a comunicação com o banco de dados (funções impuras).
Já o Ecto, baseado no Repository Pattern, garante que independente do que você faça com qualquer parte do toolkit dele (Query, Schema, Changeset), você só estará de fato fazendo um round-trip para o banco enviando ou requisitando dados caso use o módulo Repo (repository). Por isso, sempre costumamos usar o Repo dentro de um contexto do Phoenix em aplicações web!
Essas integrações implícitas do ecossistema do Elixir são as coisas mais lindas que existem!
Muito bacana Rômulo, obrigado por compartilhar! :)
É bacana perceber que tanto o design do Phoenix quanto do Ecto super combinam nesses aspectos!
Enquanto o Phoenix prega por isolar sua camada de dados entre contextos (Bounded-contexts), para garantir que eles sejam responsáveis por uma parte do domínio do seu negócio, ele também funciona para garantir que o contexto será o módulo que irá executar tudo relacionado a comunicação com o banco de dados (funções impuras).
Já o Ecto, baseado no Repository Pattern, garante que independente do que você faça com qualquer parte do toolkit dele (Query, Schema, Changeset), você só estará de fato fazendo um round-trip para o banco enviando ou requisitando dados caso use o módulo Repo (repository). Por isso, sempre costumamos usar o Repo dentro de um contexto do Phoenix em aplicações web!
Essas integrações implícitas do ecossistema do Elixir são as coisas mais lindas que existem!
Que honra receber seu comentário aqui! Obrigado demais pelo feedback 💜
Elixir é maravilhoso!