# Generated by Django 4.2.27 on 2026-01-22 10:48 import apps.chat.models from django.conf import settings from django.db import migrations, models import django.db.models.deletion class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("course", "0001_initial"), ] operations = [ migrations.CreateModel( name="RoomMessage", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("name", models.CharField(max_length=255, verbose_name="Room Name")), ( "description", models.TextField(blank=True, null=True, verbose_name="Description"), ), ( "created_at", models.DateTimeField(auto_now_add=True, verbose_name="Created At"), ), ( "updated_at", models.DateTimeField(auto_now=True, verbose_name="Updated At"), ), ( "room_type", models.CharField( choices=[("group", "Group"), ("private", "Private")], default="group", max_length=10, verbose_name="Room Type", ), ), ("unread_messages_count", models.IntegerField(default=0)), ( "course", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="room_messages", to="course.course", verbose_name="Course", ), ), ( "initiator", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="initiated_rooms", to=settings.AUTH_USER_MODEL, verbose_name="Initiator", ), ), ( "recipient", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="messages_received", to=settings.AUTH_USER_MODEL, verbose_name="Recipient", ), ), ], ), migrations.CreateModel( name="ChatMessage", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("content", models.TextField(verbose_name="Message Content")), ( "content_type", models.CharField( choices=[ ("text", "Text"), ("file", "File"), ("audio", "Audio"), ("image", "Image"), ], default="text", max_length=10, verbose_name="Chat Type", ), ), ( "content_size", models.PositiveIntegerField( blank=True, null=True, verbose_name="Content Size (bytes)" ), ), ( "file_attachment", models.FileField( blank=True, help_text="For file and audio messages", max_length=500, null=True, upload_to=apps.chat.models.chat_upload_path, verbose_name="File Attachment", ), ), ( "image_attachment", models.ImageField( blank=True, help_text="For image messages", max_length=500, null=True, upload_to=apps.chat.models.chat_upload_path, verbose_name="Image Attachment", ), ), ("is_read", models.BooleanField(default=False, verbose_name="Is Read")), ("message_metadata", models.JSONField(blank=True, null=True)), ( "sent_at", models.DateTimeField(auto_now_add=True, verbose_name="Sent At"), ), ( "updated_at", models.DateTimeField(auto_now=True, verbose_name="Updated At"), ), ( "deleted_at", models.DateTimeField( blank=True, null=True, verbose_name="Deleted At" ), ), ( "is_deleted", models.BooleanField(default=False, verbose_name="Is deleted"), ), ( "room", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="messages", to="chat.roommessage", verbose_name="Room", ), ), ( "sender", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="messages_sent", to=settings.AUTH_USER_MODEL, verbose_name="Sender", ), ), ], ), migrations.CreateModel( name="MessageReadStatus", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("is_read", models.BooleanField(default=False, verbose_name="Is Read")), ( "read_at", models.DateTimeField(blank=True, null=True, verbose_name="Read At"), ), ( "message", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="read_statuses", to="chat.chatmessage", verbose_name="Message", ), ), ( "user", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="read_statuses", to=settings.AUTH_USER_MODEL, verbose_name="User", ), ), ], options={ "unique_together": {("user", "message")}, }, ), ]