driver = $driver; return $this; } /** * Get the current driver. * * @throws \Exception */ public function getDriver(): DatabaseDriverInterface { if (!$this->driver) { throw new \Exception("Database driver not initialized."); } return $this->driver; } /** * Establish a connection. */ public function connect(array $config): bool { return $this->getDriver()->connect($config); } /** * Get all databases. */ public function getDatabases(): array { $driver = $this->getDriver(); if ($driver instanceof SchemaDiscoveryInterface) { return $driver->getDatabases(); } throw new \Exception("Driver does not support schema discovery."); } /** * Get all tables. */ public function getTables(): array { $driver = $this->getDriver(); if ($driver instanceof SchemaDiscoveryInterface) { return $driver->getTables(); } throw new \Exception("Driver does not support schema discovery."); } /** * Get table schema. */ public function getTableSchema(string $table): array { $driver = $this->getDriver(); if ($driver instanceof SchemaDiscoveryInterface) { return $driver->getTableSchema($table); } throw new \Exception("Driver does not support schema discovery."); } /** * Get table data. */ public function getTableData(string $table, int $limit = 100, int $offset = 0): array { return $this->getDriver()->getTableData($table, $limit, $offset); } /** * Get table row count. */ public function getTableCount(string $table): int { return $this->getDriver()->getTableCount($table); } /** * Execute a raw SQL query. */ public function executeQuery(string $sql, array $bindings = []): array { return $this->getDriver()->query($sql, $bindings); } }