90ceb4f6fe
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
142 lines
3 KiB
Elixir
142 lines
3 KiB
Elixir
defmodule Eventos.Coherence.Schemas do
|
|
|
|
use Coherence.Config
|
|
|
|
import Ecto.Query
|
|
|
|
@user_schema Config.user_schema
|
|
@repo Config.repo
|
|
|
|
def list_user do
|
|
@repo.all @user_schema
|
|
end
|
|
|
|
def get_by_user(opts) do
|
|
@repo.get_by @user_schema, opts
|
|
end
|
|
|
|
def get_user(id) do
|
|
@repo.get @user_schema, id
|
|
end
|
|
|
|
def get_user!(id) do
|
|
@repo.get! @user_schema, id
|
|
end
|
|
|
|
def get_user_by_email(email) do
|
|
@repo.get_by @user_schema, email: email
|
|
end
|
|
|
|
def change_user(struct, params) do
|
|
@user_schema.changeset struct, params
|
|
end
|
|
|
|
def change_user(params) do
|
|
@user_schema.changeset @user_schema.__struct__, params
|
|
end
|
|
|
|
def change_user do
|
|
@user_schema.changeset @user_schema.__struct__, %{}
|
|
end
|
|
|
|
def update_user(user, params) do
|
|
@repo.update change_user(user, params)
|
|
end
|
|
|
|
def create_user(params) do
|
|
@repo.insert change_user(params)
|
|
end
|
|
|
|
Enum.each [Eventos.Coherence.Invitation, Eventos.Coherence.Rememberable], fn module ->
|
|
|
|
name =
|
|
module
|
|
|> Module.split
|
|
|> List.last
|
|
|> String.downcase
|
|
|
|
def unquote(String.to_atom("list_#{name}"))() do
|
|
@repo.all unquote(module)
|
|
end
|
|
|
|
def unquote(String.to_atom("list_#{name}"))(%Ecto.Query{} = query) do
|
|
@repo.all query
|
|
end
|
|
|
|
def unquote(String.to_atom("get_#{name}"))(id) do
|
|
@repo.get unquote(module), id
|
|
end
|
|
|
|
def unquote(String.to_atom("get_#{name}!"))(id) do
|
|
@repo.get! unquote(module), id
|
|
end
|
|
|
|
def unquote(String.to_atom("get_by_#{name}"))(opts) do
|
|
@repo.get_by unquote(module), opts
|
|
end
|
|
|
|
def unquote(String.to_atom("change_#{name}"))(struct, params) do
|
|
unquote(module).changeset(struct, params)
|
|
end
|
|
|
|
def unquote(String.to_atom("change_#{name}"))(params) do
|
|
unquote(module).new_changeset(params)
|
|
end
|
|
|
|
def unquote(String.to_atom("change_#{name}"))() do
|
|
unquote(module).new_changeset(%{})
|
|
end
|
|
|
|
def unquote(String.to_atom("create_#{name}"))(params) do
|
|
@repo.insert unquote(module).new_changeset(params)
|
|
end
|
|
|
|
def unquote(String.to_atom("update_#{name}"))(struct, params) do
|
|
@repo.update unquote(module).changeset(struct, params)
|
|
end
|
|
|
|
def unquote(String.to_atom("delete_#{name}"))(struct) do
|
|
@repo.delete struct
|
|
end
|
|
end
|
|
|
|
def query_by(schema, opts) do
|
|
Enum.reduce opts, schema, fn {k, v}, query ->
|
|
where(query, [b], field(b, ^k) == ^v)
|
|
end
|
|
end
|
|
|
|
def delete_all(%Ecto.Query{} = query) do
|
|
@repo.delete_all query
|
|
end
|
|
|
|
def delete_all(module) when is_atom(module) do
|
|
@repo.delete_all module
|
|
end
|
|
|
|
def create(%Ecto.Changeset{} = changeset) do
|
|
@repo.insert changeset
|
|
end
|
|
|
|
def create!(%Ecto.Changeset{} = changeset) do
|
|
@repo.insert! changeset
|
|
end
|
|
|
|
def update(%Ecto.Changeset{} = changeset) do
|
|
@repo.update changeset
|
|
end
|
|
|
|
def update!(%Ecto.Changeset{} = changeset) do
|
|
@repo.update! changeset
|
|
end
|
|
|
|
def delete(schema) do
|
|
@repo.delete schema
|
|
end
|
|
|
|
def delete!(schema) do
|
|
@repo.delete! schema
|
|
end
|
|
|
|
end
|