From 128df088125eca2601432198e54df597a03558e9 Mon Sep 17 00:00:00 2001
From: Erwan Rouchet <rouchet@teklia.com>
Date: Wed, 4 Aug 2021 17:37:40 +0200
Subject: [PATCH] Destroy WorkerActivity in DestroyWorkerResults

---
 arkindex/documents/tasks.py                          |  3 +++
 .../worker_results_delete_in_corpus.sql              | 11 ++++++++++-
 .../worker_results_delete_under_parent.sql           | 12 ++++++++++++
 .../worker_results_delete_under_parent_included.sql  | 12 ++++++++++++
 4 files changed, 37 insertions(+), 1 deletion(-)

diff --git a/arkindex/documents/tasks.py b/arkindex/documents/tasks.py
index c73f7db481..7d7e7a4ccb 100644
--- a/arkindex/documents/tasks.py
+++ b/arkindex/documents/tasks.py
@@ -103,6 +103,7 @@ def worker_results_delete(corpus_id: str, version_id: str, parent_id: str) -> No
         )
     )
     metadata = MetaData.objects.filter(worker_version_id=version_id, element__corpus_id=corpus_id)
+    worker_activities = WorkerActivity.objects.filter(worker_version_id=version_id, element__corpus_id=corpus_id)
 
     if parent_id:
         elements = elements.filter(Q(id=parent_id) | Q(paths__path__overlap=[parent_id]))
@@ -112,6 +113,7 @@ def worker_results_delete(corpus_id: str, version_id: str, parent_id: str) -> No
         transcription_entities = transcription_entities.filter(transcription_entities_filter)
         worker_transcription_entities = worker_transcription_entities.filter(transcription_entities_filter)
         metadata = metadata.filter(Q(element_id=parent_id) | Q(element__paths__path__overlap=[parent_id]))
+        worker_activities = worker_activities.filter(Q(element_id=parent_id) | Q(element__paths__path__overlap=[parent_id]))
 
     elements.trash()
     classifications.delete()
@@ -119,6 +121,7 @@ def worker_results_delete(corpus_id: str, version_id: str, parent_id: str) -> No
     worker_transcription_entities.delete()
     transcriptions._raw_delete(using='default')
     metadata.delete()
+    worker_activities.delete()
 
 
 @job('high', timeout=settings.RQ_TIMEOUTS['move_element'])
diff --git a/arkindex/sql_validation/worker_results_delete_in_corpus.sql b/arkindex/sql_validation/worker_results_delete_in_corpus.sql
index 99a3e2a40f..9824e0642d 100644
--- a/arkindex/sql_validation/worker_results_delete_in_corpus.sql
+++ b/arkindex/sql_validation/worker_results_delete_in_corpus.sql
@@ -266,4 +266,13 @@ WHERE "documents_metadata"."id" IN
          FROM "documents_metadata" U0
          INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
          WHERE (U1."corpus_id" = '{corpus_id}'::uuid
-                AND U0."worker_version_id" = '{version_id}'::uuid))
+                AND U0."worker_version_id" = '{version_id}'::uuid));
+
+DELETE
+FROM "dataimport_workeractivity"
+WHERE "dataimport_workeractivity"."id" IN
+        (SELECT U0."id"
+	 FROM "dataimport_workeractivity" U0
+	 INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
+	 WHERE (U1."corpus_id" = '{corpus_id}'::uuid
+		AND U0."worker_version_id" = '{version_id}'::uuid))
diff --git a/arkindex/sql_validation/worker_results_delete_under_parent.sql b/arkindex/sql_validation/worker_results_delete_under_parent.sql
index 948a2e7f63..0edaccee15 100644
--- a/arkindex/sql_validation/worker_results_delete_under_parent.sql
+++ b/arkindex/sql_validation/worker_results_delete_under_parent.sql
@@ -186,6 +186,18 @@ WHERE "documents_metadata"."id" IN
          FROM "documents_metadata" U0
          INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
          LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
+         WHERE (U1."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND (U0."element_id" = '{parent_id}'::uuid
+                     OR U4."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
+
+DELETE
+FROM "dataimport_workeractivity"
+WHERE "dataimport_workeractivity"."id" IN
+        (SELECT U0."id"
+         FROM "dataimport_workeractivity" U0
+         INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
+         LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
          WHERE (U1."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
                 AND (U0."element_id" = '{parent_id}'::uuid
diff --git a/arkindex/sql_validation/worker_results_delete_under_parent_included.sql b/arkindex/sql_validation/worker_results_delete_under_parent_included.sql
index 4796cae3db..2fd8bed67a 100644
--- a/arkindex/sql_validation/worker_results_delete_under_parent_included.sql
+++ b/arkindex/sql_validation/worker_results_delete_under_parent_included.sql
@@ -341,6 +341,18 @@ WHERE "documents_metadata"."id" IN
          FROM "documents_metadata" U0
          INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
          LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
+         WHERE (U1."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND (U0."element_id" = '{parent_id}'::uuid
+                     OR U4."path" && ARRAY['{parent_id}'::uuid]::uuid[])));
+
+DELETE
+FROM "dataimport_workeractivity"
+WHERE "dataimport_workeractivity"."id" IN
+        (SELECT U0."id"
+         FROM "dataimport_workeractivity" U0
+         INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
+         LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
          WHERE (U1."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
                 AND (U0."element_id" = '{parent_id}'::uuid
-- 
GitLab