Skip to content

Commit 86b257e

Browse files
committed
Historical conversation batch delete
1 parent 6ca6c5b commit 86b257e

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

apps/chat/serializers/chat_record.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,17 @@ def logic_delete(self, with_valid=True):
132132
chat_user_id=self.data.get('chat_user_id')).update(is_deleted=True)
133133
return True
134134

135+
class Clear(serializers.Serializer):
136+
application_id = serializers.UUIDField(required=True, label=_('Application ID'))
137+
chat_user_id = serializers.UUIDField(required=True, label=_('Chat User ID'))
138+
139+
def batch_logic_delete(self, with_valid=True):
140+
if with_valid:
141+
self.is_valid(raise_exception=True)
142+
QuerySet(Chat).filter(application_id=self.data.get('application_id'),
143+
chat_user_id=self.data.get('chat_user_id')).update(is_deleted=True)
144+
return True
145+
135146

136147
class HistoricalConversationRecordSerializer(serializers.Serializer):
137148
application_id = serializers.UUIDField(required=True, label=_('Application ID'))

apps/chat/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
path('historical_conversation', views.HistoricalConversationView.as_view(), name='historical_conversation'),
2121
path('historical_conversation/<str:chat_id>/record/<str:chat_record_id>',views.ChatRecordView.as_view(),name='conversation_details'),
2222
path('historical_conversation/<int:current_page>/<int:page_size>', views.HistoricalConversationView.PageView.as_view(), name='historical_conversation'),
23+
path('historical_conversation/clear',views.HistoricalConversationView.BatchDelete.as_view(), name='historical_conversation_clear'),
2324
path('historical_conversation/<str:chat_id>',views.HistoricalConversationView.Operate.as_view(), name='historical_conversation_operate'),
2425
path('historical_conversation_record/<str:chat_id>', views.HistoricalConversationRecordView.as_view(), name='historical_conversation_record'),
2526
path('historical_conversation_record/<str:chat_id>/<int:current_page>/<int:page_size>', views.HistoricalConversationRecordView.PageView.as_view(), name='historical_conversation_record')

apps/chat/views/chat_record.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,24 @@ def delete(self, request: Request, chat_id: str):
9999
'chat_id': chat_id,
100100
}).logic_delete())
101101

102+
class BatchDelete(APIView):
103+
authentication_classes = [TokenAuth]
104+
105+
@extend_schema(
106+
methods=['DELETE'],
107+
description=_("Batch delete history conversation"),
108+
summary=_("Batch delete history conversation"),
109+
operation_id=_("Batch delete history conversation"), # type: ignore
110+
parameters=HistoricalConversationOperateAPI.get_parameters(),
111+
responses=HistoricalConversationOperateAPI.get_response(),
112+
tags=[_('Chat')] # type: ignore
113+
)
114+
def delete(self, request: Request):
115+
return result.success(HistoricalConversationOperateSerializer.Clear(data={
116+
'application_id': request.auth.application_id,
117+
'chat_user_id': request.auth.chat_user_id,
118+
}).batch_logic_delete())
119+
102120
class PageView(APIView):
103121
authentication_classes = [TokenAuth]
104122

0 commit comments

Comments
 (0)