ecto_shorts v0.1.2 EctoShorts View Source
Ecto Shorts is a library created to help shorten ecto interactions and remove most of the related code.
The major limitation right now is this is restricted to functioning on 1 repo, in the future I would expect multi-repo support to expand
There are 2 main modules Actions and CommonChanges
Actions
EctoShorts.Actions allows for filters to be constructed from data such as
Actions.all(User, %{
favorite_food: "curry",
age: %{gte: 18, lte: 50},
name: %{ilike: "steven"},
preload: [:address],
last: 5
})
which the equivelent would be
Repo.all from u in User,
preload: [:address],
limit: 5,
where: u.favorite_food == "curry" and
u.age >= 18 and u.age <= 50 and
ilike(u.name, "%steven%")
CommonChanges
EctoShorts.CommonChanges is responsible for updating relations on schemas it allows
you to update associations or create using changesets and handles choosing between
put_assoc and cast_assoc
Actions.update(User, 1, %{friends: [%{id: 5, name: "Billy"}]})
Actions.update(User, 1, %{friends: [%{id: 5, name: "Bob"}]})
Another feature is you can update many to many relationship members using a id list of members
How to make user 1 friends with users 5, 6, 7
Actions.update(User, 1, %{friends: [%{id: 5}, %{id: 6}, %{id: 7}]})
Config
You can configure both the Repo and Error module via
config :ecto_shorts,
repo: MyRepo,
error_module: EctoShorts.Actions.Error