"""
Ask 已从固定路由改为普通 ACTION Link（alias='ask'）。

访问 go/ask/问题 → alias catch-all → redirect_to_original → ACTION 分支
→ execute_action(discord_send) → 302 跳转 Discord。与用户手动创建的
动作链接行为完全一致，可在 Links 界面编辑/删除。

message_template 使用 <@{bot_id}> 让 Discord 消息 @小黑，bot_id 与
原 ask_views 默认值一致（1467845106831855796）。
"""
from django.db import migrations

DISCORD_BOT_ID = '1467845106831855796'


def create_ask_action_link(apps, schema_editor):
    Link = apps.get_model('links', 'Link')
    # 若旧 ask 是 LINK 类型（如指向 chatgpt 的快速提问链接），先备份到 ask-chatgpt
    old = Link.objects.filter(alias='ask').first()
    if old and old.link_type == 'LINK' and old.original_url:
        if not Link.objects.filter(alias='ask-chatgpt').exists():
            Link.objects.create(
                alias='ask-chatgpt',
                link_type='LINK',
                original_url=old.original_url,
                description=(old.description or 'Quick ask chatgpt') + ' (原 ask 备份)',
            )
    # update_or_create：生产库可能已有 ask 记录（旧版可能是 LINK 类型），
    # 必须更新为 ACTION 类型 + discord_send 配置，否则 go/ask/问题 会走 LINK 分支失败。
    Link.objects.update_or_create(
        alias='ask',
        defaults={
            'link_type': 'ACTION',
            'action_config': {
                'action_type': 'discord_send',
                'message_template': f'<@{DISCORD_BOT_ID}> {{query}}',
            },
            'description': '一键提问小黑：go/ask/问题（发到 Discord #general）',
        },
    )


def remove_ask_action_link(apps, schema_editor):
    Link = apps.get_model('links', 'Link')
    Link.objects.filter(alias='ask', link_type='ACTION').delete()
    Link.objects.filter(alias='ask-chatgpt', description__endswith='(原 ask 备份)').delete()


class Migration(migrations.Migration):

    dependencies = [
        ('links', '0052_link_action_config_alter_link_link_type'),
    ]

    operations = [
        migrations.RunPython(create_ask_action_link, remove_ask_action_link),
    ]
