mirror of
https://github.com/appwrite/appwrite
synced 2026-05-24 09:28:40 +00:00
Also update database worker delete by group
This commit is contained in:
parent
ef8520ad2d
commit
1fbfbbf482
2 changed files with 15 additions and 29 deletions
|
|
@ -577,39 +577,25 @@ class Databases extends Action
|
||||||
*/
|
*/
|
||||||
protected function deleteByGroup(string $collection, array $queries, Database $database, callable $callback = null): void
|
protected function deleteByGroup(string $collection, array $queries, Database $database, callable $callback = null): void
|
||||||
{
|
{
|
||||||
$count = 0;
|
$start = \microtime(true);
|
||||||
$chunk = 0;
|
|
||||||
$limit = 50;
|
|
||||||
$sum = $limit;
|
|
||||||
|
|
||||||
$executionStart = \microtime(true);
|
try {
|
||||||
|
$documents = $database->deleteDocuments($collection, $queries);
|
||||||
|
} catch (\Throwable $th) {
|
||||||
|
Console::error('Failed to delete documents for collection ' . $collection . ': ' . $th->getMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
while ($sum === $limit) {
|
if (\is_callable($callback)) {
|
||||||
$chunk++;
|
foreach ($documents as $document) {
|
||||||
|
$callback($document);
|
||||||
$results = $database->find($collection, \array_merge([Query::limit($limit)], $queries));
|
|
||||||
|
|
||||||
$sum = count($results);
|
|
||||||
|
|
||||||
Console::info('Deleting chunk #' . $chunk . '. Found ' . $sum . ' documents');
|
|
||||||
|
|
||||||
foreach ($results as $document) {
|
|
||||||
if ($database->deleteDocument($document->getCollection(), $document->getId())) {
|
|
||||||
Console::success('Deleted document "' . $document->getId() . '" successfully');
|
|
||||||
|
|
||||||
if (\is_callable($callback)) {
|
|
||||||
$callback($document);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Console::warning('Failed to delete document: ' . $document->getId());
|
|
||||||
}
|
|
||||||
$count++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$executionEnd = \microtime(true);
|
$end = \microtime(true);
|
||||||
|
$count = \count($documents);
|
||||||
|
|
||||||
Console::info("Deleted {$count} document by group in " . ($executionEnd - $executionStart) . " seconds");
|
Console::info("Deleted {$count} documents by group in " . ($end - $start) . " seconds");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function trigger(
|
protected function trigger(
|
||||||
|
|
|
||||||
|
|
@ -947,8 +947,8 @@ class Deletes extends Action
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$documents = $database->deleteDocuments($collection, $queries);
|
$documents = $database->deleteDocuments($collection, $queries);
|
||||||
} catch (Exception $e) {
|
} catch (\Throwable $th) {
|
||||||
Console::error('Failed to delete documents for collection ' . $collection . ': ' . $e->getMessage());
|
Console::error('Failed to delete documents for collection ' . $collection . ': ' . $th->getMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue