module Sequel::IdentifierMangling::DatabaseMethods
Attributes
The identifier input method to use by default for this database (default: adapter default)
The identifier output method to use by default for this database (default: adapter default)
Public Class Methods
# File lib/sequel/extensions/identifier_mangling.rb, line 51 def self.extended(db) db.instance_exec do @identifier_input_method = nil @identifier_output_method = nil @quote_identifiers = nil reset_identifier_mangling extend_datasets(DatasetMethods) end end
Public Instance Methods
Set the method to call on identifiers going into the database:
DB[:items] # SELECT * FROM items DB.identifier_input_method = :upcase DB[:items] # SELECT * FROM ITEMS
# File lib/sequel/extensions/identifier_mangling.rb, line 72 def identifier_input_method=(v) reset_default_dataset @identifier_input_method = v end
Set the method to call on identifiers coming from the database:
DB[:items].first # {:id=>1, :name=>'foo'} DB.identifier_output_method = :upcase DB[:items].first # {:ID=>1, :NAME=>'foo'}
# File lib/sequel/extensions/identifier_mangling.rb, line 82 def identifier_output_method=(v) reset_default_dataset @identifier_output_method = v end
Set whether to quote identifiers (columns and tables) for this database:
DB[:items] # SELECT * FROM items DB.quote_identifiers = true DB[:items] # SELECT * FROM "items"
# File lib/sequel/extensions/identifier_mangling.rb, line 92 def quote_identifiers=(v) reset_default_dataset @quote_identifiers = v end
Returns true if the database quotes identifiers.
# File lib/sequel/extensions/identifier_mangling.rb, line 98 def quote_identifiers? @quote_identifiers end
Private Instance Methods
Return a dataset that uses the default identifier input and output methods for this database. Used when parsing metadata so that column symbols are returned as expected.
# File lib/sequel/extensions/identifier_mangling.rb, line 107 def _metadata_dataset super. with_identifier_input_method(identifier_input_method_default). with_identifier_output_method(identifier_output_method_default) end
Upcase identifiers on input if database folds unquoted identifiers to uppercase.
# File lib/sequel/extensions/identifier_mangling.rb, line 115 def identifier_input_method_default return super if defined?(super) :upcase if folds_unquoted_identifiers_to_uppercase? end
Downcase identifiers on output if database folds unquoted identifiers to uppercase.
# File lib/sequel/extensions/identifier_mangling.rb, line 122 def identifier_output_method_default return super if defined?(super) :downcase if folds_unquoted_identifiers_to_uppercase? end
Reset the identifier mangling options. Overrides any already set on the instance. Only for internal use by shared adapters.
# File lib/sequel/extensions/identifier_mangling.rb, line 129 def reset_identifier_mangling # SEQUEL5: Stop checking Database.* @quote_identifiers = @opts.fetch(:quote_identifiers){(qi = Database.quote_identifiers).nil? ? quote_identifiers_default : qi} @identifier_input_method = @opts.fetch(:identifier_input_method){(iim = Database.identifier_input_method).nil? ? identifier_input_method_default : (iim if iim)} @identifier_output_method = @opts.fetch(:identifier_output_method){(iom = Database.identifier_output_method).nil? ? identifier_output_method_default : (iom if iom)} reset_default_dataset end