# Generated by Django 6.0 on 2026-04-28 00:59

import datetime
import uuid
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='AspectType',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=20, unique=True)),
                ('symbol', models.CharField(max_length=5)),
                ('angle', models.PositiveSmallIntegerField()),
                ('orb', models.FloatField()),
            ],
            options={
                'ordering': ['angle'],
            },
        ),
        migrations.CreateModel(
            name='Character',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('birth_dt', models.DateTimeField(blank=True, null=True)),
                ('birth_lat', models.DecimalField(blank=True, decimal_places=6, max_digits=9, null=True)),
                ('birth_lon', models.DecimalField(blank=True, decimal_places=6, max_digits=9, null=True)),
                ('birth_place', models.CharField(blank=True, max_length=200)),
                ('house_system', models.CharField(choices=[('O', 'Porphyry'), ('P', 'Placidus'), ('K', 'Koch'), ('W', 'Whole Sign')], default='O', max_length=1)),
                ('chart_data', models.JSONField(blank=True, null=True)),
                ('celtic_cross', models.JSONField(blank=True, null=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('confirmed_at', models.DateTimeField(blank=True, null=True)),
                ('retired_at', models.DateTimeField(blank=True, null=True)),
            ],
            options={
                'ordering': ['-created_at'],
            },
        ),
        migrations.CreateModel(
            name='DeckVariant',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100, unique=True)),
                ('slug', models.SlugField(unique=True)),
                ('card_count', models.IntegerField()),
                ('description', models.TextField(blank=True)),
                ('is_default', models.BooleanField(default=False)),
            ],
        ),
        migrations.CreateModel(
            name='GateSlot',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('slot_number', models.IntegerField()),
                ('status', models.CharField(choices=[('EMPTY', 'Empty'), ('RESERVED', 'Reserved'), ('FILLED', 'Filled')], default='EMPTY', max_length=10)),
                ('reserved_at', models.DateTimeField(blank=True, null=True)),
                ('filled_at', models.DateTimeField(blank=True, null=True)),
                ('debited_token_type', models.CharField(blank=True, max_length=8, null=True)),
                ('debited_token_expires_at', models.DateTimeField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name='HouseLabel',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('number', models.PositiveSmallIntegerField(unique=True)),
                ('name', models.CharField(max_length=30)),
                ('keywords', models.CharField(blank=True, max_length=100)),
            ],
            options={
                'ordering': ['number'],
            },
        ),
        migrations.CreateModel(
            name='Planet',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=20, unique=True)),
                ('symbol', models.CharField(max_length=5)),
                ('order', models.PositiveSmallIntegerField(unique=True)),
            ],
            options={
                'ordering': ['order'],
            },
        ),
        migrations.CreateModel(
            name='Room',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('name', models.CharField(max_length=200)),
                ('visibility', models.CharField(choices=[('PRIVATE', 'Private'), ('PUBLIC', 'Public'), ('INVITE ONLY', 'Invite Only')], default='PRIVATE', max_length=20)),
                ('gate_status', models.CharField(choices=[('GATHERING', 'GATHERING GAMERS'), ('OPEN', 'Open'), ('RENEWAL_DUE', 'Renewal Due')], default='GATHERING', max_length=20)),
                ('table_status', models.CharField(blank=True, choices=[('ROLE_SELECT', 'Role Select'), ('SIG_SELECT', 'Significator Select'), ('SKY_SELECT', 'Sky Select'), ('IN_GAME', 'In Game')], max_length=20, null=True)),
                ('sig_select_started_at', models.DateTimeField(blank=True, null=True)),
                ('renewal_period', models.DurationField(blank=True, default=datetime.timedelta(days=7), null=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('board_state', models.JSONField(default=dict)),
                ('seed_count', models.IntegerField(default=12)),
            ],
        ),
        migrations.CreateModel(
            name='RoomInvite',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('invitee_email', models.EmailField(max_length=254)),
                ('status', models.CharField(choices=[('PENDING', 'Pending'), ('ACCEPTED', 'Accepted'), ('DECLINED', 'Declined')], default='PENDING', max_length=10)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
            ],
        ),
        migrations.CreateModel(
            name='Sign',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=20, unique=True)),
                ('symbol', models.CharField(max_length=5)),
                ('element', models.CharField(choices=[('Fire', 'Fire'), ('Earth', 'Earth'), ('Air', 'Air'), ('Water', 'Water')], max_length=5)),
                ('modality', models.CharField(choices=[('Cardinal', 'Cardinal'), ('Fixed', 'Fixed'), ('Mutable', 'Mutable')], max_length=8)),
                ('order', models.PositiveSmallIntegerField(unique=True)),
                ('start_degree', models.FloatField()),
            ],
            options={
                'ordering': ['order'],
            },
        ),
        migrations.CreateModel(
            name='SigReservation',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('role', models.CharField(max_length=2)),
                ('polarity', models.CharField(choices=[('levity', 'Levity'), ('gravity', 'Gravity')], max_length=7)),
                ('reserved_at', models.DateTimeField(auto_now_add=True)),
                ('ready', models.BooleanField(default=False)),
                ('countdown_remaining', models.IntegerField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name='TableSeat',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('slot_number', models.IntegerField()),
                ('role', models.CharField(blank=True, choices=[('PC', 'Player'), ('BC', 'Builder'), ('SC', 'Shepherd'), ('AC', 'Alchemist'), ('NC', 'Narrator'), ('EC', 'Economist')], max_length=2, null=True)),
                ('role_revealed', models.BooleanField(default=False)),
                ('seat_position', models.IntegerField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name='TarotCard',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=200)),
                ('arcana', models.CharField(choices=[('MAJOR', 'Major Arcana'), ('MINOR', 'Minor Arcana'), ('MIDDLE', 'Middle Arcana')], max_length=6)),
                ('suit', models.CharField(blank=True, choices=[('WANDS', 'Wands'), ('CUPS', 'Cups'), ('SWORDS', 'Swords'), ('PENTACLES', 'Pentacles'), ('CROWNS', 'Crowns'), ('BRANDS', 'Brands'), ('GRAILS', 'Grails'), ('BLADES', 'Blades')], max_length=10, null=True)),
                ('icon', models.CharField(blank=True, default='', max_length=50)),
                ('number', models.IntegerField()),
                ('slug', models.SlugField(max_length=120)),
                ('correspondence', models.CharField(blank=True, max_length=200)),
                ('group', models.CharField(blank=True, max_length=100)),
                ('reversal', models.CharField(blank=True, default='', max_length=200)),
                ('levity_qualifier', models.CharField(blank=True, default='', max_length=100)),
                ('gravity_qualifier', models.CharField(blank=True, default='', max_length=100)),
                ('levity_emanation', models.CharField(blank=True, default='', max_length=200)),
                ('gravity_emanation', models.CharField(blank=True, default='', max_length=200)),
                ('levity_reversal', models.CharField(blank=True, default='', max_length=200)),
                ('gravity_reversal', models.CharField(blank=True, default='', max_length=200)),
                ('mechanisms', models.JSONField(default=list)),
                ('articulations', models.JSONField(default=list)),
                ('keywords_upright', models.JSONField(default=list)),
                ('keywords_reversed', models.JSONField(default=list)),
                ('cautions', models.JSONField(default=list)),
            ],
            options={
                'ordering': ['deck_variant', 'arcana', 'suit', 'number'],
            },
        ),
        migrations.CreateModel(
            name='TarotDeck',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('drawn_card_ids', models.JSONField(default=list)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
            ],
        ),
    ]
