feat: implement database schema discovery and data browser interface

This commit is contained in:
Ümit Tunç
2026-04-24 07:53:50 +03:00
parent 14abf1223f
commit cd34cc6412
6 changed files with 244 additions and 78 deletions
@@ -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);
}
}
}
+8
View File
@@ -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);
}
}
+1
View File
@@ -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']);
});