Ecto.ParameterizedType for the PostgreSQL composite type
tempo_multirange — a tstzmultirange paired with a
resolution string and jsonb metadata that together round-
trip a set, or any expression of several spans with ISO 8601 text,
without information loss.
CREATE TYPE tempo_multirange AS (
ranges tstzmultirange,
resolution text,
meta jsonb
);A floating expression, with no zone and no time shift, is kept in
tempo_floating_multirange, the same with a tsmultirange for its
ranges: a field declared with frame: :floating.
The meta column stores the set as a JSON document keyed by member index, so qualifications, recurrence state, and other per-member facts survive the round-trip.
See Tempo.Ecto.TempoRange for the setup and query
conventions.
Summary
Functions
Builds the parameterized-type tuple for use outside a schema.
Functions
@spec cast_type(keyword()) :: Ecto.Type.t()
Builds the parameterized-type tuple for use outside a schema.
See Tempo.Ecto.Interval.cast_type/1 for the schema-side
equivalent and the full discussion.
Arguments
optionsis a keyword list of options.
Options
:resolutiontruncates the endpoints recorded in the composite to the given component. One of:year,:month,:day,:hour,:minute, or:second. Defaults to:second.:frameis:utc(the default) for atempo_multirangecolumn, or:floatingfor atempo_floating_multirangecolumn.
Returns
- A
Ecto.ParameterizedType.opts/0tuple.
Examples
iex> Tempo.Ecto.TempoMultirange.cast_type()
{:parameterized, {Tempo.Ecto.TempoMultirange, %{frame: :utc, resolution: :second}}}
iex> Tempo.Ecto.TempoMultirange.cast_type(resolution: :day, frame: :floating)
{:parameterized, {Tempo.Ecto.TempoMultirange, %{frame: :floating, resolution: :day}}}