| Module | Sequel::Postgres::InetDatabaseMethods |
| In: |
lib/sequel/extensions/pg_inet.rb
|
Methods enabling Database object integration with the inet/cidr types.
Reset the conversion procs when extending the Database object, so it will pick up the inet/cidr converter. Also, extend the datasets with support for literalizing the IPAddr types.
# File lib/sequel/extensions/pg_inet.rb, line 40
40: def self.extended(db)
41: db.instance_exec do
42: extend_datasets(InetDatasetMethods)
43: meth = IPAddr.method(:new)
44: add_conversion_proc(869, meth)
45: add_conversion_proc(650, meth)
46: if respond_to?(:register_array_type)
47: register_array_type('inet', :oid=>1041, :scalar_oid=>869)
48: register_array_type('cidr', :oid=>651, :scalar_oid=>650)
49: register_array_type('macaddr', :oid=>1040, :scalar_oid=>829)
50: end
51: @schema_type_classes[:ipaddr] = IPAddr
52: end
53: end
Convert an IPAddr arg to a string. Probably not necessary, but done for safety.
# File lib/sequel/extensions/pg_inet.rb, line 57
57: def bound_variable_arg(arg, conn)
58: case arg
59: when IPAddr
60: "#{arg.to_s}/#{arg.instance_variable_get(:@mask_addr).to_s(2).count('1')}"
61: else
62: super
63: end
64: end