ChangesetMerger v0.4.2 ChangesetMerger.ExpiresAt View Source

Several helper functions to generate date/time values to represent an expiring value.

Link to this section Summary

Link to this section Functions

Link to this function

defaulted(changeset, field, num, units) View Source

Add a token to your changeset if none is already set

Examples

iex> ChangesetMerger.create(%{"token_expires_at" => ChangesetMerger.ExpiresAt.from_iso8601("2015-09-21T04:50:34-05:00")}, %{token_expires_at: :utc_datetime})
...> |> ChangesetMerger.ExpiresAt.defaulted(:token_expires_at, "2017-09-21T04:50:34-05:00", 1, :days)
...> |> Map.get(:changes)
...> |> Map.get(:token_expires_at)
#DateTime<2015-09-21 09:50:34Z>

iex> ChangesetMerger.create(%{"token_expires_at" => nil}, %{token_expires_at: :utc_datetime})
...> |> ChangesetMerger.ExpiresAt.defaulted(:token_expires_at, "2017-09-21T04:50:34-05:00", 1, :days)
...> |> Map.get(:changes)
...> |> Map.get(:token_expires_at)
#DateTime<2017-09-22 09:50:34Z>
Link to this function

defaulted(changeset, field, start_date_time, num, units) View Source

Link to this function

force(changeset, field, num, units) View Source

Set a new token to your changeset

Examples

iex> ChangesetMerger.create(%{"token_expires_at" => ChangesetMerger.ExpiresAt.from_iso8601("2015-09-21T04:50:34-05:00")}, %{token_expires_at: :utc_datetime})
...> |> ChangesetMerger.ExpiresAt.force(:token_expires_at, "2017-09-21T04:50:34-05:00", 1, :days)
...> |> Map.get(:changes)
...> |> Map.get(:token_expires_at)
#DateTime<2017-09-22 09:50:34Z>

iex> ChangesetMerger.create(%{"token_expires_at" => nil}, %{token_expires_at: :utc_datetime})
...> |> ChangesetMerger.ExpiresAt.force(:token_expires_at, "2017-09-21T04:50:34-05:00", 1, :days)
...> |> Map.get(:changes)
...> |> Map.get(:token_expires_at)
#DateTime<2017-09-22 09:50:34Z>
Link to this function

force(changeset, field, start_date_time, num, units) View Source

Generate an unguessable (non incremented) public token_expires_at

Examples

iex> ChangesetMerger.ExpiresAt.generate("2017-09-21T04:50:34-05:00", 2, :days)
#DateTime<2017-09-23 09:50:34Z>

iex> ChangesetMerger.ExpiresAt.generate("2017-09-21T04:50:34-05:00", 3, :minutes)
#DateTime<2017-09-21 09:53:34Z>

iex> ChangesetMerger.ExpiresAt.generate("2019-02-04 21:40:15.397138Z", 3, :minutes)
#DateTime<2019-02-04 21:43:15Z>
Link to this function

generate(start_date_time, num, units) View Source