Class: Sequel::Postgres::JSONTableOp
- Inherits:
- 
      SQL::Expression
      
        - Object
- SQL::Expression
- Sequel::Postgres::JSONTableOp
 
- Defined in:
- lib/sequel/extensions/pg_json_ops.rb
Overview
Object representing json_table calls
Instance Method Summary collapse
- 
  
    
      #initialize(expr, path, opts = OPTS, &block)  ⇒ JSONTableOp 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    See JSONBaseOp#table for documentation on the options. 
- 
  
    
      #sequel_ast_transform(transformer)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Support transforming of json_table expression. 
- 
  
    
      #to_s_append(ds, sql)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Append the json_table function call expression to the SQL. 
Methods inherited from SQL::Expression
#==, attr_reader, #clone, #eql?, #hash, inherited, #inspect
Constructor Details
#initialize(expr, path, opts = OPTS, &block) ⇒ JSONTableOp
See JSONBaseOp#table for documentation on the options.
| 1224 1225 1226 1227 1228 1229 1230 1231 | # File 'lib/sequel/extensions/pg_json_ops.rb', line 1224 def initialize(expr, path, opts=OPTS, &block) @expr = expr @path = path @passing = opts[:passing] @on_error = opts[:on_error] @columns = opts[:_columns] || ColumnDSL.columns(&block) freeze end | 
Instance Method Details
#sequel_ast_transform(transformer) ⇒ Object
Support transforming of json_table expression
| 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 | # File 'lib/sequel/extensions/pg_json_ops.rb', line 1260 def sequel_ast_transform(transformer) opts = {:on_error=>@on_error, :_columns=>@columns} if @passing passing = opts[:passing] = {} @passing.each do |k, v| passing[k] = transformer.call(v) end end self.class.new(transformer.call(@expr), @path, opts) end | 
#to_s_append(ds, sql) ⇒ Object
Append the json_table function call expression to the SQL
| 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 | # File 'lib/sequel/extensions/pg_json_ops.rb', line 1234 def to_s_append(ds, sql) sql << 'json_table(' ds.literal_append(sql, @expr) sql << ', ' default_literal_append(ds, sql, @path) if (passing = @passing) && !passing.empty? sql << ' PASSING ' comma = false passing.each do |k, v| if comma sql << ', ' else comma = true end ds.literal_append(sql, v) sql << " AS " << k.to_s end end to_s_append_columns(ds, sql, @columns) sql << TABLE_ON_ERROR_SQL.fetch(@on_error) if @on_error sql << ')' end |