Sha256: 249da8b9951112e0e58da5ee3a9a09b50207a921a192aa516bc52563f88e77cd

Contents?: true

Size: 1.31 KB

Versions: 5

Compression:

Stored size: 1.31 KB

Contents

module Kuby
  module Kubernetes
    module Plugins
      module RailsApp
        class UnsupportedDatabaseError < StandardError; end

        class Database
          ADAPTER_MAP = {
            'sqlite3' => Sqlite,
            'mysql2' => MySQL,
            'postgresql' => Postgres
          }.freeze

          def self.get(definition)
            new(definition).database
          end

          def self.get_adapter(adapter)
            ADAPTER_MAP.fetch(adapter) do
              raise UnsupportedDatabaseError, "Kuby does not support the '#{adapter}'"\
                'database adapter'
            end
          end

          attr_reader :definition

          def initialize(definition)
            @definition = definition
          end

          def database
            @database ||= self.class
              .get_adapter(adapter)
              .new(definition, environment, db_configs)
          end

          private

          def adapter
            db_config['adapter']
          end

          def db_config
            @db_config ||= db_configs[environment]
          end

          def environment
            @environment ||= definition.environment
          end

          def db_configs
            @db_configs ||= definition.app.config.database_configuration
          end
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
kuby-core-0.5.0 lib/kuby/kubernetes/plugins/rails_app/database.rb
kuby-core-0.4.0 lib/kuby/kubernetes/plugins/rails_app/database.rb
kuby-core-0.3.0 lib/kuby/kubernetes/plugins/rails_app/database.rb
kuby-core-0.2.0 lib/kuby/kubernetes/plugins/rails_app/database.rb
kuby-core-0.1.0 lib/kuby/kubernetes/plugins/rails_app/database.rb