from django.db import migrations


VERIFICATION_TABLES = (
    "verification_verificationclaim",
    "verification_verificationinvoice",
    "verification_verificationinvoicedocument",
    "verification_verificationactivitylog",
    "verification_verificationdescriptionoption",
)


def convert_verification_tables_to_utf8mb4(apps, schema_editor):
    connection = schema_editor.connection
    if connection.vendor != "mysql":
        return

    existing_tables = set(connection.introspection.table_names())
    quote_name = connection.ops.quote_name

    with connection.cursor() as cursor:
        for table_name in VERIFICATION_TABLES:
            if table_name not in existing_tables:
                continue
            cursor.execute(
                f"ALTER TABLE {quote_name(table_name)} "
                "CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"
            )


class Migration(migrations.Migration):
    dependencies = [
        ("verification", "0012_verificationdescriptionoption_and_more"),
    ]

    operations = [
        migrations.RunPython(convert_verification_tables_to_utf8mb4, migrations.RunPython.noop),
    ]
