Method: Sequel::Postgres::PGRow::DatabaseMethods#row_type

Defined in:
lib/sequel/extensions/pg_row.rb

#row_type(db_type, obj) ⇒ Object

Handle typecasting of the given object to the given database type. In general, the given database type should already be registered, but if obj is an array, this will handled unregistered types.



514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
# File 'lib/sequel/extensions/pg_row.rb', line 514

def row_type(db_type, obj)
  (type_hash = @row_types[literal(db_type)]) &&
    (parser = type_hash[:parser])

  case obj
  when ArrayRow, HashRow
    obj
  when Array
    if parser
      parser.typecast(obj)
    else
      obj = ArrayRow.new(obj)
      obj.db_type = db_type
      obj
    end
  when Hash
    if parser 
      parser.typecast(obj)
    else
      raise InvalidValue, "Database#row_type requires the #{db_type.inspect} type have a registered parser and typecaster when called with a hash"
    end
  else
    raise InvalidValue, "cannot convert #{obj.inspect} to row type #{db_type.inspect}"
  end
end