class Query

Public Class Methods

new(**ctx, &block) click to toggle source
# File lib/eno/query.rb, line 9
def initialize(**ctx, &block)
  @ctx = ctx
  @block = block
end

Public Instance Methods

"^"(*queries, **props, &block)
Alias for: except
&(*queries, **props, &block)
Alias for: intersect
as(sym) click to toggle source
# File lib/eno/query.rb, line 19
def as(sym)
  Expressions::Alias.new(self, sym)
end
except(*queries, **props, &block) click to toggle source
# File lib/eno/query.rb, line 61
def except(*queries, **props, &block)
  q1 = self
  queries << Query.new(&block) if queries.empty?
  Query.new(@ctx) { except q1, *queries, **props }
end
Also aliased as: "^"
except_all(*queries, &block) click to toggle source
# File lib/eno/query.rb, line 68
def except_all(*queries, &block)
  except(*queries, all: true, &block)
end
intersect(*queries, **props, &block) click to toggle source
# File lib/eno/query.rb, line 50
def intersect(*queries, **props, &block)
  q1 = self
  queries << Query.new(&block) if queries.empty?
  Query.new(@ctx) { intersect q1, *queries, **props }
end
Also aliased as: &
intersect_all(*queries, &block) click to toggle source
# File lib/eno/query.rb, line 57
def intersect_all(*queries, &block)
  intersect(*queries, all: true, &block)
end
mutate(&block) click to toggle source
# File lib/eno/query.rb, line 31
def mutate(&block)
  old_block = @block
  Query.new(@ctx) {
    instance_eval(&old_block)
    instance_eval(&block)
  }
end
to_sql(escape_proc: nil, **ctx) click to toggle source
# File lib/eno/query.rb, line 14
def to_sql(escape_proc: nil, **ctx)
  r = SQL::SQL.new(escape_proc: escape_proc, **@ctx.merge(ctx))
  r.to_sql(&@block)
end
union(*queries, **props, &block) click to toggle source
# File lib/eno/query.rb, line 39
def union(*queries, **props, &block)
  q1 = self
  queries << Query.new(&block) if queries.empty?
  Query.new(@ctx) { union q1, *queries, **props }
end
Also aliased as: |
union_all(*queries, &block) click to toggle source
# File lib/eno/query.rb, line 46
def union_all(*queries, &block)
  union(*queries, all: true, &block)
end
where(&block) click to toggle source
# File lib/eno/query.rb, line 23
def where(&block)
  old_block = @block
  Query.new(@ctx) {
    instance_eval(&old_block)
    where instance_eval(&block)
  }
end
|(*queries, **props, &block)
Alias for: union