Current section

Files

Jump to
ravix lib rql tokens select.ex
Raw

lib/rql/tokens/select.ex

defmodule Ravix.RQL.Tokens.Select do
@moduledoc false
defstruct [
:token,
:fields
]
alias Ravix.RQL.Tokens.Select
@type field_name :: atom() | String.t()
@type field_alias :: String.t()
@type allowed_select_params ::
list(field_name() | {field_name(), field_alias()})
| field_name()
| {field_name(), field_alias()}
@type t :: %Select{
token: atom(),
fields: list(field_name() | {field_name(), field_alias()})
}
@spec fields(allowed_select_params()) :: Select.t()
def fields(fields) when is_list(fields) do
%Select{
token: :select,
fields: fields
}
end
def fields(field) do
%Select{
token: :select,
fields: [field]
}
end
@spec function(Keyword.t()) :: Select.t()
def function(to) when is_list(to) do
%Select{
token: :select_function,
fields: to
}
end
end