lib/line_drive/user.ex
defmodule LineDrive.User do
@moduledoc """
This module represents a user in pipedrive.
"""
use TypedStruct
use LineDrive.Structable
typedstruct do
field :id, pos_integer()
field :name, String.t()
field :email, String.t(), enforce: true
field :active_flag, boolean(), default: true
end
def new(nil) do
struct(__MODULE__)
end
def new(int) when is_integer(int) do
struct(__MODULE__, %{id: int})
end
def new(map) do
map
|> atomize_keys()
|> then(&struct(__MODULE__, &1))
end
end