Class Sequel::Postgres::PGRow::HashRow
In: lib/sequel/extensions/pg_row.rb
Parent: DelegateClass(Hash)

Class for row-valued/composite types that are treated as hashes. Types registered via Database#register_row_type will use this class by default.

Methods

Included Modules

Sequel::SQL::AliasMethods

External Aliases

new -> call
  Alias new to call, so that the class itself can be used directly as a converter.
__getobj__ -> to_hash
  Return the underlying hash for this delegate object.

Attributes

columns  [RW]  The columns associated with this class.
columns  [W]  Sets the columns associated with this instance. This is used to override the class‘s default columns.
db_type  [RW]  The database type for this class. May be nil if this class done not have a specific database type.
db_type  [W]  Sets the database type associated with this instance. This is used to override the class‘s default database type.

Public Class methods

Create a new subclass of this class with the given database type and columns.

[Source]

     # File lib/sequel/extensions/pg_row.rb, line 162
162:         def self.subclass(db_type, columns)
163:           Class.new(self) do
164:             @db_type = db_type
165:             @columns = columns
166:           end
167:         end

Public Instance methods

Check that the HashRow has valid columns. This should be used before all attempts to literalize the object, since literalization depends on the columns to get the column order.

[Source]

     # File lib/sequel/extensions/pg_row.rb, line 195
195:         def check_columns!
196:           if columns.nil? || columns.empty?
197:             raise Error, 'cannot literalize HashRow without columns'
198:           end
199:         end

Return the instance‘s columns, or the class‘s columns if the instance has not overridden it.

[Source]

     # File lib/sequel/extensions/pg_row.rb, line 182
182:         def columns
183:           @columns || self.class.columns
184:         end

Return the instance‘s database type, or the class‘s columns if the instance has not overridden it.

[Source]

     # File lib/sequel/extensions/pg_row.rb, line 188
188:         def db_type
189:           @db_type || self.class.db_type
190:         end

Append SQL fragment related to this object to the sql.

[Source]

     # File lib/sequel/extensions/pg_row.rb, line 202
202:         def sql_literal_append(ds, sql)
203:           check_columns!
204:           sql << 'ROW'
205:           ds.literal_append(sql, values_at(*columns))
206:           if db_type
207:             sql << '::'
208:             ds.quote_schema_table_append(sql, db_type)
209:           end
210:         end

[Validate]