defmodule Mobilizon.Resources.Resource.Metadata do @moduledoc """ Represents a resource metadata """ use Ecto.Schema import Ecto.Changeset @type t :: %__MODULE__{ type: String.t(), title: String.t(), image_remote_url: String.t(), width: non_neg_integer(), height: non_neg_integer(), author_name: String.t(), author_url: String.t(), provider_name: String.t(), provider_url: String.t(), html: String.t(), favicon_url: String.t() } @required_attrs [] @optional_attrs [ :type, :title, :description, :image_remote_url, :width, :height, :author_name, :author_url, :provider_name, :provider_url, :html, :favicon_url ] @attrs @required_attrs ++ @optional_attrs @primary_key false embedded_schema do field(:type, :string) field(:title, :string) field(:description, :string) field(:image_remote_url, :string) field(:width, :integer) field(:height, :integer) field(:author_name, :string) field(:author_url, :string) field(:provider_name, :string) field(:provider_url, :string) field(:html, :string) field(:favicon_url, :string) end @doc false @spec changeset(t | Ecto.Schema.t(), map) :: Ecto.Changeset.t() def changeset(schema, params) do schema |> cast(params, @attrs) end end