> To be clear, this is not about swapping out Ecto.Repo for another Repo
> implementation, so perhaps repository is not the best name. Its about
> having a behavior for your data entity that is satisfied by a concrete
> implementation that uses Ecto and another that could use a List.
>

I understood that and I wrote my original e-mail with exactly that in mind.
:) When you say "having a behavior for your data entity that is satisfied
by a concrete implementation", it still feels like you are applying
patterns from other paradigms and platforms without taking into account the
options provided by Elixir.

Again, if you want to replace an implementation that uses Ecto by another
that uses a list, I would specially handle those cases by defining a proper
behaviour instead of simply having it as a default.


> Performance, especially within tests is not as much of a concern as
>> simplicity and I would argue that for the same reason you would have an
>> in-memory Twitter client, you could have an in-memory repository within
>> your tests.
>>
>
The biggest point about replacing Twitter is to avoid an external
dependency you can't control in your tests. Otherwise your tests will fail
for reasons beyond your control. Unless the whole purpose of your
application is to integrate with Twitter, I wouldn't compare it to my data
layer.


> I think this is an approach that could have the same result, keeping the
>> underlying queries and Ecto interactions outside of the controllers (and
>> other layers where we want to control how the data is accessed).
>>
>
Right and that's what I am trying to say. You don't need the "repository
pattern". You need modules and functions. Organizing everything into
patterns that are tied more to the structure is going to constrain you in
the long term. I realize I am repeating myself so I will refrain from
commenting again. All of the warnings were in the original e-mail. :)

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-talk/CAGnRm4%2Bwxc227DdNbPL3gUZNZ6hOCJ%3DAGxOV-bQKOhg1VCu%3Dow%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to