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.
 
 

2.4 KiB

Chat Management Commands

clear_chat_data

این management command برای پاک کردن داده‌های چت طراحی شده است و دو حالت کاری دارد:

حالت پیش‌فرض (محافظت از روم‌های کورس)

در این حالت:

  • همه پیام‌ها (ChatMessage) حذف می‌شوند
  • همه وضعیت‌های خواندن پیام (MessageReadStatus) حذف می‌شوند
  • روم‌هایی که مربوط به کورس نیستند (course=null) حذف می‌شوند
  • روم‌هایی که مربوط به کورس هستند حفظ می‌شوند اما پیام‌هایشان حذف می‌شود
  • تعداد پیام‌های خوانده نشده روم‌های کورس صفر می‌شود

حالت حذف کامل

در این حالت همه داده‌های چت شامل روم‌های کورس نیز حذف می‌شوند.

استفاده

حالت پیش‌فرض (محافظت از روم‌های کورس)

# با تأیید کاربر
python manage.py clear_chat_data

# بدون تأیید کاربر
python manage.py clear_chat_data --force

حذف کامل همه داده‌ها

# با تأیید کاربر
python manage.py clear_chat_data --all-rooms

# بدون تأیید کاربر
python manage.py clear_chat_data --all-rooms --force

پارامترها

  • --force: اجرای دستور بدون درخواست تأیید از کاربر
  • --all-rooms: حذف همه روم‌ها شامل روم‌های مربوط به کورس

نکات مهم

  1. ایمنی: دستور در یک transaction اجرا می‌شود تا در صورت خطا، تغییرات rollback شوند
  2. گزارش‌دهی: دستور تعداد رکوردهای حذف شده را نمایش می‌دهد
  3. محافظت از داده‌های کورس: در حالت پیش‌فرض، روم‌های مربوط به کورس حفظ می‌شوند
  4. بازنشانی شمارنده: تعداد پیام‌های خوانده نشده روم‌های کورس به صفر تنظیم می‌شود

مثال خروجی

Found:
  - 150 messages
  - 75 read statuses
  - 10 total rooms (3 course rooms, 7 non-course rooms)
✓ Deleted 75 MessageReadStatus records
✓ Deleted 150 ChatMessage records
✓ Deleted 7 non-course RoomMessage records
✓ Reset unread_messages_count for 3 course rooms
Chat data clearing completed successfully!