27 lines
555 B
Elixir
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
|