NETRAVE/docker/netrave-protohandler/db/database_manager_factory.rb

28 lines
820 B
Ruby
Raw Normal View History

# frozen_string_literal: true
# The 'factory' that constructs the constructors for our various database managers
class DatabaseManagerFactory
def self.create(db_type, username: nil, password: nil)
db_manager = Object.new
case db_type
when 'sqlite_memory'
db_manager.extend(SQLiteMemoryManager)
when 'sqlite_flatfile'
db_manager.extend(SQLiteFlatFileManager)
when 'mysql'
db_manager.extend(MySQLManager)
when 'postgres'
db_manager.extend(PostgresManager)
when 'mongodb'
db_manager.extend(MongoDBManager)
else
raise "Unknown database type: #{db_type}"
end
# Initialize the database manager with username and password if they exist
db_manager.initialize(username, password) if db_manager.respond_to?(:initialize)
db_manager
end
end