defmodule Polymarket.Schemas.EventMessage do @moduledoc """ Event message describing the parent event of a market. Part of a NewMarketEvent. """ use TypedEctoSchema alias Polymarket.JsonUtil @primary_key false @derive Jason.Encoder typed_embedded_schema do field(:id, :string) field(:description, :string) field(:title, :string) field(:ticker, :string) field(:slug, :string) end @doc "Builds an `EventMessage` from a decoded (JSON) map, coercing each field." @spec from_attrs(map()) :: {:ok, t()} def from_attrs(attrs) do attrs = JsonUtil.snake_case_keys(attrs) {:ok, %__MODULE__{ id: attrs["id"], description: attrs["description"], title: attrs["title"], ticker: attrs["ticker"], slug: attrs["slug"] }} end end