lib/line_drive/activity_type.ex

defmodule LineDrive.ActivityType do
  @moduledoc """
  This module and enclosed struct represent a activity type in pipedrive.
  """

  use TypedStruct
  use LineDrive.Structable

  @type key_string :: binary()

  typedstruct enforce: true do
    field :active_flag, boolean()
    field :add_time, NaiveDateTime.t()
    field :id, pos_integer()
    field :is_custom_flag, boolean()
    field :key_string, key_string()
    field :name, String.t()
    field :update_time, NaiveDateTime.t()
  end

  def handle_transform(map, _) do
    map
    |> Map.update(:add_time, nil, &parse_datetime/1)
    |> Map.update(:update_time, nil, &parse_datetime/1)
  end
end