# 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