lib/baz/collection_assets/collection_asset.ex

defmodule Baz.CollectionAssets.CollectionAsset do
  @moduledoc """
  CollectionAsset resource
  """

  use Ecto.Schema
  import Ecto.Changeset

  @type t :: Ecto.Schema.t()

  schema "collection_assets" do
    field :venue, :string
    field :slug, :string
    field :token_id, :integer
    field :name, :string
    field :description, :string
    field :background_color, :string
    field :image_uri, :string
    field :image_preview_uri, :string
    field :image_thumbnail_uri, :string
    field :image_original_uri, :string
    field :animation_uri, :string
    field :animation_original_uri, :string
    field :is_nsfw, :boolean
    # Interesting extra information from OS API
    # permalink: String.t(),
    # external_link: String.t(),
    # asset_contract: map,
    # collection: String.t(),
    # is_nsfw: boolean,
    # decimals: non_neg_integer | nil,
    # token_metadata: String.t(),
    # creator: map,
    # traits: [map],
    # is_presale: boolean,
    # transfer_fee_payment_token: term | nil,
    # transfer_fee: term | nil,
    # related_assets: list,
    # auctions: list,
    # supports_wyvern: boolean,

    timestamps()
  end

  @doc false
  def changeset(collection, attrs) do
    collection
    |> cast(attrs, [
      :venue,
      :slug,
      :token_id,
      :name,
      :description,
      :background_color,
      :image_uri,
      :image_preview_uri,
      :image_thumbnail_uri,
      :image_original_uri,
      :animation_uri,
      :animation_original_uri,
      :is_nsfw
    ])
    |> validate_required([:venue, :slug, :token_id, :name])
  end
end