# Chat Management Commands ## clear_chat_data این management command برای پاک کردن داده‌های چت طراحی شده است و دو حالت کاری دارد: ### حالت پیش‌فرض (محافظت از روم‌های کورس) در این حالت: - همه پیام‌ها (ChatMessage) حذف می‌شوند - همه وضعیت‌های خواندن پیام (MessageReadStatus) حذف می‌شوند - روم‌هایی که مربوط به کورس نیستند (course=null) حذف می‌شوند - روم‌هایی که مربوط به کورس هستند حفظ می‌شوند اما پیام‌هایشان حذف می‌شود - تعداد پیام‌های خوانده نشده روم‌های کورس صفر می‌شود ### حالت حذف کامل در این حالت همه داده‌های چت شامل روم‌های کورس نیز حذف می‌شوند. ## استفاده ### حالت پیش‌فرض (محافظت از روم‌های کورس) ```bash # با تأیید کاربر python manage.py clear_chat_data # بدون تأیید کاربر python manage.py clear_chat_data --force ``` ### حذف کامل همه داده‌ها ```bash # با تأیید کاربر 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! ```