# Generated by Django 4.2.9 on 2026-03-01 19:52

from django.db import migrations, models
from django.utils import timezone


def backfill_tenant_lifecycle(apps, schema_editor):
    Tenant = apps.get_model("app", "Tenant")
    now = timezone.now()
    for tenant in Tenant.objects.all().only("id", "is_active", "trial_ends_at", "lifecycle_status"):
        if not tenant.is_active:
            lifecycle = "SUSPENDED"
        elif tenant.trial_ends_at and tenant.trial_ends_at >= now:
            lifecycle = "TRIAL"
        else:
            lifecycle = "ACTIVE"
        Tenant.objects.filter(pk=tenant.pk).update(lifecycle_status=lifecycle)


def noop_reverse(apps, schema_editor):
    return


class Migration(migrations.Migration):

    dependencies = [
        ('app', '0088_alter_tenant_db_alias'),
    ]

    operations = [
        migrations.AddField(
            model_name='tenant',
            name='lifecycle_status',
            field=models.CharField(choices=[('TRIAL', 'Trial'), ('ACTIVE', 'Active'), ('SUSPENDED', 'Suspended'), ('GRACE', 'Grace Period'), ('TERMINATED', 'Terminated')], default='TRIAL', max_length=20),
        ),
        migrations.AddField(
            model_name='tenant',
            name='suspended_at',
            field=models.DateTimeField(blank=True, null=True),
        ),
        migrations.AddField(
            model_name='tenant',
            name='terminated_at',
            field=models.DateTimeField(blank=True, null=True),
        ),
        migrations.AddIndex(
            model_name='tenant',
            index=models.Index(fields=['lifecycle_status'], name='tenant_lifecycle_status_idx'),
        ),
        migrations.RunPython(backfill_tenant_lifecycle, noop_reverse),
    ]
