From 2ade649a8456c5dea38505f12656094db76e06f8 Mon Sep 17 00:00:00 2001
From: Matthew John <matthew@dockstudios.co.uk>
Date: Sat, 25 Jun 2022 10:09:37 +0100
Subject: [PATCH] Update analaytics foreign key migration to use batch
 operationg to support sqlite. Add name to constraint to fix future migrations

Issue #153
---
 ...813feaeb_update_analaytics_to_perform_no_action_.py | 10 ++++++----
 terrareg/database.py                                   |  1 +
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/terrareg/alembic/versions/0776813feaeb_update_analaytics_to_perform_no_action_.py b/terrareg/alembic/versions/0776813feaeb_update_analaytics_to_perform_no_action_.py
index cc0d1cec..5c417286 100644
--- a/terrareg/alembic/versions/0776813feaeb_update_analaytics_to_perform_no_action_.py
+++ b/terrareg/alembic/versions/0776813feaeb_update_analaytics_to_perform_no_action_.py
@@ -18,13 +18,15 @@ depends_on = None
 
 def upgrade():
     # ### commands auto generated by Alembic - please adjust! ###
-    op.drop_constraint(None, 'analytics', type_='foreignkey')
-    op.create_foreign_key(None, 'analytics', 'module_version', ['parent_module_version'], ['id'], onupdate='CASCADE', ondelete='NO ACTION')
+    with op.batch_alter_table('analytics', schema=None) as batch_op:
+        batch_op.drop_constraint(None, type_='foreignkey')
+        batch_op.create_foreign_key('fk_analytics_parent_module_version_module_version_id', 'module_version', ['parent_module_version'], ['id'], onupdate='CASCADE', ondelete='NO ACTION')
     # ### end Alembic commands ###
 
 
 def downgrade():
     # ### commands auto generated by Alembic - please adjust! ###
-    op.drop_constraint(None, 'analytics', type_='foreignkey')
-    op.create_foreign_key(None, 'analytics', 'module_version', ['parent_module_version'], ['id'], onupdate='CASCADE', ondelete='CASCADE')
+    with op.batch_alter_table('analytics', schema=None) as batch_op:
+        batch_op.drop_constraint('fk_analytics_parent_module_version_module_version_id', type_='foreignkey')
+        batch_op.create_foreign_key(None, 'module_version', ['parent_module_version'], ['id'], onupdate='CASCADE', ondelete='CASCADE')
     # ### end Alembic commands ###
diff --git a/terrareg/database.py b/terrareg/database.py
index bb698721..ccb4cf08 100644
--- a/terrareg/database.py
+++ b/terrareg/database.py
@@ -225,6 +225,7 @@ class Database():
                 'parent_module_version',
                 sqlalchemy.ForeignKey(
                     'module_version.id',
+                    name='fk_analytics_parent_module_version_module_version_id',
                     onupdate='CASCADE',
                     ondelete='NO ACTION'),
                 nullable=False
-- 
GitLab