2
2
from django .db .models import Q
3
3
from django .http import HttpRequest , HttpResponse
4
4
from django .shortcuts import render
5
- from drf_spectacular .utils import extend_schema
5
+ from drf_spectacular .utils import extend_schema , inline_serializer
6
+ from rest_framework import serializers as serializer
6
7
from rest_framework import status
7
8
from rest_framework .request import Request
8
9
from rest_framework .response import Response
15
16
check_entered_chatroom ,
16
17
delete_chatroom ,
17
18
)
19
+ from apps .user .api_schema import UserInfoSerializer
18
20
19
21
20
22
def render_chat (request : HttpRequest ) -> HttpResponse :
@@ -23,8 +25,18 @@ def render_chat(request: HttpRequest) -> HttpResponse:
23
25
24
26
class ChatRoomView (APIView ):
25
27
@extend_schema (
26
- request = serializers .ChatroomListSerializer ,
27
- responses = serializers .ChatroomListSerializer ,
28
+ responses = inline_serializer (
29
+ name = "ChatRoomSerializer" ,
30
+ fields = {
31
+ "id" : serializer .IntegerField (),
32
+ "product" : serializer .UUIDField (),
33
+ "product_image" : serializer .URLField (),
34
+ "last_message" : serializer .CharField (),
35
+ "unread_chat_count" : serializer .IntegerField (),
36
+ "user_info" : UserInfoSerializer (),
37
+ },
38
+ many = True ,
39
+ ),
28
40
description = "유저가 참여한 채팅방 리스트를 내려주는 get메서드" ,
29
41
)
30
42
def get (self , request : Request ) -> Response :
@@ -58,10 +70,19 @@ def post(self, request: Request) -> Response:
58
70
59
71
class ChatDetailView (APIView ):
60
72
@extend_schema (
61
- responses = serializers .EnterChatroomSerializer ,
73
+ responses = inline_serializer (
74
+ name = "inline_serializer" ,
75
+ fields = {
76
+ "product_image" : serializer .CharField (),
77
+ "product_name" : serializer .CharField (),
78
+ "product_rental_fee" : serializer .CharField (),
79
+ "product_condition" : serializer .CharField (),
80
+ "messages" : serializers .MessageSerializer (many = True ),
81
+ },
82
+ ),
62
83
description = """
63
- 채팅방에 입장시 채팅방의 메시지를 내려주고, 상품에 대한 정보를 내려줌
64
- """ ,
84
+ 채팅방에 입장시 채팅방의 메시지를 내려주고, 상품에 대한 정보를 내려줌
85
+ """ ,
65
86
)
66
87
def get (self , request : Request , chatroom_id : int ) -> Response :
67
88
try :
0 commit comments