# Generated by Django 6.0 on 2026-02-06 15:53

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


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Room',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
            ],
            options={
                'abstract': False,
                'base_manager_name': 'objects',
            },
        ),
        migrations.CreateModel(
            name='ChatNotification',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
                ('notification_type', models.CharField(choices=[('REACTION', 'Reaction'), ('NEW_MESSAGE', 'New Message'), ('REPLY', 'Reply')], default='NEW_MESSAGE', max_length=64)),
            ],
            options={
                'swappable': 'REALTIME_CHAT_MESSAGING_CHATNOTIFICATION_MODEL',
            },
        ),
        migrations.CreateModel(
            name='Message',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
                ('content', models.TextField()),
                ('is_deleted', models.BooleanField(default=False)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('is_forwarded', models.BooleanField(default=False)),
                ('is_edited', models.BooleanField(default=False)),
            ],
            options={
                'abstract': False,
                'swappable': 'REALTIME_CHAT_MESSAGING_MESSAGE_MODEL',
            },
        ),
        migrations.CreateModel(
            name='MessageMediaAsset',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
                ('media_url', models.CharField()),
                ('media_type', models.CharField(choices=[('image', 'Image'), ('video', 'Video'), ('audio', 'Audio'), ('file', 'File')], max_length=64)),
                ('file_size', models.PositiveBigIntegerField(default=0)),
                ('mime_type', models.CharField(default='image/jpeg')),
                ('caption', models.CharField(blank=True, null=True)),
                ('metadata', models.JSONField(default=dict)),
            ],
            options={
                'swappable': 'REALTIME_CHAT_MESSAGING_MESSAGEMEDIAASSET_MODEL',
            },
        ),
        migrations.CreateModel(
            name='Reaction',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
                ('reaction_content', models.TextField(max_length=128)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
            ],
            options={
                'abstract': False,
                'swappable': 'REALTIME_CHAT_MESSAGING_REACTION_MODEL',
            },
        ),
        migrations.CreateModel(
            name='ReadReceipt',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
                ('read_at', models.DateTimeField(auto_now_add=True)),
            ],
            options={
                'abstract': False,
                'swappable': 'REALTIME_CHAT_MESSAGING_READRECEIPT_MODEL',
            },
        ),
        migrations.CreateModel(
            name='RoomProperty',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('preferences', models.JSONField(default=dict)),
            ],
            options={
                'swappable': 'REALTIME_CHAT_MESSAGING_ROOMPROPERTY_MODEL',
            },
        ),
        migrations.CreateModel(
            name='Session',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('channel_name', models.CharField()),
                ('last_seen', models.DateTimeField()),
            ],
            options={
                'swappable': 'REALTIME_CHAT_MESSAGING_SESSION_MODEL',
            },
        ),
        migrations.CreateModel(
            name='Channel',
            fields=[
                ('room_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='realtime_chat_messaging.room')),
                ('name', models.CharField(max_length=64)),
                ('description', models.TextField(blank=True, null=True)),
                ('is_public', models.BooleanField(default=False)),
                ('avatar', models.URLField(blank=True, null=True)),
                ('max_subscribers', models.PositiveBigIntegerField(default=300)),
            ],
            options={
                'permissions': [('can_add_new_subscribers', 'Can add new subscribers'), ('can_remove_subscribers', 'Can remove subscribers'), ('can_send_messages', 'Can send messages')],
                'abstract': False,
                'swappable': 'REALTIME_CHAT_MESSAGING_CHANNEL_MODEL',
            },
            bases=('realtime_chat_messaging.room', models.Model),
        ),
        migrations.CreateModel(
            name='GroupChat',
            fields=[
                ('room_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='realtime_chat_messaging.room')),
                ('name', models.CharField(max_length=64)),
                ('description', models.TextField(blank=True, null=True)),
                ('max_participants', models.PositiveBigIntegerField(default=100)),
                ('avatar', models.URLField(blank=True, null=True)),
                ('join_approval_required', models.BooleanField(default=False)),
                ('group_locked', models.BooleanField(default=False)),
            ],
            options={
                'permissions': [('can_add_new_participants', 'Can add new participants'), ('can_remove_participants', 'Can remove participants')],
                'abstract': False,
                'swappable': 'REALTIME_CHAT_MESSAGING_GROUPCHAT_MODEL',
            },
            bases=('realtime_chat_messaging.room', models.Model),
        ),
        migrations.CreateModel(
            name='OneToOneChat',
            fields=[
                ('room_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='realtime_chat_messaging.room')),
            ],
            options={
                'swappable': 'REALTIME_CHAT_MESSAGING_ONETOONECHAT_MODEL',
            },
            bases=('realtime_chat_messaging.room', models.Model),
        ),
    ]
