gloo/query

Single-table query builder. Use query.from(table) to start, then pipe through where, order_by, limit, offset, insert, update, or delete. A Query(t) is an inert value — it only executes when passed to a repo function (repo.query_all, repo.query_one, etc.).

Available predicates: Eq, Neq, Gt, Gte, Lt, Lte, In, Like, IsNull, IsNotNull, And, Or, Not.

Types

pub type Condition {
  Eq(column: String, value: value.GlooValue)
  Neq(column: String, value: value.GlooValue)
  Gt(column: String, value: value.GlooValue)
  Gte(column: String, value: value.GlooValue)
  Lt(column: String, value: value.GlooValue)
  Lte(column: String, value: value.GlooValue)
  In(column: String, values: List(value.GlooValue))
  Like(column: String, pattern: String)
  IsNull(column: String)
  IsNotNull(column: String)
  And(List(Condition))
  Or(List(Condition))
  Not(Condition)
}

Constructors

pub type Direction {
  Asc
  Desc
}

Constructors

  • Asc
  • Desc
pub opaque type Query(t)

Values

pub fn decoder(query: Query(t)) -> decode.Decoder(t)
pub fn delete(query: Query(t)) -> Query(t)
pub fn from(table: schema.Table(t)) -> Query(t)
pub fn insert(
  query: Query(t),
  table: schema.Table(t),
  row: List(#(String, value.GlooValue)),
) -> Query(t)
pub fn limit(query: Query(t), n: Int) -> Query(t)
pub fn offset(query: Query(t), n: Int) -> Query(t)
pub fn order_by(
  query: Query(t),
  column: String,
  direction: Direction,
) -> Query(t)
pub fn returning(
  query: Query(t),
  decoder: decode.Decoder(u),
) -> Query(u)
pub fn returning_columns(
  query: Query(t),
  cols: List(String),
) -> Query(t)
pub fn to_sql(
  query: Query(t),
) -> #(String, List(value.GlooValue))
pub fn update(
  query: Query(t),
  sets: List(#(String, value.GlooValue)),
) -> Query(t)
pub fn where(query: Query(t), condition: Condition) -> Query(t)
Search Document