View Source Warder.Query (warder v0.1.2)
ecto
Query Helper Functions
Postgres Functions and Operators: https://www.postgresql.org/docs/current/functions-range.html
Usage: require
or import
Warder.Query
Postgres Types
Make sure that you cast the types to the correct Postgres type. This can be
achieved by using Ecto.Query.API.type/2
or if the type is not directly
supported by ecto fragment("?::type", value)
.
Summary
Functions
Is first
adjacent to second
?
Is first
contained in second
?
Does first
contain second
?
Create difference of first
and second
.
Check if subject
is empty.
Create intersection of first
and second
.
Is first
strictly left of second
?
Get lower bound of range or multirange.
Check if lower of subject
is inclusive.
Check if lower of subject
is infinite.
Merge multirange into range.
Merge two ranges.
Create multirange from range.
Is first
not extend to the left of second
?
Is first
not extend to the right of second
?
Does first
overlap second
?
Is first
strictly right of second
?
Create union of first
and second
.
Unnest ranges from multirange.
Get upper bound of subject
.
Check if upper of subject
is inclusive.
Check if upper of subject
is infinite.
Functions
Is first
adjacent to second
?
Operator: -|-
Signatures
anyrange -|- anyrange → boolean
anymultirange -|- anymultirange → boolean
anymultirange -|- anyrange → boolean
anyrange -|- anymultirange → boolean
Examples
where(
q in query,
where: adjacent?(q.range, type(Warder.Range.new!(1, 7), q.range))
)
Is first
contained in second
?
Operator: <@
Signatures
anyrange <@ anyrange → boolean
anyelement <@ anyrange → boolean
anymultirange <@ anymultirange → boolean
anymultirange <@ anyrange → boolean
anyrange <@ anymultirange → boolean
anyelement <@ anymultirange → boolean
Examples
where(q in query, where: contained?(7, q.range))
Does first
contain second
?
Operator: @>
Signatures
anyrange @> anyrange → boolean
anyrange @> anyelement → boolean
anymultirange @> anymultirange → boolean
anymultirange @> anyrange → boolean
anymultirange @> anyelement → boolean
anyrange @> anymultirange → boolean
Examples
where(q in query, where: contains?(q.range, 7))
Create difference of first
and second
.
Operator: -
Signatures
anyrange - anyrange → anyrange
anymultirange - anymultirange → anymultirange
Examples
where(
q in query,
select: type(difference(q.range, ^Range.new!(10, 20)), q.range))
)
Check if subject
is empty.
Function: ISEMPTY
Signatures
isempty ( anyrange ) → boolean
isempty ( anymultirange ) → boolean
Examples
where(
q in query,
select: is_empty?(q.range)
)
Create intersection of first
and second
.
Operator: *
Signatures
anyrange * anyrange → anyrange
anymultirange * anymultirange → anymultirange
Examples
where(
q in query,
select: type(intersection(q.range, ^Range.new!(10, 20)), q.range))
)
Is first
strictly left of second
?
Operator: <<
Signatures
anyrange << anyrange → boolean
anymultirange << anymultirange → boolean
anymultirange << anyrange → boolean
anyrange << anymultirange → boolean
Examples
where(
q in query,
where: left?(q.range, type(Warder.Range.new!(1, 7), q.range))
)
Get lower bound of range or multirange.
Function: LOWER
Signatures
lower ( anyrange ) → anyelement
lower ( anymultirange ) → anyelement
Examples
where(
q in query,
select: lower(q.range)
)
Check if lower of subject
is inclusive.
Function: LOWER_INC
Signatures
lower_inc ( anyrange ) → boolean
lower_inc ( anymultirange ) → boolean
Examples
where(
q in query,
select: is_lower_inclusive?(q.range)
)
Check if lower of subject
is infinite.
Function: LOWER_INF
Signatures
lower_inf ( anyrange ) → boolean
lower_inf ( anymultirange ) → boolean
Examples
where(
q in query,
select: is_lower_infinite?(q.range)
)
Merge multirange into range.
Function: RANGE_MERGE
Signatures
range_merge ( anymultirange ) → anyrange
Examples
where(
q in query,
select: merge_multirange(q.multirange)
)
Merge two ranges.
Function: RANGE_MERGE
Signatures
range_merge ( anyrange, anyrange ) → anyrange
Examples
where(
q in query,
select: merge_ranges(q.range, q.range)
)
Create multirange from range.
Function: MULTIRANGE
Signatures
multirange ( anyrange ) → anymultirange
Examples
where(
q in query,
select: multirange(q.range)
)
Is first
not extend to the left of second
?
Operator: &>
Signatures
anyrange &> anyrange → boolean
anymultirange &> anymultirange → boolean
anymultirange &> anyrange → boolean
anyrange &> anymultirange → boolean
Examples
where(
q in query,
where: no_extend_left?(q.range, type(Warder.Range.new!(1, 7), q.range))
)
Is first
not extend to the right of second
?
Operator: &<
Signatures
anyrange &< anyrange → boolean
anymultirange &< anymultirange → boolean
anymultirange &< anyrange → boolean
anyrange &< anymultirange → boolean
Examples
where(
q in query,
where: no_extend_right?(q.range, type(Warder.Range.new!(1, 7), q.range))
)
Does first
overlap second
?
Operator: &&
Signatures
anyrange && anyrange → boolean
anymultirange && anymultirange → boolean
anymultirange && anyrange → boolean
anyrange && anymultirange → boolean
Examples
where(
q in query,
where: overlap?(q.range, type(Warder.Range.new!(1, 7), q.range))
)
Is first
strictly right of second
?
Operator: >>
Signatures
anyrange >> anyrange → boolean
anymultirange >> anymultirange → boolean
anymultirange >> anyrange → boolean
anyrange >> anymultirange → boolean
Examples
where(
q in query,
where: right?(q.range, type(Warder.Range.new!(1, 7), q.range))
)
Create union of first
and second
.
Operator: +
Signatures
anyrange + anyrange → anyrange
anymultirange + anymultirange → anymultirange
Examples
where(
q in query,
select: type(union(q.range, ^Range.new!(10, 20)), q.range))
)
Unnest ranges from multirange.
Function: UNNEST
Signatures
unnest ( anymultirange ) → setof anyrange
Examples
where(
q in query,
cross_join: r in unnest(q.multirange),
select: r
)
Get upper bound of subject
.
Function: UPPER
Signatures
upper ( anyrange ) → anyelement
upper ( anymultirange ) → anyelement
Examples
where(
q in query,
select: upper(q.range)
)
Check if upper of subject
is inclusive.
Function: UPPER_INC
Signatures
upper_inc ( anyrange ) → boolean
upper_inc ( anymultirange ) → boolean
Examples
where(
q in query,
select: is_upper_inclusive?(q.range)
)
Check if upper of subject
is infinite.
Function: UPPER_INF
Signatures
upper_inf ( anyrange ) → boolean
upper_inf ( anymultirange ) → boolean
Examples
where(
q in query,
select: is_upper_infinite?(q.range)
)