Eno
Lightweight SQL toolkit for elixir inspired by yesql and ragtime.
For the moment only PostgreSQL is supported, and you need to add postgrex as a dependency.
Installation
It’s available in Hex, the package can be installed as:
Add eno to your list of dependencies in
mix.exs:def deps do
[{:eno, "~> 0.0.1"}]end
Usage
lib/yourapp/repo.ex
defmodule YourApp.Repo do
use Eno
endlib/yourapp/repo.sql
-- name: user_list
select * from users offset :offset limit :limit;
-- name: user_get
select * from users where user_id = :id;lib/yourapp.ex
children = [
worker(YourApp.Repo, []),
]config/config.ex
config :eno, YourApp.Repo,
adapter: Eno.Adapters.Postgres,
hostname: "localhost",
username: "user",
password: "pass",
database: "db"finally
iex> YourApp.Repo.user_list offset: 0, limit: 10
iex> YourApp.Repo.user_get 1Migration
$ mix eno.gen.migration init_userspriv/migrations/repo/20160507022535_init_users.up.sql
create table users (id SERIAL PRIMARY KEY, name varchar(255) NOT NULL UNIQUE);priv/migrations/repo/20160507022535_init_users.down.sql
drop table users;config/config.ex
config :yourapp,
eno_repos: [YourApp.Repo]up
$ mix eno.migrate [-r YourApp.Repo]down
$ mix eno.rollback [-r YourApp.Repo]Status
Not ready for production use yet. The API is subject to change.