Sha256: 57fe7393e97aba1dbd8646f74f041fb70432c9286c8a94bb81699e8386096843

Contents?: true

Size: 1.93 KB

Versions: 21

Compression:

Stored size: 1.93 KB

Contents

module ActiveRecord
  module ConnectionAdapters
    module SQLServer
      module DatabaseTasks

        def create_database(database, options = {})
          name = SQLServer::Utils.extract_identifiers(database)
          db_options = create_database_options(options)
          edition_options = create_database_edition_options(options)
          do_execute "CREATE DATABASE #{name} #{db_options} #{edition_options}"
        end

        def drop_database(database)
          name = SQLServer::Utils.extract_identifiers(database)
          do_execute "DROP DATABASE #{name}"
        end

        def current_database
          select_value 'SELECT DB_NAME()'
        end

        def charset
          select_value "SELECT DATABASEPROPERTYEX(DB_NAME(), 'SqlCharSetName')"
        end

        def collation
          @collation ||= select_value "SELECT DATABASEPROPERTYEX(DB_NAME(), 'Collation')"
        end

        private

        def create_database_options(options={})
          keys  = [:collate]
          copts = @connection_options
          options = {
            collate: copts[:collation]
          }.merge(options.symbolize_keys).select { |_, v|
            v.present?
          }.slice(*keys).map { |k,v|
            "#{k.to_s.upcase} #{v}"
          }.join(' ')
          options
        end

        def create_database_edition_options(options={})
          keys  = [:maxsize, :edition, :service_objective]
          copts = @connection_options
          edition_options = {
            maxsize: copts[:azure_maxsize],
            edition: copts[:azure_edition],
            service_objective: copts[:azure_service_objective]
          }.merge(options.symbolize_keys).select { |_, v|
            v.present?
          }.slice(*keys).map { |k,v|
            "#{k.to_s.upcase} = #{v}"
          }.join(', ')
          edition_options = "( #{edition_options} )" if edition_options.present?
          edition_options
        end

      end
    end
  end
end



Version data entries

21 entries across 21 versions & 2 rubygems

Version Path
activerecord-jdbcsqlserver-adapter-51.1.0 lib/active_record/connection_adapters/sqlserver/database_tasks.rb
activerecord-jdbcsqlserver-adapter-50.1.0 lib/active_record/connection_adapters/sqlserver/database_tasks.rb
activerecord-jdbcsqlserver-adapter-51.0.1 lib/active_record/connection_adapters/sqlserver/database_tasks.rb
activerecord-jdbcsqlserver-adapter-51.0.0 lib/active_record/connection_adapters/sqlserver/database_tasks.rb
activerecord-jdbcsqlserver-adapter-50.0.0 lib/active_record/connection_adapters/sqlserver/database_tasks.rb
activerecord-sqlserver-adapter-5.2.0 lib/active_record/connection_adapters/sqlserver/database_tasks.rb
activerecord-sqlserver-adapter-5.2.0.rc2 lib/active_record/connection_adapters/sqlserver/database_tasks.rb
activerecord-sqlserver-adapter-5.2.0.rc1 lib/active_record/connection_adapters/sqlserver/database_tasks.rb
activerecord-sqlserver-adapter-5.1.6 lib/active_record/connection_adapters/sqlserver/database_tasks.rb
activerecord-sqlserver-adapter-5.0.8 lib/active_record/connection_adapters/sqlserver/database_tasks.rb
activerecord-sqlserver-adapter-5.1.5 lib/active_record/connection_adapters/sqlserver/database_tasks.rb
activerecord-sqlserver-adapter-5.1.2 lib/active_record/connection_adapters/sqlserver/database_tasks.rb
activerecord-sqlserver-adapter-5.1.1 lib/active_record/connection_adapters/sqlserver/database_tasks.rb
activerecord-sqlserver-adapter-5.1.0 lib/active_record/connection_adapters/sqlserver/database_tasks.rb
activerecord-sqlserver-adapter-5.0.7 lib/active_record/connection_adapters/sqlserver/database_tasks.rb
activerecord-sqlserver-adapter-5.0.6 lib/active_record/connection_adapters/sqlserver/database_tasks.rb
activerecord-sqlserver-adapter-5.0.5 lib/active_record/connection_adapters/sqlserver/database_tasks.rb
activerecord-sqlserver-adapter-5.0.4 lib/active_record/connection_adapters/sqlserver/database_tasks.rb
activerecord-sqlserver-adapter-5.0.3 lib/active_record/connection_adapters/sqlserver/database_tasks.rb
activerecord-sqlserver-adapter-5.0.1 lib/active_record/connection_adapters/sqlserver/database_tasks.rb