postland/lib/postland/object.ex

27 lines
555 B
Elixir

defmodule Postland.Object do
use Ecto.Schema
import Ecto.Changeset
@primary_key {:id, :binary_id, autogenerate: false}
schema "objects" do
field :type, :string
field :data, :map
timestamps()
end
def changeset(attrs) do
attrs = %{
"id" => Map.get(attrs, "id", Ecto.UUID.autogenerate()),
"type" => Map.get(attrs, "type"),
"data" => attrs
}
%__MODULE__{}
|> cast(attrs, [:id, :type, :data])
|> validate_required(:id)
|> validate_required(:data)
|> validate_required(:type)
end
end