Class: Sequel::Postgres::AutoParameterize::QueryString
- Defined in:
- lib/sequel/extensions/pg_auto_parameterize.rb
Overview
SQL query string that also holds an array of parameters
Instance Attribute Summary collapse
-
#args ⇒ Object
readonly
The array of parameters used by this query.
Instance Method Summary collapse
-
#+(other) ⇒ Object
Return a new QueryString with the given string appended to the receiver, and the same arguments.
-
#add_arg(s) ⇒ Object
Add a new parameter to this query, which adds the parameter to the array of parameters, and an SQL placeholder to the query itself.
-
#auto_param? ⇒ Boolean
Whether this query string currently supports automatic parameterization.
-
#freeze ⇒ Object
Freeze the stored arguments when freezing the query string.
- #initialize_copy(other) ⇒ Object
-
#inspect ⇒ Object
Show args when the query string is inspected.
-
#skip_auto_param ⇒ Object
Skip automatic parameterization inside the passed block.
Methods inherited from String
#blank?, #camelize, #classify, #constantize, #dasherize, #demodulize, #foreign_key, #humanize, inflections, #lit, #pluralize, #singularize, #tableize, #titleize, #to_date, #to_datetime, #to_sequel_blob, #to_sequel_time, #to_time, #underscore
Methods included from SQL::CastMethods
#cast, #cast_numeric, #cast_string
Methods included from SQL::AliasMethods
Instance Attribute Details
#args ⇒ Object (readonly)
The array of parameters used by this query.
101 102 103 |
# File 'lib/sequel/extensions/pg_auto_parameterize.rb', line 101 def args @args end |
Instance Method Details
#+(other) ⇒ Object
Return a new QueryString with the given string appended to the receiver, and the same arguments.
122 123 124 125 126 |
# File 'lib/sequel/extensions/pg_auto_parameterize.rb', line 122 def +(other) v = self.class.new(super) v.instance_variable_set(:@args, @args) if @args v end |
#add_arg(s) ⇒ Object
Add a new parameter to this query, which adds the parameter to the array of parameters, and an SQL placeholder to the query itself.
106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/sequel/extensions/pg_auto_parameterize.rb', line 106 def add_arg(s) unless defined?(@args) @args = [] @arg_map = {} @arg_map.compare_by_identity end unless pos = @arg_map[s] @args << s pos = @arg_map[s] = @args.length.to_s end self << '$' << pos end |
#auto_param? ⇒ Boolean
Whether this query string currently supports automatic parameterization. Automatic parameterization is disabled at certain points during query building where PostgreSQL does not support it.
132 133 134 |
# File 'lib/sequel/extensions/pg_auto_parameterize.rb', line 132 def auto_param? !@skip_auto_param end |
#freeze ⇒ Object
Freeze the stored arguments when freezing the query string.
150 151 152 153 154 155 156 |
# File 'lib/sequel/extensions/pg_auto_parameterize.rb', line 150 def freeze if @args @args.freeze @arg_map.freeze end super end |
#initialize_copy(other) ⇒ Object
163 164 165 166 167 168 169 |
# File 'lib/sequel/extensions/pg_auto_parameterize.rb', line 163 def initialize_copy(other) super if args = other.instance_variable_get(:@args) @args = args.dup @arg_map = other.instance_variable_get(:@arg_map).dup end end |
#inspect ⇒ Object
Show args when the query string is inspected
159 160 161 |
# File 'lib/sequel/extensions/pg_auto_parameterize.rb', line 159 def inspect @args ? "#{self}; #{@args.inspect}".inspect : super end |
#skip_auto_param ⇒ Object
Skip automatic parameterization inside the passed block. This is used during query generation to disable automatic parameterization for clauses not supporting it.
139 140 141 142 143 144 145 146 147 |
# File 'lib/sequel/extensions/pg_auto_parameterize.rb', line 139 def skip_auto_param skip_auto_param = @skip_auto_param begin @skip_auto_param = true yield ensure @skip_auto_param = skip_auto_param end end |