# Generated by Django 5.2.14 on 2026-05-26 01:01

from django.db import migrations, models


def set_app_uids(apps, schema_editor):
    App = apps.get_model('api', 'App')
    
    # 模拟 get_next_uid 的类似逻辑，或者是直接调用，但需要防范现有库里全是 null 导致的 TypeError
    # 使用 id 排序来保证赋值的确定性
    uid = App.objects.aggregate(models.Max('uid'))['uid__max'] or 0
    for app in App.objects.filter(uid__isnull=True).order_by('created'):
        uid += 1
        app.uid = uid
        app.save(update_fields=['uid'])


class Migration(migrations.Migration):

    dependencies = [
        ('api', '0030_delete_blocklist_remove_app_suspended_state'),
    ]

    operations = [
        migrations.AddField(
            model_name='app',
            name='uid',
            field=models.PositiveIntegerField(blank=True, null=True),
        ),
        migrations.RunPython(set_app_uids, migrations.RunPython.noop),
        migrations.AlterField(
            model_name='app',
            name='uid',
            field=models.PositiveIntegerField(unique=True),
        ),
    ]
