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