require "singleton"

module Snowglobe
  class DatabaseConfigurationRegistry
    include Singleton

    def initialize
      @registry = {}
    end

    def register(config_class)
      registry[config_class.name] = config_class
    end

    def get(name)
      registry.fetch(name) do
        raise KeyError, "No such adapter registered: #{name}"
      end
    end

    protected

    attr_reader :registry
  end
end

require_relative "database_adapters/postgresql"
require_relative "database_adapters/sqlite3"
