module Sequel::IdentifierMangling::DatabaseMethods

Attributes

identifier_input_method[R]

The identifier input method to use by default for this database (default: adapter default)

identifier_output_method[R]

The identifier output method to use by default for this database (default: adapter default)

Public Class Methods

extended(db) click to toggle source
# 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

identifier_input_method=(v) click to toggle source

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
identifier_output_method=(v) click to toggle source

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
quote_identifiers=(v) click to toggle source

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
quote_identifiers?() click to toggle source

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

_metadata_dataset() click to toggle source

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.

Calls superclass method
# 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
identifier_input_method_default() click to toggle source

Upcase identifiers on input if database folds unquoted identifiers to uppercase.

Calls superclass method
# 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
identifier_output_method_default() click to toggle source

Downcase identifiers on output if database folds unquoted identifiers to uppercase.

Calls superclass method
# 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_identifier_mangling() click to toggle source

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