from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('tenants', '0001_initial'),
    ]

    operations = [
        migrations.CreateModel(
            name='MediaCategory',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100)),
                ('slug', models.SlugField(max_length=120)),
                ('media_type', models.CharField(choices=[('video', 'Video'), ('audio', 'Audio'), ('both', 'Both')], default='both', max_length=10)),
                ('sort_order', models.PositiveIntegerField(default=0)),
                ('is_active', models.BooleanField(default=True)),
                ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='tenants.tenant')),
            ],
            options={'verbose_name_plural': 'Media Categories', 'ordering': ['sort_order', 'name']},
        ),
        migrations.CreateModel(
            name='MediaCollection',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=200)),
                ('slug', models.SlugField(max_length=220)),
                ('description', models.TextField(blank=True)),
                ('thumbnail', models.ImageField(blank=True, null=True, upload_to='media/thumbnails/')),
                ('collection_type', models.CharField(choices=[('series', 'TV Series'), ('movie', 'Movie / Film'), ('documentary', 'Documentary'), ('podcast', 'Podcast'), ('audiobook', 'Audiobook'), ('album', 'Music Album'), ('playlist', 'Playlist')], default='series', max_length=20)),
                ('has_seasons', models.BooleanField(default=False, help_text='Enable season grouping within this collection')),
                ('access', models.CharField(choices=[('free', 'Free'), ('premium', 'Premium'), ('subscription', 'Subscription')], default='subscription', max_length=20)),
                ('year', models.PositiveSmallIntegerField(blank=True, null=True)),
                ('language', models.CharField(blank=True, max_length=100)),
                ('cast', models.TextField(blank=True, help_text='Comma-separated cast list')),
                ('director', models.CharField(blank=True, max_length=200)),
                ('is_active', models.BooleanField(default=True)),
                ('sort_order', models.PositiveIntegerField(default=0)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='media.mediacategory')),
                ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='tenants.tenant')),
            ],
            options={'ordering': ['sort_order', 'title']},
        ),
        migrations.CreateModel(
            name='MediaSeason',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(blank=True, help_text='Leave blank to auto-label "Season N"', max_length=200)),
                ('season_number', models.PositiveSmallIntegerField(default=1)),
                ('description', models.TextField(blank=True)),
                ('thumbnail', models.ImageField(blank=True, null=True, upload_to='media/thumbnails/')),
                ('is_active', models.BooleanField(default=True)),
                ('collection', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='seasons', to='media.mediacollection')),
            ],
            options={'ordering': ['season_number'], 'unique_together': {('collection', 'season_number')}},
        ),
        migrations.CreateModel(
            name='MediaItem',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=200)),
                ('slug', models.SlugField(max_length=220)),
                ('description', models.TextField(blank=True)),
                ('thumbnail', models.ImageField(blank=True, null=True, upload_to='media/thumbnails/')),
                ('media_type', models.CharField(choices=[('video', 'Video'), ('audio', 'Audio')], max_length=10)),
                ('subtype', models.CharField(choices=[('movie', 'Movie'), ('episode', 'Episode'), ('clip', 'Clip / Trailer'), ('documentary', 'Documentary'), ('music', 'Music Track'), ('podcast_ep', 'Podcast Episode'), ('audiobook_ch', 'Audiobook Chapter'), ('audiobook', 'Full Audiobook')], default='episode', max_length=20)),
                ('episode_number', models.PositiveSmallIntegerField(blank=True, null=True)),
                ('track_number', models.PositiveSmallIntegerField(blank=True, null=True)),
                ('original_file', models.FileField(blank=True, null=True, upload_to='media/originals/')),
                ('hls_path', models.CharField(blank=True, help_text='Relative path to m3u8 inside MEDIA_ROOT', max_length=500)),
                ('hls_status', models.CharField(choices=[('pending', 'Pending'), ('processing', 'Processing'), ('ready', 'Ready'), ('error', 'Error')], default='pending', max_length=20)),
                ('hls_error', models.TextField(blank=True)),
                ('duration', models.PositiveIntegerField(blank=True, help_text='Duration in seconds', null=True)),
                ('file_size', models.PositiveBigIntegerField(blank=True, help_text='Original file size in bytes', null=True)),
                ('access', models.CharField(choices=[('free', 'Free'), ('premium', 'Premium'), ('subscription', 'Subscription')], default='subscription', max_length=20)),
                ('year', models.PositiveSmallIntegerField(blank=True, null=True)),
                ('language', models.CharField(blank=True, max_length=100)),
                ('tags', models.CharField(blank=True, help_text='Comma-separated tags', max_length=500)),
                ('sort_order', models.PositiveIntegerField(default=0)),
                ('is_active', models.BooleanField(default=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('collection', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='items', to='media.mediacollection')),
                ('season', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='items', to='media.mediaseason')),
                ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='tenants.tenant')),
            ],
            options={'ordering': ['sort_order', 'episode_number', 'track_number', 'title']},
        ),
        migrations.CreateModel(
            name='MediaEncryptionKey',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('key_hex', models.CharField(max_length=32)),
                ('token', models.CharField(max_length=64)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('item', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='encryption_key', to='media.mediaitem')),
            ],
        ),
    ]
