perf: оптимизировано массовое удаление строк
- Добавлен batch delete метод на бэкенде (удаление множества строк за один запрос) - Использование WHERE IN для удаления нескольких строк одним SQL запросом - Добавлен прогресс-бар при удалении большого количества строк - Удаление 1000 строк теперь занимает секунды вместо минут - Добавлена поддержка транзакций для атомарности операций - Оптимизирован размер батчей для баланса производительности и надежности
This commit is contained in:
@@ -254,4 +254,23 @@ $app->get('/api/fk-values', function (Request $request, Response $response) use
|
||||
$response->getBody()->write(json_encode(['values' => $values]));
|
||||
return $response->withHeader('Content-Type', 'application/json');
|
||||
});
|
||||
|
||||
// API: массовое удаление строк (batch delete)
|
||||
$app->post('/api/table/delete-batch', function (Request $request, Response $response) use ($container) {
|
||||
$payload = json_decode((string)$request->getBody(), true);
|
||||
$pdo = $container->get('db');
|
||||
$meta = new \App\MetaService($pdo);
|
||||
$ds = new \App\DataService($pdo);
|
||||
|
||||
$schema = $payload['schema'];
|
||||
$table = $payload['table'];
|
||||
$rows = $payload['rows'] ?? []; // Массив строк для удаления
|
||||
$metaArr = $meta->getTableMeta($schema, $table);
|
||||
|
||||
$result = $ds->deleteMultipleRows($schema, $table, $rows, $metaArr['primaryKey']);
|
||||
$response->getBody()->write(json_encode($result));
|
||||
return $response->withHeader('Content-Type', 'application/json');
|
||||
});
|
||||
|
||||
|
||||
$app->run();
|
||||
|
||||
Reference in New Issue
Block a user