From b58ddd767468fb05d0cc32c2d27da40920464cb0 Mon Sep 17 00:00:00 2001
From: Robert Sparks <rjsparks@nostrum.com>
Date: Tue, 12 Sep 2023 08:51:17 -0500
Subject: [PATCH] fix: move rfc dochistory objects to rfc document objects

---
 ietf/doc/migrations/0016_move_dochistory.py | 37 +++++++++++++++++++++
 1 file changed, 37 insertions(+)
 create mode 100644 ietf/doc/migrations/0016_move_dochistory.py

diff --git a/ietf/doc/migrations/0016_move_dochistory.py b/ietf/doc/migrations/0016_move_dochistory.py
new file mode 100644
index 000000000..0dd80a953
--- /dev/null
+++ b/ietf/doc/migrations/0016_move_dochistory.py
@@ -0,0 +1,37 @@
+# Generated by Django 4.2.5 on 2023-09-11 17:52
+
+from django.db import migrations
+
+from django.db.models import Subquery, OuterRef, F
+
+
+def forward(apps, schema_editor):
+    DocHistory = apps.get_model("doc", "DocHistory")
+    RelatedDocument = apps.get_model("doc", "RelatedDocument")
+    DocHistory.objects.filter(type_id="draft", doc__type_id="rfc").update(type_id="rfc")
+    DocHistory.objects.filter(
+        type_id="draft", doc__type_id="draft", name__startswith="rfc"
+    ).annotate(
+        rfc_id=Subquery(
+            RelatedDocument.objects.filter(
+                source_id=OuterRef("doc_id"), relationship_id="became_rfc"
+            ).values_list("target_id", flat=True)[:1]
+        )
+    ).update(
+        doc_id = F("rfc_id"),
+        type_id = "rfc"
+    )
+    assert not DocHistory.objects.filter(name__startswith="rfc", type_id="draft").exists()
+
+
+def reverse(apps, schema_editor):
+    # there is no going back
+    raise NotImplementedError
+
+
+class Migration(migrations.Migration):
+    dependencies = [
+        ("doc", "0015_delete_docalias"),
+    ]
+
+    operations = [migrations.RunPython(forward, reverse)]