Class: PG::BasicTypeRegistry::CoderMapsBundle
- Inherits:
-
Object
- Object
- PG::BasicTypeRegistry::CoderMapsBundle
- Defined in:
- lib/pg/basic_type_registry.rb
Overview
An instance of this class stores CoderMap instances to be used for text and binary wire formats as well as encoder and decoder directions.
A PG::BasicTypeRegistry::CoderMapsBundle instance retrieves all type definitions from the PostgreSQL server and matches them with the coder definitions of the global PG::BasicTypeRegistry . It provides 4 separate CoderMap instances for the combinations of the two formats and directions.
A PG::BasicTypeRegistry::CoderMapsBundle instance can be used to initialize an instance of
-
PG::BasicTypeMapForResults
-
PG::BasicTypeMapForQueries
-
PG::BasicTypeMapBasedOnResult
by passing it instead of the connection object like so:
conn = PG::Connection.new
maps = PG::BasicTypeRegistry::CoderMapsBundle.new(conn)
conn.type_map_for_results = PG::BasicTypeMapForResults.new(maps)
Instance Attribute Summary collapse
-
#typenames_by_oid ⇒ Object
readonly
Returns the value of attribute typenames_by_oid.
Instance Method Summary collapse
- #each_format(direction) ⇒ Object
-
#initialize(connection, registry: nil) ⇒ CoderMapsBundle
constructor
A new instance of CoderMapsBundle.
- #map_for(format, direction) ⇒ Object
Constructor Details
#initialize(connection, registry: nil) ⇒ CoderMapsBundle
Returns a new instance of CoderMapsBundle.
113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/pg/basic_type_registry.rb', line 113 def initialize(connection, registry: nil) registry ||= DEFAULT_TYPE_REGISTRY result = connection.exec(<<-SQL).to_a SELECT t.oid, t.typname, t.typelem, t.typdelim, ti.proname AS typinput FROM pg_type as t JOIN pg_proc as ti ON ti.oid = t.typinput SQL init_maps(registry, result.freeze) freeze end |
Instance Attribute Details
#typenames_by_oid ⇒ Object (readonly)
Returns the value of attribute typenames_by_oid.
111 112 113 |
# File 'lib/pg/basic_type_registry.rb', line 111 def typenames_by_oid @typenames_by_oid end |
Instance Method Details
#each_format(direction) ⇒ Object
142 143 144 |
# File 'lib/pg/basic_type_registry.rb', line 142 def each_format(direction) @maps.map { |f| f[direction] } end |
#map_for(format, direction) ⇒ Object
146 147 148 |
# File 'lib/pg/basic_type_registry.rb', line 146 def map_for(format, direction) @maps[format][direction] end |