65 lines
1.4 KiB
Elixir
65 lines
1.4 KiB
Elixir
|
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
|