defmodule Alpa.Models.Clock do @moduledoc """ Market clock information. """ use TypedStruct import Alpa.Helpers, only: [parse_datetime: 1] typedstruct do field(:timestamp, DateTime.t()) field(:is_open, boolean()) field(:next_open, DateTime.t()) field(:next_close, DateTime.t()) end @doc """ Parse clock data from API response. """ @spec from_map(map()) :: t() def from_map(data) when is_map(data) do %__MODULE__{ timestamp: parse_datetime(data["timestamp"]), is_open: data["is_open"], next_open: parse_datetime(data["next_open"]), next_close: parse_datetime(data["next_close"]) } end end