Used to set up context API.
changeset() :: map()
user() :: map()
authenticate(map()) :: user() | nil
create(map()) :: {:ok, user()} | {:error, changeset()}
delete(user()) :: {:ok, user()} | {:error, changeset()}
get_by(Keyword.t() | map()) :: user() | nil
update(user(), map()) :: {:ok, user()} | {:error, changeset()}