databaseService = $databaseService; } protected function initializeDriver(Request $request) { // In a real app, these would come from encrypted session or token $config = $request->only(['host', 'username', 'password', 'database', 'port']); $driver = new MySqlDriver(); if (!$driver->connect($config)) { throw new \Exception("Could not connect to database."); } $this->databaseService->setDriver($driver); } public function databases(Request $request) { try { $this->initializeDriver($request); return Response::json($this->databaseService->getDatabases()); } catch (\Exception $e) { return Response::json(['error' => $e->getMessage()], 400); } } public function tables(Request $request, $database) { try { $request->merge(['database' => $database]); $this->initializeDriver($request); return Response::json($this->databaseService->getTables()); } catch (\Exception $e) { return Response::json(['error' => $e->getMessage()], 400); } } public function schema(Request $request, $table) { try { $this->initializeDriver($request); return Response::json($this->databaseService->getTableSchema($table)); } catch (\Exception $e) { return Response::json(['error' => $e->getMessage()], 400); } } public function data(Request $request, $table) { try { $this->initializeDriver($request); $skip = $request->get('skip', 0); $take = $request->get('take', 100); $data = $this->databaseService->getTableData($table, $take, $skip); $response = [ 'data' => $data, ]; if ($request->get('requireTotalCount') === 'true') { $response['totalCount'] = $this->databaseService->getTableCount($table); } return Response::json($response); } catch (\Exception $e) { return Response::json(['error' => $e->getMessage()], 400); } } }