You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

221 lines
7.9 KiB

# 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")},
},
),
]