View Source Warder.Query (warder v0.1.0)

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

Link to this macro

adjacent?(first, second)

View Source (since 0.1.0) (macro)

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))
)
Link to this macro

contained?(first, second)

View Source (since 0.1.0) (macro)

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))
Link to this macro

contains?(first, second)

View Source (since 0.1.0) (macro)

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))
Link to this macro

difference(first, second)

View Source (since 0.1.0) (macro)

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))
)
Link to this macro

empty?(subject)

View Source (since 0.1.0) (macro)

Check if subject is empty.

Function: ISEMPTY

Signatures

  • isempty ( anyrange ) → boolean
  • isempty ( anymultirange ) → boolean

Examples

where(
  q in query,
  select: is_empty?(q.range)
)
Link to this macro

intersection(first, second)

View Source (since 0.1.0) (macro)

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))
)
Link to this macro

left?(first, second)

View Source (since 0.1.0) (macro)

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))
)
Link to this macro

lower(subject)

View Source (since 0.1.0) (macro)

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)
)
Link to this macro

lower_inclusive?(subject)

View Source (since 0.1.0) (macro)

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)
)
Link to this macro

lower_infinite?(subject)

View Source (since 0.1.0) (macro)

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)
)
Link to this macro

merge_multirange(subject)

View Source (since 0.1.0) (macro)

Merge multirange into range.

Function: RANGE_MERGE

Signatures

  • range_merge ( anymultirange ) → anyrange

Examples

where(
  q in query,
  select: merge_multirange(q.multirange)
)
Link to this macro

merge_ranges(first, second)

View Source (since 0.1.0) (macro)

Merge two ranges.

Function: RANGE_MERGE

Signatures

  • range_merge ( anyrange, anyrange ) → anyrange

Examples

where(
  q in query,
  select: merge_ranges(q.range, q.range)
)
Link to this macro

multirange(subject)

View Source (since 0.1.0) (macro)

Create multirange from range.

Function: MULTIRANGE

Signatures

  • multirange ( anyrange ) → anymultirange

Examples

where(
  q in query,
  select: multirange(q.range)
)
Link to this macro

no_extend_left?(first, second)

View Source (since 0.1.0) (macro)

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))
)
Link to this macro

no_extend_right?(first, second)

View Source (since 0.1.0) (macro)

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))
)
Link to this macro

overlap?(first, second)

View Source (since 0.1.0) (macro)

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))
)
Link to this macro

right?(first, second)

View Source (since 0.1.0) (macro)

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))
)
Link to this macro

union(first, second)

View Source (since 0.1.0) (macro)

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))
)
Link to this macro

unnest(subject)

View Source (since 0.1.0) (macro)

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
)
Link to this macro

upper(subject)

View Source (since 0.1.0) (macro)

Get upper bound of subject.

Function: UPPER

Signatures

  • upper ( anyrange ) → anyelement
  • upper ( anymultirange ) → anyelement

Examples

where(
  q in query,
  select: upper(q.range)
)
Link to this macro

upper_inclusive?(subject)

View Source (since 0.1.0) (macro)

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)
)
Link to this macro

upper_infinite?(subject)

View Source (since 0.1.0) (macro)

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)
)