Alembic v4.0.0 Alembic.Fetch.Sort View Source
An individual sort in an Alembic.Fetch.Sorts.t
Link to this section Summary
Types
The name of an attribute on the primary data or relationship to sort
The direction to sort. Default to :ascending
per the JSONAPI spec. Can be :descending
when the dot-separated
attribute path is prefixed with -
:attribute
- the name of the attribute to sort:direction
- the direction to sort:attribute
. Defaults to:ascending
. Can also be:descending
.:relationship
- the path to the relationship:attribute
is on.nil
means the attribute is on the primary data
Functions
Breaks the (optionally prefixed) attribute path into a t
Converts a sort back to the string format parsed by from_string/1
Link to this section Types
The name of an attribute on the primary data or relationship to sort
The direction to sort. Default to :ascending
per the JSONAPI spec. Can be :descending
when the dot-separated
attribute path is prefixed with -
.
t() :: %Alembic.Fetch.Sort{ attribute: attribute_name(), direction: direction(), relationship: Alembic.Fetch.Includes.include() | nil }
:attribute
- the name of the attribute to sort:direction
- the direction to sort:attribute
. Defaults to:ascending
. Can also be:descending
.:relationship
- the path to the relationship:attribute
is on.nil
means the attribute is on the primary data
Link to this section Functions
Breaks the (optionally prefixed) attribute path into a t
.
A single attribute name will have the default direction of :ascending
and no :relationship
iex> Alembic.Fetch.Sort.from_string("inserted-at")
%Alembic.Fetch.Sort{attribute: "inserted-at", direction: :ascending, relationship: nil}
An attribute name with -
before it will have the direction reversed to :descending
.
iex> Alembic.Fetch.Sort.from_string("-inserted-at")
%Alembic.Fetch.Sort{attribute: "inserted-at", direction: :descending, relationship: nil}
In a dot-separated sequence of names, the final name is the attribute name and all preceding names are a relationship
path in the same format as Alembic.RelationshipPath
iex> Alembic.Fetch.Sort.from_string("author.name")
%Alembic.Fetch.Sort{attribute: "name", direction: :ascending, relationship: "author"}
iex> Alembic.Fetch.Sort.from_string("comments.author.posts.inserted-at")
%Alembic.Fetch.Sort{
attribute: "inserted-at",
direction: :ascending,
relationship: %{
"comments" => %{
"author" => "posts"
}
}
}
Converts a sort back to the string format parsed by from_string/1
A t
with nil
relationship and the default direction of :ascending
is only the attribute
iex> Alembic.Fetch.Sort.to_string(
...> %Alembic.Fetch.Sort{attribute: "inserted-at", relationship: nil}
...> )
"inserted-at"
A t
with direction of :descending
will have a "-"
prefix
iex> Alembic.Fetch.Sort.to_string(
...> %Alembic.Fetch.Sort{attribute: "inserted-at", direction: :descending, relationship: nil}
...> )
"-inserted-at"
When there is a relationship, it is converted to a path in front of the attribute name, but after the direction prefix
iex> Alembic.Fetch.Sort.to_string(
...> %Alembic.Fetch.Sort{attribute: "inserted-at", direction: :descending, relationship: "comments"}
...> )
"-comments.inserted-at"
Farther relationships are dot-separated
iex> Alembic.Fetch.Sort.to_string(
...> %Alembic.Fetch.Sort{
...> attribute: "inserted-at",
...> direction: :descending,
...> relationship: %{
...> "comments" => %{
...> "author" => "posts"
...> }
...> }
...> }
...> )
"-comments.author.posts.inserted-at"