fix(migration): handle existing contact_id column in mails table

This commit is contained in:
Agent Zero
2026-07-24 01:50:11 +02:00
parent bd8234ba75
commit 191a6fb4c4
@@ -38,10 +38,16 @@ def upgrade():
) )
# Rename company_id to contact_id in mails (if column exists) # Rename company_id to contact_id in mails (if column exists)
conn = op.get_bind() conn = op.get_bind()
result = conn.execute( has_company_id = conn.execute(
sa.text("SELECT 1 FROM information_schema.columns WHERE table_name='mails' AND column_name='company_id'") sa.text("SELECT 1 FROM information_schema.columns WHERE table_name='mails' AND column_name='company_id'")
).fetchone() ).fetchone()
if result: has_contact_id = conn.execute(
sa.text("SELECT 1 FROM information_schema.columns WHERE table_name='mails' AND column_name='contact_id'")
).fetchone()
if has_company_id and has_contact_id:
# Both columns exist: drop company_id (contact_id already present)
op.drop_column("mails", "company_id")
elif has_company_id:
op.alter_column("mails", "company_id", new_column_name="contact_id") op.alter_column("mails", "company_id", new_column_name="contact_id")
@@ -62,10 +68,13 @@ def downgrade():
op.execute( op.execute(
"UPDATE addresses SET entity_type = 'company' WHERE entity_type = 'contact'" "UPDATE addresses SET entity_type = 'company' WHERE entity_type = 'contact'"
) )
# Rename contact_id back to company_id in mails # Rename contact_id back to company_id in mails (only if contact_id exists and company_id doesn't)
conn = op.get_bind() conn = op.get_bind()
result = conn.execute( has_contact_id = conn.execute(
sa.text("SELECT 1 FROM information_schema.columns WHERE table_name='mails' AND column_name='contact_id'") sa.text("SELECT 1 FROM information_schema.columns WHERE table_name='mails' AND column_name='contact_id'")
).fetchone() ).fetchone()
if result: has_company_id = conn.execute(
sa.text("SELECT 1 FROM information_schema.columns WHERE table_name='mails' AND column_name='company_id'")
).fetchone()
if has_contact_id and not has_company_id:
op.alter_column("mails", "contact_id", new_column_name="company_id") op.alter_column("mails", "contact_id", new_column_name="company_id")