Packages

An Elixir Ecto Package to Boost Your Productivity and Achieve 90% throughput in Just 10% of the Time.

Current section

Files

Jump to
ecto_entity lib entity changes.ex
Raw

lib/entity/changes.ex

defmodule Ecto.Entity.Changes do
defmacro __using__(_) do
quote do
@doc """
Get the current module change
"""
def schema_change(attrs) do
case __MODULE__.has_function?(:changeset, 2) do
true -> get_struct() |> __MODULE__.changeset(attrs)
_ -> raise "You must implement changeset in the #{__MODULE__} schema to perform this action"
end
end
def get_struct do
__MODULE__.__struct__()
end
def put_inserted_at(attrs), do: put_timestamp_column(attrs, :inserted_at)
def put_updated_at(attrs), do: put_timestamp_column(attrs, :updated_at)
def put_timestamp_column(attrs, column) when is_atom(column) do
case Map.has_key?(get_struct(), column) do
true -> put_timestamps(attrs, column)
_ -> attrs
end
end
end
end
end