feat: implement database schema discovery and data browser interface
This commit is contained in:
@@ -84,4 +84,24 @@ class SchemaController extends Controller
|
||||
return Response::json(['error' => $e->getMessage()], 400);
|
||||
}
|
||||
}
|
||||
public function execute(Request $request)
|
||||
{
|
||||
try {
|
||||
$this->initializeDriver($request);
|
||||
$sql = $request->get('query');
|
||||
|
||||
if (empty($sql)) {
|
||||
return Response::json(['error' => 'Query is empty'], 400);
|
||||
}
|
||||
|
||||
$results = $this->databaseService->executeQuery($sql);
|
||||
|
||||
return Response::json([
|
||||
'data' => $results,
|
||||
'count' => count($results)
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
return Response::json(['error' => $e->getMessage()], 400);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,4 +90,12 @@ class DatabaseService
|
||||
{
|
||||
return $this->getDriver()->getTableCount($table);
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute a raw SQL query.
|
||||
*/
|
||||
public function executeQuery(string $sql, array $bindings = []): array
|
||||
{
|
||||
return $this->getDriver()->query($sql, $bindings);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,4 +13,5 @@ Route::prefix('schema')->group(function () {
|
||||
Route::get('/tables/{database}', [SchemaController::class, 'tables']);
|
||||
Route::get('/{table}', [SchemaController::class, 'schema']);
|
||||
Route::get('/{table}/data', [SchemaController::class, 'data']);
|
||||
Route::post('/execute', [SchemaController::class, 'execute']);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user