# Generated by Django 6.1.1 on 2026-10-06 20:07

import django.db.models.deletion
import uuid
from decimal import Decimal
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('players', '0002_player_integrity_constraints'),
    ]

    operations = [
        migrations.CreateModel(
            name='NutritionSelectionEvent',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('revision', models.PositiveIntegerField()),
                ('previous_level', models.CharField(blank=True, choices=[('BASIC', 'Basic'), ('STANDARD', 'Standard'), ('PROFESSIONAL', 'Professional'), ('PREMIUM', 'Premium')], max_length=20, null=True)),
                ('new_level', models.CharField(choices=[('BASIC', 'Basic'), ('STANDARD', 'Standard'), ('PROFESSIONAL', 'Professional'), ('PREMIUM', 'Premium')], max_length=20)),
                ('multiplier_snapshot', models.DecimalField(decimal_places=6, max_digits=8)),
                ('policy_key', models.CharField(max_length=100)),
                ('policy_version', models.CharField(max_length=30)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('player', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='nutrition_selection_events', to='players.player')),
            ],
            options={
                'ordering': ['player_id', 'revision'],
                'indexes': [models.Index(fields=['player', '-created_at'], name='nutrition_player_event_idx')],
                'constraints': [models.UniqueConstraint(fields=('player', 'revision'), name='uq_nutrition_player_revision'), models.CheckConstraint(condition=models.Q(('revision__gte', 1)), name='nutrition_event_revision_gte_1'), models.CheckConstraint(condition=models.Q(('previous_level__isnull', True), ('previous_level__in', ('BASIC', 'STANDARD', 'PROFESSIONAL', 'PREMIUM')), _connector='OR'), name='nutrition_event_valid_previous'), models.CheckConstraint(condition=models.Q(('new_level__in', ('BASIC', 'STANDARD', 'PROFESSIONAL', 'PREMIUM'))), name='nutrition_event_valid_new'), models.CheckConstraint(condition=models.Q(models.Q(('multiplier_snapshot', Decimal('1.000000')), ('new_level', 'BASIC')), models.Q(('multiplier_snapshot', Decimal('1.050000')), ('new_level', 'STANDARD')), models.Q(('multiplier_snapshot', Decimal('1.100000')), ('new_level', 'PROFESSIONAL')), models.Q(('multiplier_snapshot', Decimal('1.150000')), ('new_level', 'PREMIUM')), _connector='OR'), name='nutrition_event_multiplier_matches'), models.CheckConstraint(condition=models.Q(('policy_key', ''), _negated=True), name='nutrition_event_policy_key_nonempty'), models.CheckConstraint(condition=models.Q(('policy_version', ''), _negated=True), name='nutrition_event_policy_ver_nonempty')],
            },
        ),
        migrations.CreateModel(
            name='PlayerNutritionProfile',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('level', models.CharField(choices=[('BASIC', 'Basic'), ('STANDARD', 'Standard'), ('PROFESSIONAL', 'Professional'), ('PREMIUM', 'Premium')], max_length=20)),
                ('revision', models.PositiveIntegerField(default=1)),
                ('policy_key', models.CharField(default='ftg.nutrition.multiplier.v1', max_length=100)),
                ('policy_version', models.CharField(default='1.0.0', max_length=30)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('player', models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, related_name='nutrition_profile', to='players.player')),
            ],
            options={
                'ordering': ['player_id'],
                'constraints': [models.CheckConstraint(condition=models.Q(('level__in', ('BASIC', 'STANDARD', 'PROFESSIONAL', 'PREMIUM'))), name='nutrition_profile_valid_level'), models.CheckConstraint(condition=models.Q(('revision__gte', 1)), name='nutrition_profile_revision_gte_1'), models.CheckConstraint(condition=models.Q(('policy_key', ''), _negated=True), name='nutrition_profile_policy_key_nonempty'), models.CheckConstraint(condition=models.Q(('policy_version', ''), _negated=True), name='nutrition_profile_policy_ver_nonempty')],
            },
        ),
    ]
