Class: Sequel::Unbinder
- Inherits:
-
ASTTransformer
- Object
- ASTTransformer
- Sequel::Unbinder
- Defined in:
- lib/sequel/ast_transformer.rb
Overview
Unbinder
is used to take a dataset filter and return a modified version that unbinds already bound values and returns a dataset with bound value placeholders and a hash of bind values. You can then prepare the dataset and use the bound variables to execute it with the same values.
This class only does a limited form of unbinding where the variable names and values can be associated unambiguously. The only cases it handles are <tt>SQL::ComplexExpression<tt> with an operator in UNBIND_OPS
, a first argument that’s an instance of a member of UNBIND_KEY_CLASSES
, and a second argument that’s an instance of a member of UNBIND_VALUE_CLASSES
.
So it can handle cases like:
DB.filter(:a=>1).exclude(:b=>2).where{c > 3}
But it cannot handle cases like:
DB.filter(:a + 1 < 0)
Constant Summary collapse
- UNBIND_OPS =
The <tt>SQL::ComplexExpression<tt> operates that will be considered for transformation.
[:'=', :'!=', :<, :>, :<=, :>=]
- UNBIND_KEY_CLASSES =
The key classes (first argument of the ComplexExpression) that will considered for transformation.
[Symbol, SQL::Identifier, SQL::QualifiedIdentifier]
- UNBIND_VALUE_CLASSES =
The value classes (second argument of the ComplexExpression) that will be considered for transformation.
[Numeric, String, Date, Time]
Instance Attribute Summary collapse
-
#binds ⇒ Object
readonly
The hash of bind variables that were extracted from the dataset filter.
Instance Method Summary collapse
-
#initialize ⇒ Unbinder
constructor
Intialize an empty
binds
hash.
Methods inherited from ASTTransformer
Constructor Details
#initialize ⇒ Unbinder
Intialize an empty binds
hash.
162 163 164 |
# File 'lib/sequel/ast_transformer.rb', line 162 def initialize @binds = {} end |
Instance Attribute Details
#binds ⇒ Object (readonly)
The hash of bind variables that were extracted from the dataset filter.
159 160 161 |
# File 'lib/sequel/ast_transformer.rb', line 159 def binds @binds end |