diff --git a/arkindex/documents/tasks.py b/arkindex/documents/tasks.py index d42a9cbfb0b394db1f50b94c9b3fd60a5ebbcaa9..9712f69f41186d09293c2301f94bd7436eed12e0 100644 --- a/arkindex/documents/tasks.py +++ b/arkindex/documents/tasks.py @@ -51,8 +51,9 @@ def corpus_delete(corpus_id: str) -> None: # Process-DataFile M2M with implicit model Process.files.through.objects.filter(process__corpus_id=corpus_id), Process.files.through.objects.filter(datafile__corpus_id=corpus_id), - # Worker activities - WorkerActivity.objects.filter(Q(element__corpus_id=corpus_id) | Q(process__corpus_id=corpus_id)), + # Worker activities are deleted in two queries, as filtering using OR is slower + WorkerActivity.objects.filter(element__corpus_id=corpus_id), + WorkerActivity.objects.filter(process__corpus_id=corpus_id), corpus.files.all(), MetaData.objects.filter(element__corpus_id=corpus_id), EntityLink.objects.filter(role__corpus_id=corpus_id), diff --git a/arkindex/sql_validation/corpus_delete.sql b/arkindex/sql_validation/corpus_delete.sql index 288247494a691462b03999095a56da28b21da383..423afc32afda6f599a6e4b2dea09c62b8d18b71a 100644 --- a/arkindex/sql_validation/corpus_delete.sql +++ b/arkindex/sql_validation/corpus_delete.sql @@ -64,9 +64,15 @@ WHERE "process_workeractivity"."id" IN (SELECT U0."id" FROM "process_workeractivity" U0 INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id") - INNER JOIN "process_process" U3 ON (U0."process_id" = U3."id") - WHERE (U1."corpus_id" = '{corpus_id}'::uuid - OR U3."corpus_id" = '{corpus_id}'::uuid)); + WHERE U1."corpus_id" = '{corpus_id}'::uuid); + +DELETE +FROM "process_workeractivity" +WHERE "process_workeractivity"."id" IN + (SELECT U0."id" + FROM "process_workeractivity" U0 + INNER JOIN "process_process" U1 ON (U0."process_id" = U1."id") + WHERE U1."corpus_id" = '{corpus_id}'::uuid); DELETE FROM "process_datafile" diff --git a/arkindex/sql_validation/corpus_delete_top_level_type.sql b/arkindex/sql_validation/corpus_delete_top_level_type.sql index 5782b2cc8dd4bf29d7eaa9571c204cd1df0da790..316ef633a8c99af797cad6b7f3df6f8bc7bd0051 100644 --- a/arkindex/sql_validation/corpus_delete_top_level_type.sql +++ b/arkindex/sql_validation/corpus_delete_top_level_type.sql @@ -68,9 +68,15 @@ WHERE "process_workeractivity"."id" IN (SELECT U0."id" FROM "process_workeractivity" U0 INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id") - INNER JOIN "process_process" U3 ON (U0."process_id" = U3."id") - WHERE (U1."corpus_id" = '{corpus_id}'::uuid - OR U3."corpus_id" = '{corpus_id}'::uuid)); + WHERE U1."corpus_id" = '{corpus_id}'::uuid); + +DELETE +FROM "process_workeractivity" +WHERE "process_workeractivity"."id" IN + (SELECT U0."id" + FROM "process_workeractivity" U0 + INNER JOIN "process_process" U1 ON (U0."process_id" = U1."id") + WHERE U1."corpus_id" = '{corpus_id}'::uuid); DELETE FROM "process_datafile"